Torque and wrench overlay demo do not work

Hi, I have tried demos in lbr_demos_fri_ros2_cpp, the JointSineOverlay works smoothly but wrench and torque not. After launch there is no error/warning message from both ROS2 side and FRI side, and I can even see the command topic with values in rqt, but on our iiwa7, nothing happens. Need your help!
Thanks in advance!

I've also tried the FRI-Client-SDK_Cpp, and wrench/torque overlay both worked.

hi @WZHwerk5 and thank you for the feedback. May I ask what procedure you followed?

I followed the guidance herehttps://lbr-fri-ros2-stack-doc.readthedocs.io/en/humble/lbr_fri_ros2_stack/lbr_demos/lbr_demos_fri_ros2_cpp/doc/lbr_demos_fri_ros2_cpp.html

Yes, the FRI connection can be established. Both smart pad and my Ubuntu terminal have no error/warning message.

okay, the issue is probably the QoS policy
https://github.com/lbr-stack/lbr_fri_ros2_stack/blob/c3766c61047382a1b39dd9dacd7e163f4b5ff66b/lbr_demos/lbr_demos_fri_ros2_cpp/src/torque_sine_overlay_node.cpp#L25
May have gone out of date. I'll test and be back in half an hour

Actually I have manually set it as 1ms, but still does not work...

so in LBRWrenchSineOverlay.java and LBRTorqueSineOverlay.java you'll find
friConfiguration.setSendPeriodMilliSec(5);

The lbr_fri_ros2 package therefore creates pub/sub with 5 ms QoS deadline.
To fix:

change deadlines to 5 ms:

pub: https://github.com/lbr-stack/lbr_fri_ros2_stack/blob/c3766c61047382a1b39dd9dacd7e163f4b5ff66b/lbr_demos/lbr_demos_fri_ros2_cpp/src/torque_sine_overlay_node.cpp#L25
sub: https://github.com/lbr-stack/lbr_fri_ros2_stack/blob/c3766c61047382a1b39dd9dacd7e163f4b5ff66b/lbr_demos/lbr_demos_fri_ros2_cpp/src/torque_sine_overlay_node.cpp#L32

re-compile:

colcon build --packages-select lbr_demos_fri_ros2_cpp --cmake-args -DCMAKE_BUILD_TYPE=Release

To be fixed in #116

Thank you so much!!

Np. Note, when you push too hard against the robot in you might see the connection drop. This has to do with the command guard and how limits are checked. This needs fixing

Okay I see. By the way, is it possible to dynamically change the impedance values (stiffness and damping) of Cartesian impedance mode?

no sorry, the FRI doesn't support that. You'd have to restart the FRI each time. That's on KUKA

I see, sorry but another question is: I want to control the robot joint position together with wrench, but when I launched the bringup in wrench command mode, the robot started to move suddenly with high velocity and was quickly stopped because it is not on the planned path, according to FRI message. Do you know why? Many thanks.

In wrench command mode the FRI takes target wrench and target position as input. Maybe you set the target position to zero?

Thanks, it's very clear. But actually I was using the default bringup launch file bringup.launch.py with moveit:=true, so the target position should not be zero or not set, am I right?

Or do you think that in this case I must send eg. ipo_joint_position additionally as a target command?

Ah okay I understand. Sorry for the late reply.
So on the smartPad you chose:
Control mode: Cartesian Impedance
Command mode: Position?

On the smartPad I chose:
Control mode: Cartesian Impedance
Command mode: Wrench
What I want is to use the bringup with Moveit, then add a wrench overlay, so that my iiwa can execute surface processing task like polishing or sanding by planning defined paths. What do you think on it? Thanks!

Sorry @WZHwerk5 , been caught up. Will investigate this now. Thank you for sharing this issue

Hi, I already turned the wrench command controller into a chained controller, now should I launch the bringup with wrench command controller in wrench command mode first,  then load the joint trajectory controller from another launch file?

wow sounds awesome @WZHwerk5! Would you want to open a pull request? I personally can't answer the question as I haven't investigated


createSchema not working

Description
Can't get a simple schema to work without non-understandable errors.
Steps to reproduce
Define an example schema in gridsome.server.js:
api.createSchema(({ addSchema, graphql }) => {
    addSchema(new graphql.GraphQLSchema({
      query: new graphql.GraphQLObjectType({
        name: 'Example',
        fields: {
          id: graphql.GraphQLString,
          name: graphql.GraphQLString,
          mockData: graphql.GraphQLString,
          source: graphql.GraphQLString
        }
      })
    }))
  })

Expected result
Should now have an extra graphql query available in explorer called Example
Actual result
Just get console errors:
Module build failed (from ./node_modules/gridsome/lib/plugins/vue-components/lib/loaders/page-query.js):
Error: The type of Query.id must be Output Type but got: undefined.

The type of Query.name must be Output Type but got: undefined.

The type of Query.mockData must be Output Type but got: undefined.

The type of Query.source must be Output Type but got: undefined.
    at assertValidSchema (./node_modules/graphql/type/validate.js:71:11)
    at validate (./node_modules/graphql/validation/validate.js:54:35)
    at module.exports (./node_modules/gridsome/lib/plugins/vue-components/lib/validate.js:4:10)
    at Object.module.exports (./node_modules/gridsome/lib/plugins/vue-components/lib/loaders/page-query.js:25:20)

Environment

Libs:
- gridsome version: 0.6.9
- @gridsome/cli version: 0.2.1

For Tooling issues:
- Node version: 10.1

The options you pass to GraphQLObjectType isn't valid according to the docs. Each field must be an object with a type property :)

Ah, was wondering where the documentation was :) Thanks


FileNotFoundError: pascal-0-4.pt

Hi all, I have met the following error when I try to train image classification models using augmented images from DA-Fusion, anyone has the same issue? The execution code is:

python train_classifier.py --logdir pascal-baselines/textual-inversion-0.5 --synthetic-dir "aug/textual-inversion-0.5/{dataset}-{seed}-{examples_per_class}" --dataset pascal --prompt "a photo of a {name}" --aug textual-inversion --guidance-scale 7.5 --strength 0.5 --mask 0 --inverted 0 --num-synthetic 10 --synthetic-probability 0.5 --num-trials 1 --examples-per-class 4

The returned error:
FileNotFoundError: [Errno 2] No such file or directory: 'pascal-tokens/pascal-0-4.pt'

Hello JiaojiaoYe1994,
These are tokens from textual inversion, and can be obtained by fine-tuning Stable Diffusion using fine_tune_upstream.py. I'll upload the tokens I obtained when writing the paper in a Google Drive link and post it here.

Hello JiaojiaoYe1994,
These are tokens from textual inversion, and can be obtained by fine-tuning Stable Diffusion using fine_tune_upstream.py. I'll upload the tokens I obtained when writing the paper in a Google Drive link and post it here.

Hi @brandontrabucco,
what would be the main difference between fine_tune.py and fine_tune_upstream.py, it seems like upstream support running different class_names in parallel, which is good, but is there other differences?


Add reclaimspace annotation for rbd storageclass if encryption enabled

https://issues.redhat.com/browse/RHSTOR-5878

make changes at https://github.com/red-hat-storage/odf-console/blob/master/plugins/odf/console-extensions.json#L353-L355
Update the mutator function

add epic/story link to the description...

can u add YAML screenshot for encrypted StorageClass ??
also plz check why tests are failing...

/test images
/test odf-console-e2e-aws

LGTM

/approve


Can we Call Spark web app from Jframe button click on localhost server

https://coderanch.com/t/344606/java/Send-Http-request-Swing-GUI


Translated image page into bahasa indonesia

Addressed image page of #15341
/language id

@wahyuoi I have addressed all comments, please kindly review once again, thanks!

/lgtm
last translation for this milestone :tada: :tada:
thank you @girikuncoro

/approve


repository not up-to-date with published pypi package

Hey, thanks, i've just tried, and your current implementation works great for me
I've thought about contributing script (that would pip/python setup.py install) provide for simple usage, however I'm unsure how the current codebase maps to releases
Branch version1 has no tags and setup.py descriptors do not match whats on https://pypi.org/project/AttachmentsExtractor/
Could you please push latest code and tag the 1.0.2 version in repository? I'll then happily help you with some helper script, that provides console guidance (arguments validation and usage/help)

Hi i have updated the latest code in master. feel free to create changes and raise a PR.


How to prevent driver loading multiple times?

Hi, I found that you can map driver with kdmapper multiple times. How I can check if driver already loaded?

Well since the idea of this kdmapper is try to prevent that anyone knows that you have a mapped driver running you will need to create your own method like a communication method, some files somewhere, registry keys and much other possibilities


add high score system and option to play again in the Snake Game

The Snake Game currently closes immediately as the player loses.
I would like the UI to display that the game is over and ask the player if they want to play again. I also want to modularise the code to implement a new high score system.

could you please assign this to me @Mrinank-Bhowmick :)


Bump max job name length

Increasing the job name length from 30 characters to 100 to accommodate lon names for jobs. This includes the StateDB Reflectors, the job names for that have a table name of 30 characters and also the job name and the prefix.

cc @joamaki


Fix typo fist to first.

Was reading through the docs and noticed this. Assuming it should be first and not fist.

Hi @jonsuh,
thanks. Unfortunately, we do not manually modify what is in dist/ folder. Automated tasks take what is in src/ and dynamically generate dist/.
Could you please fix the typo in src/ instead?
Thx

Hi @guillaumepotier,
I went ahead and created another pull request with the typo fix on src/ as you requested: https://github.com/guillaumepotier/Parsley.js/pull/943
Thanks!

yes thanks. Merged.
Best


Pin rspec to ~>3.3

Bumps the RSpec version to 3.3 to match KriKri. This is related to:
http://rspec.info/blog/2015/06/rspec-3-3-has-been-released/ and
https://github.com/dpla/KriKri/pull/243
Makes RSpec a runtime dependency to force this version requirement on
apps using this gem. Because those apps should make this gem a
development dependency, the requirement won't affect their runtime
dependencies.

👍


Fixed Duplicate word on line 09

minor fix on line 16

Thanks -- sorry this took so long! It is actually a bit rude of me not to have gotten to this sooner---I apologize.


Websocket TracingChannelInterceptor throws UnsupportedOperationException

Behavior: TracingChannelInterceptor now throws UnsupportedOperationException
2019-08-01 23:39:35,611 org.springframework.messaging.support.ExecutorSubscribableChannel error
ERROR: Exception from afterMessageHandled in io.opentracing.contrib.spring.cloud.websocket.TracingChannelInterceptor@15e5246 java.lang.UnsupportedOperationException: MessageHeaders is immutable
	at org.springframework.messaging.MessageHeaders.remove(MessageHeaders.java:280) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at io.opentracing.contrib.spring.cloud.websocket.TracingChannelInterceptor.afterMessageHandled(TracingChannelInterceptor.java:123) ~[opentracing-spring-cloud-websocket-starter-0.3.2.jar:?]
	at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.triggerAfterMessageHandled(ExecutorSubscribableChannel.java:185) [spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:145) [spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]

