Model Merge Performance

Issue and tracking information
The model merge tool in papyrus can be unresponsive.
Clicking on any UI item within the top-right pane caused a significant delay (on the order of a minute). I could see a process moving from core to core with 100% utilization.
Developer's time Estimated effort to fix (hours):
Developer's Actual time spent on fix (hours)
Issue reporter to provide a detailed description of the issue in the space below

I haven't been able to reproduce the performance issue with the model reproducer provided, but I did ran into an error: when merging "feature_branch" onto "conflicting_branch", it works (and quickly), but when merging "conflicting_branch" onto "feature_branch" it throws an internal EMF Compare error, and does it relatively quickly (after around 4 seconds).
I tested with a build from last Friday (2022-08-05).
Since the README of the reproducer states that there are a variety of errors, some related to performance, some not, perhaps we should create separate issues for each? Otherwise, we end up with another massive ticket for which you don't get to see much progress.
I would also suggest the original reporter to provide the contents of the Error Log when errors do occur.
For reference to the original reporter, to view the Error Log, select Window -> Show View -> Other... -> General -> Error Log. Before testing, delete the Error Log (click the red X on the Error Log view), and after an error occurs, export the Error Log (the first icon from the left on the Error Log View's title bar).

Ok, I've found a problem that seems like the performance issue but I don't know if it is the same as the original reporter experienced. Would it be possible to confirm if the performance problem occurs when the following steps are performed?

Import the project into the workspace
Check out the feature_branch
Check out the conflicting_branch
In the git view, right-click the feature_branch and select Merge. Then select the local feature_branch
The merge ends quickly but the Git Staging view shows a conflict. Right-click on the .uml file with the conflict and select "Merge Tool". The comparison finishes quickly.
Close the comparison editor.
In the Git Staging view, open the Merge Tool again by right-clicking the .uml file and selecting "Merge Tool".

Then the comparison gets stuck in "Computing Model Differences".
Is this the same problem?
Also, in relation to my previous comment, can we have separate tickets for the "variety of errors" that the original reporter cites in the reproducer's README? (With some more details about the errors?)
Thanks

And also, can we get confirmation of which is the version of CX used? Is it the latest?
Thanks

I am reaching out to the engineer that reported this problem to see if I can get more information. They were using the 2019 version of Papyrus and probably the latest CX for that version. We will not be testing the 2020 version out much until the end of the year.

Another thing to ask to the engineer that reported the issue is when the performance issue happens. There are several points where it can happen:

When doing a simple compare (no merge)
When merging branches

Within these, there are further possibilities:
a) the time between the user initiating the action and getting a dialog stating that there was a conflict or a successful diff/merge
b) the time between the user opening the comparison (conflict resolution) editor and the editor being ready showing the diffs
c) navigation between differences in the comparison editor.
d) merging (if relevant) after the user has approved changes
In my experiments, the main performance issue I see is in phase c), once the diff has been computed and you are in the compare editor and try to navigate between differences. I've observed that the time to navigate between differences seems to increase in at least linear time with respect to the number of difference, where this should be constant time. For example, getting to the first and second difference takes 1 or two seconds, but getting to the last difference might take between 25 and 30 seconds. This is obviously wrong, and I'm investigating, but it would be important to know if this is the performance issue that the user is reporting, or it is a different one.

We have not had anyone attempt to reproduce any of the results or questions that you have had, but we are working on finding someone to look at this.
I received some feedback from our engineer that reported the issue. They stated that the issue you mention above in (c) is one of the more impactful performance issues that they saw. Having this fixed would be a huge improvement.
On a related note, but maybe this should be a different issue. Papyrus/CX as a whole feels slower than CX on RSA. No doubt these are significantly different tools at this point but our users have shown frustration with this. I would say on a whole, the median time to perform actions seems to be over 2x longer, especially as model size and complexity grows. This includes adding elements, renaming elements, modifying them, etc... Even just navigating in the model explorer. I am sure some of this slowdown impacts the model merging too. Are you guys aware of anything significantly different between RSA and Papyrus? They are both based on the Eclipse EMF, right? Do you know how much File IO might be occurring when modeling (before actually saving a model)?

I'll focus on item (c) then.
As for general performance issues, I personally don't have an opinion as I haven't used ACXIOMA on RSA, but perhaps @ysroh or @elder4p have an opinion. They are both based on EMF indeed, so it is quite possible that any loss of performance may be due to Papyrus. I don't know how much IO is done when modelling, but @ysroh might have a better idea. We might have to open a separate issue for general performance issues.

@j26151 Can you please raise a separate ticket for the general performance issue? One of the major slowdowns during the model open stage is to check model migration status, broken reference checks, and pathmap checks on the fly rather than via separate actions. They take up about 50% of the running time of model open action. We could improve slightly but not much as long as we want to check model sanity during the opening stage. I can profile the performance of other actions and will comment on the new ticket.

#423

Hi,
I wanted to give you an update on this issue. First, apologies for the delay providing an update. I've been working on this for some time, and it has been quite difficult to diagnose. While we don't have yet a solution, I wanted to describe what I've been doing and what I have found so far.
First, recall that the main problem is the increasingly degraded performance when navigating between differences that appear in the diff/merge view. In particular, stepping from one difference to the next (or previous) gets increasingly slower, and therefore becoming practically unusable for any but the smallest models.
I have worked on the following approaches to diagnose and find out the cause of this problem:

Profiling
Comparing performance in different scenarios with and without Papyrus Compare, our profile, other profiles, etc.
Debugging

Before describing what I've found out following these lines, I want to clarify a few details that are important to understand where the problem (and solution) may be:
The technology stack involved is as follows:

Papyrus-CX itself, which is built on top of
Papyrus UML, which is built on top of
Eclipse UML2, which is built on top of
The Eclipse Modeling Framework (EMF), which is built on top of
Eclipse itself

Specifically addressing comparisons, diff and merge we have:

Papyrus Compare, which provides diff/merge for Papyrus UML models including profiles, and is built on top of
EMF Compare, which provides diff/merge for general EMF models but doesn't know about Papyrus UML models, and is built on top of
Eclipse Compare, which provides the generic diff/merge framework and diff/merge for text

Packaging:

We use Papyrus 4.8 (2020-06)
Papyrus 4.8 includes plain EMF Compare 3.3.11 but it does not include Papyrus Compare
Papyrus-CX includes Papyrus Compare 0.7.0

The distinction between EMF Compare and Papyrus Compare is important: EMF Compare works on any EMF model, including plain Papyrus UML models and CX models, but it is unaware of any domain-specific languages, of UML or any profiles, and so, the diff view shows all the internal EMF structure, rather than the language's concepts, making it inadequate to the end-user. As an analogy, it's as if a diff of Java code would show diffs between bytecode rather than diffs between source code. It's not as extreme as that, but that gives you an idea. This is where Papyrus Compare comes in: it knows about UML and UML profiles and Papyrus models, so it can display differences hiding all the internal EMF structure, and can even show diagram differences.
Another relevant technical element is the tool(s) used to create profiles for Papyrus. One can create profiles manually in Papyrus itself but we use our in-house development tool called the "Domain Development Kit" or DDK, which allows us to generate a profile, relevant code and related tooling. The DDS4CCM profile in CX is built with the DDK. I have tested profiles created with plain Papyrus and with the DDK, including the DDS4CCM profile and other manually-created profiles to consider or rule-out the possibility that the problem could be caused by generating the profile from the DDK.
Profiling
A lot of execution time seems to be spent on code from the Eclipse UML2 plugins (org.eclipse.uml2), called from the EMF Compare plugins. Unfortunately, there are no evident indications of why that code is called so many times. Hence, this line has not been fruitful in determining the cause.
Comparing scenarios
I have tried the diff/merge navigation in the scenarios described below with all the combinations of plain Papyrus, Papyrus with CX, plain EMF Compare and Papyrus Compare, CX and non-CX models, as well as hand-made profiles and profiles made with the DDK. In all of them I tested a model (both BasicPubSub and hand-built non-CX models) on a local git repo merging two conflicting branches.
Testing workflow
First, in all scenarios I perform the following steps, both with a CX model (BasicPubSub) or with a non-CX model on a git repo with two conflicting branches:

Go to the Git Perspective.
In the Git History view, checkout one of the conflicting branches.
Right-click the other conflicting branch.
Select "Merge". The a dialog pops-up showing that a conflict is detected.
Close the pop-up and go to the Git Staging view.
Right-click on the file with the conflict in the Unstaged Changes area.
Select "Merge Tool".

At this point, EMF Compare computes the diffs and after a while, the diff/merge viewer appears, with the diff tree on the top-right and below it the left and right panes displaying the part of the models on each of the conflicting branches where the diff is.

On the top-right view with the diff-tree, click the button to go to the next diff. Repeat several times. Also click the "previous diff" button several times.

