FRQ Connections to PBL with Reflection

Show how FRQs or principles of FRQs are incorporated into to your final project.
FRQ 1: This FRQ was centered around 1D & 2D Arrays along with ArrayLists. The main point of the FRQ is to check whether or not elements of an array are diverse. Such operations are pretty important in any Java implementations, as many projects store arrays of information in a two-dimensional format. Let's take a look at how there were principles of ArrayLists & arrays implemented into our final project.
For Person.java, which is important for account creation and management, an ArrayList is used to represent user roles:
import java.util.ArrayList;
import java.util.Collection;
import jakarta.persistence.ManyToMany;

...

@ManyToMany(fetch = EAGER)
private Collection<PersonRole> roles = new ArrayList<>();

During the creation of the object, an ArrayList is assigned to the "roles" field so that it can store PersonRole objects. Since the ArrayList is stored as a collection it will be able to store multiple user roles. In our project, we have not yet implemented the different roles that a user can have, but this is a good baseline that we will utilize in Trimester 3.
For the specific implementation in mind, currently, we only have a Fantasy Basketball matchup that you can do one team at a time. However, during Trimester 3, we will work on making it so that there is a LEAGUE MANAGER role (the person who can create and manage the rules of the league) and then a basic role, for users who are simpy joining a fantasy league and competing. This ArrayList format will be used to accomplish this, which is the connection between the FRQ and PBL.

FRQ 2: This FRQ was based on class creation and a word guessing game. Essentially, there would be a set word that a user is trying to guess, and based on each guess, the computer would output back hints based on asterisks or plus signs - depending on whether or not a particular letter they guessed is in the word or not. Java is very useful for such a program, as it is good for string manipulation.
Throughout our PBL, we have gone through the process of creating classes with this same basic structure - it is likely the FRQ with the most overlap with PBL, as it is one of the most basic yet essential Java skills required to create a functioning backend.
Here is one example of a basic Java class implementation in our final project:

package com.nighthawk.spring_portfolio.nbapredictor.monte_carlo;

public class Player {
    private String name;
    private PlayerStats stats;

    // Getters and setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public PlayerStats getStats() {
        return stats;
    }

    public void setStats(PlayerStats stats) {
        this.stats = stats;
    }
}

In our fantasy basketball project, this was the Player.java file, where we initialized the getters and setters for the player object. The anatomy of the class was simple - it was a public class, with private instance variables, along with setters and getters.

FRQ 3: This FRQ had implementations of 2D arrays - mainly sparse arrays. Sparse arrays are mainly used so that it can allow for easy manipulation of data stored inside of an array.

In our project, we have not implemented too many sparse arrays or 2D arrays, as we are storing most of the fantasy basketball data in different ways (sending JSON data in 1D array to the backend), but there are a couple of different ways we could implement this into our project if we wanted to:
We could make it so that team rosters are stored to a user in the form of a 2D array - the array could be initialized to have a fixed number of players based on how many are allowed on a team. Furthermore, for the drafting process, we could implement code that would allow for situations where a roster array is not completely full - sparse arrays. Sparse arrays, which handle such situations by storing null references or other default values, will help when there are empty slots on a team. Furthermore, the array size will dynamically change based on how many players have been drafted. This is something for our team to think about implementing when we expand on our current features.

FRQ 4: This FRQ is more related to interfaces (which are no longer a specific FRQ type on the AP exam), but there is also an emphasis on methods and control structures. Throughout this FRQ, knowledge of methods and control structures were necessary. First of all, through creating the NumberGroup interface, we had to create an interface which represented a group of integers and had a method to check if an integer was in that group. We had to write a "contains" method. In the Range class in part b, we had to implement the contains method, and had to use control structures through conditional statements to check whether or not an integer was within the range. Finally, with the MultipleGroups class, which implemented the NumberGroup interface, control structures were used to iterate over each NumberGroup and see if an integer was in any of them. The entire FRQ had a lot to do with implementing interfaces, classes, methods, and control structures in Java.

For our project implementation, we had to utilize a lot of methods and control structures (as for most projects). Here are some examples in our final project:
for (int i = 0; i < numberOfSimulations; i++) {
    double[] fantasyPoints = simulateFantasyPoints(meanFantasyPoints, standardDeviation);
    projectedFantasyPointsA.add(fantasyPoints[0]);
    projectedFantasyPointsB.add(fantasyPoints[1]);
}

In the above implementation, control structures (for loop) were utilized in order to call a method simulateFantasyPoints to add the projections for each drafted fantasy team to the fantasyPoints list.

package com.nighthawk.spring_portfolio.mvc.person;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/*
Extends the JpaRepository interface from Spring Data JPA.
-- Java Persistent API (JPA) - Hibernate: map, store, update and retrieve database
-- JpaRepository defines standard CRUD methods
-- Via JPA the developer can retrieve database from relational databases to Java objects and vice versa.
 */
public interface PersonJpaRepository extends JpaRepository<Person, Long> {
    Person findByEmail(String email);

    List<Person> findAllByOrderByNameAsc();

    // JPA query, findBy does JPA magic with "Name", "Containing", "Or", "Email", "IgnoreCase"
    List<Person> findByNameContainingIgnoreCaseOrEmailContainingIgnoreCase(String name, String email);

    /* Custom JPA query articles, there are articles that show custom SQL as well
       https://springframework.guru/spring-data-jpa-query/
       https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
    */
    Person findByEmailAndPassword(String email, String password);

    // Custom JPA query
    @Query(
            value = "SELECT * FROM Person p WHERE p.name LIKE ?1 or p.email LIKE ?1",
            nativeQuery = true)
    List<Person> findByLikeTermNative(String term);
    /*
      https://www.baeldung.com/spring-data-jpa-query
    */
}

The above implementation is the PersonJpaRepository.java file. This is a prime example of interfaces in the PBL template we utilize for CSA. The interface that has been created in the file allows for database interaction to perform CRUD operations on the Person object. The interface also has many unique components, such as allowing for querying methods (i.e. findByEmail). Interfaces allow for greater code efficiency by creating templates that can be utilized in other files.

Overall Reflection on FRQs and PBL Crossover
Doing these FRQs and exploring the intersections between my group's final project and the key concepts made me understand what concepts I need to get better at and what concepts I am more fluent in.

The FRQs on 2D arrays and methods/control structures/interfaces were definitely very challenging. I was not able to do these FRQs completely on my own, and had to utilize external resources to get a fully running and functional program. I think the issue that I had was not with writing the basic implementations of the programs that each part of the FRQ asked to do, but rather, combining them all together to have a running program. I will definitely need to work on doing things within a time limit of 15 minutes per FRQ. I also need to work on understanding how to manipulate 2D arrays, writing complex control structures, and understanding what situations require a string to array conversion.

It is clear that almost all the FRQ concepts have some sort of implementation in the PBL, which is very important. Throughout Trimester 3, instead of just drawing these comparisons at the end as a reflection, I will be constantly comparing practice FRQs to the work we are doing on our project to make sure that I am grasping the concepts more firmly and seeing a greater purpose to the work that I am doing. This will help me for the AP exam and for my programming journey in the future.

Your thoughts are outstanding.  I enjoyed reading them and seeing your growth.
I always think of a 1D/arraylist of a class like player as a 2D array of mixed data types.  With possibility of 3D if you use something like a collection.
A more pure 2D example is images or neural network data.  You have application for both in your project.

By doing these four FRQs and realizing how the code are group had built for our project was related, made me understand why we studied certain concepts in class and had student lessons on them. It also made me realize which parts of computing theory I lacked understanding and needed more practice in.
The FRQ on classes was better than the rest of the FRQs for me, since our student lesson was on the introduction on POJOs and how they should be formatted. When working with Orlando on the channel creation aspect of our project, we incorporated many POJOs for things like username, channelID, description, etc. When doing this FRQ about my concept of poker, I recalled how we used POJOs not only in Channels.java but also in other parts of our project like Messages.java. This made it easier for me to understand classes, helping me complete the FRQ.
The FRQs on 2D arrays and methods/control structures/interfaces were on the harder side. The main problem was that our project never utilized SparseArrays/2D arrays, which meant I had no idea what it looked like (even though I should have known). This made the third FRQ difficult for me, as I even asked Orlando and we both tried to look for any trace of us using 2D arrays in our FRQ. Additionally, I also combined all my code for the methods FRQ to develop a sorting method in order to determine if a number belonged or didn't belong, this could have been done better if I had written blocks of code one by one like the FRQ had asked.
Clearly, I have a lot more to learn and lot more to practice, especially for the FRQs I struggled in. But I'm interested, and willing to put in the work for next trimester. As a student in trimester 2, I lacked to show many concepts that we learned in class, and I was also not able to perform simple tasks like deploying a backend repository. However, despite the FRQs having the purpose of stressing or frustrating students, I actually found them fun and sort of entertaining, they indirectly helped me link all the concepts we learned in class, and I was able to identify the code we had done in our projects instantly.
As Trimester 3 comes up, I think I'm going to consistently reference the four important FRQs when developing new features for PLACE. By being up to date, and knowing how each project aspect relates to what portion of the FRQ, I believe I will be much more prepared for the AP exam, and I hope, a better programmer.

Liked how you implemented your team's main concepts into the FRQ, the connecting between PBL and FRQ was also solid

Liked how you implemented your team's main concepts into the FRQ, the connecting between PBL and FRQ was also solid. This merits a 3.6/3.6 for the FRQ and 4.0/3.6 for the association between PBL and FRQ

No depth in crossover grading


View isInEditMode

More often than not, when using MagicViews library, layout preview would break with an exception that font directory is empty. This is because the view tries to load the font even when in edit mode.
This may happen if a MagicView is used in another custom view and setFont() method is called in the code of the custom view.
Issue is avoided if all init() and setFont() methods in MagicViews are wrapped with isInEditMode() method.
This PR introduces this change. It also adds an additional example which now demonstrates that layout preview has no issue displaying custom views.

This is ok with me. I'm merging it to dev. CircleCI will be fixed in dev branch


Glider 2.0 does not support use of in-app browser

Glider v1.8.1 had the "Open links in custom tabs" option which opened links in in-app browser. This setting appears to be missing in v2.0. Is this intended? If yes, do you plan to add this option?
Thanks for the great app!

There's a good chance this setting will return. It requires some custom code that I had hoped to not have to write, but that's certainly not insurmountable.

A setting for this has been added (3ab5c792c9797ca22454789388f87d47469a3394, a5208a008729e282f3af022e83f4f2916dda2b0c) and will be part of the next release.