Expected: No exception?
Cause: https://github.com/opentracing-contrib/java-spring-cloud/commit/143f2869851d88eb15ed3fffc1dd05e12049c30b#diff-0858dab10634b9393abc8e3075dd474aR123
Fix?
Remove has been unsupported a long time; should have probably used getRawHeaders() instead?

+1 Would you like to submit a fix for it?

Hi @pavolloffay I've made a pr with a possible fix. Just curious when it might make it in.


xcomfort Bridge integration failed to load on HA 2022.7.0

After updating HA from v2022.6.7 to v2022.7.0 the xComfort Bridge Integration failed to load with the following error message:
Logger: homeassistant.setup Source: setup.py:162 First occurred: 10:23:08 PM (1 occurrences) Last logged: 10:23:08 PM Setup failed for custom integration xcomfort_bridge: Requirements for xcomfort_bridge not found: ['pycryptodome==3.12.0'].
A much more extensive log dump can be found here: https://pastebin.com/DBgKXhQA
I suspect this may be related to the fact that HA was updated to Python 3.10 but I am not an expert so that's just my guess.
I would be so glad if you could take a look at this and perhaps see if there is a quick fix.
I'd be more than happy to contribute with 'coffee or bear' 👍

Changing the manifest to pycryptodome==3.15.0 fixed it.

Changing the manifest to pycryptodome==3.15.0


Updating Normalized Data with merging approach, wrong example

What docs page needs to be fixed?

Section: Simple Merging
Page: Managing Normalized Data

What is the problem?
The docs says to do deep copy with lodash merge tool, for the example of adding a new Comment to post.

...We'll use the example of adding a new Comment to a Post.
One approach is to merge the contents of the action into the existing state. In this case, we need to do a deep recursive merge, not just a shallow copy. The Lodash merge function can handle this for us:

import merge from 'lodash/merge'

function commentsById(state = {}, action) {
  switch (action.type) {
    default: {
      if (action.entities && action.entities.comments) {
        return merge({}, state, action.entities.comments.byId)
      }
      return state
    }
  }
}

However, I am not sure why deep copy is needed here for a new Comment object why not just use that comment object supplied by action and add it to state by returning a new state object wich should combine old comments and new comments, like:
return {...state, ...action.entities.comments.byId} or via return Object.assign({}, state, action.entities.comments.byId)
Maybe its not a good practice to use the same objects from the action? so we need to create it again in reducer? ( - if so, when we initialize the store with a huge list of data fetched from api for example, we would have to create again all data in reducer!! - ), but even if so, still don't have to deep merge old state object? we can do:
return  _.merge( { ...state}, action.entities.comments.byId);

The only case I can see for deep merge here, is if using that same logic for updating existing items (not as stated in docs page:  We'll use the example of adding a new Comment to a Post), and the action items contain only the updated properties, then we might need deep merge old state with updated propeties.
What should be changed to fix the problem?
Maybe change example to:
return  { ...state, ...action.entities.comments.byId};
or (if we should not reference objects from the action):
return  _.merge( { ...state}, action.entities.comments.byId);
or it should be made clear that the example is specifically needed only when using that for updating existing items and the action items contain only updated properties!

Can you make a PR with your changes? That will be a better format to discuss the problem.

@timdorr why closing the issue before solving it? Just ignoring the issue won't help the documentation!
I should do a PR? why? I am not a member, and I don't have the time for cloning the repo, just wanted to make you aware of the problem in your documentation, if you don't like to fix it your own its Ok, but will confuse redux users.

You don't need to be a member of this org or manually fork a repo. Just go here and hit the pencil icon in the upper right: https://github.com/reduxjs/redux/blob/master/docs/recipes/structuring-reducers/NormalizingStateShape.md

thanks @timdorr, here is PR


Second edition: page 127, page 141

Reading ansible-doc and other things I am (now) much more aware of the idea of "control" versus "remote".

other than the string in the index, page 127 is the first time the attribute connection: comes up.

What is the point (and impact) of

connection: local

Page: 141
I like the idea of include_tasks, but I would also like the safety-net like on page 127
would something like:
- name: "Check for {{ username }} customization."
  stat:
    path: "tasks/{{ username }}.yml"
  register: customization
  connection: local

- name: "{Perform {{ username }} customization"
  include_tasks: "{{ username }}.yml"
  when: customization.stat.exists

And is using connection: local, useful, wrong, or just pretty?

Intent: A reader trying to apply what has just been introduced earlier - but unsure what the default relative path is during execution of  .../tasks/main.yml.

Maybe off-topic, but as it relates to my first attempt at compressing a number of long playbooks - written as "roles", but basically, in many locations duplicates of each other.
The "users" tasks/main.yml is now:
---
- name: "Create {{ username }} account"
  command:
    cmd: /usr/bin/mkuser
      home="/home/{{ username }}"
      shell="/usr/bin/ksh"
      "{{ username }}"
    creates: "/home/{{ username }}"

- name: "Create {{ username }} .ssh directory"
  file:
    path: /home/{{ username }}/.ssh
    owner: "{{ username }}"
    group: staff
    mode: 0700
    state: directory

- name: "Set/reset {{ username }} limits"
  command:
    cmd: /usr/bin/chuser
      "{{ limits.attr }}={{ limits.value | default('-1') }}"
      "{{ username }}"
  loop:
    "{{ user_limits }}"
  loop_control:
    loop_var: limits

- name: "Check for {{ username }} customization."
  stat:
    path: "tasks/{{ username }}.yml"
  register: customization
  connection: local

- name: "{Perform {{ username }} customization"
  include_tasks: "{{ username }}.yml"
  when: customization.stat.exists

And works when given a static argument. (emphasis on static) - as I found the answer elsewhere - and you talk about the difference of include_* versus import_* - and if that was meant to clarify that roles are static calls while tasks: are dynamic - I missed that - that is my feedback.
The problem I was having was I wrote main.yml as:
---
- hosts: wip
  gather_facts: no
  # roles are 'static' so they do not work with with_items.

  roles:
    - role: users
      username: "tim"
    - role: users
      username: "{{ item }}"
      with_items:
        - "test"
        - "user2"

imho: ansible documentation does a poor job of saying loop iteration is permitted.
However, I found a statement at the bottom of this question/answer: https://groups.google.com/g/ansible-project/c/VtYw0Pzgr0o?pli=1

Brian Coca
unread,
Jun 2, 2017, 5:20:35 PM
to Ansible Project
Well, roles: have always been statick, with_ and other directives ONLY
execute on tasks, so when adding them to static imports (like roles:)
they should just be inherited by the imported tasks.

----------
Brian Coca

so, feedback again: this is, imho, a good place to emphasize that iteration only works on a certain type of (searching for what I hope is the right word - I'll use directive) ansible directives only work in tasks:.

Working example of above - using both roles: and tasks:

# roles: are 'static' so they do not work with with_items.
# tasks: work with_* iteration. Coupled with 'include_role', with_* is possible
# vars: will be moved to either of:
#  .../vars/main.yml
#  .../default/main.yml
# kept here for simplicity atm
---
- hosts: wip
  gather_facts: no
  vars:
    userlist:
      - "test"
      - "user2"

  roles:
    - role: users
      username: "tim"
  tasks:
    - name: "Manage userlist"
      include_role:
        name: users
      vars:
        username: "{{ item }}"
      with_items:
        "{{ userlist }}"

a bit more head-spinning (the limitations of what can be included in a role "tasks" playbook confound me.
You give an example - but I guess it is just before you start with roles - and I seem to be expected to forget many of the things just mentioned:
e.g., in the sample below - I am trying to dynamically expand the role based on a task file being present in the role tasks directory.
the debug statement tells me the 'exists' is always false, even when the file exists - so I guess - my oath: is not correct.
please feedback (aka help):

- name: "Check for {{ username }} customization."
  stat:
    path: "tasks/{{ username }}.yml"
  register: customization
#  connection: local
  loop:
    "{{ user_names }}"
  loop_control:
    loop_var: username

- name: "Debug"
  debug:
    verbosity: 0
    var: customization

- name: "{Perform {{ cust.username }} customization"
  include_tasks: "{{ cust.username }}.yml"
  when: cust.stat.exists }}"
  loop: "{{ customization.results }}"
  loop_control:
    loop_var: cust

Thanks for all these notes—the difficulty is it's hard to parse them all out as one large issue to try to find any actionable changes in the book. If you can maybe split things into separate issues, that would be helpful in getting any changes made.


[V9.0.1] Theme demo data install fails

Issue: When installing a theme with demo data the install fails with an SQL error.
Steps to reproduce: Fresh install of 9.0.1 with a full install of Atomik, install a theme with Demo data (Used Modena and Stucco themes) choose to replace all data (Yes. Reset site content with the content found in this package) shortly after the error below occurs. This issue does not occur when you start with a fresh install of Elemental.

This has been fixed in https://github.com/aembler/concrete5/commit/fd64890404eacfdff91a88f2539bb65e67a226ba and will be released in 9.0.2

That's good news, thanks Andrew.


Could you provide wheels for python 3.12 ?

Is your feature request related to a problem? Please describe.
No response
Describe the solution you'd like
I would like to use many-linux wheel for python 3.12
Describe alternatives you've considered
I don't see any alternative...
Additional context
No response
Organisation
Meteo-France

Hello, I would also be interested into using this project with Python 3.12
Is there anything preventing the upgrade for now?
Thanks!

I recommend upgrading to eccodes 2.39.0 which should run under 3.9 <= Python <= 3.12 for all the major platforms. eccodes >= 2.39.0 has the eccodes library build in, so no need anymore for the separate ecmwflibs dependency.


watermark/copyright images

Some of the imagery we have on the feeds will need a copyright notice of some sort.
Things like the USGS DRGs are public domain and there is no reason to modify them at all but adding our GINA logo nicely would help us identify the use of makemap in the wild.
For the SDMI BDL we need to burn a watermark/copyright notice on to the image.
The concept I'm thinking we burn a small GINA logo in the bottom left on all images with 30% or more transperancy.   For the feeds that require a copyright notice toss that in the bottom right.
ImageMagick's composite command should make this process easy.
Always do something along the lines of:
composite -gravity southwest -dissolve 20 watermark/gina.jpg input_file output_file
Then some logic to check if a feed-copyright.jpg exists and if it does also burn it with a similar command:
composite -gravity southeast -dissolve 10 watermark/#{feed}-copyright.jpg input_file output_file
If we can instead create a cool tool that burns arbitrary text onto the image that would be even better than an image.
For the BDL we should have a the text: "imagery (c) respective holders : http://alaskamapped.org/bdl"
That URL wille explain the copyright information and provide links to determining the source imagery being displayed.
Sounds so easy...
GOTCHA
convert is not aware of GeoTIFF tags and so the resulting output_files will lose their geometry fields.  I think Jay has a tool/method that can 'copy' them from one image to another.  If not he should be able to make that tool fairly easily.  I'll pretend he has it:
gdal-copy-info source_image_with_tags target_image_without_tags output_image

The most super awesome thing ever would be a: gdal-composite tool that did what composite does but doesn't lose the geometry information.  @spruceboy should chime in if that is a reasonable tool we could add to the dans-gdal-scripts.

listgeo does that see http://www.remotesensing.org/geotiff/listgeo.html
It works like this:
listgeo wango.tif  > geo
convert wango.tif zang.tif
geotifcp -g geo zang.tif bang.tif
This can also be done (very simply) in c and in ruby with georuby.  See the last two lines of https://github.com/spruceboy/Spruceboy-s-Data-Processing-Scripts/blob/master/mask_to_geotif.rb for an example of how to do this.
Other things to think about - imagemagick does not work on large images, and the watermark should be "moved" about a bit randomly so it is not easy to remove.  There is a bunch of details on how to do a elegant watermark on the imagemagicks website.  Also, what to do for really large images (we have in the past provided folks with 200k by 200k images with all of anchorage or all of the matsu for example).

Tiff stuff not done yet, need feedback on watermark as is.

Disabled branding of tiff images until  the gdal magic is integrated


More cluster access privileges updated

Problem
Issue https://github.com/project-chip/connectedhomeip/issues/14419 more clusters need custom required privilege
Change overview
Update more cluster access privileges
In general.xml:

Groups
Scenes
LevelControl

In ha.xml:

ThermostatUserInterfaceConfiguration
ColorControl
OccupancySensing

Testing

ZAP regen, build, CI
Review generated access.h

I figured this would update separate clusters from PR #17115, but in retrospect I'll still have to rebase if they share any generated files.


Perf_Mon: Pack time marker data and measure cycle count overhead

Currently timer marker data is stored in L1 very inefficiently. 3x32-bit location are used per marker.
1st 32-bit is the time ID
2nd 32-bit is the timer_H
3rd 32-bit is the timer_L
Following optimization with minimal to no overhead can be done to better optimize both on cycles and space.

considering 32-bits gives us about 4.3B cycles or at 1.2GHz , 3.5 seconds of duration, timer_H is arguably never significant to us. By only reporting only timer_L and using overflow detection(i.e. if timer decreased, there was an overflow) on the host-side we can save 32-bits of L1 and all the cycles for collecting timer_H (9 cycles). The only caveat is that we cannot have markers being reported at more than 4.3B cycles apart. In other words, we require that every 4.3B cycles at least one marker is reported or the overflow detection will fail.

We can push this idea even further, if we assume that we can bring the 4.3B cycle requirement lower to 67M cycles we can fit our timestamp in 26 bits and leave 6 bits for our timer ID. This assumption is pretty reasonable. Our longest kernel at the moment is un-optimized matmul and it is around 26M cycles. This mean if only FW main markers are present and no other marker comes in between, we are still less than twice the threshold. It also means we will be limited to 64 timerIDs. However, the benefit is using 1/3rd of the original space and experimentally I have shown that the bit level logic with the single store in this scenario produces that same number of cycles as two stores required in method 1. This method takes 21 cycles on NCRISC and 23 cycles on BRISC.

As a general observation so far, we are memory limited and more importantly NOC BW and congestion limited rather than cycle limited. Therefore, we can allow for more cycles on time marking in order to avoid the limitations of methods 1 and 2 and still go from 3x32-bit size to 2x32-bit size. We can fetch timer_H, mask it to a more reasonable range such as first 8 bits which allows for markers to be 15minutes apart. Use the remaining 24-bits for timer ID which is more than plenty. This will add the 9 cycles of reading timer_H but it will save us 32-bits per marker on L1

Personally, I think we should pursue method 2 and ensure we provide markers within the required bound. 64 timer IDs is plenty specially if we bring preprocessor smarts that abstracts away everything from the user and they only use the provided macro functions and definitions which guarantee to use correct IDs.

#2291


TypeError: Boolean value of this clause is not defined

Checklist

[X] The bug is reproducible against the latest release or master.
[X] There are no similar issues or pull requests to fix it yet.

Describe the bug
Traceback during open 'Create' page (url for example): http://<IP_ADDRESS>:8000/admin/user/create
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/starlette/templating.py", line 37, in init
content = template.render(context)
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/jinja2/environment.py", line 1301, in render
self.environment.handle_exception()
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/jinja2/environment.py", line 936, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/sqladmin/templates/create.html", line 1, in top-level template code
{% extends "layout.html" %}
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/sqladmin/templates/layout.html", line 1, in top-level template code
{% extends "base.html" %}
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/sqladmin/templates/base.html", line 15, in top-level template code
{% block body %}
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/sqladmin/templates/layout.html", line 49, in block 'body'
{% block content %} {% endblock %}
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/sqladmin/templates/create.html", line 18, in block 'content'
{{ field() }}
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/wtforms/fields/core.py", line 172, in call
return self.meta.render_field(self, kwargs)
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/wtforms/meta.py", line 64, in render_field
return field.widget(field, **render_kw)
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/wtforms/widgets/core.py", line 174, in call
kwargs["value"] = field._value()
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/wtforms/fields/datetime.py", line 36, in _value
return self.data and self.data.strftime(self.format[0]) or ""
File "/Users/iuliia_volkova2/Library/Caches/pypoetry/virtualenvs/admin-panel-service-Ji2bEy0B-py3.7/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 582, in bool
raise TypeError("Boolean value of this clause is not defined")
TypeError: Boolean value of this clause is not defined
Steps to reproduce the bug
I think something in model cause in issue - I send the sample
Also we use async SQLAlchemy engine. I will be glad if you will do some input where to dig or what can be a reason of the problem.
Expected behavior
Create form open correctly without issues.
Actual behavior
Impossible to open Create form
Debugging material
No response
Environment
SQLAdmin == 0.1.9
SQLAlchemy  == 1.4.37
Additional context
No response

@aminalaee  and thanks for library :) I hope you can help anyhow with my issue. File with models in txt
Uploading sample.txt…