This is where the bad performance is observed. In particular, with BasicPubSub, going to the second diff takes 1 second, the next one 3 seconds, the next one 6+ seconds, then 9+ seconds, and so on, apparently growing delays in at least linear fashion.
Scenarios and result summaries
Each of the following scenarios has been attempted at least twice.
A. Comparing a non-CX UML model with no profile on Plain Papyrus without CX and without Papyrus Compare;
- works as expected
- diff shows internal EMF structure
- no degraded performance
B. Comparing a non-CX UML model with no profile on Plain Papyrus without CX and with Papyrus Compare;
- works as expected
- diff hides internal EMF structure
- no degraded performance
C. Comparing a non-CX UML model with a Papyrus-made profile on Plain Papyrus without CX and without Papyrus Compare;
- works as expected
- diff shows internal EMF structure
- no degraded performance
D. Comparing a non-CX UML model with a Papyrus-made profile on Plain Papyrus without CX and with Papyrus Compare;
- works as expected
- diff hides internal EMF structure
- no degraded performance
E. Comparing a non-CX UML model with no profile on Papyrus-CX and with Papyrus Compare;
- works as expected
- diff hides internal EMF structure
- no degraded performance
F. Comparing a non-CX UML model with a Papyrus-made profile on Papyrus-CX and with Papyrus Compare;
- works as expected
- diff hides internal EMF structure
- no degraded performance
G. Comparing BasicPubSub on Plain Papyrus without CX and without Papyrus Compare;
- works as expected
- diff shows internal EMF structure
- no degraded performance
- some spurious but seemingly inocuous exceptions
H. Comparing BasicPubSub on Plain Papyrus without CX and with Papyrus Compare;
- raises some exceptions apparently related to the fact that the profile is not installed
- unable to start a merge as the comparison fails
I. Comparing BasicPubSub on Papyrus-CX and with Papyrus Compare;
- diff hides internal EMF structure
- degraded performance
J. Comparing BasicPubSub without stereotypes on Papyrus-CX and with Papyrus Compare;
- works as expected
- diff hides internal EMF structure
- no degraded performance
- but the model is no longer a proper CX model and it's just a UML model
K. Comparing a non-CX UML model with a DDK-made profile on Papyrus-CX with Papyrus Compare
- works as expected
- diff hides internal EMF structure
- no degraded performance
Debugging
Debugging has been quite challenging because it involves code from the whole stack, including CX, Papyrus, UML2, EMF, Papyrus Compare, EMF Compare, Eclipse Compare and even JFace.
Nevertheless, I have been able to norrow down the point that seems to be the main culprit to the code in JFace that displays the left- and right-hand model trees in the Model Compare view.
In this code at some point JFace tries to compute the children of tree nodes (this tree is not the model itself, but the EMF Compare Diff model), and for some reason, in some cases (I'm not certain yet about which) this set of children contains ~300, ~400 or ~500 elements, which are visited recursively. This is where the performance becomes really bad. I do not know yet why these sets are so large, but this is what I'm currently looking at.
Conclusions

Papyrus Compare works as expected, on plain Papyrus without degraded performance, on
a) plain UML models
b) UML models with a Papyrus-made profile
c) CX models with the DDS4CCM stereotypes removed

Papyrus Compare works as expected, on Papyrus-CX without degraded performance, on
a) plain UML models
b) UML models with a Papyrus-made profile
c) UML models with a DDK-made profile other than DDS4CCM
d) CX models with the DDS4CCM stereotypes removed

Papyrus Compare fails on plain Papyrus with exceptions, on
a) a CX model with DDS4CCM stereotypes

Papyrus Compare suffers degraded performance on Papyrus-CX , on
a) a CX model with DDS4CCM stereotypes

This leads me to conclude that:

We can rule-out standard Papyrus+Papyrus Compare as the culprits

We can rule-out the DDK as the culprit

The problem lies with a combination of our DDS4CCM profile and Papyrus Compare.

The problem occurs only when the "Model Compare" view is selected in the Diff viewer. So a temporary workaround is to use the "Text Compare" view; this unfortunately exposes the model's XMI.

The problem occurs in JFace code that renders the Model Compare view's left- and right-hand panes.

Next steps
For the moment the plan is to continue debugging. As I mentioned above, I found a spot that seems to be the performance sink. I plan to continue investigating this to try to understand the reason and determine what can we do about it.

Thank you for all of the information. I wonder if it is possible that the DDS4CCM profile has some internal piece that is causing this bug. Like a portion of the profile is exposing a bug in Papyrus Compare or is implemented in such a way that it works, but isn't efficient. Hopefully you are able to narrow it down even more. This is a feature that would be huge for us in some of our larger production models.
Keep up the great work, let us know when you find more!

Hi Eric. Indeed, I suspect there might be something in our profile triggering the bug in Papyrus Compare. The problem appears to be related to changes or conflicts in some references and some stereotypes (as opposed to changes in object attributes, for example). While computing the tree to display in the left- and right-hand panes, the object that ends up with hundreds of references to other objects (apparently to all objects in the model, including internal objects like worker functions) is an object from a class defined in EMF Compare, and created by Papyrus Compare. I am now trying to figure out when and why it creates this object.
I'll let you know more as I find out.

A new piece of information: I tried a scenario that I previously missed: Comparing BasicPubSub on Papyrus-CX and without Papyrus Compare. It turns out it behaves like scenario (I) above, i.e. as Papyrus-CX and with Papyrus Compare, with the same degradation of performance. So the problem is not Papyrus Compare, but it does look like a problem that EMF Compare has with our profile.
Furthermore, when the performance is bad, the left- and right-hand panes show pretty much the entire model as a context, rather than a more local context. It seems unnecessary, and related to the bad performance, as the code seems to process all model elements in these cases. It seems like it is related to reference changes in the model. But I'm still unclear on the details.
I continue working on it.

That is a really good data point. We (or at least I) had been assuming it was Papyrus compare for a while. Glad we can narrow it down further.

Hi, I'd like to give you another update.
In my previous big update I had found that several possibilities seemed to work as expected, without degraded performance such as normal UML models with a (normal) Papyrus-made profile. Unfortunately, after getting deep into the EMF Compare code debugging step-by-step such case, I am reassessing those cases. I think it is possible that the degraded performance does occur in UML models with profiles and that the problem is not with CX, but rather it may happen with any profile. It looks like it may be a fundamental flaw in EMF Compare. The reason I previously ruled out non-CX profiles as a possible culprit seems to be that the models I tried were too small and with only a handful of stereotypes.
To be more precise, the reason for the degraded performance seems to be directly related to the size of the model, and in particular to the number of stereotypes applied. Now, BasicPubSub appears to be "small", but in reallity it has quite a few elements, and 481 stereotypes applied. It doesn't seem obvious at first, but you can easily see them if you open the .uml file in a plain text editor. These .uml files follow the same general structure, which is at the heart of the problem, as I'll explain below:
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:dds4ccm="http://www.zeligsoft.com/domain/dds4ccm/2010/DDS4CCM/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
  <uml:Model xmi:id="_mLCrZVPxEeqNpdmZFi99Lg" name="BasicPubSub">
    // here are the actual contents of the model, all the "packagedElement(s)".
  </uml:Model>
  // from here onwards, there are all the model stereotypes
  <dds4ccm:DDS4CCMModel xmi:id="_mLD5FlPxEeqNpdmZFi99Lg" base_Model="_mLCrZVPxEeqNpdmZFi99Lg" base_NamedElement="_mLCrZVPxEeqNpdmZFi99Lg" fixedHeader="..." fixedFooter="..." modelType="AXCIOMA"/>
  <dds4ccm:CXSequence xmi:id="_mLD5GVPxEeqNpdmZFi99Lg" base_NamedElement="_mLD5DVPxEeqNpdmZFi99Lg" base_DataType="_mLD5DVPxEeqNpdmZFi99Lg"/>
  // ...
</xmi:XMI>