Update README.md

typo fix.

Please fix the chargae checkout as well, @demonnico.

Tnank you for PR. Since this PR has been approved, this PR will be closed.


feat: Composer module improvement

Currently, the environment has few customization options. Therefore, I added some features that allow flexibility and deploy in an environment with shared vpc.

Thanks for the PR! 🚀
Unfortunately it looks like some of our CI checks failed. See the Contributing Guide for details.

⚠check_whitespace
Failed whitespace check. More details below.

Checking for trailing whitespace
Checking for missing newline at end of file
Error: No newline at end of file ./modules/create_environment/main.tf
Error: No newline at end of file ./modules/create_environment/variables.tf

⚠check_terraform
Failed Terraform check. More details below.

Running terraform fmt
examples/simple_composer_env/main.tf
--- old/examples/simple_composer_env/main.tf
+++ new/examples/simple_composer_env/main.tf
@@ -31,6 +31,6 @@
  project_id        = var.project_id
  composer_env_name = var.composer_env_name
  region            = var.region
-  network = var.network
-  subnetwork = var.subnetwork
+  network           = var.network
+  subnetwork        = var.subnetwork
}
Error: terraform fmt failed with exit code 3
Check the output for diffs and correct using terraform fmt <dir>

Any updates?

LGTM


C: Replace tb_client.h with script that generates it

tb_client.h gets out of sync so much that it's better if we auto generate it for the near future. TigerBeetle clients who build tb_client also get the generated header in zig-out and it's no longer tracked in git versioning to avoid manual sync issues.

Should we leave src/c/tb_client.h in source and update it with that generated by zig build tb_client? Or should we remove it to avoid syncing? @sentientwaffle

Since it is a source file (albeit generated) and not too large, let's leave it checked in. This way we can easily see its changes over time in git history — and it is always obvious when it is modified.
We should add a github workflow to verify that it is clean (i.e. does not need to be regenerated).

Should we leave src/c/tb_client.h in source and update it with that generated by zig build tb_client? Or should we remove it to avoid syncing? @sentientwaffle

It's worth noting that src/c/test.zig uses a @cImport(@cInclude("tb_client.h")) to test the FFI API.

I think the @compileError in src/c/tb_client.zig:global_allocator is getting eagerly evaluated when it shouldn't be. You'd normally fix this by hiding it behind a decl:
// else @compileError();
else no_allocator;
const no_allocator = @compileError();
``

Is there anywhere else that we do this pattern?


Executing changed line but saving original in history