Hey @xnuinside , Thank you,
Can you please provide the model definition again? You can just paste the minimal example to reproduce this issue?

@aminalaee  I will try today to experiment & remove fields till I find that exactly cause a problem, but if you will have ideas to make this investigation more quick :) I will appreciate

I'm guessing that might be the server_default which I haven't tested, but it would be quicker if you can provide a minimal example to produce this.

problem in 'default=func.now()'  & 'onupdate=func.now()' if not use 'func.now()' everything is ok

Ok great, that's a good start, feel free to create a PR for it or I'll have a look later 👍

Hello
I have the same issue as @xnuinside
I didn't quite get the solution but it seems to me that my models using func.now() are correct.
If there is an error I don't see why I would need to change my models which are alright.

@StorkST
I think the solution was that @xnuinside needed to use server_default and not default. Can you provide a very minimal model to reproduce this?

Hi @aminalaee
Sure, here is my code.
I hope this is good for you as an example. I think you might need to create the database with the simple users table.
So when I try to create a new User on the interface I get the error "Boolean value of this clause is not defined".
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.sql import func
from sqlalchemy.orm import sessionmaker

from fastapi import FastAPI
from sqladmin import Admin, ModelView

from sqlalchemy.ext.declarative import declarative_base

app = FastAPI()

SQLALCHEMY_DATABASE_URL = "mysql://test:test@localhost/test"

engine = create_engine(
    SQLALCHEMY_DATABASE_URL, connect_args={}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

# Define admin interface
admin = Admin(app, engine)

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    email = Column(String(40), unique=True, index=True)
    creationDate = Column(DateTime, default=func.now())
    updateDate = Column(DateTime, onupdate=func.now())

class UserAdmin(ModelView, model=User):
    column_list = [User.id, User.email, User.creationDate, User.updateDate]

admin.add_view(UserAdmin)

@StorkST func.now() cannot be used in ‘default’ arg. Because it is DB function. default - for Python code that executes before send request to DB. Change func.now() to Python datetime.now() or use it in server_default

Yeah As far as I remember this was expected, the default should be populated in the create form, and in the case of func.now() there's no way to set that value upfront. Switching to server_default works around this.

Hmm, that might be one solution. But maybe we should exclude any columns with server_default value, not just with server_default=func.now. I think that would cover more cases.

As far as I test, func.now, func.current_date, func.current_time, func.current_timestamp, func.localtime, func.localtimestamp, and func.sysdate raise the same issue.
There can be more cases, but isn't it okay to catch only just the functions above? (in my short opinion)

I think my previous comment was not very clear.
I meant in the first step we can avoid any fields which have server_default=... or onupdate=... set so we don't need them in the forms, we can easily ignore them in the forms. Since we'll be sure there's a server side default value, we can easily ignore them.
But I think modifying the behaviour based on default=... is going to be a bit complicated.

Agreed with you. Thank you for your kindness :)

Thanks guys


Add popular Defold extensions

For contributors: Here's a repo with stub definitions for most of this list, to get you started.
Defold extensions in the assets library with >= 10 stars on Github:

[ ]  Druid
[x]  Monarch
[x]  Gooey (may need improvements)
[x]  Orthographic Camera
[x]  Scene3D
[x]  Narrator (may need improvements)
[x]  Defold-Input (may need improvements)
[x]  DefOS
[x]  Draw Pixels
[x]  Nakama
[ ]  Dirty Larry
[ ]  Rich Text
[x]  DefSave
[ ]  Colyseus
[x]  A* Path Finding
[x]  YaGames
[ ]  DAABBCC
[x]  DefCon
[ ]  Platypus
[ ]  Pigeon
[ ]  PlayFab SDK
[x]  Def Video Ads
[ ]  Facebook Instant Games
[ ]  DefTest
[x]  Google AdMob
[ ]  Operator
[x]  Playable Ads
[ ]  Printer
[ ]  Defold Grid Engine
[ ]  DefArmy
[x]  Rive
[ ]  Moku
[ ]  ResZip
[ ]  Illumination
[ ]  DefGraph
[ ]  DefArc
[ ]  Emthree
[ ]  defold-box2d
[x]  Screenshot
[ ]  MatchaNovel
[x]  Defold Rendy
[ ]  whDefRouter
[x]  WebSocket
[ ]  Defold Tilemap Animator
[ ]  FMOD
[x]  Google Play Game Services
[x]  PCG Random
[x]  Dicebag
[ ]  Debeat
[ ]  Defork
[ ]  DefGlot
[ ]  Defold Typewriter
[x]  Share
[ ]  DefPro
[x]  Poki SDK
[ ]  Google Analytics
[x]  In-app purchases
[ ]  Dissolve FX
[x]  Push
[ ]  OpenAL
[x]  extension-steam
[ ]  Defold-PNG
[ ]  Blip
[x]  SafeArea
[ ]  Defold Colors
[x]  defold-log
[x]  DefMath
[x]  SplitMix64
[x]  defold-event
[ ]  Image Loader
[ ]  Ads Wrapper
[x]  Google Analytics for Firebase
[ ]  Enhance
[ ]  True Tile Collisions
[x]  Vibration
[x]  YaMetrica
[x]  Review
[ ]  Pointer Lock
[ ]  GameAnalytics SDK
[ ]  Apple GameKit Game Center
[ ]  Defold Timer
[ ]  Chrono
[x]  WebGL Memory Tracker
[x]  extension-nativetext
[x]  Clipboard
[x]  Defold Yoga
[ ]  defold-ink
[ ]  whQuestDef
[x]  TapticEngine
[x]  Lua File System
[x]  IronSource
[x]  GameDistribution
[x]  Facebook SDK
[ ]  DeFine!
[ ]  Def-Diags

Unlisted but also popular:

[ ]  Ludobits
[x]  spine
[x]  xmath
[x]  webview

Hi @thinknathan it's amazing progress 👍
thank you!


Yes and no word keys translation

Where else have you looked for answers to this question?
Documentation
Share your question with as much detail as possible.
Is it possible to translate the yes- and no word keys? If I change it to something else, the plugin says, my choice is invalid
yesWord: "Yes"
noWord: "No"
thanks in advance!

It is possible, yes. Just changed noWord to "Nah" and was able to enter that for the quest accept prompt (/quests take <quest). If you're on the latest version of Quests and still having trouble, please create a new ticket as a Bug Report and make sure to mention which prompt you're entering text into.


Main Page Description

Hi,
You should state that while you dont create the vector artwork, they can request for me to create one in the forum.
Thanks,
H.

I will do this in the next readme update.

Added in 989e55065a38334b1349bcfa5cbf6060303b1d2a


remove jest

Remove JEST from package dependencies, it should be in devDependencies - is unsafe and dangerous to install jest and all its dependencies in a production server - this package cannot be used in production.

+1
I am using parse-domain in an AWS lambda, so I'm trying to keep things as lightweight as possible.
If this 1-line fix isn't live very soon, I'll have to find an alternative solution to parse-domain.


Added example for array operators

Addresses #7671
@Amruta-Ranade, please review this PR and let me know if any changes are required. I have slightly modified the example specified in the issue to keep the other examples on the page intact.

This change is

Online preview: http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/3077a01a999254681083d693485c8980bd73259e/
Edited pages:

v20.1/array.md
v20.2/array.md

For users not familiar with @> and <@, it might help to explicitly state that @> means "contains" and  <@ means "is contained by".
Optionally, in addition to the examples you already included, you might consider also providing an example like ... WHERE d <@ ARRAY[10,20,30,50], which should return the one row in the table. @amruta-ranade may have an opinion about whether or not that's worthwhile.

+1 to explicitly stating meanings for new users.
As for the additional example: @ericharmeling, can you advise if you have the bandwidth?

@rytaft and @Amruta-Ranade, I’m planning to add the following line to explain <@ and @>. Please let me know if this works.
You can use the following operators to run containment queries on array columns:

"is contained by": <@
"contains": @>

Re the extra example, @rytaft, do you mean SELECT * FROM c WHERE d @> ARRAY[10,20,30]; as “50” is added to the array in a different example. Also, as both SELECT * FROM c WHERE d @> ARRAY[10,20]; and SELECT * FROM c WHERE d @> ARRAY[10,20,30]; return the same row, can we mention a scenario where users might want to choose one statement over the other?

@rytaft, do you mean SELECT * FROM c WHERE d @> ARRAY[10,20,30];

No, I meant what I wrote above. The full query is: SELECT * FROM c WHERE d <@ ARRAY[10,20,30,50];. My example is different and may be helpful to readers because it shows the "is contained by" operator in action, in an example where the predicate is true. Your example with "is contained by", SELECT * FROM c WHERE ARRAY[42,99] <@ d;, is less helpful in my opinion because the variable is on the right hand side and ARRAY[42,99] doesn't overlap with the array in column d (ARRAY[10,20,30] at that point in the doc). I don't think it's bad to also show your example, but if we need to choose, I would personally prefer something like my example (feel free to tweak it and replace 50 with one or more other numbers).
Note that I wouldn't change your other example, SELECT * FROM c WHERE d @> ARRAY[10,20];. I think it's a good demonstration of "contains".

@rytaft and @Amruta-Ranade, I’m planning to add the following line to explain <@ and @>. Please let me know if this works.
You can use the following operators to run containment queries on array columns:

"is contained by": <@
"contains": @>

Great idea! I suggest changing this a bit to read:
You can use the [operators](functions-and-operators.html#supported-operations) `<@` ("is contained by") and `@>` ("contains") to run containment queries on `ARRAY` columns.

Online preview: http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/97d0d1fce39ba65277ece250fc3254183a8b35d8/
Edited pages:

v20.1/array.md
v20.2/array.md

@rytaft and @ericharmeling, thanks for your review and inputs.
I've fixed the examples and output format. Please take a look and let me know if any further changes are required.

@deeptikorwar LAST DAY TO ORDER!!!
Hi Deeptikorwar. Thank you for contributing to CockroachDB this year. As a token of our appreciation we would like to send you a gift. We tried to reach you via email, but if you didn’t see the message please DM me on our community Slack @lisa so I can send you a link to order your gift. (If you don’t want a gift, we also have a charitable contribution choice.) All orders must be in by December 13 (that’s tomorrow!), so please send this asap. :)

@SWDevAngel Thank you very much for the message and the gift. I used the link in my email a couple of days ago and went for the charitable contribution option this time :)


Using a live audio source as the default playlist requires skipping when a song is added