Why are there 481 stereotypes? Well, we have stereotypes for nearly everything, including worker functions and their parameters. And I think many of those are automatically "imported" from the model libraries (possibly from instantiating templates in the libraries).
This turns out to be important, because it means that the top-level of the model consists of 482 elements: the model itself and the 481 stereotypes. Now, it turns out that when you navigate to a new diff, the JFace code that displays the left- and right-hand panes, tries to obtain the "context" for the diff to be displayed. When the diff in question involves a containment reference change, the EMF Compare code that gets this context, for some reason, obtains the top-level and all its children. And then it attempts to recursively display all those children. So in the BasicPubSub case, such a diff will produce 482 children, and then goes down recursively on the Model element. And this happens for every single such change, and for both the left-hand, right-hand and common ancestor (even if it's not visible)! This is where the big drop in performance occurs. (Technically the tree involved is not the model itself, but a tree whose nodes are "Match" objects produced by EMF Compare, but they match the structure of the model).
There are still some things I don't yet understand:

why does the containment reference change case needs to return all the top-level elements
why the delay seems to increase linearly with the number of times you have selected a new difference.

I'm looking into these.
I'm also going to try to contact the EMF Compare developers about this. Unfortunately my main contact, who worked on EMF Compare and developed Papyrus Compare, no longer works on either of these, and the last few times I've asked him technical questions, he didn't remember the details as it has been years since he worked on these. As for EMF Compare, the place to ask is their forum, but their responsiveness is slow, and sometimes they don't respond at all.
One last thing, I mentioned that it may be a fundamental flaw in EMF Compare itself, as these findings suggest. But it's hard to make that call, because, as I mentioned before, EMF Compare is not aware about UML or UML profiles, so there is no reason for EMF Compare to treat UML models in a special way. But Papyrus Compare is UML-aware, so perhaps it is the responsibility of Papyrus Compare to deal with those cases. Nevertheless, it's also hard to blame Papyrus Compare, since the problematic logic is in EMF Compare code. Anyway, I hope that either my contact or the EMF Compare people can help clarifying this.
I'll keep you posted with any new findings.

Just an addendum to the previous message. After experimenting with a new model from scratch and analyzing BasicPubSub, I found out that

Each monolithic component adds at least 18 worker functions, which means 36 stereotypes (the worker function element and its implementation element)

A single template module instantiation adds 130 stereotypes! This includes 7 CXInterface, 15 CXAttribute, 22 CXOperation, 63 CXParameter, 2 ConnectorDef, 8 InterfacePort, 6 ExtendedPortType, 1 ModuleBinding and 1 ModuleInstantiation stereotypes.

This would explain why a model as small and simple as BasicPubSub has so many stereotypes.

Thank you for the information. It is surprising that the BasicPubSub example has that many stereotypes. We have many models that build off one another with 100x more complexity to them than what BasicPubSub has, so this definitely explains why model merging gets impossible on our production models.

On the plus side, this info suggests a possible way forward: we can try to override the EMF Compare code that returns the "context" items, to include only the relevant element's container and its siblings, instead of all the top-level elements.
There are a couple of caveats though: first, it may not be possible to override the relevant code, as my past experience with EMF Compare suggests, and second, it's not clear if there are any consequences to returning a smaller, local context. For the first one, I'll need to experiment. For the second one, I'll need input from the EMF Compare developers.
Another potential solution might be to override a different part of EMF Compare, namely the "matcher" (the component that finds matches between models), to make it ignore stereotypes, or certain elements, like worker functions, or the ones induced by template instantiation. This would certainly reduced the size of the context, but at the risk of ignoring relevant model changes, like stereotype attributes, or cases such as a user mistakenly removing a worker function. This would lead to possibly incorrect comparisons and merges. Hence my preferred solution is the first one.

Another relevant piece of information: I tracked down the commit in the EMF Compare git repo that introduced the logic which returns all the top-level elements (commit bb5ad591177394fc3613885d6dfe20632f6b519d) and according to the commit comment, it is meant to deal with models divided into fragments. So one question is whether NGC models are divided into fragments or not. If they are not, we may be able simplify the logic considerably and return a much smaller set of elements.

A new update with good news: I've been able to implement what appears to be the solution. So far my testing shows that it works and there is no longer a perceivable delay when navigating the differences.
I was able to override the existing EMF Compare code without the need of a fork.
In the solution, when selecting a particular diff it will now show only local changes for containment feature changes, rather than display the full model tree. For example, if you add an attribute of a component, it will only show the component and its immediate children, including the attribute modified, instead of showing the full tree from the model root. I think this is in fact much nicer than what the default behaviour in EMF Compare is, which is to show the full tree.
There is a small caveat: when the change is a containment feature change, it will appear to display only the container, but actually the user only needs to click on its icon to unfold it and get the diff inside. I'm trying to figure out if there is a way to automatically unfold it. To see what I mean, look at the following two screenshots, taken when selecting a conflict. In the first one, only the "defn" package is shown on the left and right panes, but after unfolding, you see the contents and diffs inside:

... and after clicking on the icon next to "<Package> defn":

There is another issue which is perhaps more important, and which I have observed in Ubuntu but not on Windows or macOS, which is that when you select a diff the relevant element is obscured  by a white box hiding the element. For example, in the same as above, if one clicks on the diff for "<CXEnum> Color", you see the following:

Have you experienced this as well?
And one other issue: fragments. My solution does not consider the case where the model is divided into fragments. Do you divide your models into fragments or do you keep a model in a unique monolithic file?

I've prepared a build for you to test. It can be obtained here.
I tested on CentOS and it works as well, although it does seem to suffer from the same "white box" issue described above. I imagine you would like that resolved too, although I would suggest a separate issue as it is not related to performance. Let me know.
Also let me know if you use fragments or have any other issues.
For reference, the pull request is PR #442.

Thank you, @eposse. I do not know when we will get the chance to test this as we are fairly busy on our end at the moment, but I will see if we can get this prioritized.
We would want the white box issue describe above fixed and we are okay with that being a separate ticket. If you wouldn't mind creating that ticket, that would be great.
I do not know what a fragment is, which means we probably don't use them. Could you describe them to me? Maybe it is something we would want to use but since we never heard of them, we never leveraged them.

I'll create a separate ticket.
Fragments are a way of dividing up a UML model to make it more manageable. In a normal UML model, all elements are stored in the same file. If a model is too large, it might make sense to divide it into separate files, which are called "fragments". The original model then has references to these. This is a feature that may also help in collaborative modelling and version control, as changes may affect only one fragment file.
Here's a link with some documentation describing fragments for an IBM tool that uses them: Fragments in UML models. I think in Papyrus this is done by selecting a Package and then right-click -> Model refactor -> Create Submodel.

I've opened Issue #443.

@eposse I was able to test this with the build you provided and verify the performance improvements. Everything looks great! Would you be able to apply this change to the 2.3.0 maintenance stream as well?

Great! Do you want us to do a 2.3.1 release or just add the change to the streams/v2.3.x-maintenance branch?

For now, just add it to the streams maintenance branch. We may have other fixes that we need on the maitenance branch before we need the release

Ok, will do.

I've added the changes to the 2.3.x maintenance branch and merged the PR into the papyrus branch.
Let me know if we can close this one.
Thanks.

Yes I think we can close this. Thank you for all the hard work that you put into tracking this issue down.


ppt supported？

Question

Does docling support ppt input format (not pptx),if yes,how to   enable the feature?

We currently don't plan to support pre-OOXML formats such as PPT, DOC or XLS, they are binary formats which require an entirely different parser. There are no free and portable parser libraries available to our knowledge.

We currently don't plan to support pre-OOXML formats such as PPT, DOC or XLS, they are binary formats which require an entirely different parser. There are no free and portable parser libraries available to our knowledge.

https://github.com/QuivrHQ/MegaParse This project can do it. Can you refer to this project's approach?


🔍 💥 Add UX for client-side search

This PR is a rough stab at a frontend component for client-side search. There are already some sharp edges to rework:

[ ] Remove reference to @myst-theme/search in @myst-theme/common once mystmd exports myst-spec-ext with the latest tyeps
[ ] Handle pagination or scrolling
[ ] Improve highlight renderer to e.g. reduce ellipsis :rofl:
[ ] Include and highlight document / section context for section/content results
[ ] Think about whether this can/should be generalised for a server-side search

@stevejpurves @rowanc1 input always welcome, but I'll keep chipping away at this.

Phew, made some good progress! My goal here is to build out "an approach", and then we can iterate on the design.


Put/Get objects

Hi,
First, thanks a lot for your work, this library is amazing and is actually my first contact with networking :)
I tried to make a "request" system where the client can ask the server to invoke a request and back.
When a packet is sent it contains the request id (int) and all the needed parameters for the request function.
The problem is: as we have PutInt, PutBool, PutString, GetInt, GetBool, GetString I have so many if...else if...else if... else if... in my "Send" "Receive" methods. I know I could use a byte array but do you think it would be a good idea to have PutObject(object) and GetObject(size) in NetPacketWriter and NetPacketReader?
I'm a junior programmer so I don't have a lot of experience, I hope I don't say dumb things :)
Thanks again for the library!
Have a great day!

@Clayrok this is called "Serialization". And there is simple but fast build-in serializer - https://revenantx.github.io/LiteNetLib/articles/netserializerusage.html and documentation for it. Also you can use any other know serializer (Protobuf, MessagePack, Flatbuffers, etc)


Support pickling lambdas and nested functions, e.g. for Spark udf functions

i submit my spark job using pure python like below:
sc.textFile(dp)..map(lambda line: line.split(' '))
it is okay and perfect,
however, when using cython and change it into .so file, the spark raise exceptions and told
me that can not pickle lambda function.
help me, thanks

Spark pickles lambdas by capturing the bytecode/closure and re-creating it on the other end. There's no bytecode and the closure may be non-Python objects for Cython-defined lambdas. However, it is a valid feature request to make this possible by implementing their __reduce__ methods.

Some more details: Python's pickle module needs to be able to find the code of the function somehow. In the case of a Python function, that can be done by pickling the code object that contains the Python byte code. In the case of a compiled (binary/native) function, there is no byte code, and pickling native code isn't very useful/portable/easy. Thus, for native functions, the pickle module would want to pickle the state of the function and the import path to find the function. Locally defined (nested) functions cannot be imported, so pickle will not be able to unpickle their state.
That being said, in some cases, it might be possible to register a global function in the module as entry point for unpickling Cython compiled functions. But that's a) probably quite some work and b) only applicable to functions for which the entire state can be pickled, i.e. no pointer variables or C++ objects locally or in any of the outer closures. Platform specific data types also play a role here. It would be a challenge to pickle a C long value on a platform with 64bits and unpickling it on a platform with 32bit long integers, for example.

I think the way to go about this is to write a custom reduce and leverage pickling the closure class just as we do for other cdef classes.

I'm not sure whether this would be the same issue or require a separate implementation, but getting Cythonized objects to work well with dill.dumps() would be quite nice as well.

Did anyone try with cloudpickle?

@jakirkham cloudpickle is not working

@scoder  any udpates on the workout to fix the issue from cython side?  we need this feature very badly

@nagesh-chowdaiah (since you tagged me in the other issue). I have no immediate plans to work on this.
If you or anyone else want to have a go at this: CyFunctions store their closure as a cdef class, therefore you can use the code that already exists in AnalyseDeclarationsTransform to pickle that cdef class (I don't think that's 100% simple because the closure cdef class is generated quite late). You'd then just need to write fairly simple __reduce__ function for CyFunction.
If you don't want to do that then I'd suggest you don't use a nested function: instead write a pickleable (cdef?) class with a __call__ method and use that as your callable:
def old_version(a):
    def old_version_inner():
       return a

gets changed to
class NewVersion:
   def __init__(self, a):
      self.a = a
   def __call__(self):
      return self.a
   # possible extra functions to make it pickleable...

I'm having a tentative look at how to do this. (This should not be taken as a guarantee it'll be implemented soon!)
I think there's at least one small design choice: do we use the auto_pickle and auto_pickle_force directives to control this or invent new ones? auto_pickle seems pretty safe. auto_pickle_force risks breaking existing code that uses it but only intends to apply it to classes. On the other hand, using the existing directives makes sense to me.