I want to implement my own integrated variables such as ~ that stands for $HOME. I would like for example ^ to stand for user desktop so that  notepad ^\meh creates meh file on the desktop. Furthermore, I don't wont to replace ^ with correct path as it will also change it in history.
I first did this:
Set-PSReadlineKeyHandler -Key "Enter" -ScriptBlock {
    param($key, $arg)

    $word    = '^'
    $replace =  "$Env:USERPROFILE\Desktop"

    $line = $null
    $cursor = $null
    [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
    $word_idx = $line.IndexOf($word)
    if ($word_idx -ne -1) { [Microsoft.PowerShell.PSConsoleReadLine]::Replace($word_idx, $word.Length, $replace) }
    [Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()
}

This works OK except history. I tried this next:
Set-PSReadlineKeyHandler -Key "Enter" -ScriptBlock {
    param($key, $arg)

    $word    = '^'
    $replace =  "$Env:USERPROFILE\Desktop"

    $line = $null
    $cursor = $null
    [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
    $word_idx = $line.IndexOf($word)
    if ($word_idx -eq -1) { [Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine(); return }

    [Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
    [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()

    $nline = $line.Replace($word, $replace)

    Write-Host
        iex $nline | Write-Host
    Write-Host
    [Microsoft.PowerShell.PSConsoleReadLine]::InvokePrompt()
}

and now history is OK and command gets executed but outputed lines will not move the prompt.
Also, any error will be output via PSReadline, (in this case just typing ^ issues Oops, something went wrong instead The term 'c:...\Desktop is not recognized as the name of a cmdlet (minor issue for me)
How can I achieve this?

If I understand correctly, you want the unmodified command line in PSReadline history, and not the modified.
Assuming so, maybe you can be creative with Set-PSReadlineOption -AddToHistoryHandler.  e.g., if you modify the command line, insert an empty comment like <##> at the start, and in your AddToHistoryHandler, return false when the line starts with that text.
Your PowerShell history (Get-History) might look a little weird, but maybe you don't care.
Alternatively, maybe you can set a variable before calling AcceptLine, and clear it after.  Your AddToHistoryHandler would return $false when the variable is set.

Closing - I think this is answered.


[Request] Conditional Break Points

Make it so you can set a conditional breakpoint. Perhaps also make it so you could do this with ecall as well.

Current workaround:
beq a0 x0 nobreak
    ebreak
nobreak:
    nop # This is is the next line of your code which should be executed if the break is or is not taken.


Errors in compiling GRSIData and iThembaData

Hello,
I have been trying to compile GRSIData and iThembaData, but it is failing. I have however overcome the first error on compilation:
When in the directory /Software/GRSISort/GRSIData (as from) and running make, it throws an error as:
nbernier@nbernier-KVM:/Software/GRSISort/GRSIData$ make -j16
Unknown argument "--incdir"!
Usage: grsi-config [--version] [--cflags] [--libs] [--all-libs] [--help]
Compiling .build/libraries/TGRSIAnalysis/TDescant/TDescant.o[ERROR]
libraries/TGRSIAnalysis/TDescant/TDescant.cxx:8:22: fatal error: TRunInfo.h: No such file or directory
compilation terminated.
makefile:171: recipe for target '.build/libraries/TGRSIAnalysis/TDescant/TDescant.o' failed
make: *** [.build/libraries/TGRSIAnalysis/TDescant/TDescant.o] Error 1
In the makefile, there is only one reference to --incdir:
nbernier@nbernier-KVM:/Software/GRSISort/GRSIData$ cat makefile | egrep "incdir"
INCLUDES  := $(addprefix -I$(PWD)/,$(INCLUDES)) -I$(shell grsi-config --incdir)
To me this meant that the makefile had an error in its referencing of grsi-config, as grsi-config (at least the one I installed, being the current stable <IP_ADDRESS>) does not have that --incdir option. Perhaps it is an error, or perhaps the code was changed and that flag removed, but I am unsure. But to test, I modified the makefile.
When changing the "--incdir" reference as here
nbernier@nbernier-KVM:/Software/GRSISort$ cat GRSIData/makefile | egrep "incdir"
INCLUDES  := $(addprefix -I$(PWD)/,$(INCLUDES)) -I$(shell grsi-config --incdir)
to rather be "--all-libs"
nbernier@nbernier-KVM:/Software/GRSISort$ cat GRSIData/makefile | egrep "all-libs"
INCLUDES  := $(addprefix -I$(PWD)/,$(INCLUDES)) -I$(shell grsi-config --all-libs)
the errors change to
nbernier@nbernier-KVM:/Software/GRSISort$ make -C ./GRSIData/
make: Entering directory '/Software/GRSISort/GRSIData'
Compiling .build/libraries/TGRSIAnalysis/TSharc/TSharc.o[ERROR]
libraries/TGRSIAnalysis/TSharc/TSharc.cxx: In copy constructor ‘TSharc::TSharc(const TSharc&)’:
libraries/TGRSIAnalysis/TSharc/TSharc.cxx:88:37: error: type ‘TDetector’ is not a direct base of ‘TSharc’
TSharc::TSharc(const TSharc& rhs) : TDetector()
^
libraries/TGRSIAnalysis/TSharc/TSharc.cxx:88:1: warning: base class ‘class TGRSIDetector’ should be explicitly initialized in the copy constructor [-Wextra]
TSharc::TSharc(const TSharc& rhs) : TDetector()
^
libraries/TGRSIAnalysis/TSharc/TSharc.cxx: At global scope:
libraries/TGRSIAnalysis/TSharc/TSharc.cxx:95:6: error: prototype for ‘void TSharc::AddFragment(const std::shared_ptr&, TChannel*)’ does not match any in class ‘TSharc’
void TSharc::AddFragment(const std::shared_ptr& frag, TChannel* chan)
^
In file included from libraries/TGRSIAnalysis/TSharc/TSharc.cxx:1:0:
/Software/GRSISort/include/TSharc.h:56:9: error: candidate is: virtual void TSharc::AddFragment(std::shared_ptr, TChannel*)
void AddFragment(std::shared_ptr, TChannel*); //!<!
^
libraries/TGRSIAnalysis/TSharc/TSharc.cxx: In member function ‘virtual void TSharc::BuildHits()’:
libraries/TGRSIAnalysis/TSharc/TSharc.cxx:146:4: error: ‘fHits’ was not declared in this scope
fHits.push_back(std::move(hit));
^
libraries/TGRSIAnalysis/TSharc/TSharc.cxx:154:24: error: ‘fHits’ was not declared in this scope
for(auto& fSharcHit : fHits) {
^
libraries/TGRSIAnalysis/TSharc/TSharc.cxx: In member function ‘virtual void TSharc::Clear(Option_t*)’:
libraries/TGRSIAnalysis/TSharc/TSharc.cxx:178:2: error: ‘fHits’ was not declared in this scope
fHits.clear();
^
makefile:171: recipe for target '.build/libraries/TGRSIAnalysis/TSharc/TSharc.o' failed
make: *** [.build/libraries/TGRSIAnalysis/TSharc/TSharc.o] Error 1
make: Leaving directory '/Software/GRSISort/GRSIData'
instead, which to me meant that the proper reference is supposed to be --all-libs and not --incdir.
The same change for iThembaData throws this similar error:
nbernier@nbernier-KVM:/Software/GRSISort$ make -C ./iThembaData/
make: Entering directory '/Software/GRSISort/iThembaData'
Compiling .build/libraries/TTdr/TTdrFile.o    [ERROR]
libraries/TTdr/TTdrFile.cxx:18:22: fatal error: TTdrFile.h: No such file or directory
compilation terminated.
makefile:166: recipe for target '.build/libraries/TTdr/TTdrFile.o' failed
make: *** [.build/libraries/TTdr/TTdrFile.o] Error 1
make: Leaving directory '/Software/GRSISort/iThembaData'
As extra information in case it is needed:
nbernier@nbernier-KVM:/Software/GRSISort$ root --version
ROOT Version: 6.18/04
Built for linuxx8664gcc on Oct 11 2019, 06:14:26
From v6-18-04@v6-18-04
nbernier@nbernier-KVM:/Software/GRSISort$ grsi-config --version
<IP_ADDRESS>
nbernier@nbernier-KVM:/Software/GRSISort$ make --version
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Any help would be much appreciated!

The issue is that you're trying to compile the new parser libraries for the split version of grsisort (version >= <IP_ADDRESS>) with and old version of grsisort. You need to update your grsisort and compile it before compiling the parser libraries.
The --incdir flag is a new one which provides the path to the include directory of grsisort so that the parser libraries can find the header files. This was not needed in earlier versions of grsisort as everything was compile by one single makefile.

Thanks for your reply, Vinzenz! Does this mean I should use the "master" version instead of the "current" version?

Yes, you would need to use either the master (which is the most up-to-date version) or the v<IP_ADDRESS> or v<IP_ADDRESS> tags.


Parser error messages should contain line and column information

Digging through the source code I’m a little surprised. The “location” information for every error is passed along but it isn’t actually used in the error messages themselves, which means that it’s very hard to track down what part of the file generated the error.
Ideally, something like https://www.npmjs.com/package/source-code-error should be used for error messages. That would also require passing the entire input along though. Simply including the line and column information in parser error messages would be great tho.

I've been slightly annoyed by this a few times.

Hi, I'm kind of confused by this.  I'd like to help.
If I understand correctly, there's nothing to fix.  You want the error object member .location, probably .location.start

If I understand you correctly, the error message is just the string part of a larger error object, which does include the stuff you're asking for.
The reason I'm confused is that this is really visible, by example in the way the repl handles errors, so I'm concerned that I misunderstand.
To repro, go to the official repl, and change one of the numbers in the demo input to a letter incorrectly.

So, wherever you're getting .message off an error object, just get .location too.
I took the default grammar from the peg repl and opened a console.  Then I stuffed the grammar into a template string (careful to double those backslashes at the very end or you get a super confusing error,) and threw it through peg in the console.
const standardGrammar = `// Simple Arithmetics Grammar
// ==========================
(... omitted, use the whole thing ...)
_ "whitespace"
  = [ \\t\\n\\r]*

See those doubled backslashes in the last line?  Don't skip that
Then in a browser console from the REPL, where it's already been loaded and scoped for you, you can just
const pegParserScript = peg.generate(standardGrammar, {output:"source"}),
      parser          = eval(pegParserScript);

parser.parse("1 + 2 * 5 / (2 - 1)");  // 11

And so if you want to see the error notation in its natural form, just parse something wrong there

You will typically get something like
try { p.parse('2 * (d+4)'); } catch (e) { console.log(JSON.stringify(e, undefined, 2)); }
VM4462:1 {
  "message": "Expected \"(\" or integer but \"d\" found.",
  "expected": [
    {
      "type": "literal",
      "text": "(",
      "ignoreCase": false
    },
    {
      "type": "other",
      "description": "integer"
    }
  ],
  "found": "d",
  "location": {
    "start": {
      "offset": 5,
      "line": 1,
      "column": 6
    },
    "end": {
      "offset": 6,
      "line": 1,
      "column": 7
    }
  },
  "name": "SyntaxError"
}

So, supposing there's a function for your UI called "showErrorMessage" that takes a string of the error, and that it's currently called in something like
try {
  parsey goodness
} catch (e) {
  showErrorMessage(e.message);
}

Instead write something like
try {
  parsey goodness
} catch (e) {
  showErrorMessage(`[ln ${e.location.start.line}:${e.location.start.column}] ${e.message}`);
}

@mikeal - I recognize I was ridiculously late; I'm not currently a repo official of any kind
That said, I'd like to reduce the size of this issue tracker somewhat.  If the above solves your problem, would you consider closing this please?  😄 Thanks
If not, would you let me know why not, and I'll try again?

We have workarounds in place already so this no longer effects us directly, it’s just something that should really be fixed in the core library for the benefit of others.

I don't understand what you feel needs to be fixed, or worked around
The fields you mentioned are present.  They even have the names you want.
Am I misunderstanding you?

Like, would you consider this fixed if there was, similar to .message, a .locmessage, that already had those other fields baked into it?


Policy: Discussing past behavior

Should the spec ever refer to past behavior of Rust?

ehuss's preference is to never refer to past behavior.

On this subject, rfc3355 says

The specification is specific to the latest version of Rust. [...]

While the specification might include notes about the Rust version that a feature was introduced in for informative purposes (similar to standard library documentation), it does not attempt to accurately specify older, unsupported versions of Rust.

The Vision blog post says:

The descriptive definitions tell the reader how a construct will behave with
respect to a specific Rust version (e.g. Rust 1.76).


Empty body should not be decoded as JSON

Feign turns a 200 success response with an empty body into an exception.  The problem is that Synchronous method  executeAndDecode does not check the response body exists or content length header before calling decode here: https://github.com/Netflix/feign/blob/master/core/src/main/java/feign/SynchronousMethodHandler.java#L129
While returning empty might not be the best API, many do it.  Turning this into a null object return would be perfectly acceptable.

on the "While returning empty might not be the best API, many do it." bit..
can you cite any public apis that return 200 and empty body instead of 404?
I've never seen one, but agree it could exist. If this is internal stuff,
I'd probably ask them to change and make a wrapping decoder until that
happens.

ps the reason why decode doesn't check the body is that it can build an object from http headers. I'm assuming the exception came from a gson or jackson decoder?
One way around your issue could be to write a wrapping decoder which does what you are looking for.
Ex.
class NullOnNoContentDecoder {
    Decoder delegate = new GsonDecoder();

    @Override
    public Object decode(Response response, Type type) throws IOException {
      if (response.body() == null) return null;
      return delegate.decode(response, type);
    }
  }

If we get more nods on the idea of making no bodies default to null.. happy to re-open. Hope the above helps for now.


Throw better exception for stale Fluent API builders

Problem:
When multiple fields of single owned type are added to the class, then there is a problem with migration process - MyEntity containins multiple MyOwnedEntity fields. The seeding process throws an exception:
Exception:
System.InvalidOperationException: 'The entity of type 'MyEntity' is sharing the table 'my_entity' with entities of type 'MyEntity.FirstOE#MyOwnedEntity', but there is no entity of this type with the same key value '{Id: 1}' that has been marked as 'Added'.'
Envirnoment:
EF Core 2.2.4, EF Core Sqlite 2.2.4, .NET CORE 2.2, VS 2019
Reproducible example:
[(https://github.com/lugospod/TestEfCoreBuggy)]
Debugging:
When I went to debug the code I came to the following conclusion:

If you have multiple owned entities of same type, then the problem is with the one that FIRST called OwnsOne. So all of the other Owned instances will go smoothly through seeding process except the first one
Call to the method HasData (for seeding purposes) the owned entity that called the OwnsOne first is getting a different EntityType then the rest that follow after it (I inspected the types inside the HasData seeding method). The one that called the OwnsOne first got the following type ("EntityType:  MyOwnedEntity") but all of the other got a "specific" type such as this one "EntityType: EntityType: MyEntity.SecondOE#MyOwnedEntity" - but this I guess could be due to the fact that EF Core gave all of the other specific names to maintain uniqueness of types?
In the file MigrationsModelDiffer.cs there is call to targetEntityType.GetData() method. This method is trying to get the data for "EntityType: EntityType: MyEntity.FirstOE#MyOwnedEntity" and not "EntityType:  MyOwnedEntity"  which was used in the seeding process so it return 0 elements and then he exception is thrown due.

For now, I suspect that there is an issue with types...but I wasn't able to determine the root cause yet...
Any hints on what can I do to avoid understanding the whole EF Core logic?
Tnx!
P.S. Here is a code sample that was used to reproduce the error:
My entity class that references Owned entities:
[Table("my_entity")]
    public class MyEntity
    {
        [Column("id", Order = 1)]
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        public MyOwnedEntity FirstOE { get; set; }
        public MyOwnedEntity SecondOE { get; set; }
    }

Definition of owned entity:
 public class MyOwnedEntity
    {
        public int? CodebookId { get; set; }
        [MaxLength(100)]
        public string Name { get; set; }
    }

Configuration for owned entities and seeding:
 public void Configure(EntityTypeBuilder<MyEntity> builder)
        {
            var ownershipFirst = builder.OwnsOne(p => p.FirstOE); // This one causes the error
            ownershipFirst.Property(c => c.CodebookId).HasColumnName("first_codebook_id"); ;
            ownershipFirst.Property(c => c.Name).HasColumnName("first_codebook_name"); ;

            var ownershipSecond = builder.OwnsOne(p => p.SecondOE);
            ownershipSecond.Property(c => c.CodebookId).HasColumnName("second_codebook_id");
            ownershipSecond.Property(c => c.Name).HasColumnName("second_codebook_name");

            builder.HasData(new MyEntity() { Id = 1 });

            ownershipFirst.HasData(new { MyEntityId = 1, CodebookId = 1, Name = "Test" });
            ownershipSecond.HasData(new { MyEntityId = 1, CodebookId = 2, Name = "Test2" });
        }

Note for triage: the issue here is that the builders are stashed away, then when they are later used for HasData they do not have valid state because the model has changed underneath.
@lugospod You can workaround this by using the builders where they are declared. For example:
public void Configure(EntityTypeBuilder<MyEntity> builder)
{
    var ownershipFirst = builder.OwnsOne(p => p.FirstOE); // This one causes the error
    ownershipFirst.Property(c => c.CodebookId).HasColumnName("first_codebook_id"); ;
    ownershipFirst.Property(c => c.Name).HasColumnName("first_codebook_name"); ;
    ownershipFirst.HasData(new { MyEntityId = 1, CodebookId = 1, Name = "Test" });

    var ownershipSecond = builder.OwnsOne(p => p.SecondOE);
    ownershipSecond.Property(c => c.CodebookId).HasColumnName("second_codebook_id");
    ownershipSecond.Property(c => c.Name).HasColumnName("second_codebook_name");
    ownershipSecond.HasData(new { MyEntityId = 1, CodebookId = 2, Name = "Test2" });

    builder.HasData(new MyEntity() { Id = 1 });
}

Or more idiomatically:
public void Configure(EntityTypeBuilder<MyEntity> builder)
{
    builder.OwnsOne(
        p => p.FirstOE,
        b =>
        {
            b.Property(c => c.CodebookId).HasColumnName("first_codebook_id");
            b.Property(c => c.Name).HasColumnName("first_codebook_name");
            b.HasData(new {MyEntityId = 1, CodebookId = 1, Name = "Test"});
        });

    builder.OwnsOne(
        p => p.SecondOE,
        b =>
        {
            b.Property(c => c.CodebookId).HasColumnName("second_codebook_id");
            b.Property(c => c.Name).HasColumnName("second_codebook_name");
            b.HasData(new {MyEntityId = 1, CodebookId = 2, Name = "Test2"});
        });

    builder.HasData(new MyEntity() { Id = 1 });
}

Thank you very much for the workaround ... I lost quite a lot of time on this one :(

Note to implementor: We should throw a better exception when the builder is stale. Related to https://github.com/aspnet/EntityFrameworkCore/issues/11108.

Same as #13519


how can we connect web socket with this drawing board?

@akshita-kamani This repo is actually provide a pure render component. you can create a wrapper component and use other packages such as socket.io to send and receive drawing actions.


Fixes applied during the September Maintenance Tasks

Addressed GitHub Issues:
https://github.com/ArcGIS/solutions-desktop-templates/issues/169
https://github.com/ArcGIS/solutions-desktop-templates/issues/262
https://github.com/ArcGIS/solutions-desktop-templates/issues/267

@mfunk - just let me know if we should hold off on this PR until we have the meeting to discuss this repo. For example - in this PR's case - if it is OK to combine the Pro & ArcMap toolboxes if the ArcMap one can be used as-is in Pro. Otherwise, I'll merge in a day or so if I don't hear back.

@adgiles @csmoore We will not merge toolboxes for several reasons:

Tool edits in Pro are NOT backwards compatible with ArcMap (any version) or earlier versions of Pro. Read Note under Compatibility section: http://pro.arcgis.com/en/pro-app/help/analysis/geoprocessing/modelbuilder/modelbuilder-changes-in-arcgis-pro.htm
System tools are different between Map and Pro (Pro is getting new tools that don't exist in Map)

Yes, this sucks and is not a nice solution, but it is the method we decided to use to solve the problem at hand. Until ArcGIS Desktop (ArcMap/ArcCatalog/ArcScene/ArcGlobe) disappears completely and forever... then we will revisit this.

Just to try to clarify - the suggested change to this PR is to add a file:
operational_graphics/toolboxes/ClearingOperationsTools_10.3.tbx  (or 10.4 - pending meeting to discuss version supported by this repo vs. templates)
This is a bit off-topic but would Pro, like most products, warns you when you are about to save your toolbox to an older/incompatible format - does this help address this editing scenario mentioned?

@csmoore There are toolboxes for ArcMap and Pro in the repo already:

https://github.com/Esri/solutions-geoprocessing-toolbox/blob/dev/operational_graphics/toolboxes/Clearing Operations Tools_10.4.tbx
https://github.com/Esri/solutions-geoprocessing-toolbox/blob/time-selection/operational_graphics/toolboxes/Clearing Operations Tools.tbx

The PR changes removes both of these and replaces it with one TBX. This is not how we are handling the toolboxes for ArcGIS Desktop and ArcGIS Pro.

@adgiles Per today's meeting on the repo can you change the toobox names back to _pro.tbx (as 1.4) and _arcmap.tbx (as 10.3) for this PR.

If you haven't merged this change in there is nothing to merge back

As part of this PR i'm still seeing the change that the original TBXs are going to be removed and replaced with a single TBX. We need to keep the separate TBX files, but include any fixes made for template issues 169, 262, and 267.


fix(dashboard): remove tailing digits on widget dragging.

Overview
uses the same trimWidgetPosition function from moveWidgetAction to trim position & size numbers.
Legal
This project is available under the Apache 2.0 License.

LGTM, what happens if someone enters a decimal into the input widget? do we allow that and then trim after they're done typing?

No we don't allow that. All decimal will be trimmed after typing.


Is it possible to load a spark-trained model in non-spark environment, or vice versa?

I have tried XGBoost4j and XGBoost4j-spark to persist trained models. However, the persisted models have different formats. The model persisted using XGBoost4j is a single file, while the one persisted using XGBoost4j-spark is a folder containing two subfolders: data and metadata.
Is it possible to load a XGBoost4j-spark model in a non-spark environment, or load XGBoost4j model in a spark environment? Thanks!

See https://xgboost.readthedocs.io/en/latest/jvm/xgboost4j_spark_tutorial.html#interact-with-other-bindings-of-xgboost

@hcho3 , thank you for pointing out the details. It works for me! I will close the issue.


Bokeh interactive app

Maybe it is a nice feature if we could make a bokeh interactive app based on the toolkit?

How to?:

Make separate git repo for this!
Posibility to add path the the vlinder toolkit (switch between deploy and master)
posibility to upload dataset templates
posibillity to download the csv
some timeseries and spatial plots
setting update
...

Switch to PyQt5


Fix a race condition in async_loop_protected:

The wakeup_fd must be exhausted before triggering events.

Thanks :+1:


BlazorWebView Hosting Content documentation issue

Type of issue
Typo
Description
The section under BlazorWebView  for What's new in .NET MAUI for .NET 9 is incorrect.
The actual behavior is to switch the hosting between <IP_ADDRESS> (the new default) to <IP_ADDRESS>. There was a time in .Net 8 where it switched to app://localhost but that is no longer the case.
The documentation currently reads:
On iOS and Mac Catalyst 18, .NET MAUI 9 changes the default behavior for hosting content in a BlazorWebView to localhost. The internal <IP_ADDRESS> address used to host content no longer works and results in the BlazorWebView not loading any content and rendering as an empty rectangle.
To opt into using the <IP_ADDRESS> address, add the following code to the CreateMauiApp method in MauiProgram.cs:
C#
Copy
// Set this switch to use the LEGACY behavior of always using <IP_ADDRESS> to host BlazorWebView
AppContext.SetSwitch("BlazorWebView.AppHostAddressAlways0000", true);

Issue:
This is incorrect. the legacy behavior of the switch is to use <IP_ADDRESS>. Leaving it as the default under .Net 9 uses <IP_ADDRESS>, this is completely different from the documentation. The relevant MAUI source code is in HostAddressHelper.cs
public static string GetAppHostAddress() 		=> IsAppHostAddressAlways0000Enabled 			? "<IP_ADDRESS>" 			: "<IP_ADDRESS>";
The documentation should likely read something like:
On iOS and Mac Catalyst 18, .NET MAUI 9 changes the default behavior for hosting content in a BlazorWebView to <IP_ADDRESS>. The internal <IP_ADDRESS> address used to host content no longer works and results in the BlazorWebView not loading any content and rendering as an empty rectangle.
To opt into using the <IP_ADDRESS> address, add the following code to the CreateMauiApp method in MauiProgram.cs:
C#
Copy
// Set this switch to use the LEGACY behavior of always using <IP_ADDRESS> to host BlazorWebView
AppContext.SetSwitch("BlazorWebView.AppHostAddressAlways0000", true);

Page URL
https://learn.microsoft.com/en-us/dotnet/maui/whats-new/dotnet-9?view=net-maui-9.0
Content source URL
https://github.com/dotnet/docs-maui/blob/main/docs/whats-new/dotnet-9.md
Document Version Independent Id
7fc9548e-ac05-3843-f568-be1ad5c06b1f
Article author
@davidbritch
Metadata

ID: 7fc9548e-ac05-3843-f568-be1ad5c06b1f
Service: dotnet-mobile
Sub-service: dotnet-maui

Related Issues

Hi @Bowman74
Thanks for the issue - you're of course correct. Not entirely sure what's happened here - I was aware that <IP_ADDRESS> is the new default.

@davidbritch Thank you sir!


Using uWS server side but websocket on client side

Would there be still any actual performance difference? I am not sure if i understand the concepts right.
Im using socket.io (websocket as transport on client) on react-native but on my node.js server Im using uWS (socket io 2.0).

This project is most probably not for you.

all im asking is that client libs doesnt matter? i can pick whatever, but use uws on my node js server to have actual performance, like in your benchmarks?

These results are for C++. Node.js addon has max 40% the perf and then you have Socket.io on that which leaves maybe 2%.
I shouldn't need to tell you this. If you did your own benhmarks uou would have known and that is why I don't think this project is for you

what would you recommend then for the server with node.js, seeing as engine.io even with uws only leaves 2%?


Bag Settings are not kept between logins

Addon Version
v0.1.89
World of Warcraft Version
Retail
Describe the bug
Bags do not keep settings between logouts. Multiple characters and servers.  Currencys are retained for settings.

When I login, and check Show bags but goes back to this after I logout the character.

Pandaren Remix
Steps to reproduce
Just Log out

This is fixed in the latest alpha and will go out on next release.


using proxy worker for runtimeBuiltinsData

When visit https://doc.deno.land/builtin/stable, there are 2 requests:
https://doc.deno.land/api/docs?entrypoint=https%3A%2F%2Fdoc-proxy.deno.dev%2Fbuiltin%2Fstable ✅
https://doc.deno.land/api/docs?entrypoint=https%3A%2F%2Fgithub.com%2Fdenoland%2Fdeno%2Freleases%2Flatest%2Fdownload%2Flib.deno.d.ts ❌

with error:
Download https://github.com/denoland/deno/releases/latest/download/lib.deno.d.ts
Download https://github.com/denoland/deno/releases/download/v1.10.1/lib.deno.d.ts
Download https://github-releases.githubusercontent.com/133442384/93a87100-b2d5-11eb-92e9-ba489a7915df?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210517%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210517T004956Z&X-Amz-Expires=300&X-Amz-Signature=c7d138f5fe8ac81c8238c24ede40ab2ec53dd8922fabbd6adb3e1cb2a6e4b865&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=133442384&response-content-disposition=attachment%3B%20filename%3Dlib.deno.d.ts&response-content-type=application%2Foctet-stream
error: An unsupported media type was attempted to be imported as a module.
  Specifier: https://github-releases.githubusercontent.com/133442384/93a87100-b2d5-11eb-92e9-ba489a7915df?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210517%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210517T004956Z&X-Amz-Expires=300&X-Amz-Signature=c7d138f5fe8ac81c8238c24ede40ab2ec53dd8922fabbd6adb3e1cb2a6e4b865&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=133442384&response-content-disposition=attachment%3B%20filename%3Dlib.deno.d.ts&response-content-type=application%2Foctet-stream
  MediaType: Unknown

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Do not use package.json if it's not a npm package!!!

When you use package.json with dependencies we have two copies of all your packages (one is my plus one is your). It's very bad!
It's crazy, but you use package.json for add of your sub-packages (bootstrap, etc.). Then we have three(!) copies of react, three copies of react-dom and three copies of tracker-component!

@JWo1F I'm not sure what's the problem, should we switch to peerDependencies instead for the NPM dependencies. We will soon transition fully to NPM so I don't think we will remove it anytime soon.

We need to use package.json for Meteor 1.3 and our npm dependencies at the moment, when we can transition to fully to the npm registry this will also come in hand having most of the legwork done.


Infinite loop when dynamically building form component

It took me ages to figure this bug out, I guess ultimately the bug was in my code but I think this use case could be better handled by redux-form either to provide an error message or work "as expected".
In this snippet, I'm trying to make a form on the fly either for creating a new object, or editing an existing one:
handleEdit (id) {
    return data => this.props.actions.edit(id, data);
}

handleCreate (data) {
    return this.props.actions.create(data);
}

render () {
    const {
        dialogOpen,
        editById,
        dataSet,
    } = this.props;

    let handleSubmit;
    let formName;
    let initialValues;

    if (editById === false) {
        formName = 'create';
        handleSubmit = this.handleCreate;
        initialValues = {
            // some junk
        }
    } else {
        formName = `edit/${editById}`;
        handleSubmit = this.handleEdit(editById);
        initialValues = dataSet[editById];
    }

    return (
        <FormDialog // redux-form connected component
            form={formName}
            open={dialogOpen}
            onSubmit={handleSubmit}
            initialValues={initialValues}
        />
    );
}

There are buttons elsewhere that set dialogOpen and editById. If I change editById from whatever it was set to initially, the form re-renders in an infinite loop. I'm not sure which properties cause this exactly, either form, onSubmit or initialValues, but in any case, the form must be destroyed before it can be re-used, so I would suggest the following fix in redux-form:
For whatever properties cannot be altered without destroying and re-creating the form, if any of those props are altered during runtime, either:
A) destroy and recreate the form automatically or
B) log an error to the console that those properties may not be altered dynamically and stop re-rendering
I'm not sure which solution is better, because (B) is apparently simpler for the user but could potentially lead to unexpected behavior. In my case, I modified the render method like this to cause the form to self-destruct when the dialog closes:
render () {
  // ...
  if (!dialogOpen) return null;
  // rest as before
}

I've made a JSBin to attempt to replicate this, but I'm not seeing the behavior you describe.
See if you can replicate it.

I'm closing this since we are unable to reproduce the issue. If I'm wrong, please reopen and provide a sample to highlight the bug.


Strong Params: Call strong params from respective API modules

Testing
The tests pass on the starter repo as of now. There are a lot of joint PRs, so I'll add the branches here:
gem "bullet_train", git: "git@github.com:bullet-train-co/bullet_train-base.git", branch: "fixes/strong-params-method"
gem "bullet_train-super_scaffolding", git: "git@github.com:bullet-train-co/bullet_train-super_scaffolding.git", branch: "fixes/strong-params-method"
gem "bullet_train-api", git: "git@github.com:bullet-train-co/bullet_train-api.git", branch: "fixes/strong-params-method"
gem "bullet_train-outgoing_webhooks", git: "git@github.com:bullet-train-co/bullet_train-outgoing_webhooks.git", branch: "fixes/strong-params-method"
gem "bullet_train-fields", git: "git@github.com:bullet-train-co/bullet_train-fields.git", branch: "fixes/strong-params-method"

Details
I know there's a lot going on here, so I'll try to be as succinct as possible.
The way were including strong_parameters_from_api was an issue, so I ended up including the module which housed that method and made it private with private :strong_parameters_from_api as opposed to writing include strong_parameters_from_api. After that, there ended up being a number of other things that needed to be adjusted to make things work correctly.
For example, in bullet_train-api we had the following:
module StrongParameters
  # Only allow a list of trusted parameters through.
  def team_params
    strong_params = params.require(:team).permit(
      *permitted_fields,
      :name,
      :time_zone,
      :locale,
      # 🚅 super scaffolding will insert new fields above this line.
      *permitted_arrays,
      # 🚅 super scaffolding will insert new arrays above this line.
    )

    process_params(strong_params)

    strong_params
  end
end

Although the method strong_parameters_from_api had access to params, permitted_fields, and permitted_arrays, those variables weren't available in the scope of this module, so I passed them as arguments as you can see in the joint bullet_train-api PR.
As pointed out in https://github.com/bullet-train-co/bullet_train-super_scaffolding/issues/75, the tests here in bullet_train-base were failing; the local tests are passing now, so we should be fine. The reason why we're still getting the include strong_parameters_from_api error in the other joint PRs is because those tests are still running with the main version of bullet_train-base and not this branch.
Trouble including Fields::ControllerSupport
Account::ApplicationController includes Fields::ControllerSupport so although the helper methods are being included in the TangibleThings controller in bullet_train-super_scaffold, it's not being included in the Collaborators controller as well as the outgoing webhooks controller. I went ahead and included them directly and added a TODO so we can keep it on our radar.
Standard Ruby
My brain's kind of fried right now, so I'll try to apply the Standard Ruby fixes tomorrow. That'll give me some time to mull over these PRs as a whole too.

Joint PRs

https://github.com/bullet-train-co/bullet_train-super_scaffolding/pull/76
https://github.com/bullet-train-co/bullet_train-api/pull/31
https://github.com/bullet-train-co/bullet_train-fields/pull/34
https://github.com/bullet-train-co/bullet_train/pull/430
https://github.com/bullet-train-co/bullet_train-outgoing_webhooks/pull/10

The more I sit down with this one I figure it's not the answer, although local tests are passing. Things are working as is, so I'm not sure if it's a constant loading issue with CircleCI or what, but it's trickier than expected. Still looking into it.

Closing in favor of #120


New multiline comment: #[ ... ]#

The language currently has two types of comments:
# is a single-line comment. It takes precedence. So if a line reads '# ... ### ###' then it will come across as a single-line comment. Great.
### ... ### is the multi-line comment. It follows how multi-line strings are """ ... """. When this is read in, it takes precedence over a single-line comment (text is scooped up until three #'s are matched. This works just fine.
The sanity test checks for both kinds of comments, and that's great. But it's currently impossible to comment out a large block of code because...### comments are within the sanity test. This calls for a third style of multi-line comment: #[ ... ]#.
The reason for this is that it would allow someone to comment out a large body of code that has been commented with a lot of ###-styled comments. (Sort of how #if 0 can do that in C).
Precedence rules would be simple: Whichever comes first determines the end, and no nesting. If a triple-pound is within the pound-brace, then the pound-brace determines the end.

I think I'll replace the triple pound comment with this new style of comment. The problem I have with triple pound now is that it's REALLY confusing as to where it begins and where it is. For example, one could have seven pound marks together as a "guess what this does". (It would be scanned as an empty multi-line comment, then a single-line comment.
This new form (pound brace) is unambiguous.


Feature Proposal: Support arrays of objects to be merged in the "with" property

See #15
Fixes #12
I've implemented a simple wrapper function for json merge patch to allow arrays.

Coverage remained the same at 100.0% when pulling 3fd591812634f7876a1e3693c9bdcda79a42e5f0 on simonmeusel:merge-arrays into d8c8c07d01a566408cc6391fab4498aee32532a0 on epoberezkin:master.

@simonmeusel thanks, I will review over the weekend.


[WIP] Rate limits

It solves: https://github.com/CartoDB/CartoDB-SQL-API/issues/459

In the same way as  https://github.com/CartoDB/Windshaft-cartodb/pull/875, before merging it, we will need to make some changes:

upgrade to Redis v4 and install Redis-cell on production
change the test docker image --> we need to talk with infra about the best place to have the redis cell library and update it https://github.com/CartoDB/Windshaft/blob/rateLimits/Dockerfile
config parameters: we need to update the config params on cartodb-platform. the PR --> CartoDB/cartodb-platform#4070

This pull requests was merged with
 "cartodb-redis": "cartodb/node-cartodb-redis#rateLimits",

instead of
 "cartodb-redis": "1.0.0"

the code of both are the same, but of course, we need to change it


Add details for Ceph vars in user_extras_variables

Adds a comment above each ceph var to indicate the variables use.
Fixes Issues: #637

Thank you @andymcc :)

@andymcc @asettle  Documented here: https://github.com/rpcdocs/rpcdocs/pull/445

:+1:

I had to manually add cinder_ceph_client_uuid inside the user_extras_secrets otherwise the MAAS playbooks did not work that should be mentioned too

@mattt416 fixed those typos, thanks for the spot!
@BjoernT the "cinder_ceph_client_uuid" var is in the user_secrets.yml in the openstack-ansible repo, so if you have deployed properly you should have this (regardless of whether you are deploying ceph or not) - since its required for openstack-ansible deployments that are using ceph regardless of whether we deployed the ceph or not:
$ (git::master) grep -ir "cinder_ceph_client_uuid" *
etc/openstack_deploy/openstack_user_config.yml.example:#           rbd_secret_uuid: "{{ cinder_ceph_client_uuid }}"
etc/openstack_deploy/user_secrets.yml:cinder_ceph_client_uuid:
This would mean you don't need to add it to user_extras_secrets.yml on new deploys as long as you follow the normal steps (which are to copy over user_secrets.yml) from the openstack-ansible repository.

Please bear in mind that the user_extras_secrets file is not copied when doing an upgrade from RPC 10 to 11 and adding CEPH after the upgrade.
This is still a manual step, necessary for this particular situation.

@BjoernT that var isn't in the user_extras_secrets.yml even for new deploys - its in user_variables.yml inside openstack-ansible, but there is a note in the docs (once https://github.com/rpcdocs/rpcdocs/pull/431 merges) that mentions ensuring that var exists. Does that work?

It seems like there are two separate issues here. One is to more fully document the variables used by the RPC deploy, and is the subject of this PR. The other issue covered by https://github.com/rpcdocs/rpcdocs/pull/431 is what variables the deployer should set when doing an automated installation, a manual installation, and an upgrade.

LGTM


Handle "unusual" software versions in downgrade check

Summary
vmanages = VmanageClient['SESSION'].api.devices.get().filter(personality=personality.Personality.VMANAGE)
ver1 = VmanageClient['SESSION'].api.repository.get_image_version('.../vmanage-li-20.13.999-3061-x86_64.tar.gz')
print(ver1)
upgrade_id = SoftwareActionAPI(VmanageClient['SESSION']).install(devices=VmanageClient,reboot = True,image_version=ver1)

	   (sdwan_systest_091122) bgl-ads-3331:/ws/deepijai-bgl/sdwan_systest_091122 > /ws/deepijai-bgl/sdwan_systest_091122/bin/python /ws/deepijai-bgl/sdwan_systest_091122/projects/pyats/scripts/mtt_systest/run.py
	   title='Cisco vManage' version='20.13.999-3060-li' application_version='next-vbamboo-16-Aug-2023 22:42:52 PDT' application_server='node2' copyright='Copyright (c) 2023, Cisco. All rights reserved.' time=datetime.datetime(2023, 8, 18, 21, 28, 3) time_zone='UTC' logo='/dataservice/client/logo.png'
	   li-20.13.999-3061
	   Traceback (most recent call last):
	     File "/ws/deepijai-bgl/sdwan_systest_091122/projects/pyats/scripts/mtt_systest/run.py", line 53, in <module>
	       upgrade_id = SoftwareActionAPI(VmanageClient['SESSION']).install(devices=VmanageClient['vmanages'],reboot = True,image_version=ver1)
	     File "/ws/deepijai-bgl/sdwan_systest_091122/lib/python3.8/site-packages/vmngclient/api/software_action_api.py", line 149, in install
	       self._downgrade_check(payload["devices"], payload["input"]["version"], install_specification.family.value)
	     File "/ws/deepijai-bgl/sdwan_systest_091122/lib/python3.8/site-packages/vmngclient/api/software_action_api.py", line 177, in _downgrade_check
	       if label > version:  # type: ignore
	   UnboundLocalError: local variable 'version' referenced before assignment
	   (sdwan_systest_091122) bgl-ads-3331:/ws/deepijai-bgl/sdwan_systest_091122 >

Logs and external information
If possible, handle unusual prefix before major version.
If not possible allow user to skip downgrade check (eg. by providing optional flag argument in SoftwareActionAPI.install method)
splited_version_to_upgrade ['li-20', '13', '999-3061']

Reproduction script
vmanages = VmanageClient['SESSION'].api.devices.get().filter(personality=personality.Personality.VMANAGE)

ver1 = VmanageClient['SESSION'].api.repository.get_image_version('.../vmanage-li-20.13.999-3061-x86_64.tar.gz')
print(ver1)
upgrade_id = SoftwareActionAPI(VmanageClient['SESSION']).install(devices=VmanageClient,reboot = True,image_version=ver1)

On what platform(s) does it occur?
Not Applicable
Issue Severity
Medium: There is a workaround

This issue was migrated from an old repository: https://github.com/CiscoDevNet/catalystwan/issues/338


User Vocabs

Add reading functions that take user vocabs and if unused words should be used. This would return a vocab with random vectors for word not in the file vocab and (optionally) include words not in the vocab that are in the file.

We should also take an initialization function (defaulted to some uniform sampler?) that is used to create the unattested vectors.
The initializer signature would look like
def initializer(dsz: int) -> np.ndarray:

Should it be possible to surface some stats about how many were attested?


Long-running queries in PostgreSQL

Migrate existing article: https://help.aiven.io/en/articles/826530-terminating-long-running-queries

Created pull request 1346 for this open issue


feat: generate signed url for referral reports

Review Checklist

Summary*

[ ] fix: Bug fix for Add the items tackled here as checklists
[x] feat: Completed task
[ ] chore: Incomplete task

[ ] test: Sub-task 1

Structure*

[ ] The Pull Request has a proper title that conforms to our MR title standards
[ ] The Pull Request has one commit, and if there are more than one, they should be squashed
[ ] The commit should have a proper title and a short description
[ ] The commit must be signed off
[ ] Unused imports are not present
[ ] Dead code is not present
[ ] Ensure dry running library to confirm changes

Tests

[ ] Proper and high quality unit, integration and acceptance(if applicable) tests have been written
[ ] The coverage threshold should not be lowered

Sign off*

[ ] All comments have been resolved by the reviewers
[ ] Approved by Czar {replace_with_czar_name}
[ ] Signed off by second reviewer {replace_with_name}
[ ] Ensure all checks are done before merging :warning:
[ ] All PRs needs to be signed before merging :warning:

N/B:

Add a checklist if more than one item is done.
Add screenshots and/or images where necessary
Indicate any breakages caused in the UI :exclamation:
Where necessary, indicate which issue the Pull Request solves (Closes #)
Any new files are updated in the folder structure in the README

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

11 of 18 (61.11%)  changed or added relevant lines in 3 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.05%) to 81.748%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/clinical/infrastructure/services/upload/upload.go
8
10
80.0%

pkg/clinical/usecases/clinical/referral_report.go
0
5
0.0%

Files with Coverage Reduction
New Missed Lines
%

pkg/clinical/usecases/clinical/referral_report.go
1
61.39%

Totals

Change from base Build<PHONE_NUMBER>:
-0.05%

Covered Lines:
7314

Relevant Lines:
8947

💛  - Coveralls


Link to docs in README

I believe a link to the formatted documentation would be extremely useful for a newcomer to this repo.

This change is

Current coverage is 83.72% (diff: 100%)

Merging #104 into master will not change coverage

@@             master       #104   diff @@
==========================================
  Files            25         25
  Lines          2028       2028
  Methods           0          0
  Messages          0          0
  Branches        282        282
==========================================
  Hits           1698       1698
  Misses          219        219
  Partials        111        111

Powered by Codecov. Last update 071c51e...186b3bc


Refactor to use .hasOwnProperty in favor of in

#Zarel: hasOwnProperty is allowed now
#Zarel: since it's useful for a lot of the non-null-prototype objects we have to deal with
#Zarel: i.e. basically all of data/
#Zarel: in fact we should probably stop using in entirely
#Zarel: it should all be either hasOwnProperty or refactored to Map

@MORFENT ⊙¿⊙: objects with no prototype can't use hasOwnProperty

So, I'm not sure on if this would be okay or not, with that in mind...

Emphasis on:
#Zarel: it should all be either hasOwnProperty or refactored to Map
As in, null-prototype Objects can't use .hasOwnProperty and should be refactored to Map instead.
In context, you can leave alone null-prototype Objects for now. Just refactor the {} objects.

I'll update this shortly

Specifically this refactor should be mostly touching Tools

You could also do for (const key of Object.keys(object))

@kotarou3, this is about in, not for...in. for...in already doesn't iterate uniterable keys, but in still returns true for them.

I think a refactor before this should be that objects shouldn't have a null prototype.
With that in mind, I'm going to be closing this for now.

No, most dictionary-objects should have a null prototype.
hasOwnProperty is for the ones that can't; namely the ones in config.js and in data/


How to collect Openim logs with Loki in K8S for system health analysis.

What would you like to share?
How to collect Openim logs with Loki in K8S for system health analysis.
Additional information
No response

@caesar168
I wanted to reach out to you and provide an update on our current progress regarding the management system and log collection. We are pleased to inform you that we will be utilizing the following technology stack: Loki, Promtail, Grafana, Prometheus, and Node Exporter.
To provide a brief explanation of each component, Loki is a horizontally-scalable, highly-available log aggregation system. Promtail is an agent which ships the logs from the application to Loki. Grafana is a platform for data visualization, monitoring, and analysis. Prometheus is a time-series database and monitoring system. Node Exporter is a Prometheus exporter for hardware and OS metrics.
We believe that this technology stack will allow us to efficiently manage and collect logs, as well as provide the necessary observability for our system. If you have any further questions or concerns, please do not hesitate to reach out to us.

Very good! Regarding the log aggregation system, it should be assumed that a unified Loki system already exists for the user, so the project team only needs to provide an interface that allows the aggregation of Openim logs. The same is true for Grafana, where users basically have such a system and only need to provide an interface.


Allow Javascript engines to be bypassed entirely.

If no server-side rendering will occur on a page, for instance if
component render is called with clientOnly: true, it is
pointless to initialize a Javascript engine on the server. This allows the
consumer to easily disable all server side Javascript if the server is
under heavy load.

I see that I forgot to sign the CLA before submitting this PR - just did that.

Seems reasonable to me!
It looks like there's a number of "invisible" changes that aren't actually related to this diff (looks like it might be changing the line endings from \r\n to \n or vice versa. Could you please revert those? We can fix those up in a separate commit :)

Yeah, it looks like the line endings are mixed in some of the files and VS auto corrected them :) Fix pushed

It looks like a unit test is failing.  Can you please take a look? https://ci.appveyor.com/project/Daniel15/react-net/build/108

Mvc\HtmlHelperExtensionsTests.cs(39,27): error CS0854: An expression tree may not contain a call or invocation that uses optional arguments [C:\projects\react-net\src\React.Tests\React.Tests.csproj]
Mvc\HtmlHelperExtensionsTests.cs(64,27): error CS0854: An expression tree may not contain a call or invocation that uses optional arguments [C:\projects\react-net\src\React.Tests\React.Tests.csproj]
Mvc\HtmlHelperExtensionsTests.cs(86,27): error CS0854: An expression tree may not contain a call or invocation that uses optional arguments [C:\projects\react-net\src\React.Tests\React.Tests.csproj]
Done Building Project "C:\projects\react-net\src\React.Tests\React.Tests.csproj" (Rebuild target(s)) -- FAILED.

You can run the dev-build.bat file which will build the project and run the unit tests. Please ensure the bundled example site (React.Sample.Mvc4) still works fine as well.

Fixed, sorry about that. I had been using the sample site to test before, but forgot to build solution before I pushed.

Thanks 😄

@Daniel15 would you mind publishing a package update so I can consume these changes?

Will try to do that soon :)  In the meantime, you could use the latest development package (see http://reactjs.net/getting-started/download.html#development-builds)

This has been included in the 2.4 release (http://reactjs.net/2016/05/2.4.0-release.html). Thanks for your contribution!


feat: setup Travis CI

Closes #12

Just as a log: We have talked in private and he is busy the last few days. Since this is a priority issue, I made a few changes and merged these to master in PR #16.
@onlurking thanks for taking part of your time to work in this!


[Exchange.sol] make bucket updates from Oracle data more predictable

Currently there is no easy way to tell if gold and stable token buckets will or will not get updated in next block.
When you call getBuyAndSellBuckets it might think that there won't be a bucket update from oracle data because it can't know what the now timestamp will be in next block.
This can lead to a confusion when getBuyAndSellBuckets returns incorrect buckets compared to what will actually be used in the next block.
It would be great if these updates can be made more predictable. Instead of updating buckets in the same block when calling 'updateBucketsIfNecessary', it could first just mark the buckets for updating for next block.
This would simplify getBuyAndSellBuckets because it would only need to check that marker, instead of running the whole shouldUpdateBuckets logic, and this would also remove the dependency on now timestamp in that code path.
This type of change would make it predictable to know what the starting [gold, stable] buckets will be in next block, instead of current setup where there is no way to know if oracle update will or will not be applied in next block.

This I believe is related so I'll add it here: I'm seeing that the value of lastBucketUpdate is often not updated even when the values of the [gold, stable] buckets are updated.

This I believe is related so I'll add it here: I'm seeing that the value of lastBucketUpdate is often not updated even when the values of the [gold, stable] buckets are updated.

this is because lastBucketUpdate only gets updated when a successful trade is made. if no trades are happening buckets never actually get updated and getBuyAndSellBuckets will just read oracle reported values everytime. And next trade will always use last oracle reported values.
Basically uniswap mechanism doesn't reset every updateFrequency. It only resets if successful trade happens after updateFrequency amount of time has passed after last reset.

Thanks for opening this! When building the oracle client it was also found the existing reliance on timestamp was very annoying. In an ideal world, oracle rates would be reported as close to the bucket update time as possible to conserve gas spending and ensure the median rate at a bucket update is new, and the timestamp added a degree of uncertainty. cc @rcroessmann

this is because lastBucketUpdate only gets updated when a successful trade is made. if no trades are happening buckets never actually get updated and getBuyAndSellBuckets will just read oracle reported values everytime. And next trade will always use last oracle reported values too.

I understand this. But I observed trades being placed and lastBucketUpdate not being updated.

@tkporter fyi, this issue is even more relevant now that Oracle circuit breaker has triggered twice. The "re-enabling" of oracles after they have been down, is basically a completely unpredictable event right now that puts arbitrageurs at a serious risk.  Re-enabling oracles event can cause a large unpredictable change in exchange rate within a block, and there is no way to predict or observe that it is about to happen. So it creates a large risk for one sided arbitrage trades to happen because of it.
In general, safer arbitrage ==> more efficient protocol, so if changes can be made that makes arbitrage safer it will only help protocol be more efficient overall.

@zviadm is setting a conservative minBuyAmount not enough to protect yourself?
If it doesn't protect you enough I'd think that arbitrageurs would prefer to have their tx revert in the event that the price has changed dramatically. This could be done with a helper contract that calls Exchange.sol but also has more strict checks and wouldn't require changes to the protocol directly

@tkporter it of course depends which direction arbitrageur does trades in first. If they do "on-chain" trade first, they avoid this issue, but it introduces other issues. Since "on-chain" trades are quite slow and CEX market is more efficient overall, arbitrageur risks pretty high slippage for their CEX trades. To operate this way, arbitrageur has to wait for a very large profit gap before initiating trades to cover for the risk. So this is possible, but it is not great for protocol since this would be pretty inefficient.
If arbitrageur trades on CEX first, and trades "on-chain" second, this generally gives more safety. When exchange is in "uniswap mode", exchange rate on-chain is much more predictable and there are much lower chances of huge slippages to happen. (i.e. a slippage of 1-2% can happen, but slippage of 10-20% is extremely unlikely).
Except for in circumstances like this. This type of unpredictable sudden oracle update can cause huge slippage for exchange rate within a block (last one caused ~18% change in exchange rate in a single block). Worst part of course is that the re-enabling event is completely unpredictable. If there was a signal one block before that an update is coming, that would make things safer since trades can be avoided until price is updated and can be resumed safely afterwards once again.

Thinking about this some more, my initial thought might have been incorrect and the "re-enabling" event probably doesn't increase risk that significantly. While it would be nice if oracle updates were more predictable, there are other risk factors (like someone else making a huge single trade when "on-chain" price is significantly off), that it probably wouldn't change overall risk of slippage significantly anyways.


Step by Step partial porting to Qt webengine#1:With reference to issue #349

As I'm new to this project can you refer to a starting point , that how & where  can I start.
Like refer me some links to study . I have also studied but couldn't get a good overview.
Porting to Qt web engine
As I'm improving my familiarity with the code base if  you can refer to some files of this project where can I start It would help in speedtrack in solving this issue .
@kmike

@kmike I would like to ask that as per issue 349 you mentioned that "we shoudn't drop QtWebKit support, QtWebEngine should be an addition, not a replacement" . Like for this task to be implemented major problem is that inside the splash package Qt webkit is used . So we can't use it explicitly.
So to do** "If I'd be starting with this project I'd create a super-basic version of this new WebEngineBrowserTab"** this like how should I send PR & to which branch ? Inside the splash codebase , if you have any specific preference for name of directory in which I will add codes ?
As basic interface of qt webengine is in C++ hence for python wrapper Of It I've found one link & one issue .Issue first http://stackoverflow.com/questions/33108133/how-to-build-qt-webengine-for-pyqt5
https://github.com/rodrigogolive/WebEngineWrapper
Please comment

Hey @rava-dosa!

So to do "If I'd be starting with this project I'd create a super-basic version of this new WebEngineBrowserTab" this like how should I send PR & to which branch ? Inside the splash codebase , if you have any specific preference for name of directory in which I will add codes ?

Please fork Splash, create a new branch in your repository and send a pull reuest against Splash master. I think there is no need to create new folders, but you may have to split browser_tab.py file into two or three files (e.g. for base browser tab, webkit-based browser tab and webengine-based browser tab).

As basic interface of qt webengine is in C++ hence for python wrapper Of It I've found one link & one issue .Issue first http://stackoverflow.com/questions/33108133/how-to-build-qt-webengine-for-pyqt5

PyQt5 provides QtWebEngine bindings in recent versions, it shouldn't be a problem.

@kmike I've been working to find out a way to have QTwebengine built on my pc but without success . I've been following this link Trying QtWebengine.
(check) apoorva@apoorva-Dell-System-XPS-L502X:~/Desktop/gsoc/qtwebengine$ qmake -r
WARNING: /home/apoorva/Desktop/gsoc/qtwebengine/qtwebengine.pro:1: Unable to find file for inclusion qt_parts
/home/apoorva/Desktop/gsoc/qtwebengine/qtwebengine.pro:3: Unknown test function: isPlatformSupported

As it was warning I went further to make
(check) apoorva@apoorva-Dell-System-XPS-L502X:~/Desktop/gsoc/qtwebengine$ make
g++ -m64 -Wl,-O1 -o qtwebengine     -L/usr/lib/x86_64-linux-gnu -lQtGui -lQtCore -lpthread
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
make: *** [qtwebengine] Error 1

Even though my environment is having Qt 5.5.1 & as per this link QT 5.5 or this New features in QT 5.5 my installed bindings should have qt webengine by defaults but when I'm using interpreter
then
>>> from PyQt5 import QtWebEngineWidgets
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'QtWebEngineWidgets'

But this is working fine
>>> from PyQt5 import QtWebKitWidgets
>>>

Now how to deal with this problem ?
I have visited this links as well http://www.ics.com/blog/building-qtwebengine
But the cloning link was not working.

@kmike @pawelmhm Have anyone faced this problem ? How to initialize my coding environment for QtWebengine in python virtual environment ?

@rava-dosa sorry, I don't know how to help; you need to figure out this yourselves. On my machine I just followed Qt 5.5.1 and PyQt 5.5.1 installation guides, and it worked out of the box.

But yeah, I'm not sure it works in a virtual environment, getting it running there could be more tricky.

@rava-dosa any updates of your great works?

Closing it in favor of #614 for now.


Proposed sprint for Lance/LanceDB

Lance is a new columnar format for multi-modal AI and billion scale vector search. It's 2000x faster than parquet for random access, comes with a scalable vector index, and is used as the storage layer for petabyte scale unstructured data lakes

Thanks for contributing!
Just a couple of requests before merging.

Thanks for the review comments! PR updated.

Thanks for the sprint contribution, @changhiskhan.
See you in Prague!


Dismiss Modal with Escape Keypress

Feature request 🚀

[ ] I will create Pull Request
[x] It's just a suggestion

Expected

"Escape" key should dismiss modal as per https://www.w3.org/TR/wai-aria-practices-1.1/examples/dialog-modal/dialog.html

Examples

See https://vercel.com/design/modal for how I think this should function.

Misc

It may be worth implementing a useKeyPress hook so the functionality can be used elsewhere. Should I open a second issue for this suggestion?
On that note, this may be a consistent behaviour to add to many components, like the Auto-Complete component (Vercel's implementation also allows you to dismiss the results list by pressing escape).

I may be able to tackle this, but just started playing with the project today, and so I'll look things over and read the contributing guide, and update this issue if I feel capable.

I quite agree with this feature, this is a very constructive suggestion. 👍
I have the following views on this function:

As you said, there are now multiple components that can add this function.
Each component should have a prop(keyboard={false}) to turn off this function.
Add a hook (useKeypress) is a good idea! We can even open the hooks to users. (as a separate function is also good)
I can do it, I will start the work as soon as I finish #354 . But you can take them if you want any of them.

Feel free to leave me any thoughts or updates.

Thanks for being so receptive.
I'll review the contributing guidelines and see if I can implement it tomorrow. I actually have written the use-key-press hook for another project, so I'll modify my implementation to match the guidelines, write the tests, and make sure I fulfill all the other requirements. I should be able to submit the PR tomorrow evening if all goes well.
If the code for the hook looks good and I have the time this week, I can take a stab at modifying components like modal to add the hook and the keyboard prop (Very good idea).
Should we start a list somewhere for the components that should implement the hook?
Sorry if I'm a bit scattered, I haven't contributed to any projects before!
Thanks again.

@unix So I've implemented use-key-press, written some tests (please review and provide feedback if you have any, I don't have much experience with testing react), verified tests are passing. I haven't submitted PR yet because the docs are not complete, but if you could give it a look over and let me know if it's an acceptable start I'll continue working on it!
https://github.com/nonissue/react/tree/feat/use-key-press

@nonissue Thank you for your amazing work!
In the design of API, I have some simple suggestions for the implementation of useKeypress:

Reduce user code.

      1. I know I can get the trigger of handler through useEffect, but users still need a lot of extra code to do it, maybe we can provide a more convenient API:
// Sometimes users need to use Event, we should not discard this information.
const handler = event => alert('down')
useKeyPress('Escape', handler)

      2. Use type to distinguish action: (most of the time, users only use keydown)
useKeyPress('Escape', handler, {
  type: 'keyup',  // 'keydown' 'keyup'
})

Support the Array to help users automatically listen to multiple keys:

// listen to two actions at the same time
useKeyPress(['Enter', 'Escape'], handler)

// Listen combo action
// All keys are pressed at the same time to trigger
useKeyPress(['Shift', 'Escape'], handler, { combo: true })

Easy to expand. We support adding custom params, which may help in the future. For example, when we need to deal with the holding time of the keyboard, we can easily expand the params. ({ time: 3000 }) I just give an example to show that parameters are good design:

type Options = {
  ...
}
UseKeyPress = (key: string, handler: Function, options: Options) => void

If possible, I'm not sure, it may be helpful to specify the elements that listen for events:

useKeyPress('Enter', handler, {
  element: SomeRef.current,
})

Besides, about the style of the code, I suggest that some comments can be reduced. Add comments  only for special scenarios or dirty logic, good naming and logic itself are very readable.
And, you can add a file (use-key-press.mdx) in folder /pages/en-us/components,  then run command yarn dev, so we can add a document for hooks.
These are my personal suggestions, I didn't write the code, so the ideas may not be accurate, I'd like to hear from you.

Thanks for the feedback! The comments were only meant to be temporary, I didn't intend to merge this as it is, I just created the PR so you could more easily see the changes.
I agree with:

Modifying the hook to accept a handler, this makes a lot of sense
Accept both a string or an array of strings for the keys param (in fact, I've already implemented this locally 👍)

I'm not so sure about:

Having a type param. I'm not 100% against it, but it might be premature optimization? Are there any existing comments where you could see this being useful? If we do handle event types, this could possibly be something passed in the options object?
Handling combo key presses (eg. all keys have to be pressed at once). I did look into this quickly, and I think it might be quite complex to implement, but again, it could be worthwhile if there's a need for it, or we could maybe consider it as a separate hook?
"Specifying the elements that listen for hooks" -> Ah this is interesting. I think it would be doable, and this could maybe be used for situations like trapping focus in the modal (like when tab is pressed). Does that make sense?

I'll push what I've done tonight to the branch on my repo (definitely not finished) so you can have a look. I may not have time to work on things tomorrow, but should be able to spend some time on this later in the week.

@nonissue  I'm glad to see you're following up on this, I agree with you, the last three features you mentioned actually don't use scenarios, and we really don't have to think about them too early.
It's a good choice for us to implement hook first in a simpler way, if there is a similar demand in the future, we can follow up and solve it. (we can discuss these complex features in a later release, keep it easy, please don't have too much burden.)

Would be good to have this hook available, currently there are some accessibility problems with some components (select, toggle, slider), that only can be solve with a hook like this @nonissue do you think you will have time to finish this? I can help you if you want

Now we have done this by adding useKeyboard. See the canary documentation for more information.

Response to keyboard events has now been added to the modal internals as well. (added keyboard props) #574


📖 Update example1 and user quickstarts to use new command

Summary
This PR updates the example1 and user quickstarts to show the use of the new kubestellar-list-syncing-objects command.
This also fixes the command shown in example1 to wait for the placement translator to do its job to only wait on that much.
Related issue(s)
Fixes #

/cc @clubanderson
/cc @KPRoche
/cc @dumb0002
/cc @francostellari
@ezrasilvera

The force-push to dccd404de revises the quickstart edit to make it not testable, since the quickstart is testing v0.9.0.

No, it wasn't.  The force-push to 370f5bc53 actually has the change.


updated /devices/devicesview response in the spec

Description
updated the spec file with the latest changes to the /devices/devicesview endpoint

lgtm


importing using ssh with version key specified leads to ValueError

Invocation of command 'import' on client 'git' failed: ValueError: need more than 1 value to unpack (/usr/lib/python2.7/dist-packages/vcstool/clients/git.py:477)
Line in question is
            hash_, ref = line.split(None, 1)
public repos imported using https and version seem to import correctly, but importing repos with ssh and version is leading me to the error. Importing repos with ssh and no version seems to work correctly.
vcs version: 0.2.10
python version: 2.7.12

Unfortunately I can't reproduce the problem. Maybe you can share more information about your .repos files and/or how you authenticate with the private repo?
Some debugging information might also be helpful. Can you please edit the file git.py and add some debug information and share the output from your case:

insert at line 475: print(result['output'])
between the for loop and the line calling split insert: print(line)

Just did some more testing. We have a print that occurs when we clone internally before the hashes and refs, so result['output'] looks like
-------------
A whole bunch of text
-------------
hash          ref

This breaks the expected sequence of all hashes and references

We have a print that occurs when we clone internally before the hashes and refs,

Where is that coming from? Can you please provide some more context or an example to illustrate?

Its the ssh banner generated whenever a SSH connection is made to the server (even via git).
Something like https://www.tecmint.com/protect-ssh-logins-with-ssh-motd-banner-messages/
I've fixed the issue on my end by setting the LogLevel of the host to QUIET in my ssh config file.
Perhaps debugging documentation should be added, or some try/catch/pass in the loop to avoid failure on a ssh banner from the server?

I've fixed the issue on my end by setting the LogLevel of the host to QUIET in my ssh config file.

Please try the patch proposed in #154 and comment if it resolves the problem for you (with your config change reverted).

The fix works!
In our case, each line of the banner does not start with '#', and looks like what I posted above, with literally a line of
on top and below of a lot of text describing security and privacy agreements, which also means for our case, the statement to catch '#' does nothing, but the problem is still solved by the try except. (I can vcs import even when I delete the lines to catch if it starts with '#')
I believe in general, these banners can be whatever the system administrators want them to be, so I'm not sure if there is a clear pattern to distinguish them.

Thanks for helping debug this and checking the patch. This will be addressed in the upcoming patch release.


add additionalPrinterColumns

related pr https://github.com/volcano-sh/volcano/pull/2175
add additionalPrinterColumns field in crd yaml file so that we can query vcjob and podgroup like:

/lgtm

/approve


[GOBBLIN-1890] Offset ranges allow multiple formats GMIP

Dear Gobblin maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA

[X] My PR addresses the following Gobblin JIRA issues and references them in the PR title. For example, "[GOBBLIN-1890] My Gobblin PR"

https://issues.apache.org/jira/browse/GOBBLIN-1890

Description

[X] Here are some details about my PR, including screenshots (if applicable):
It's possible for GMIP to support processing GMCEs that correspond to records from different kafka brokers. This can be done by passing in extra information as a prefix to the offset range map. However, we must also update the algorithm for fetching the topic name to allow for a prefix.

For example, the following offset range keys should be valid and all parse to the topicname

topicname-0
kafkaBroker1.topicname-0
colocation-kafkabroker1.topicname-0

Tests

[X] My PR adds the following unit tests OR does not need testing for this extremely good reason:

Commits

[X] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

Codecov Report

Merging #3753 (49261bc) into master (e6368a2) will decrease coverage by 1.30%.
Report is 1 commits behind head on master.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master    #3753      +/-   ##
============================================
- Coverage     47.08%   45.78%   -1.30%
+ Complexity    10874     2158    -8716
============================================
  Files          2147      413    -1734
  Lines         84911    17959   -66952
  Branches       9420     2185    -7235
============================================
- Hits          39981     8223   -31758
+ Misses        41296     8863   -32433
+ Partials       3634      873    -2761

Files Changed
Coverage Δ

.../gobblin/iceberg/writer/IcebergMetadataWriter.java
70.80% <100.00%> (ø)

... and 1737 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Use proxy types for package private properties

I think that while public functions giving access to private properties does the job, they pollute the global namespace of TokamakCore, while for every property you need to create a separate function. These functions read a bit weird at their place of use, so I'm wondering whether the Proxy pattern could work better here. While it's more verbose, I find it a bit more readable, while also adding some sort of structure here for grouping multiple properties if needed.
CC @j-f1, this is something you might want to use in #125.

Fails

:no_entry_sign:

Sources/TokamakCore/Views/Button.swift#L21 - FIXMEs should be resolved (this should be internal). (todo)

:no_entry_sign:

Sources/TokamakCore/Views/SecureField.swift#L21 - FIXMEs should be resolved (this should be internal). (todo)

:no_entry_sign:

Sources/TokamakCore/Views/TextField.swift#L21 - FIXMEs should be resolved (this should be internal). (todo)

:no_entry_sign:

Sources/TokamakCore/Views/TextField.swift#L43 - FIXMEs should be resolved (implement this method, which u...). (todo)

:no_entry_sign:

Sources/TokamakDOM/Views/Text.swift#L149 - Line should be 100 characters or less: currently 103 characters (line_length)

  Generated by :no_entry_sign: Danger Swift against a65c37cbba667066c333590471c72f94a89fe19a

Should there be a _Proxy protocol to save on some boilerplate?
protocol _Proxy {
  associatedtype Subject : View
  var subject: Subject { get }
  init(_ subject: Subject)
}

extension _Proxy {
  init(_ subject: Subject) { self.subject = subject }
}

I’m not exactly sure how this works for things like styles where we want to be able to directly tag the view objects before rendering them.

IDK, as far as I know, at least according to compiler engineers on Swift Forums a plain struct with a single field is equivalent to using the value of that single field directly. I also hope that when inlining is applied, there really ырщгдв be no noticeable performance overhead with proxies. On the other hand, as soon as you introduce protocols and extensions, it adds all the runtime metadata cruft, which could have some impact in these hot code paths.
I think we could apply some meta-programming magic to reduce the amount of boilerplate at some point, probably similar to Sourcery or GYB, but without the textual substitutions unsafety. I think I got a few ideas for that inspired by Rust macros and SwiftSyntax, but nothing ready to be shown yet...

Fails

:no_entry_sign:

Sources/TokamakDOM/Views/Text.swift#L149 - Line should be 100 characters or less: currently 103 characters (line_length)

  Generated by :no_entry_sign: Danger Swift against a19d367182e03be5fe47c23829d25f5ab79d23cb

Fails

:no_entry_sign:

Sources/TokamakCore/Views/TextField.swift#L41 - FIXMEs should be resolved (implement this method, which u...). (todo)

  Generated by :no_entry_sign: Danger Swift against e297abc20f43053e2d9b0860b44576ad8dd193fd

Fails

:no_entry_sign:

Sources/TokamakCore/Views/TextField.swift#L41 - FIXMEs should be resolved (implement this method, which u...). (todo)

  Generated by :no_entry_sign: Danger Swift against dc792ae14b05cdeb2ab6ee640b7c7a0c80d3f332

Fails

:no_entry_sign:

Sources/TokamakCore/Views/TextField.swift#L41 - FIXMEs should be resolved (implement this method, which u...). (todo)

  Generated by :no_entry_sign: Danger Swift against dc792ae14b05cdeb2ab6ee640b7c7a0c80d3f332

@carson-katri this one's ready for review too 🙂