Basically, I want my bot to have a radio station playing 24/7 since some people on my server enjoy not having to always choose songs and this seemed like an elegant solution. The only issue is that when someone wants to play something they have to either force skip or vote to skip in order to hear their requested song.
My proposed solution is after the current song on the livestream is finished (if it's possible to detect) play the queue.

This sadly isn't possible to detect over the music stream alone unless you analyze it or have a second input like a playing information by metadata or request able information including the correct song, its length and current position.

This sadly isn't possible to detect over the music stream alone unless you analyze it or have a second input like a playing information by metadata or request able information including the current song, its length and current position.

Oh, well that’s too bad. Would it be possible to just stop playing the default audio stream if a song is requested then?


[Bots]: Potential Strategy algorithm

The default minmax tic tac toe algorithm will not work in our special case because either it needs to treat specific cases in a different way or becomes computationally too intensive if we generate all possibilities for each move.
The following outline should give an overview of a potential algorithm to create an efficient and sufficiently intelligent strategy to keep games against bots interesting:
Simple version
Initial state empty or only one tile conquered
if the board is empty the bot will try to conquer the center tile (highest possibility for a win), if the center tile is already taken it will choose one of the 4 corner tiles at random
More than 2 tiles conquered

The bot will try to score a win (no matter the difficulty of the tile to conquer to do so).
The bot will remove the chance of the enemy to win (steal the enemy tile which will reduce the chance to win for the enemy to 0, if not possible try to reduce the possibility for the enemy to win (number of possibilities to have 3 consecutive tiles next turn) to the lowest value, while taking into account the difficulty to conquer the chosen tile.
if none of the above cases is present it will try to extend his number of consecutive tiles to the most possible while taking into account the difficulty to conquer the tile.

Any thoughts and additional ideas are welcome.

The high-level strategy sounds correct!
Can you try to expand each step like in this strategy description: http://en.wikipedia.org/wiki/Tic-tac-toe#Strategy
For instance, "1." should be expanded as a set of rules to be tested serially.

Here is the first implementation, which doesn't take into account the difficulty of tiles to conquer and basically treats every tile as if fully conquered, except in winPossible() and reduceChanceToWinForOpponent() which will treat partially conquered tiles as stealable.
##Pseudo Code
if (emptyboard()) {
	random(placeCenter(), placeRandomCorner())
} else if (opponentFirstTurn()) {
	if (opponentPlacedCenter()) {
		placeRandomCorner()
	} else if (opponentPlacedCorner()) {
		placeCenter()
	} else {
		random(placeCenter(), placeCornerNextTo(), opposideEdge())
	}
} else if (secondTurn() && opponentPlacedCorner()) {
	placeOppositeCorner()
} else {
	if (winPossible()) {
		tryToWin()
	} else if (opponentWillWin()){
		reduceChanceToWinForOpponent()
	} else {
		if (centerFree()){
			placeCenter()
		} else if (centerBelongsToUs){
			placeRandomSideMiddle()
		} else {
			//uncertain if I missed a case here
			takeRandomCorner()
		}
	}
}


Release a mbp file

In order to upload this bot as a plugin to your maubot manager, you need to run mbc build on a clone of this repo to get the mbp file.
It'd be nice to have a mbp released as a "Release" in this github repo for the convenience of more people, or even as a github action for the convenience of this repo's maintainer.

this has been implemented on the replacement plugin repo, https://github.com/williamkray/maubot-communitybot


Error When running script

Hi. I get the following:::: .local/lib/python3.9/site-packages/jupiter_python_sdk/jupiter.py", line 676, in swap
transaction_data = httpx.post(url=self.ENDPOINT_APIS_URL['SWAP'], json=transaction_parameters).json()['swapTransaction']
KeyError: 'swapTransactio

Hello,
I'm gonna improve the code thanks to the issue you encountered.
Indeed, this error occurs when there are no routes available. It can happen due to numerous reasons such as: slippage, token not listed, and so on.
I will specificed the reason if there is an error when you are trying to swap.

Code updated https://github.com/0xTaoDev/jupiter-python-sdk/commit/a9f7d51d2655c29d9ac56c2891385407af82d5ee


Feature/programming exercises/trigger build button + new submission type instructor (rated after due date passes)

Checklist

[x] I tested the changes and all related features on the test server https://artemistest.ase.in.tum.de.
[x] I documented my source code using the JavaDoc / JSDoc style.
[x] I added integration test cases for the server (Spring) related to the features
[x] I added integration test cases for the client (Jest) related to the features
[x] I added screenshots/screencast of my UI changes
[x] I translated all the newly inserted strings

Motivation and Context

Currently it is not possible to retrigger a build without committing onto the repository.
However there are cases where this would be better, e.g. when the solution participation build should be triggered again.
Description

Implementation:

Trigger button as self contained client components
There is one wrapper component for a normal "MANUAL" build run (normal, manual submission) and one for the "INSTRUCTOR" build run (special submission that is also considered rated after the due date passes) - I wanted to separate the endpoints on the server
When clicked, starts a build for the given participation's repo on Bamboo
The button is disabled until the result comes back from Bamboo (submission websocket service)
:warning: The button is disabled if there is no result yet for the participation (this would usually  mean that the student has not made a commit on the repository yet, which would introduce a new scenario)

Places where the new button is shown atm:

[x] Programming Exercise Detail
[x] Course exercise row
[x] Participation list (/#/exercise/8/participation) (Note: It might be useful to also have a 'trigger all' button here - however as far as I see this comes with further complications and didn't want to make this PR even bigger)

Other changes that are not directly related to the topic of the PR:

Fixed programming exercise server tests that would seemingly non-deterministicly fail (tearDown db after and not before tests, fixed a couple of bugs when creating the programming exercises in the tests)
Streamlined the programming-exercise-participations rest urls

Steps for Testing

Log in to ArTEMiS
Go to courses > exercises / course administration > programming-exercise view
Click on trigger button and watch how the build is executed :)

Screenshots

Course exercise row showing the tooltip:

Course exercise row with running build:

Programming exercise detail with running build:

Participation list:

I guess we could leave out the button title to make it shorter

There were 3 issues with the tests for programming exercises:

In some cases, the solution/template participation was not saved into the correct repository
The order of assigning the solution/template participation to an exercise was incorrect (first the participation needs to be saved, then attached to the exercise)
Most important: The database reset needs to be done in @AfterEach. I noticed that sometimes the data from a previous test could not be deleted from the repositories.

I started to review but I need some more time. Please fix the conflicts in between.
What I was wondering: Should we really always show this trigger button? Or should we only show it in certain scenarios?
To be discussed:

I think we can leave it out for students if the build and all tests passed (i.e. 100%)
I am not sure if students need to see it for failed tests all the time? Maybe only in certain cases, e.g. when there is a submission but no result (after 2 minutes) or when there are certain feedback messages (e.g. time out exceptions)

What do you think? @sleiss @ungaralex (also it would be great to get another review from you)

I started to review but I need some more time. Please fix the conflicts in between.
What I was wondering: Should we really always show this trigger button? Or should we only show it in certain scenarios?
To be discussed:

I think we can leave it out for students if the build and all tests passed (i.e. 100%)
I am not sure if students need to see it for failed tests all the time? Maybe only in certain cases, e.g. when there is a submission but no result (after 2 minutes) or when there are certain feedback messages (e.g. time out exceptions)

What do you think? @sleiss @ungaralex (also it would be great to get another review from you)

You are right, I think the student does not need to see the button if the last submission received a result. So the only case where the button would be shown is if the last submission did not receive a result.
I will adjust the feature accordingly and ask for another review when I'm done.

@krusche @ungaralex @sleiss
Changelog since the last review:

Open discussion point from Stephan: https://github.com/ls1intum/Artemis/pull/712#discussion_r314944129
Adjusted the student build trigger button (course-exercise-row):

Only show if the last submission does not have a result and is older than 2 minutes
I updated the tooltip accordingly and made the button red as it is an important indicator for the student that something went wrong (see screenshot above in description)
The instructor trigger button (participation list, programming exercise view) is always visible
TBD: Contrary to Stephan's suggestion, I would still show the trigger button if the user has a submission with a 100% result.  (https://github.com/ls1intum/Artemis/pull/712#issuecomment-521777729)

I have on additional request, but this might be better for another pull request:
Imports to org.eclipse.jgit.* should only occur in the GitService.java, Repository.java and RepositoryExecutor.java (which should all be moved into a git package below service).
This means the import should NOT occur in any other file (except in test cases). I just searched for the import and it occurs in around 10 files. I think this will improve the system design. And while it is not planned to change the git library, this would be easier in the future in case it might be necessary.

I have on additional request, but this might be better for another pull request:
Imports to org.eclipse.jgit.* should only occur in the GitService.java, Repository.java and RepositoryExecutor.java (which should all be moved into a git package below service).
This means the import should NOT occur in any other file (except in test cases). I just searched for the import and it occurs in around 10 files. I think this will improve the system design. And while it is not planned to change the git library, this would be easier in the future in case it might be necessary.

I agree, this would be a bigger change to the whole GitService as it doesn't handle most of the exceptions atm and just hands out the GitApiExceptions. It is not a trivial change as for every thrown GitApiException we will have to decide how we want to handle it (does it mean an EntityNotFound? or IllegalArgumentException?).

When I open the participation list of a course for the first time, I see the following exception error

Why does it occur?

When I open the participation list of a course for the first time, I see the following exception error

Why does it occur?

I agree, this message doesn't make much sense here. The implementation of the build process visualization in https://github.com/ls1intum/Artemis/pull/707 makes the submission service directly emit an error to the jhiAlert system. This doesn't always make sense though.
I removed the alert from all other places than the code-editor for now as the alert doesn't seem to be a good solution in most cases. I think we could tackle this in the follow-up PR (e.g. show an accumulated alert in the participation list or mark a row in the exercise-row component red if it has a failed submission to make the error more obvious).

@krusche Thanks for your detailed review!
Changelog since last review:

The trigger button is now also red in the participation list IF the last submission failed
The exercise-detail page now also uses the updating-result component and shows the trigger button next to it
The "submission failed" alerts are disabled from all pages except the code-editor
Fixed missing resources in manage test cases due to wrong merge in translation file


Mirror Link MariaDB

function aptinstall_mariadb() {
  if [[ "$OS" =~ (debian|ubuntu) ]]; then
    echo "MariaDB Installation"
    apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
    if [[ "$VERSION_ID" =~ (9|10|11|18.04|20.04) ]]; then
      echo "deb [arch=amd64] http://mirror.rise.ph/mariadb/repo/$database_ver/$ID $(lsb_release -sc) main" >/etc/apt/sources.list.d/mariadb.list
      apt-get update && apt-get install mariadb-server -y
      systemctl enable mariadb && systemctl start mariadb
    fi
  fi
}

Hi, there is no good purpose in this pull.
Modifying the mirror for "mirror.rise.ph" is pointless.

After further investigation, the mirror will modified by another.

W: Failed to fetch https://ftp.igh.cnrs.fr/pub/mariadb/repo/10.6/debian/dists/bullseye/InRelease  Certificate verification failed: The certificate is NOT trusted. The certificate chain uses expired certificate.  Could not handshake: Error in the certificate verification. [IP: <IP_ADDRESS> 443]
W: Some index files failed to download. They have been ignored, or old ones used instead.

https://github.com/MaximeMichaud/Azuriom-install/commit/087e0800cc65b6b7553b9d17796a7f65f600329c


New CMS: Improve hashing of BigInt

Summary
The latest implementation of CMS ships with a default hashing implementation for BigInt that is based on the previous hashing approach for Long.  Unfortunately, this implementation for BigInt is "broken" in my opinion.
I think I have found a clean fix, which I will send in a separate pull request.  It's actually only a few lines of code, and the reason I am writing this ticket is to simply justify these lines and solicit peer review. :-)
What is broken in CMS[K] for BigInt's?
TL;DR: The current hashing causes more collisions "than expected", leading to counter-intuitive CMS counting behavior because similar but different keys end up being treated the same.  For instance, "twitter.com" is hashed to the same counting table slot as "www.twitter.com" and "mail.twitter.com".
Currently we use the following hashing function for BigInt:
  implicit object CMSHasherBigInt extends CMSHasher[BigInt] {

    def hash(a: Int, b: Int, width: Int)(x: BigInt) = {
      val unModded: BigInt = (x * a) + b
      val modded: BigInt = (unModded + (unModded >> 32)) & PRIME_MODULUS
      val h = modded.toInt % width
      assert(h >= 0, "hash must not be negative")
      h
    }

  }

(In the following examples I use the name brokenCurrentHash() for the above hash() function to highlight which implementation of the hash function we're looking at.)
Example 1: A first indication is shown below.  The letters "a" to "z" are hashed very closely to each other, although we would expect them to be spread more evently across the available width of the counting table.
We start with:
$ ./sbt "project algebird-core" console

scala> import com.twitter.algebird._
scala> import com.twitter.algebird.CMSHasherImplicits._
scala> val a = 5; val b = 0; val width = 999;

// Example: We hash domain names.
// Result: Different domain names are assigned to the same slot.
Seq("twitter.com", "www.twitter.com", "mail.twitter.com").map { s => CMSHasherBigInt.hash(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res133: Seq[Int] = List(889, 889, 889)   //  <<< again, all inputs hash to the same slot!

// Let's see how bad it is.  Ok, once we have only "ter.com" to hash we get a different slot.
scala> Seq("twitter.com", "witter.com", "itter.com", "tter.com", "ter.com").map { s => CMSHasherBigInt.hash(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res209: Seq[Int] = List(889, 889, 889, 889, 490)

// Also, I don't think that these domains should be considered the same...
scala> Seq("twitter.com", "litter.com", "bitter.com", "sitter.com").map { s => CMSHasherBigInt.hash(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res212: Seq[Int] = List(889, 889, 889, 889)

//
// Let's try to pinpoint the issue.
//

// Observation 1: The hash function ignores all but the least significant (right-most) bits.
// This means that, say, similar but different usernames may be considered as identical by CMS.

// Example: We hash "A","AA", "AAA", etc.
// Result: All `A`-strings with length >= 8 are assigned to the same slot.  Oops.
scala> (1 to 20).map { rep => "A" * rep } map { s => CMSHasherBigInt.hash(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res174: scala.collection.immutable.IndexedSeq[Int] = Vector(325, 774, 66, 304, 629, 81, 370, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124)

// Example: We vary the first character of sufficiently long strings, i.e. "Axxxx...", "Bxxxx...".
// Results: For all padLengths >= 8 the strings are assigned to the same slot.  Oops.
scala> val padLength = 8
scala> ('A' to 'Z') map (_.toString) map { s => s + "x" * padLength } map { s => CMSHasherBigInt.hash(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res196: scala.collection.immutable.IndexedSeq[Int] = Vector(113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113)
scala> val padLength = 12
scala> ('A' to 'Z') map (_.toString) map { s => s + "x" * padLength } map { s => CMSHasherBigInt.hash(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res200: scala.collection.immutable.IndexedSeq[Int] = Vector(113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113)

// Observation 2: Non-random hashes lead to predictable slot patterns (think: geometric series).
// Note how in these two examples the slots always increase by a fixed value (here: `+5`).
// This is expected given the current hash function, but still this is a property we do not like.
scala> Seq(1, 2, 3, 4, 5).map { i => CMSHasherBigInt.hash(a, b, width)(BigInt(i)) }
res150: Seq[Int] = List(5, 10, 15, 20, 25)

// Same for the Long-based hashing, of course.
scala> Seq(1, 2, 3, 4, 5).map { i => CMSHasherLong.hash(a, b, width)(i) }
res222: Seq[Int] = List(5, 10, 15, 20, 25)

How to fix
One might argue that an Algebird user could of course opt to implement her own BigInt hashing function.  However, I'd say that the current default BigInt hashing is so counter-intuitive to the general user that I'd consider it broken, and thus we should fix it at the source.
Requirements
We need a hash function that:

spreads the input data randomly across the available width slots.
if the inputs a and b are "close" to each other, then their hash values should be far apart.
is not computationally expensive, which rules out cryptographic hash functions like MD5 or SHA1.

Proposed solution: Use Murmur3 for hashing BigInt
TL;DR: Murmur3 seems to be a good choice, although other options may be valid, too.  Experiments and benchmarks confirm the applicability of Murmur3.
I did a cursory evaluation of the following hash functions:

Murmur3
Jenkins (e.g. implemented in twitter.util.Hashing)
SipHash, CityHash
CRC32 and similar error detecting codes
And actually a handful of others that I forgot in the meantime unfortunately (blame Xmas holidays!)

I also came across this benchmark of the various hashes shipped with Google Guava.  Note: In my benchmarking Murmur3 with 128-bit hashes turned out to be actually faster than its 32-bit version.

Eventually I reached the conclusion that Murmur3 seems to be the best option:

First, Murmur2/Murmur3 has been shown to perform well in a random distribution of regular keys.
In my benchmarking (see below) Murmur3 ran as fast -- even slightly faster -- than the current, broken hash implementation.
Scala ships with a built-in implementation of Murmur3 that outputs 32-bit hashes, so we wouldn't need to introduce a code dependency to Algebird just because of the BigInt hashing.

The Murmur3-based CMS hashing function looks as follows:
def murmurHashScala(a: Int, b: Int, width: Int)(x: BigInt) = {
    val hash: Int = scala.util.hashing.MurmurHash3.arrayHash(x.toByteArray, a)
    val h = {
      // We only want positive integers for the subsequent modulo.
      // This method mimics Java's Hashtable implementation, and it requires
      // `hash` to be an `Int` = have 32 bits (to match with `0x7FFFFFFF`).
      val positiveHash = hash & 0x7FFFFFFF
      positiveHash % width
    }
    assert(h >= 0, "hash must not be negative")
    h
  }

Important notes:

The original CMS paper requires d (depth) pair-wise independent hash functions.  Because Murmur3 has "almost" cryptographic quality (see e.g. this discussion on StackOverflow), I argue that we can use different seeds for Murmur3 instead of creating a universal hashing family.  Here, we'd use the a parameter in CMS as the seed for Murmur3;  assuming this is not a stupid decision per se (and I might be mistaken), this would be an elegant solution because CMS currently ignores the b parameter anyway, so we only need to take a into account.

Here are the same examples as I showed above but this time using Murmur3 (with 32-bit hashes as output).  All results indicate that the CMS hashing behavior has improved and shows the expected behavior.
// Example: We hash "A","AA", "AAA", etc.
// Result: Good, all `A`-strings are well spread across the slots.
scala> (1 to 20).map { rep => "A" * rep } map { s => murmurHashScala(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res223: scala.collection.immutable.IndexedSeq[Int] = Vector(561, 636, 318, 639, 707, 736, 204, 186, 194, 426, 112, 827, 842, 143, 581, 874, 890, 492, 5, 679)

// Example: We vary the first character of sufficiently long strings, i.e. "Axxxx...", "Bxxxx...".
// Results: Good, all inputs are well spread across the slots.
scala> val padLength = 8
scala> ('A' to 'Z') map (_.toString) map { s => s + "x" * padLength } map { s => murmurHashScala(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res224: scala.collection.immutable.IndexedSeq[Int] = Vector(194, 869, 369, 784, 444, 472, 862, 342, 680, 698, 487, 114, 751, 665, 758, 574, 20, 734, 543, 721, 767, 689, 77, 299, 152, 808)
scala> val padLength = 12
scala> ('A' to 'Z') map (_.toString) map { s => s + "x" * padLength } map { s => murmurHashScala(a, b, width)(BigInt(s.getBytes("UTF8"))) }
res226: scala.collection.immutable.IndexedSeq[Int] = Vector(914, 256, 649, 983, 305, 453, 218, 598, 641, 729, 49, 653, 730, 77, 329, 944, 761, 348, 632, 456, 762, 804, 605, 563, 236, 202)

// Good: Hashes are actually random now, leading to unpredictable slot patterns.
scala> Seq(1, 2, 3, 4, 5).map { i => murmurHashScala(a, b, width)(BigInt(i)) }
res227: Seq[Int] = List(920, 215, 33, 439, 949)

Benchmark results

Benchmark code: CMSHashingBenchmark.scala -- I decided to put this into a gist because I do not want to include it in the pull request as this would require adding Google Guava as a dependency to the sbt build of Algebird.

Here:

BrokenCurrentHash is the current BigInt hashing in CMS.
MurmurHashScala uses Scala's built-in Murmur3 implementation.
MurmurHash{32,128}Guava uses Google Guava's Murmur3 implementation with 32-bit and 128-bit hashes, respectively.
maxBits: The size of the randomly generated BigInt instances used as test input data.
width: Represents the width of the counting table (note that this benchmark only simulates a single row of the counting table).

Summary of results:

Scala's built-in Murmur3 implementation was the fastest in this benchmark.

It was particularly faster for small BigInt instances (in the benchmark: 128 bits).

Interestingly, Guava's Murmur3 implementation was faster when producing 128-bit hashes than when producing 32-bit hashing.

[info] maxBits                                  benchmark  width    ms linear runtime
[info]     128  BrokenCurrentHashWithRandomMaxBitsNumbers     11  34.7 ===
[info]     128  BrokenCurrentHashWithRandomMaxBitsNumbers    544  34.8 ===
[info]     128  BrokenCurrentHashWithRandomMaxBitsNumbers   2719  34.9 ===
[info]     128  BrokenCurrentHashWithRandomMaxBitsNumbers 271829  35.5 ===
[info]     128    MurmurHashScalaWithRandomMaxBitsNumbers     11  22.4 ==
[info]     128    MurmurHashScalaWithRandomMaxBitsNumbers    544  22.5 ==
[info]     128    MurmurHashScalaWithRandomMaxBitsNumbers   2719  21.9 ==
[info]     128    MurmurHashScalaWithRandomMaxBitsNumbers 271829  22.4 ==
[info]     128  MurmurHash32GuavaWithRandomMaxBitsNumbers     11  33.8 ===
[info]     128  MurmurHash32GuavaWithRandomMaxBitsNumbers    544  37.1 ===
[info]     128  MurmurHash32GuavaWithRandomMaxBitsNumbers   2719  40.2 ====
[info]     128  MurmurHash32GuavaWithRandomMaxBitsNumbers 271829  42.2 ====
[info]     128 MurmurHash128GuavaWithRandomMaxBitsNumbers     11  35.9 ===
[info]     128 MurmurHash128GuavaWithRandomMaxBitsNumbers    544  39.3 ====
[info]     128 MurmurHash128GuavaWithRandomMaxBitsNumbers   2719  41.1 ====
[info]     128 MurmurHash128GuavaWithRandomMaxBitsNumbers 271829  43.8 ====
[info]    1024  BrokenCurrentHashWithRandomMaxBitsNumbers     11 137.2 ==============
[info]    1024  BrokenCurrentHashWithRandomMaxBitsNumbers    544 133.8 ==============
[info]    1024  BrokenCurrentHashWithRandomMaxBitsNumbers   2719 142.7 ===============
[info]    1024  BrokenCurrentHashWithRandomMaxBitsNumbers 271829 139.0 ==============
[info]    1024    MurmurHashScalaWithRandomMaxBitsNumbers     11 136.5 ==============
[info]    1024    MurmurHashScalaWithRandomMaxBitsNumbers    544 137.2 ==============
[info]    1024    MurmurHashScalaWithRandomMaxBitsNumbers   2719 146.7 ===============
[info]    1024    MurmurHashScalaWithRandomMaxBitsNumbers 271829 142.6 ===============
[info]    1024  MurmurHash32GuavaWithRandomMaxBitsNumbers     11 149.8 ===============
[info]    1024  MurmurHash32GuavaWithRandomMaxBitsNumbers    544 157.2 ================
[info]    1024  MurmurHash32GuavaWithRandomMaxBitsNumbers   2719 157.7 ================
[info]    1024  MurmurHash32GuavaWithRandomMaxBitsNumbers 271829 158.5 ================
[info]    1024 MurmurHash128GuavaWithRandomMaxBitsNumbers     11 157.0 ================
[info]    1024 MurmurHash128GuavaWithRandomMaxBitsNumbers    544 158.6 ================
[info]    1024 MurmurHash128GuavaWithRandomMaxBitsNumbers   2719 164.4 =================
[info]    1024 MurmurHash128GuavaWithRandomMaxBitsNumbers 271829 157.7 ================
[info]    2048  BrokenCurrentHashWithRandomMaxBitsNumbers     11 239.8 =========================
[info]    2048  BrokenCurrentHashWithRandomMaxBitsNumbers    544 218.7 =======================
[info]    2048  BrokenCurrentHashWithRandomMaxBitsNumbers   2719 245.0 ==========================
[info]    2048  BrokenCurrentHashWithRandomMaxBitsNumbers 271829 244.8 ==========================
[info]    2048    MurmurHashScalaWithRandomMaxBitsNumbers     11 250.7 ==========================
[info]    2048    MurmurHashScalaWithRandomMaxBitsNumbers    544 253.7 ===========================
[info]    2048    MurmurHashScalaWithRandomMaxBitsNumbers   2719 252.7 ==========================
[info]    2048    MurmurHashScalaWithRandomMaxBitsNumbers 271829 252.2 ==========================
[info]    2048  MurmurHash32GuavaWithRandomMaxBitsNumbers     11 260.2 ===========================
[info]    2048  MurmurHash32GuavaWithRandomMaxBitsNumbers    544 281.8 ==============================
[info]    2048  MurmurHash32GuavaWithRandomMaxBitsNumbers   2719 265.0 ============================
[info]    2048  MurmurHash32GuavaWithRandomMaxBitsNumbers 271829 270.4 ============================
[info]    2048 MurmurHash128GuavaWithRandomMaxBitsNumbers     11 246.7 ==========================
[info]    2048 MurmurHash128GuavaWithRandomMaxBitsNumbers    544 247.8 ==========================
[info]    2048 MurmurHash128GuavaWithRandomMaxBitsNumbers   2719 257.9 ===========================
[info]    2048 MurmurHash128GuavaWithRandomMaxBitsNumbers 271829 260.7 ===========================
[info]
[info] vm: java
[info] trial: 0
[info] a: 5123456
[info] b: 0
[info] operations: 100000

Note: I did not profile the memory impacts of the various hashing options yet.

Once again, an amazingly detailed and rigorous contribution.
This looks great to me. Thank you.

FWIW here are the benchmark results for the committed code.  No changes apart from removing the Google Guava variants for Murmur3 because I didn't want to introduce a dependency on Guava just for this benchmark.
MurmurHashScala* is the new hash function we use for BigInt in CMS.
[info] maxBits                                 benchmark  width    ms linear runtime
[info]     128 BrokenCurrentHashWithRandomMaxBitsNumbers     11  37.2 ====
[info]     128 BrokenCurrentHashWithRandomMaxBitsNumbers    544  35.9 ====
[info]     128 BrokenCurrentHashWithRandomMaxBitsNumbers   2719  37.2 ====
[info]     128 BrokenCurrentHashWithRandomMaxBitsNumbers 271829  36.1 ====
[info]     128   MurmurHashScalaWithRandomMaxBitsNumbers     11  23.1 ==
[info]     128   MurmurHashScalaWithRandomMaxBitsNumbers    544  23.4 ==
[info]     128   MurmurHashScalaWithRandomMaxBitsNumbers   2719  23.0 ==
[info]     128   MurmurHashScalaWithRandomMaxBitsNumbers 271829  22.7 ==
[info]    1024 BrokenCurrentHashWithRandomMaxBitsNumbers     11 140.7 ================
[info]    1024 BrokenCurrentHashWithRandomMaxBitsNumbers    544 139.2 ===============
[info]    1024 BrokenCurrentHashWithRandomMaxBitsNumbers   2719 141.4 ================
[info]    1024 BrokenCurrentHashWithRandomMaxBitsNumbers 271829 143.7 ================
[info]    1024   MurmurHashScalaWithRandomMaxBitsNumbers     11 134.9 ===============
[info]    1024   MurmurHashScalaWithRandomMaxBitsNumbers    544 145.5 ================
[info]    1024   MurmurHashScalaWithRandomMaxBitsNumbers   2719 144.9 ================
[info]    1024   MurmurHashScalaWithRandomMaxBitsNumbers 271829 150.6 =================
[info]    2048 BrokenCurrentHashWithRandomMaxBitsNumbers     11 251.9 ============================
[info]    2048 BrokenCurrentHashWithRandomMaxBitsNumbers    544 255.3 =============================
[info]    2048 BrokenCurrentHashWithRandomMaxBitsNumbers   2719 252.4 ============================
[info]    2048 BrokenCurrentHashWithRandomMaxBitsNumbers 271829 242.3 ===========================
[info]    2048   MurmurHashScalaWithRandomMaxBitsNumbers     11 256.4 =============================
[info]    2048   MurmurHashScalaWithRandomMaxBitsNumbers    544 255.9 =============================
[info]    2048   MurmurHashScalaWithRandomMaxBitsNumbers   2719 262.6 ==============================
[info]    2048   MurmurHashScalaWithRandomMaxBitsNumbers 271829 252.6 ============================
[info]
[info] vm: java
[info] trial: 0
[info] a: 5123456
[info] b: 0
[info] operations: 100000

Thank you again for your careful and complete work. It is appreciated.


Release a new version with Django 2.2 support

As #357 was merged to master, can you please release new version to PyPi so Djoser users can upgrade to Django 2.2 once released?
Thank you.

Sorry for delay. I'll bump the patch version as nothing new was added.


[v0.3 DeNas]refine CV trainer

@zigzagcai , CI/CD is not triggered.

CI/CD passed. Please help to merge it. @xuechendi


Adding redis as an option

@cenkms I will also tell Sean to give it a check. We will comment here when we are good to go on our end.

@robertopc1: Can you please outline details on changes? I see you are pushing Redis Enterprise - have you made this optional, can users still use Azure Redis without the Enterprise option with this change?
We are merging major changes, restructuring the repo, and adding a new scenario. Can you please merge your branch with the main (in a couple of days), resolve conflicts and create a pull request?
cc @cenkms

It appears the OIDC auth is breaking due to the fork origin of this PR(?)
Could you please try adding an environment: Production attribute on the Bicep actions workflow job build-and-deploy?

like this.

@JinLee794 could you please merge this? this PR looks good.


Creating a category using News&Blog encountered TypeError

Summary

Expected behaviour
A category named "blockchain" should be created.
Actual behaviour
Got TypeError
Environment

The following is the output of pip freeze
pip-freeze.txt

The above error happened when no value is provided for "slug". When I provided the text value for "slug" in the creation form, there is not error.

Closing here as this is a bug in aldryn-categories.
Moved to https://github.com/aldryn/aldryn-categories/issues/45


[Fixes #1510] UI, Critical: retention.bytes parameter set to 0

[ ] Breaking change? (if so, please describe the impact and migration path for existing applications:)

What changes did you make? (Give an overview)

Fixes #1510

Is there anything you'd like reviewers to focus on?
You can test it manually, I did it myself, I think it works correctly

How Has This Been Tested? (put an "X" next to an item)

[X] No need to
[ ] Manually(please, describe, when necessary)
[ ] Unit checks
[ ] Integration checks
[ ] Covered by existing automation

Checklist (put an "X" next to an item, otherwise PR will fail)

[X] I have performed a self-review of my own code
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have made corresponding changes to the documentation (e.g. ENVIRONMENT VARIABLES)
[X] My changes generate no new warnings(e.g. Sonar is happy)
[X] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[X] Any dependent changes have been merged

Check out Contributing and Code of Conduct

Changes from previous commit:

Adds test for TopicForm
Removes bug from Topic/New test
Updates Topic/New test
Adds accessible names for TopicForm
Add id's to Select component

And I don't really want to make changes proposed by Sonar as I think they are won't make code better
It's just generic testing library expect's with querying by role and accessible name

@Haarolean said that we can't mute duplication error from sonar - so i will rewrite this part


Fix message handling

This fixes the handling of packets containing multiple messages and partial messages.  Both situations arise with Clout [1], which was missing pendant steps as a result.
This now seems to work reliably.
[1] https://github.com/AngryApostrophe/Clout

@zvea Thanks for the PR, just made two things const, otherwise looks great. Merged


File upload field

Are you planning on adding a button to upload file to server? Maybe something like this:
https://codepen.io/alexandergaziev/pen/JdVQQm

For now the plan is to stick to the MDCWeb component list and integration helpers.
see https://material-components.github.io/material-components-web-catalog
we'll add new components a s they are being added to MDCWeb.


"Choose" mode

cf. @stephanegigandet in #331
Goals:

[ ] I can set my food preferences
[ ] I have a search box to search food products that match my preferences
[ ] I can see my "Favorite" lists of foods (kind of "playlists")
[ ] I could have other features over time (e.g. "people who like banana yogurt also like those products")
[ ] I can see my recently scanned products
[ ] I can scan products, and when I scan them, the scan card shows the attributes that match my user preferences
[ ] I'm in a store, I want to know if a product is good for me.
[ ] I'm in a store, I have 5 different Nutella-like products in front of me, I want to know which one is best for me
[ ] I'm at home, I want to research products that match my preferences, to select which ones to buy later
[ ] I want to share my preferred products

Simplifications

[ ] Removal of shopping lists and pantries from home page - at least temporarily - just keeping product lists
[ ] Maybe restricting to a unique pre-existing "My favorite food" product list, with no (visible) possibility to create new product lists or to rename it
[ ] Maybe automatically applying the "food ranking parameters" every time we display a product (shouldn't we call that "food filter" instead?)

Maybe restricting to a unique pre-existing "My favorite food" product list, with no (visible) possibility to create new product lists or to rename it

A simple "Favorites" list with a simple heart button is something that everyone will understand, so it's definitely a great place to start.
Then maybe when people add favorites / view their favorites, they could be prompted "Organize your favorites" with an option to "Create a favorite list". --> but we could do that later, it's not a must have.
The same system would work well for pantries or shopping list: by default there's a single pantry and shopping list, and then we can offer to organize your pantry, or organize your shopping list (e.g. "Supermarket", "Weekly market" etc.)

Maybe automatically applying the "food ranking parameters" every time we display a product (shouldn't we call that "food filter" instead?)

I think "food preferences" is simpler and conveys all the uses of those preferences: displaying what matters to you first (e.g. on the scan card, and on the product page), knowing when something does not fit your criteria (the filtering part if you set some preferences to mandatory), and ordering products according to your preferences (when you scan multiple products, or when you do a search).

I'm in a store, I have 5 different Nutella-like products in front of me, I want to know which one is best for me

I really like this concept of "food competition" - there's clearly a use-case! Could even be an app of its own. Could even be preloaded with data (e.g. all the breakfast cereals you can find in a French monoprix shop).

It would be great if you could both draw your proposals on papers with a black sharpie, and take a photo of them.
I'm a rather visual person, and I can't picture for sure what you both have in mind.
Please make it specific to this screen.

@teolemon Regarding the home page, it's basically the current one without shopping lists and pantries, and with a "favorite list" (with a red heart) rather than "product lists".
But I'm currently more focused on #335. I do think that what we need now is a purpose for smoothie. For the moment we just add or subtract features and change colors.


docs(README.md): better syntax highlighting

Improve the syntax highlighting on the different snippets in README.md

Nice!


wget retrieval of .rpm file should also be included

Linux admins on a barebones restricted edge server will want to pull down the .rpm file with wget and add to a fileshare on a disconnected network.  Please include instructions on using wget and test to ensure that the links work for that purpose.

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

ID: 811ed1f4-1c78-aa1b-e752-307250ca8eb7
Version Independent ID: f36629bf-b2e6-4993-7c77-32fa311ea942
Content: Download and install - Azure Data Studio
Content Source: docs/azure-data-studio/download.md
Product: sql
GitHub Login: @stevestein
Microsoft Alias: sstein

Was able to find the direct link to the .rpm file by running wget -r once on the go.microsoft.com link.  There should be a way of listing direct copy links so that people can download directly.

@PrometheusRising1  - Thanks for opening this issue/suggestion. This issue will be fixed in the documentation, although we cannot yet say when. We have created a new internal tracking number for this work item: 1504716. We are closing this Issue, and are letting the new item track this going forward. You will receive another notice after the internal item if completed. Thank you for submitting this Issue.
Looks like you already found it, but direct links are listed in the Azure Data Studio repo.
Thanks!


[New Cluster] Door Lock

Problem
<what's wrong or missing, please include any applicable:

expected behavior
actual behavior
steps to reproduce
system configuration
screenshots, images, logs, etc.

Proposed Solution
<suggested fix, suggested enhancement>

@franck-apple did https://github.com/project-chip/connectedhomeip/pull/2506 fix this?

@franck-apple Can you answer Boris's question ? I believe he is right in saying that #2506 fix it.


Bug: Transaction confirmation pop up window fails to open for small mobile.

Describe the bug
Transaction confirmation window never opens on a small screen device.
Steps

Use a small device whose window.innerWidth would be less than 420px and/or window.innerHeight would be less than 540px in the browser.
Set up coinbase smart wallet on the device.
Attempt to send a transaction through a web app that would open a pop up window for a transaction confirmation. Observe that nothing happens because of an error opening the pop up window.

Expected behavior
The pop up window opens for transaction confirmation, regardless of device screen size.
Version
latest
Additional info
For this openPopup function in packages/wallet-sdk/src/util/web.ts, for these lines:
  const left = (window.innerWidth - POPUP_WIDTH) / 2 + window.screenX;
  const top = (window.innerHeight - POPUP_HEIGHT) / 2 + window.screenY;

If the device (i.e. the window) has an innerWidth < 420 and/or an innerHeight < 540, as defined at the top of this file, the resulting values for left and/or top will likely be negative (screenX and screenY are typically 0 or close to 0), and the pop up window will fail to open. This prevents support for smaller devices.
Desktop
No response
Smartphone

Device: iPhone13
OS: iOS 17
Browser: safari

Left and top refer to position, not width and height. My mistake. However, may be worth noting there are cases where the position could be negative, as described in the issue, which may be unintended behavior.


Add support for JSChallenge action in Application Gateway Web application Firewall

ARM (Control Plane) API Specification Update Pull Request
PR review workflow diagram
Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

[1] ARM review queue (for merge queues, see [4])
The PRs are processed by time opened, ascending. Your PR may show up on 2nd or later page.
If you addressed Step 1 from the diagram and your PR is not showing up in the queue, ensure the label ARMChangesRequested
is removed from your PR. This should cause the label WaitForARMFeedback to be added.
[2] https://aka.ms/azsdk/support/specreview-channel
[3] List of SDK breaking changes approvers in pinned Teams announcement
[4] public repo merge queue, private repo merge queue (for ARM review queue, [1])
If you need further help with anything, see Getting help section below.
Purpose of this PR
What's the purpose of this PR? Check all that apply. This is mandatory!

[ ] New API version. (Such PR should have been generated with OpenAPI Hub, per this wiki doc.)
[x] Update existing version for a new feature. (This is applicable only when you are revising a private preview API version.)
[ ] Update existing version to fix swagger quality issues in S360.
[ ] Other, please clarify:

edit this with your clarification

Due diligence checklist
To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:

[x] I confirm this PR is modifying Azure Resource Manager (ARM) related specifications, and not data plane related specifications.
[x] I have reviewed following Resource Provider guidelines, including
ARM resource provider contract and
REST guidelines (estimated time: 4 hours).
I understand this is required before I can proceed to Step 2, "ARM Review", for this PR.

Breaking changes review (Step 1)

If the automation determines you have breaking changes, i.e. Step 1 from the diagram applies to you,
you must follow the breaking changes process.
IMPORTANT This applies even if:

The tool fails while it shouldn't, e.g. due to runtime exception, or incorrect detection of breaking changes.
You believe there is no need for you to request breaking change approval, for any reason.
Such claims must be reviewed, and the process is the same.

ARM API changes review (Step 2)

If this PR is in purview of ARM review then automation will add the ARMReview label.
If you want to force ARM review, add the label yourself.
Proceed according to the diagram at the top of this comment.

Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.
Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
Swagger-Suppression-Process
to get approval.
Getting help

For general PR approval workflow, see the diagram at the top of this comment.
For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure
and https://aka.ms/ci-fix.
If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.

@ssevugan21 Please get your PR reviewed and merged by ARM team by NRP code freeze date 10/12. NRP won't help review any swagger PRs, ARM does

/pr RequestMerge

@ssevugan21 please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

@microsoft-github-policy-service agree company="Microsoft"

Contributor License Agreement

@microsoft-github-policy-service agree [company="{your company}"]

@ssevugan21 please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

@microsoft-github-policy-service agree company="Microsoft"

Contributor License Agreement

@microsoft-github-policy-service agree [company="Microsoft"]

@ssevugan21 the command you issued was incorrect. Please try again.
Examples are:
@microsoft-github-policy-service agree

and
@microsoft-github-policy-service agree company="your company"

@microsoft-github-policy-service agree company="Microsoft"

@ssevugan21 please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

@microsoft-github-policy-service agree company="Microsoft"

Contributor License Agreement

@microsoft-github-policy-service agree [company="Microsoft"]

@microsoft-github-policy-service agree company="Microsoft"

/azp run

@Joanna-Yang-Art @rkmanda i see Swagger LintDiff check failing with errors not related to my PR commits.


pug template not working properly

Version
3.9.2
Reproduction link
https://github.com/Deadalusmask/issue-pug-template
Environment info

Environment Info:

  System:
    OS: Linux 4.4 Ubuntu 18.04.1 LTS (Bionic Beaver)
    CPU: (4) x64 Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
  Binaries:
    Node: 10.15.0 - /usr/bin/node
    Yarn: 1.16.0 - /usr/bin/yarn
    npm: 6.10.0 - ~/.npm-global/bin/npm
  Browsers:
    Chrome: Not Found
    Firefox: Not Found
  npmPackages:
    @vue/babel-helper-vue-jsx-merge-props:  1.0.0
    @vue/babel-plugin-transform-vue-jsx:  1.0.0
    @vue/babel-preset-app:  3.9.2
    @vue/babel-preset-jsx:  1.0.0
    @vue/babel-sugar-functional-vue:  1.0.0
    @vue/babel-sugar-inject-h:  1.0.0
    @vue/babel-sugar-v-model:  1.0.0
    @vue/babel-sugar-v-on:  1.0.0
    @vue/cli-overlay:  3.9.0
    @vue/cli-plugin-babel: ^3.9.0 => 3.9.2
    @vue/cli-service: ^3.9.0 => 3.9.2
    @vue/cli-shared-utils:  3.9.0
    @vue/component-compiler-utils:  2.6.0 (3.0.0)
    @vue/preload-webpack-plugin:  1.1.0
    @vue/web-component-wrapper:  1.2.0
    vue: ^2.6.10 => 2.6.10
    vue-hot-reload-api:  2.3.3
    vue-loader:  15.7.1
    vue-style-loader:  4.1.2
    vue-template-compiler: ^2.6.10 => 2.6.10
    vue-template-es2015-compiler:  1.9.1
  npmGlobalPackages:
    @vue/cli: Not Found

Steps to reproduce
install the repo
run yarn serve
open it in browser
What is expected?
use transpiled pug template
What is actually happening?
use default template with export default [transpiled pug html string] in

Its says compiled successfully in console.
this is the innerHtml of that document.body
<export>default "<meta charset="\"utf-8\""><title>Repreduce Pug Issue</title><link href="/index.js" rel="preload" as="script">

"</export>

viewed #2601  and #3646 , but seems it's not related

Just remove your custom webpack config.
We have it preconfigured already.
Your custom config plus ours made the same rule applied twice. That's why it failed.


Gloop?

Gloop now has several patterns which would be nice to have autocomplete for without having to define macros to represent them.

Added in 713261d260d21c9f342e103587a5051b5e801f20.


AWS deployment of this app is accessing my localhost:3000/topic when saving a topic

Description

Type: Bug or Question

Bug
Expected Behavior
When accessing the server I expect it to call the aws version...
Actual Behavior
It's actually just calling my localhost for the endpoint.

Question
How to?
How do I solve this issue?

You have to update apiEndpoint in app.js. Might be worth including in the documentation.


Octan Network

Project Abstract

Please replace these instructions with a brief description of your project summarising key points (1-2 paragraphs).
If your application is a follow-up to a previous grant, please mention which one in the first line of the abstract and include a link to previous pull requests if applicable.

Grant level

[ ] Level 1:  Up to $10,000, 2 approvals
[x] Level 2:  Up to $30,000, 3 approvals
[ ] Level 3:  Unlimited, 5 approvals (for >$100k: Web3 Foundation Council approval)

Application Checklist

[x] The application template has been copied and aptly renamed (project_name.md).
[x] I have read the application guidelines.
[x] Payment details have been provided (bank details via email or Polkadot (USDC & USDT) or BTC address in the application).
[x] The software delivered for this grant will be released under an open-source license specified in the application.
[x] The initial PR contains only one commit (squash and force-push if needed).
[x] The grant will only be announced once the first milestone has been accepted (see the announcement guidelines).
[ ] I prefer the discussion of this application to take place in a private Element/Matrix channel. My username is: @_______:matrix.org (change the homeserver if you use a different one)

CLA Assistant Lite bot: 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. Please submit the following text as a separate comment:
I have read and hereby sign the Contributor License Agreement.
1 out of 2 committers have signed the CLA.✅ @quangtran8588❌ @paven86You can retrigger this bot by commenting recheck in this Pull Request

I have read and hereby sign the Contributor License Agreement.

I have read and hereby sign the Contributor License Agreement.

Thanks for your interest in our grants program. I have some initial feedback/questions: The default deliverables of the template must be added to each milestone. Furthermore, we don't support the deployment via our grants program. Also, how is your indexing solution different from already existing open-source tools? See: https://wiki.polkadot.network/docs/build-open-source

Thanks for your feedbacks. We have updated the default deliverables. Additionally, Octan Network doesn't re-invent indexing techniques. Octan's KEY INNOVATIONs are onchain Reputation Ranking System (powered by adaptive PageRank algorithms, our 5-year research) to compute reputation scores from onchain TXNs, and a Soulbound standard to carry reputation scores onchain. These are to support Web3 entities building their onchain trustworthiness without compromising privacy. Moreover, Octan Reputation Ranking & Analytics extract social insights, social inter-relationships of onchain entities, measure individual persona, user behaviors & segmentation, which are all useful for Web3 marketing profession (e.g. qualifying & classifying users), for market research (e.g. investigating various categories, importance & impact of dapps within Web3 ecosystems, etc). Therefore, Octan Network is distinguished from all other onchain data analytics firms (e.g. Nansen, Chainalysis, Dune Analytics, Arkham, Web3Go) who only focus on tracing & tracking cash-flows, analyzing financial indicators & features.

I have read and hereby sign the Contributor License Agreement.

I have read and hereby sign the Contributor License Agreement.