IMHO, pickling lambdas and inner functions is a special use case that most people don't have. And even those who do, usually only want to pickle very few of them and not all. This does not seem worth bloating the module namespace with tons of closure classes to make them available to pickle, because even pickle won't need to see most of them. But I think we can get away with a single entry point, as follows.

Each module that supports pickling inner functions provides a Python visible function as single entry point. It will be visible at the module level, so that pickle can use it. Let's name it __pyx_cyfunction_unpickle.
CyFunction implements __pickle__() to return a 2-tuple with that function as first item and then an argument tuple as second item, with two elements:

a reference (a name string? an ID number?) for the closure class type of the specific inner function
the state struct of the closure class, as picklable object (as provided by the closure's __reduce_cython__ method)

On unpickling, pickle will call the module's unpickle function with those two arguments, which would then look up the right closure class and instantiate it using its __setstate_cython__ method.

For the closure reference, a name string (preferably the qualname) is slower but seems more helpful than a (simple increasing) ID number since it would allow more (compatible) changes to the module without invalidating the pickles. I don't think there is a good way to make lambdas compatible across module versions, since they inherently aim to have no identifiable name. One might think that hashing their code could work, but then what if two lambdas inside the same outer function context have the same code? I think relying on the qualname seems good enough for them, too.
With this design, I think we can afford to include inner functions and lambdas in auto_pickle. It bloats the module size, but it won't get in the way otherwise. And users can mitigate the size effect by using @auto_pickle(True/False) as a targeted decorator, also for inner (and outer) functions and specific extension types.

Large chunks of that are pretty close to the design I was heading towards. Probably the main difference is that you're proposing to only generate __reduce_cython__ and __set_state_cython__ for the closure classes and not actually make them fully pickleable. That seems reasonable to me.

CyFunction implements pickle() to return a 2-tuple with that function as first item and then an argument tuple as second item, with two elements:

a reference (a name string? an ID number?) for the closure class type of the specific inner function
the state struct of the closure class, as picklable object (as provided by the closure's reduce_cython method)

I was going to use the function cname as the reference (on the basis that it's guaranteed to be unique per module otherwise C breaks and it's convenient for code generation). I think the state might need a few more elements: possibly the classobj if it exists, and maybe self for fused functions.

I don't think there is a good way to make lambdas compatible across module versions, since they inherently aim to have no identifiable name. [...]

And the cname is presumably just as fragile. I imagine support for lambdas will have to be fairly tied to an individual module version.

a reference (a name string? an ID number?) for the closure class type of the specific inner function
[...]

I was going to use the function cname as the reference (on the basis that it's guaranteed to be unique per module otherwise C breaks and it's convenient for code generation).

Just a couple more comments on this: I think the function cname requires an extra module-level support function. On the other hand, the qualname isn't unique
def f(select, b):
   if select:
     def g():
       return b
   else:
     def g():
       return -b
   return g

gives two functions with the same qualname

Yes, we'd need some way to identify the two gs here. An incrementing suffix might be problematic as (for example) adding an elif clause in the example above would cause an off-by-one error. (FWIW, I've run into this request before as well, and it's unfortunate to tell people the only workaround is creating an explicit class or doing it in a Python file. But this has always been in the context of distributed processing (v.s. long term storage) so totally opaque identifiers would be sufficient.)


Grammar fix

Post 12. we'll instead of we in [..."method should be only called by the executor that we'll create in a moment"...]
This is a very educational project. Tough subject, written in an easy to follow and digestible way. Thanks for putting it out @phil-opp!

I've checked #1123 and looks like this has slipped over that major corrections proposal.

Closing this one as I moved this small fix proposal into #1123.

Thank you for helping to improve this series!

This is a very educational project. Tough subject, written in an easy to follow and digestible way. Thanks for putting it out

Thanks a lot, great to hear that :).


feat(vue-template): support $ in variable name

$ should also be include in Regex as _

I am not so sure. The $ prefixed should be reserved as Vue's global context plugin, in general, we should discourage auto-import that convention.


Jailbreak’s hijacking of analyticsd breaks many system services

The Fugu14/unc0ver jailbreak evidently hijacks analyticsd, and renames the stock service to analyticsd.back, also editing /etc/passwd to make the analyticsd service use group _nanalytics instead of _analytics, which seems to be the root cause responsible for infamously breaking the Battery Usage settings history logs (BatteryLife/CurrentPowerLog.PLSQL, etc), as well as possibly the AirPlay speakers and CarPlay breakage(?).
Because these are persistent system modifications, this breaks analyticsd (and thus, services depending on it) even when “not jailbroken”.
iPad8,4 iPad Pro 11” 3rd gen A12X
iOS 14.4
unc0ver 8.0.2
Place an "x" between the brackets if true:

[x] this is a bug others will be able to reproduce
[x] this issue is present with all tweaks uninstalled(except for default packages) or disabled
[unknown] this issue is present after a rootfs restore
[x] this issue is present on the latest version of unc0ver

I suspect the developer @LinusHenze already knows this perfectly well but felt it should be formally documented, seeing how half the Issues here are people trying to get Battery Usage to work again.

Is there any way an end-user to deal with this issue?

Is there any way an end-user to deal with this issue?

Yes!  Check out the incredible patch and manual steps posted 2 weeks ago by "SXX" on the Fugu14 cross post for this issue I made: https://github.com/LinusHenze/Fugu14/pull/242
Beware: the manual steps are not for the faint of heart, unless you're extremely confident of your Unix skills. One mistake and you could lose your jailbreak or even brick your device. I am going to attempt it soon.
Hopefully LinusHenze will accept the PR and it can be incorporated into Fugu14 and @pwn20wndstuff will be able to issue a long-awaited update to unc0ver...

Is there any way an end-user to deal with this issue?

Yes! @0chil Check out the incredible patch and manual steps posted 2 weeks ago by "SXX" on the Fugu14 cross post for this issue I made: LinusHenze/Fugu14#242 He posted an entire root cause analysis, absolutely brilliant work. Fugu14 made a typo when it hijacked analyticsd, something like a GID 263 should've been 264 and vice versa, but also file system permissions to /var/db/analytics.
Beware: the manual steps are not for the faint of heart, unless you're extremely confident of your Unix skills. One mistake and you could lose your jailbreak or even brick your device. I am going to attempt it soon.
Hopefully LinusHenze will accept the PR and it can be incorporated into Fugu14 and @pwn20wndstuff will be able to issue a long-awaited update to unc0ver...

@badger200 what a great analysis on analyticsd which is very clear. 😄
Thanks for the fast comment. It helped a lot.

@0chil You're very welcome; please post your results if you attempt. I think I am going to try tonight, I finally understand the steps. I never used chflags before but now I get it. I think I have a toybox, binbag, or busybox single binary that includes chflags.


Responsive ThemeStore

In Snap Templates, there is a TemplateStore that contains the project configuration - including the themes used within, which exist as ThemeStore objects. The ThemeStore object is responsible for merging down the various theme layers - "base", "currency", "language", "overrides" and "variables" (from the project) and "editor overrides" (only variables for now). This change would add an additional layer for the responsive overides.
Each theme contains a responsive set of theme overrides that are merged into the theme when the browser width matches the responsive breakpoint. This merging of these theme overrides is currently handled inside each root snap template component, but this should be handled by the ThemeStore.
The TemplateStore will need to be "window" aware, and then add a 'resize' event listener (which should be debounced). The event handler will be responsible for notifying each ThemeStore when the selected breakpoint has changed. Snap Template themes currently have 4 responsive width ranges set by the theme variable (ex: [0, 540, 900, 1200]) and a corresponding optional set of theme overrides at those breakpoints (ex: [mobileOverrides, tabletOverrides, desktopOverrides, widescreenOverrides]). When the TemplateStore is instantiated it should store the current breakpoint of the browser, and when a new theme is added, would instantiate the theme with the breakpoint information so that it knows which responsive theme override to utilize). When the 'resize' event handler runs, the debounced function would check if the width has changed, and if a new responsive range has been reached - if so, it would notify the themes to act accordingly (change the responsive overlay).

Merged into templates branch.


version question

Which version or branch of code is on the line

The code on the line is the history route，github pull down the code startup hand is hash routing Excuse me how to update to the latest code online

Hi @Hjyperfect !
Q1:
Xtreme1 is the open source project.
online (cloud) version is different from it and it is no open source.
Q2:
To update to the latest version, you need to manually delete the previous version, pull the most recent code, and perform the installation.
Contact me if you need more info:
Tel/WeChat:<PHONE_NUMBER>9


cornerstone.webGL.isWebGLInitialized allways false?

In Cornerstone  0.11.0 i'm getting false when I check cornerstone.webGL.isWebGLInitialized even if I've setup cornerstone.enable(element, {renderer: 'webgl'}).
Has this changed recently?.

I don't think it's changed recently, but I also don't remember specifically ever testing it.


Implement nginx caching

Implement caching of Keycloak data, like lua-resty-openidc does. Even when shared cache via Redis is implemented, this can be used as a graceful fail-back.

Implemented


Plugin statistic

During the plugin development and debugging, following information will be useful for developer to get a sense of what is going wrong.
Information that may be useful for developer

Success/fails rate on plugin request
Total no of plugin request
Plugin request that is trigger by plugin (bouncing)
The response time of plugin call, group by name, type.

We should expose an HTTP endpoint for qerying the info for this session. This issue is not intented to provide a persistence of the statistic info.
Note: This issue is aimed for plugin diagnostic, not general metric. For general matric of the whole runtime, I think it should be provided outside of skygear-server, possibly a 3rd monit.

Libs we can take a look:
https://github.com/prometheus/client_golang

When I write plugin in python, I use exception to signify expected error. The exception I raise is a subclass of SkygearException. When counting failure rate, I think we should distinguish between different kinds of errors, for example, error of not able to find a worker to serve, the worker raised an exception that is not subclass of SkygearException, the worker raised an instance of the subclass of SkygearException, etc.


Complete example with Firebase cache

Issue #84
This PR completed the example with MOABB and ERP classification.
It demonstrates how we can use Firebase admin to synchronize MOABB results.
A simple use case is to split the number of subjects in a dataset between two computers.
Then the two MOABB evaluations are run in parallel and the results are synchronized on the Firebase server.
It is also useful when we want to store and retrieve the results of past computation on a same computer.
@toncho11 FYI

Does Firebase require any login credentials?
Can it work locally?
Does the connector require Internet and Google access?

Yes, it requires credentials. The wiki page here https://github.com/pyRiemann/pyRiemann-qiskit/wiki/Use-a-Firebase-cache explains how to get credentials from Firebase.
It can work locally. The generate_caches function accepts a dictionary object that, if provded, is used instead of the remote database. E.g.:

fake = {
   "Brain Invaders 2012":{
      "RG+QuantumSVM":{
         "Brain Invaders 2012":{
            "1":{
               "RG+QuantumSVM":{
                  "true_labels":0.3433986306190491,
                  "predicted_labels":0.5
               }
            },
         }
      },
      "RG+LDA":{
         "Brain Invaders 2012":{
            "1":{
               "RG+LDA":{
                  "true_labels":0.13163451850414276,
                  "predicted_labels":0.6777283549308777
               }
            },
            "2":{
               "RG+LDA":{
                  "true_labels":0.13357791304588318,
                  "predicted_labels":0.8143579959869385
               }
            }
         }
      }
   }
}

Yes, if you want to connect to Firebase, you need internet and google credential. There is no replication of the database on local storage.

I think there should be a separate example. We should not modify classify_P300_bi.py.

What is the dictionary object accepted by generate_caches? An empty dictionary?

Thanks for the review :)


Download documentation

Hi,
when I look at the example to download a file, I feel like there is something missing.
https://qr.davidje13.com/docs/
Download

Where does qrCode come from?
I don't think there is a function toDataURL on the returntype of generate

Nevermind...
I had browser native open and was looking for node.

Investigating a bit more, there seems to be toDataURL but this function is not exposed as typescript type. Is this intended?
Also I guess qrCode and code should be the same thing?

Released version 2.3.3 which fixes both issues.


When I run this program has encountered a problem,Can you help me？

@benanne
Thanks for sharing your project code.
When I run this program I met the same problem as @nejyeah   ,but now I encountered another problem:
when I run:

python try_convnet_cc_multirotflip_3x69r45_maxout2048_extradense.py

Using gpu device 0: GeForce GTX 650
Set up data loading
Preprocess validation data upfront
Error when tring to find the memory information on the GPU: initialization error
Error freeing device pointer 0x700e80000 (initialization error). Driver report 0 bytes free and 0 bytes total
CudaNdarray_uninit: error freeing self->devdata. (self=0x7f3680676670, self->devata=0x700e80000)
Exception MemoryError: 'error freeing device pointer 0x700e80000 (initialization error)' in 'garbage collection' ignored
Fatal Python error: unexpected exception during garbage collection
Traceback (most recent call last):
File "try_convnet_cc_multirotflip_3x69r45_maxout2048_extradense.py", line 135, in
xs_valid = [np.vstack(x_valid) for x_valid in xs_valid]
File "/home/lixun/anaconda/lib/python2.7/site-packages/numpy/core/shape_base.py", line 228, in vstack
return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
ValueError: need at least one array to concatenate
Thanks

That looks pretty bad - maybe you just don't have enough memory though. How much memory does your card have? You'll probably need at least 2GB to run the code.

Thank you for your reply .
My  card is  GeForce GTX 650   with  2GB memory  ,
Under what circumstances would cause “ValueError: need at least one array to concatenate”?

I think the problem is the 'initialization error', not the concatenation error. That's probably just a consequence of the previous error.
Another possibility is that it is unrelated and that the dataset could not be loaded. Did you download the JPEG files and extract them in the right locations?

Wether I copy the train and test images to /dev/shm by running python copy data to shm.py or modify the from_ram parameter to False  is the same error.
PS:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2014 NVIDIA Corporation
Built on Thu_Jul_17_21:41:27_CDT_2014
Cuda compilation tools, release 6.5, V6.5.12

Okay. Assuming both errors are related: try export CUDA_LAUNCH_BLOCKING=1 and then running your code (see http://comments.gmane.org/gmane.comp.mathematics.theano.user/467 ). Maybe that will give you a better error message.
If that doesn't help, I would suggest asking on the Theano mailinglist as this is probably either an issue with Theano or a hardware issue, and not really a problem with this code.


feature/optimize-build-bootstrapvue-icon

Work List

Optimize the build process and builded size

bootstrap-vue/src/icons/icons.js as it exceeds the max of 500KB.

Details

Refer icons section in https://bootstrap-vue.org/docs
List up the used icons on the application
Import only icons that used

List of the used icons on the application

list
tools
chevron-up
chevron-down
arrow-clockwise
arrow-left-square
envelope-fill
bell-fill
circle-fill
gear-wide-connected
arrow-bar-right
house-door-fill
arrow-bar-left
pencil-fill
filter
check-circle
plus-circle-fill
layout-three-columns
trash
clock-history
credit-card-fill
clipboard-check
pencil-square


Upgrade voluptuous to 0.11.5

Description:
Changelog: https://github.com/alecthomas/voluptuous/blob/master/CHANGELOG.md#0115
Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass

This change is quite important for me: Without it, voluptuous fails to install with ModuleNotFoundError: No module named 'pypandoc'. See https://github.com/alecthomas/voluptuous/commit/d1ec13e7575d7a25fc11ce80d72885c55867184a.
This should be merged asap and ideally backported to 0.75. Alternatively, we could update voluptuous to 0.11.4, which only adds the pypandoc fix compared to 0.11.3.

See alecthomas/voluptuous#354
I can reproduce the issue by pip install voluptuous==0.11.3 --no-binary :all: in a clean venv. It won't affect install from wheel.


[hi] Localize content/en/docs/setup/best-practices/node-conformance.md to Hindi

This issue is a part of ongoing hi localization effort #29353
/language hi

@ShivamTyagi12345 assign this to yourself using /assign

/assign
getting started

Made the local changes ,What next?

@ShivamTyagi12345 Open a draft pull request to kubernetes/website. Do use the command /language hi

we dropping the idea of individual issues


Conditionally add the noindex meta tag to the staging site

Details

This PR updates webpack.common.js to add a property to the staging build and an update to web/index.html that will add the noindex property to a meta tag when the staging property is present. Big h/t to @roryabraham for the suggestion.

Run npm run build (to build production)
Repeat step 2
Verify that <meta name="robots" content="noindex"> does NOT appear in the header

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

N/A

Mobile Web - Chrome

N/A

Mobile Web - Safari

N/A

Desktop

N/A

iOS

N/A

Android

N/A

I need to update the auto assigner so it skips assigning reviewers to WIP PRs.

@0xmiroslav No, don't worry about it for now. I need to figure out how to test it. I'll ping you and @youssef-lr when it's ready for your 👀

Ready for review 👍

@0xmiroslav I know the GH states "Google" specifically, but I don't think we want anyone indexing us.

I'm going to add nofollow too, I think… Sit tight.

Added, @0xmiroslav, thanks for pointing it out 👍

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/roryabraham in version: 1.3.17-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/chiragsalian in version: 1.3.17-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Documentation : Install on MacOS/OSX and dev tools : remote debug mode

I installed VivaldiHooks mainly for the ability to dock the Chrome dev tools on the right or bottom of the window. It is great and I might finally make the jump and give up Chrome entirely. Some of the other mods also look nice.
However there was a couple of undocumented difficulties, you might want to add that to the readme:
1. Path on MacOS
The path to which to copy the files (manual install) is:
/Applications/Vivaldi.app/Contents/Versions/{version}/Framework.framework/Resources/vivaldi
(Where of course {version} represents the actual version number)
This was not very clear form the readme and a post on the Vivaldi forum put me on the right track.
2. Docked dev tools : enable remote debug
For some reason it is necessary to manually enable remote debugging on a specific port for the docked dev tools to work. Fortunately the error message is informative and it is easy to achieve:
Start Vivaldi with the following command (on MacOS):
open /Applications/Vivaldi.app --args --remote-debugging-port=9222
Or create a bash script:
#!/usr/bin/env bash

open /Applications/Vivaldi.app --args --remote-debugging-port=9222

You can then enjoy the docked dev tools.

Am I right that there should be /Vivaldi Framework.framework/ instead of /Framework.framework/?

Yes that is right, cut-paste problem, sorry.

Updated paths in README.md


[SPARK-12701] [CORE]  FileAppender should use join to ensure writing thread completion

Changed Logging FileAppender to use join in awaitTermination to ensure that thread is properly finished before returning.

Test build #48990 has started for PR 10654 at commit d937d09.

Test build #48990 has finished for PR 10654 at commit d937d09.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/48990/
Test PASSed.

Merged build finished. Test PASSed.

You can also remove @volatile private var stopped = false, right?

Yeah, that variable is no longer needed - I already removed it.  Did you mean @volatile private var markedForStopped?  That one is still used to trigger the thread to exit.

Oh, sorry. Didn't notice that you already removed it.

LGTM. Merging to master. Thanks, @BryanCutler

No problem!  Thanks @zsxwing

Also merged to 1.6


[WIP] Schedule time values

This is build on a few other PRs, but the last commit addresses https://github.com/ManageIQ/manageiq/pull/17520#discussion_r193437017
Depends on:
https://github.com/ManageIQ/manageiq/pull/17542
https://github.com/ManageIQ/manageiq-schema/pull/212
https://github.com/ManageIQ/manageiq/pull/17545

Closing since v2v is interacting with ServiceTemplates instead of MiqRequests


Installation and Update script

Hi @johncorderox ,
I am really happy somebody is taking time on developing this application, could I ask if you please provide an installation and update script.
Please see example below 👍
https://github.com/panique/huge/blob/master/_one-click-installation/bootstrap.sh
Thanks for epic app!

@johncorderox And if you don't have any time I am more than willing to create one for you.

not needed but on its the 'list' of future potential updates. thank you


show summary and detail for anyhow::Error

Is there security issue when display error details to any user? Or we just display error details in debug mode?

Is there security issue when display error details to any user? Or we just display error details in debug mode?

This is actually a difficult decision. I personally recommend that users use a newtype wrapper anyhow error to implement Writer, but it requires more operations from the user to determine what can be exposed to the outside world.


Proposal to change linknames for dependencies on AIX.

Directly link against the full library names on AIX in order to enable
having multiple library versions in the same directory.
Signed-off-by: Matthias Kraft<EMAIL_ADDRESS>Fixes #6368

Question is not only how openssl executable is linked during build, but even how applications are supposed to link against installed libraries. Customarily people expect -L /some/where -lcrypto, right? And what is suggested here? /some/where/libcrypto.so.1.1, i.e. by explicit full path. Would people actually appreciate it? I wonder if -L /some/where -lcrypto-1.1 would be more appropriate? Provided that we accept the premise that version has to be in the shared library's name that is. Because otherwise one can also wonder if it would be reasonable to demand that 1.0.x and 1.1.x are installed in different locations and binaries would have to look for shared libraries at these different locations. Note that I'm not arguing in favour of the latter, I only wonder what would be most reasonable thing to do. Because it might be something totally different...
It also makes me wonder how it worked so far. We install both libcrypto.a, libcrypto.so and libcrypto.so.ver into target location. But AIX linker's search algorithm for -lname seems to be "look for libname.a, if not found[!], look for libname.so". In which case -L /pre/fix/lib -lcrypto will always link with ... static library. Ah! Unless you pass -Wl,-bsvr4, in which case it looks for .so first. [And that's when equivalent of SONAME becomes handy.] But then question is what are AIX application developers/maintainers accustomed to. In other words it seems that in order to choose what to do, we have to assume something quite specific about AIX application developers/maintainers... The situation is intensified by the way AIX handles own shared libraries. They put multiple shared libraries into .a file, even of different bitness. So that ldd says for example /usr/lib/libc.a(shr.o) or /usr/lib/libc.a(shr_64.o), depending on if it's 32- or 64-bit application. It sounds that most sensible thing to do would be to

install static libraries in /pre/fix/lib/static/lib{crypto|ssl}.a
create /pre/fix/lib/lib{crypto|ssl}.a with libcrypto.so.ver inside.

And tell those who are accustomed to and expect static link to modify -L flag as -L/some/where/static. Trouble is that it would take custom AIX-specific install procedure, which contradicts the desire to unify all Unices...

It should be noted that AIX linker is very lax about what can be used as input. In fact it's apparently possible to use it to relink applications. Imagine you have apps/openssl linked with libssl.so and libcrypto.so. Now you ar r /tmp/libopenssl.a libcrypto.so.1.1 libssl.so.1.1. And now you ld -o /tmp/openssl apps/openssl -L /tmp -lopenssl -lc -lpthread. It works and ldd says all the right things. Well, binary itself can't be started, because /tmp/libopenssl.a(libssl.so.1.1) has dependency on libcrypto.so. But it should be possible to resolve. Bottom line is that ld apparently can be used as "install" tool. Or even post-install...

On related side note AIX linker seems to have -bsymbolic. And it would be appropriate to use it...

On another related side note AIX linker seems to have a notion of export list. As of now we -bexpall, but apparently it doesn't have to be the case.

/pre/fix/lib/static/lib{crypto|ssl}.a

One can actually wonder if it would be appropriate to do so on all Unices (and why not even Windows ;-). Naturally in shared build. I mean if configured with no-shared then it .a should still be installed in lib. Thing is that if you have .so's and want to link with .a instead, you'd have to specify them by full path, which is not exactly practical... No?

Hmmmm? On most unixen, static linking is all about using the right flag (-static, -Wl,-static, -Bstatic,...), is it not? I don't see why you'd need to give full paths in the general case...

On most unixen, static linking is all about using the right flag (-static ...

Trouble is that it's all-or-nothing flag. I mean -static says link all libraries static, while question is rather what if libcrypto.a is the only one I want to link statically.

And what is suggested here? /some/where/libcrypto.so.1.1, i.e. by explicit full path.

I view this as least appropriate option. Which means that I'd argue against this suggestion. BTW, compiler issues warning which reads "contains an incorrect file suffix" if you attempt to link with .so.ver, i.e. I kind of have compiler on my side :-)

On most unixen, static linking is all about using the right flag (-static ...

Trouble is that it's all-or-nothing flag. I mean -static says link all libraries static, while question is rather what if libcrypto.a is the only one I want to link statically.

This turned to be untrue. In sense that you can alternate between static and dynamic libraries for example as -Wl,-Bstatic,-lcrypto,-Bdynamic. Well, question would still be if it's universally available option, but suggestion to place static libraries into dedicated directory on all systems should be disregarded. Sorry about possible confusion.

Since we effectively decided to go for libcrypto.a(libcrypto[64].so.1.1) approach, this is effectively obsoleted by #6487. So I'm closing this. However, I'd appreciate if you, Mattias, could file separate request for the dso_dlfcn.c modification that accommodates new convention. Targeting master as initial step.

I will need a while, currently very busy and then vacation. So it will probably not be before end of July. However, there is commit makr/openssl@495cbb4279578c9d5a7b5268339017df85d5a14b which does the dladdr() implementation already. Outstanding is a working shlibloadtest.


Edit project description from Resonant Lab

Add a field to edit the item description markdown from somewhere in Resonant Lab (probably a separate page in the settings dialog?).

Closing as duplicate of #360

Oops, sorry, I didn't realize this was the same thing as my issue :crying_cat_face:
I do prefer to phrase it as a "notes" field (regardless of how it gets implemented in Girder), just to keep it more feature-centric.


BUG: barplot with log=True not working for values smaller than 1

Closes #9905. Also include a fix that log kw is ignored in horizontal bar plot. Test cases are based on standard mpl result:
plt.bar([0, 1, 2], [0.1, 0.01, 0.001], log=True)

plt.gca().get_ylim()
# (0.001, 0.10000000000000001)

plt.gca().yaxis.get_ticklocs()
# [  1.00000000e-04   1.00000000e-03   1.00000000e-02   1.00000000e-01
#    1.00000000e+00   1.00000000e+01]

Maybe log in bar plot and logx and logy kw should be merged in future...

Looks good. Thanks.

@sinhrks Thanks a lot! Can confirm this fixes my issue!


Train using vertexai

Hello there,
Thank you for your work. I'm interested in using your code to create a prompt for the PALM model from vertexai. The prompt's objective is to classify a given sentence into one of ten categories. However, I'm unsure about the specific code modifications required to implement PALM instead of the predefined models.
Currently I cannot run it even with Roberta since I don't have GPU.
Could you help me ?
Thanks

Thank you for your interest! Based on my understanding, you want to optimize a prompt using PaLM for classification. In this case, I would encourage you to check out our code on few-shot classification for inspiration.
Specifically, if you want to sub in your own model, you can simply modify the reward function at fsc_reward.py, which takes in proposed prompts and evaluates their performance when applied to your own model for classification.
Let us know if you have any oither questions. Best of luck with your project! Feel free to submit a pull request if you feel ready. I am closing this issue now because it is a clarification question.


Assigning group bug

https://github.com/papermerge/papermerge-core/issues/126
The issue that i posted in papermerge-core is actually a bug from ember js.
Frontend sends request like:
{
"data": {
"id": "d104ce00-94ec-4a68-ab14-a8daf5c328ff",
"attributes": {
"username": "test",
"email"<EMAIL_ADDRESS>"first_name": "test",
"last_name": "test",
"is_active": true,
"is_staff": true,
"is_superuser": false,
"date_joined": "2023-03-11T06:21:47.241940+01:00",
"perm_codenames": []
},
"relationships": {
"home_folder": {
"data": {
"type": "folders",
"id": "0721d7a5-7560-41d9-bbee-6d66f1d68076"
}
},
"inbox_folder": {
"data": {
"type": "folders",
"id": "f557e317-4ce2-4419-824c-499d5829f526"
}
},
"groups": {
///////////////////////
"data": []
///////////////////////
}
},
"type": "users"
}
}
where the data object isn't filled with meaning full data like this
{
"type": "groups",
"id": "2"
}
I tried sending new patch request including data array inside groups key of the request the user gets registered in the database

yes, and you can fix it !


Provide way for users to add commands for autocomplete

Hmm this is effectively a dup of #536 but since that is closed and I can't reopen a closed issue in GitHub (unlike Bugzilla) I am filing this separately.

Category

[x] Completion

OS

[x] Linux

Shell

[x] bash

Hello. I'm new to fzf and tried to use ** to trigger it while trying at the terminal to open a file using kate which is my favourite editor. However it did not work.
I was able to dig in and find that only commands that are given under a_cmds in fzf/shell/completion.bash are completed this way. So I added kate and a few other (like nano, clang since I prefer it to gcc which is included, python3 apart from existing python since I use only Py 3) to this variable and got the completion working.
However, this is not optimal since if there is a new fzf release and I re-pull the repo, the changes would get overwritten or I have to maintain a separate branch.
It would be better if there is some way like an environment variable (which can be set under .bashrc) or config file where one can add one's own custom commands for which one would like fzf ** completion.
In #536 I see you suggesting to add a complete line to .bashrc but this method (preferably envvar) would be much more easier. Something like FZF_COMPLETE_FOR='clang clang++ kate nano' which would then get included at the end of a_cmds.
BTW I think you should at least include nano and python3 in the basic list since they are so ubiquitous and used by users of all desktop environments.

We would need not just FZF_COMPLETE_FOR, but FZF_COMPLETE_PATH_FOR, FZF_COMPLETE_FILE_FOR, and FZF_COMPLETE_DIR_FOR. And I do not think adding a new set of environment variables that the users have to learn separately is better than recommending the builtin bash feature. Shortcuts may seem like a good idea at the moment, but they usually make the software more complicated, bloated, and harder to grasp in the long run.

BTW I think you should at least include nano and python3 in the basic list since they are so ubiquitous and used by users of all desktop environments.

Agreed, please send a pull request.

We would need not just FZF_COMPLETE_FOR, but FZF_COMPLETE_PATH_FOR,

Well you left out FZF_COMPLETE_PID_FOR 😉 because I do have a waitfor script that takes a pid argument, but I didn't ask for that first because I thought it may be too specific to me.

FZF_COMPLETE_FILE_FOR,

Um fzf supports selecting just files? You have written in completion.bash above _fzf_file_completion:
# Deprecated. No file only completion.
Perhaps you forgot!

and FZF_COMPLETE_DIR_FOR.

You seem to already have this: FZF_COMPLETION_DIR_COMMANDS. So you have already expected users would like to specify their own. I'm just asking to actually publicize and document this.

And I do not think adding a new set of environment variables that the users have to learn separately is better than recommending the builtin bash feature.

One doesn't have to “learn” anything here. One just has to specify these in ~/.fzf.bash. Either one easily writes:
FZF_COMPLETE_PATH_FOR='clang clang++ rg'
FZF_COMPLETE_DIR_FOR='tree'
FZF_COMPLETE_PID_FOR='waitfor'

Or one writes the longer complete command whose syntax one has to actually learn 😏.

Shortcuts may seem like a good idea at the moment, but they usually make the software more complicated, bloated, and harder to grasp in the long run.

What shortcuts do you mean? I am asking not for shortcuts but for ability to enable fzf completion for other commands.

BTW I think you should at least include nano and python3 in the basic list since they are so ubiquitous and used by users of all desktop environments.

Agreed, please send a pull request.

OK. Here you are: #1562. (For all of the requests, not just adding nano and python3.)

Sorry for being not clear enough. FZF_COMPLETE_PATH_FOR can be thought of as a shortcut for the method described in https://github.com/junegunn/fzf#supported-commands. We can already enable fuzzy completion for any command using bash builtin (complete) with more flexibility (i.e. you may want different options per command; help complete) without having to introduce new environment variables with arbitrary names only for bash users.

You seem to already have this: FZF_COMPLETION_DIR_COMMANDS.

See the commit message here: https://github.com/junegunn/fzf/commit/96176476f3990507b38f2ec45d24c12fcb7aa075. The variable was left undocumented on purpose. 3 years have passed, I don't think it was a good idea.
So I'm okay with adding nano and python3 to the list, but I don't want the extra variables.


Missing telemetry or at least extensibility hooks to inject telemetry

Azure CLI core contains telemetry that could theoretically be part of this repo. As it stands, the CLI has telemetry code build into various methods which means I can't convert those parts to this package without throwing away that customization.

Closing as until we have specific parts of the code where we want to raise events, there's nothing actionable here.
Also, I think without any changes, Azure CLI was able to hook in its own telemetry.

 :-P


Update png file with pptx diagrams to reflect changes on devguide

Pull Request Test Coverage Report for Build 362

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

Totals

Change from base Build 360:
0.0%

Covered Lines:
2638

Relevant Lines:
3247

💛  - Coveralls


Integration Test - Release - 2022/01/14 08:25:57

Auto create for integration test. IssueCommandFlow

Just type '#pri3'

#pri2

#pri3

#assign NonAllowedUser

The following users don't have valid GitHub IDs, or are not collaborators on this repo: nonalloweduser

#reassign PRMergerTest2

#reassign NonAllowedUser

#please-close

The following users don't have valid GitHub IDs, or are not collaborators on this repo: nonalloweduser

GitHub user PRMergerTest1 has been removed from the MicrosoftDocs organization, so they were automatically removed as an assignee.

#unassign PRMergerTest1

#unassign NonAllowedUser


Different location setting for README.md?

Hello,
for a project we need the ability to change the README.md path,
because we would like to create different docs for different audiences.
Is there a way to set this up?

Please use index property in config.
https://esdoc.org/config.html


Upload success not consistent

I'm using your plugin with Openload Api (https://openload.co/api#upload) but i'm having trouble figuring out what causing the problem. Sometime the upload get successful while sometimes, specially on big file (bigger than 1mb) the upload stuck on 100% progress and not reaching the .onUploadSuccess. I get the error by using .onUploadError and here's what I got:
xhr: {"readyState":0,"responseText":"","responseJSON":null,"status":0,"statusText":"error"}  status: error  errorThrown:
Here is my current code:
$("#home-drop-area").dmUploader({
    url : uploadurl,
    maxFileSize :<PHONE_NUMBER>, // 1G max upload
    multiple : false,
    dataType : 'json',
    method : 'POST',
    onUploadProgress: function(id, percent){
    console.log(percent);
},
    onUploadComplete : function(){
        console.log('File Uploaded Successfully!');
    },
    onUploadError : function(id, xhr, status, errorThrown) {
        console.log('xhr: ' + JSON.stringify(xhr) + '\n status: ' + status + '\n errorThrown: ' + errorThrown);
}
});

Does the plugin transfer using with multipart/form-data encoded?

I'm having a similar problem, mostly when uploading multiple very small files. I'll see several successful uploads, then one hangs and never completes.
When this occurs, the file being uploaded when the script hangs has been completely uploaded but the response is not detected. I can see the server sent the JSON response, but breakpoints set on the success and complete functions are not triggered when the upload "fails".  I believe the progress update events are preventing the success and/or complete events from occurring.
I disabled the progress updates in jquery-dm-uploader.js (see code snippet below), after which uploads were MUCH more reliable but still not perfect. I'm going to test a "Promise"-based approach to progress reporting (https://github.com/likerRr/jq-ajax-progress) and see if that works better.
Incidentally, I'm not having problems with large files. I'm running a large-file upload test on my embedded server right now. The file is ~2GB long, and 864MB have uploaded so far without incident.
// Ajax Submit
      url: file.widget.settings.url,
      type: file.widget.settings.method,
      dataType: file.widget.settings.dataType,
      data: fd,
      headers: file.widget.settings.headers,
      cache: false,
      contentType: false,
      processData: false,
      forceSync: false,
      //xhr: function() { return file.getXhr(); },```

Update: My problem was due to a bug in my server code, not in this script. Once fixed, I re-enabled progress updates and am able to upload multiple files of any size. My largest upload to-date was a 1,085,177,688 byte whopper.


[Feature Request] - Add Previous and Next blog buttons at end of every blog

Is your feature request related to a problem ? Please describe. ✍
Enhancements:
There is no way to navigate to recent (next and previous) blogs after reading a blog for user. It would be helpful for reader for having access to a next and previous blog links.

Describe breifly how would you implement the same.
Solution_steps:
Adding a next and previous blog links(buttons) at end of every blog but before other blog cards.

Additional context
Additional context:
Please assign this issue to me as a GSSoC'23 Contributer.
Are you contributing for a program?
GSSoC2023
Code of Conduct

[X] I have read and agree to the CONTRIBUTING GUIDELINES of this project.

Currently we don't need this as there are no blogs added!

@tech-bash There are sample blogs right(numbered from 0 to 5) ? Or maybe I could create some more sample blogs different from the current one and write logic for likes, comments and make sure blog id is formed based on exact time stamp it was written or based on its name. Currently I could create next and prev buttons for existing blogs.

Sure, go on show us a sample of how you want it to be then we could decide further doings!

close with no update
create new if anyone want to work on this issue


Config option to perform mib mapping on values

Could we get a boolean config option to specify whether to perform mib translation on OID values returned by the input.
e.g. sysObjID would be returned as:
iso.org.dod.internet.private.enterprises.netSnmp.netSnmpEnumerations.netSnmpAgentOIDs.linux
instead of:
.<IP_ADDRESS>.4.1.8<IP_ADDRESS>
Not sure how we'd handle the oid_root_skip portion of this as presumably we wouldn't want to be assume the same length as the varbind oid

Hey there!
We've moved this issue into this new SNMP integration plugin, which combines the logstash-input-snmp and logstash-input-snmptrap plugins into one, and finally adds support to this feature by setting oid_map_field_values => true. For now, it uses the same OID field's format, including oid_root_skip and oid_path_length configs.
Before upgrading, please have a look at the migration notes, as the new plugin introduced a few breaking changes compared to individual one. It will be bundled by default with Logstash in a future release (e.g. 8.15 or 8.16).
Thanks!


Ued integration

Please always provide the JIRA issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix SITES-8905
Test URLs:

Before: https://main--express-website--adobe.hlx.live/express/create/flyer?lighthouse=on
After: https://ued-integration--express-website--adobe.hlx.live/express/create/flyer?lighthouse=on

@chicharr somehow it is trying to render https://ued-integration--express-website--chicharr.hlx.page/, but since your repo isn't instrumented, this essentially 404s and hence fails the psi check. Not sure how the logic is supposed to work across repos with forks, but it seems the PR description is ignored here


Unable to consume Build Artifact while Using AzureDevOps task

Required Information
Entering this information will route you directly to the right team and expedite traction.
Question, Bug, or Feature?
Type: Question/Bug
Enter Task Name: here
Docker build with artifact
list here (V# not needed):
Environment

Server - Azure Pipelines or TFS on-premises?
Azure Pipelines

If using Azure Pipelines, provide the account name, team project name, build definition name/build number:

Agent - Hosted

If using Hosted agent, provide agent queue name:
Ubuntu

Issue Description
I am building C+++ project with AzureDevops. I am sucessfully able to build artifact by source code and able to publish. My next requiment is to build docker image with artifactory and push to docker hub. I am unable to achieve this. Dockerimage is pushing to docker hub but comile binary is not there.
PlineLine code.
variables:

name: ArtifactFeed
value: https://pkgs.dev.azure.com/vijayverma782003/_packaging/vijayverma782003/nuget/v3/index.json
name: dockerRegistry
value: docker.io/dockerid
name: buildImage
value: test

trigger:

master

jobs:

job: gcctest
pool:
vmImage: 'ubuntu-16.04'
steps:

script: sudo apt-get update && sudo apt-get install libboost-all-dev

script: g++ -std=c++11 -I/usr/include/boost/asio -I/usr/include/boost -o binary.out main.cpp
connection.cpp connection_manager.cpp mime_types.cpp reply.cpp request_handler.cpp request_parser.cpp server.cpp -lboost_system -lboost_thread -lpthread

powershell:
$commitId= "$env:BUILD_SOURCEVERSION"
$definitionName= "$env:BUILD_DEFINITIONNAME"

$shortId= $commitId.Substring(1, 8)

$buildName="$definitionName.$shortId"

Write-Host $buildName

Write-Output "$buildName">readme.txt

task: CopyFiles@2
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: '?(.out|.txt)'
targetFolder: $(Build.ArtifactStagingDirectory)

task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: result

task: DownloadPipelineArtifact@2
inputs:
artifact: 'result'
path: $(Build.SourcesDirectory)/bin

task: Docker@2
displayName: Login to Docker Hub
inputs:
command: login
containerRegistry: mytest

task: Docker@1
displayName: 'Build using multi-stage'
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: 'mytest'
arguments: '--build-arg ARTIFACTS_ENDPOINT=$(ArtifactFeed)'

task: Docker@2
displayName: Push
inputs:
containerRegistry: 'mytest'
repository: 'docker.io/***/azuretest'
command: 'push'

DockerFile.
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y libboost-all-dev
COPY .  /app
EXPOSE 80
CMD /app/binary.out <IP_ADDRESS> 80 .

Are you able to have a docker image with the compiled binary outside of pipeline?

Closing the issue. Please reopen the issue if problem still exist.


Question:cannot install with convenienceful

Caution: Please only report your issue related to the installation on your local PC or macOS. If you can get the help message by colabfold_batch --help or run a test prediction successfully, your installation is successful. Requests or questions regarding ColabFold features should be directed to ColabFold repo's issues.

What is your installation issue?
There is a error with GIT clone in my network when use beta_install_colabbatch_linux.sh to install. they will report follow that `Executing transaction: done
error: subprocess-exited-with-error
× git clone --filter=blob:none --quiet https://github.com/sokrypton/ColabFold /tmp/pip-install-_krqqx7n/colabfold_f5cf23b284f2462f9e767657c97e9f0e did not run successfully.
│ exit code: 128
╰─> [1 lines of output]
fatal: unable to access 'https://github.com/sokrypton/ColabFold/': GnuTLS recv error (-110): The TLS connection was non-properly terminated.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× git clone --filter=blob:none --quiet https://github.com/sokrypton/ColabFold /tmp/pip-install-_krqqx7n/colabfold_f5cf23b284f2462f9e767657c97e9f0e did not run successfully.
│ exit code: 128
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
`
Could you give local install package to install.
Computational environment

OS: Ubuntu 22.04
CUDA version:12

yes I also met this problem. Have you solved it?

Caution: Please only report your issue related to the installation on your local PC or macOS. If you can get the help message by colabfold_batch --help or run a test prediction successfully, your installation is successful. Requests or questions regarding ColabFold features should be directed to ColabFold repo's issues.
What is your installation issue?
There is a error with GIT clone in my network when use beta_install_colabbatch_linux.sh to install. they will report follow that `Executing transaction: done error: subprocess-exited-with-error
× git clone --filter=blob:none --quiet https://github.com/sokrypton/ColabFold /tmp/pip-install-_krqqx7n/colabfold_f5cf23b284f2462f9e767657c97e9f0e did not run successfully. │ exit code: 128 ╰─> [1 lines of output] fatal: unable to access 'https://github.com/sokrypton/ColabFold/': GnuTLS recv error (-110): The TLS connection was non-properly terminated. [end of output]
note: This error originates from a subprocess, and is likely not a problem with pip. error: subprocess-exited-with-error
× git clone --filter=blob:none --quiet https://github.com/sokrypton/ColabFold /tmp/pip-install-_krqqx7n/colabfold_f5cf23b284f2462f9e767657c97e9f0e did not run successfully. │ exit code: 128 ╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip. ` Could you give local install package to install.
Computational environment

OS: Ubuntu 22.04
CUDA version:12

I think this could be solved by replacing https: protocol with ssh protocol.
Through executing "$COLABFOLDDIR/colabfold-conda/bin/pip" install --no-warn-conflicts "colabfold[alphafold-minus-jax]<EMAIL_ADDRESS>That worked for me.


Remove graph

Describe the bug
Remove the graph functionality and it is not producing much impact and giving insight to restaurant owners also it is not working properly.
To Reproduce
Steps to reproduce the behavior:

Go to the graph tab

Expected behavior
To remove that tab and provide another functionality that can automate the process and have a higher impact on the restaurant owner

This is handled in #22 PR


Make the maximum files to index configurable (currently fixed to 500)

Validations

[X] I believe this is a way to improve. I'll try to join the Continue Discord for questions
[X] I'm not able to find an open issue that requests the same enhancement

Problem
The maximum files to index is not configurable (currently fixed to 500)
Solution
Can you make it configurable?

@tbressers, are you certain that 500 is the maximum number of files that can be indexed? From what I’ve seen in the indexing section, we have filesPerBatch = 500, which is intended to limit memory usage during indexing and minimize the number of requests made to the embedding providers. However, this doesn't mean the total number of files that can be indexed is limited to 500.

Ah! I must have misunderstood, I’ll check it but you can close this one.
Thank you!!


Enabling services.restya-board results in type error for phpfpm.poolConfigs

Issue description
error: The option value `services.phpfpm.poolConfigs.restya-board' in `/nix/var/nix/profiles/per-user/root/channels/nixos/nixos/modules/services/web-apps/restya-board.nix' is not of type `strings concatenated with "\n"'.

Steps to reproduce
Set services.restya-board.enable = true; in a NixOS configuration.
Technical details
It looks like #56625 changed the type of services.phpfpm.poolConfigs.restya-board from a string to a set, which the configuration does not see as compatible.

I have opened #63339 to fix this.

Looks like #63339 has been merged, so I assume this is fixed.


Clicking on item in Quick Open briefly shows weird path in input field

Cmd-Shift-O
Type the beginning of a filename, e.g. "br"
Click on an item in the dropdown

Result: You briefly see the path of the file appended to the characters you previously typed in the input field. However, the correct file opens anyway.

Fixed in 1.3

@rroshan1 Can you verify and close if this is fixed.

Verified the fix.. The issue no longer exists!!
Closing the issue.


Comments with multiple # are not removed completely

Bug
Description
The Intensio-Obfuscator fails to delete all comments in cases in which there are multiple "#" in one comment.
Command(s)
python .\Intensio-Obfuscator\intensio\intensio_obfuscator.py -i .\test -o .\test_obfuscated -mlen lower -ind 4 --verbose
Example(s)

Input file (source file):

print("Hello world!")  # this is kept # this is removed
print("Hello again!")  ## in this case, the first "#" is kept

Output file (obfuscated file)

print("Hello world!")  # this is kept
print("Hello again!")  #

Describe the normally expected behavior (optionnal)

print("Hello world!")
print("Hello again!")

Thank you for this return,
I solved this issue.
I solved also an another bug that not appear in the issues, but very similar.

input file (source file)

print("# test")  # test

output file (obfuscated file)

print("

The normally expected behavior

print("# test")


Still not executing. I have tryed all the steps you provied several times. Also the tips on WLM. [BUG]

Still not executing. I have tryed all the steps you provied several times. Also the tips on WLM. [BUG]🔵

Then you either need to shorten the name of your macro or figure out what is messed up from Blizzards new options.
reinterating what MUST be done and the order it needs to be done in to get GSE to work.
update to 3.1.14
Go to /macro and delete everything
Go to /gse - select each macro and choose Lcreate Icon”
Log out
Log back in
Drag the macro to the action bar
if the macro doesn’t work - repeat and shorten the name of the macro
This will get GSE to work but your macro will also be significantly broken and need a lot of rework.

Moving this to a discussion