Performance improvements, code cleanup, and bug fix to V-HACD

// Changes for version 3.0 : April 17, 2020 : John W. Ratcliff<EMAIL_ADDRESS>//
// * Some code cleanup was done, removed obsolete OpenCL, OpenMP and SIMD code.
// * The purpose of this change was to make the code more vanilla C++ and to make it easier to maintain
// * Removed the obsolete tetrahedral 'mode' as the library currently only supports voxels.
// * Again this was to make the code base smaller and easier to maintain.
// *
// * A new optional virtual interface called 'IUserProfiler' was provided.
// * This allows the user to provide an optional profiling callback interface to assist in
// * diagnosing performance issues. This change was made by engineers at Epic for the UE4 integration.
// * Some profiling macros were also declared in support of this feature.
// *
// * Another new optional virtual interface called 'IUserTaskRunner' was provided.
// * This interface is used to run logical 'tasks' in a background thread. If none is provided
// * than a default implementation using std::thread will be executed.
// * This change was made by engineers at Epic to speed up the voxelization step.
// *
// * Some performance optimizations were made to the code. They include the following:
// *
// * During the voxelization step there was code to rotate every point in the source mesh.
// * However this feature was not actually being used, so it was removed to improve performance
// * during the voxelization stage.
// *
// * Some of the voxelization steps were made to run in parallel to improve overall performance as well.
// * This change was made by engineers at Epic.
// *
// * During the voxelization phase, the original implementation would attempt to voxelize the input mesh
// * multiple times until it hit some target number of voxels. This step was not needed, as the number of
// * of desired voxels implies a certain voxel resolution so instead it just does the voxelization step
// * in a single pass at the specified detail level.
// *
// * The final performance optimization was to unroll the ComputeACD step so it can be run in parallel.
// * A new helper class was introduced called 'SimpleJobSystem' which can run tasks across multiple threads.
// * When computing the ACD (approximate convex decomposition) the code iterates through all input sub-meshes
// * and computes the concavity, the optimal splitting plane and, optionally, splits the input mesh by a plane.
// * This can happen hundreds of even thousands of times. The original code did this in a for loop using a single
// * thread. The change made was so that this operation could be done in parallel. Since this operation is extremely
// * memory bound, it onl provides about a 2x performance improvement, but that is still twice as fast at least.
// * After the voxelization optimizations the ComputeACD step remained slowest part of V-HACD.
// *
// * A new feature was introduced called the 'FillMode'. By default V-HACD performs a flood fill operation after
// * the voxelization step to determine which voxels lie 'inside' the source mesh surface and which are 'outside'.
// * Most of the time this flood fill approach works fine. However, if the source mesh has a hole anywhere in it
// * it can result in no voxels being marked as 'inside the surface'.  When this happens the convex decomposition
// * will treat the mesh as being 'hollow' inside. A good example of this failure case is the Stanford bunny which
// * has a hole on the bottom.
// *
// * A new FillMode was introduced called 'RAYCAST_FILL' which can correct for this. If the FillMode is set to
// * 'RAYCAST_FILL' then rather than doing a flood fill, instead each voxel will be categorized by performing
// * a raycast in the six cardinal directions. If 3 or more of those raycasts hit the 'inside' of the source mesh
// * then that voxel will be marked as being 'inside'. This can correct for the edge case when the source mesh has
// * a voxel sized hole in it.
// *
// * Finally, there are some cases where you might actually want the source mesh to be treated as being a 'hollow'
// * object.  For certain types of simulations this is actually desirable. So, there is a new FillMode called
// * 'SURFACE_ONLY' which will not mark any voxel as being 'inside' which will treat any source mesh as being 'hollow'
// * inside and any deep recursion of the convex decomposition will converge towards the 'skin' of the object.
// * For example, here is a video clip showing a simulation of a torus, without any holes, as a hollow object.
// *     https://www.youtube.com/watch?v=CIOoWN4CDb4
// *
// * Finally an important bug fix is included with this update.
// * When using V-HACD by default, it works by converting the source mesh into a voxel grid and the performing
// * the convex decomposition relative to that voxelization. This has a number of benefits, both performance as
// * well as it greatly simplifies the plane splitting step vs. trying to perform a full CSG operation on an
// * arbitrary triangle mesh.
// *
// * However, one downside of doing this is that the resulting convex hulls suffer a loss of precision. Each
// * point in the final convex hull does not rest on the original source mesh but, instead, is based on the voxel
// * resolution. If you use extremely high voxel resolutions then this loss of precision is less of an issue but
// * using high voxel resolutions can make V-HACD run much more slowly.  If you use a low voxel resolution V-HACD
// * can run much more quickly but the output convex hull points will not be coplanar to the original source mesh
// * and can result in poor simulation behavior.
// *
// * To fix this a new option was introduced called 'm_projectHullVertices'. If th is bool is set to true then
// * as a final step each point on the convex hull output will be 'projected' onto the source mesh. In the previous
// * release of V-HACD this 'projection' was done by performing a raycast operation. However, it was discovered that
// * on some types of meshes this operation could fail producing completely bad convex hulls.
// *
// * This bug was fixed by switching to a 'closest point' algorithm instead of a raycast. A new code snippet was
// * introduced called 'aabbtree', originally written by Miles Macklin, that can compute the closest point on a triangle
// * mesh, within a radius, in a highly efficient manner.

Khaled,
This branch does the following:

Integrates some optimizations made by engineers at Epic
Exposes a new virtual interface and macros for profiling
Exposes a new virtual interface for task management
Adds a simple class to run logical 'jobs' on multiple threads
Adds a class to do high speed AABB raycasting and closest point detection
Removes obsolete code for the purposes of keeping the project easier to maintain; removed OpenCL, OpenMP, and SIMD references
Removes tetrahedral support as it was not being actively used
Added a new 'FillMode' option, described in the comments
Includes an optimization from Epic to run some of the voxelization work in parallel
Includes an optimization to run the ComputeACD operation in parallel
Removed the code to rotate points from the source mesh during the voxelization step as it was not being used and had performance considerations
Fixed a bug in the 'project hull vertices' option which could fail on some edge cases, now uses a 'nearest point' classification instead of a raycast

Thanks,
John

Hi, @jratcliff63367
i have test the highperformance branch but it seems generator more  convexhull than the master branch.
And some of the result just generator two much pices of small convex hull than the master.
would you like to provide a more detailed information for your branch.

It's probably just because of changes to the default values. You can directly control how many hulls are output. Send me an example mesh file and the settings you are using.


Passphrase support

How should I enter passphrase when sending notification?

Just if anyone else needs to enter passphrase for the cert file every time they send a notification, you can add
APNS.pass = 'passphrase'
to your APNS initializer or config. :heart:

I Think this should be in the readme file as well.


Foreign key nvarchar(450) is generated as nvarchar(max) in down script

A string foreign key which was previously nvarchar(450) will be generated as nvarchar(max) in down script.
Steps to reproduce
Let's assume you have the following foreign key in some entity:
        public ApplicationUser AuthoredByUser { get; set; }
        public string AuthoredByUserId { get; set; }

When you script the Up migration for this entity, it will generate a column with the following definition:
CREATE TABLE [Posts] (
    [...]
    [AuthoredByUserId] nvarchar(450) NULL,
    [...]
);

Now remove this key from the entity, and generate a new migration. The Up migration will successfully drop the column. However, the Down migration will try to re-add the column as
ALTER TABLE [Posts] ADD [ApprovedByUserId] nvarchar(max) NULL;

This will also have the effect that the next SQL statement will fail on creating an index for a nvarchar(max) column.
CREATE INDEX [IX_Posts_ApprovedByUserId] ON [Posts] ([ApprovedByUserId]);

System.Data.SqlClient.SqlException (0x80131904): Column 'ApprovedByUserId' in table 'Posts' is of a type that is invalid for use as a key column in an index.

Further technical details
EF Core version: 2.0.5
Database Provider: Microsoft.EntityFrameworkCore.SqlServer
Operating system: Windows 10
IDE: Visual Studio 2017 15.5.7

Similar to #10186

Duplicate of #10186

Never mind; not a dupe.

@bricelam Installed 2.0.2-rtm-10011 and retried scripting the down migration. Still get nvarchar(max) as datatype.

You may need to regenerate the last two migrations. The Down is based on the model stored in the previous migration

The easiest fix is just to manually update the Down to be correct. The bug shouldn't happen again in future migrations


Proper pattern for Redux actions and promises

Hi there,
Before Redux, using the standard Flux implementation, I would fire actions that would dispatch results using the Dispatcher and updating the stores.
I would do something like this:
myAsyncAction().then(() => this.setState({updateLocalComponentState: true}));

function myAsyncAction() {
   return new Promise((resolve, reject) => {
      request().then((response) => {
         Dispatcher.dispatch({type: SOME_ACTION, value: response.value});
         resolve(response);
      });
   });
}

If i needed to update my local component state for whatever reason, it was very easy to still dispatch my action but be able to run some code whenever the action was finished.
Now with Redux, I understand that you could have a reducer state that represents the current status of the action (IN_PROGRESS, FINISHED, etc) and then have your component listen to change in props and update the local component state, I understand this pattern and it makes sense.
However, I still wanted to raise the question, a lot of times I find myself wishing I could do the same with redux without having to keep the state of the call in the Redux state, and simply say hey action whenever you are finished, run this function.
I know I can pass a callback to the action that can be ran once the action is finished, but I like promises better.
After discussing with some team members, I decided to post here to get some guidance to see if I was just lazy or if it was indeed "okay" or "still good practice" to use something like redux-promise (https://github.com/acdlite/redux-promise) and have the best of both worlds.
Does all that make sense? Thanks!

You can use redux-promise and dispatch promises directly.
You can also use redux-thunk in a similar fashion to what you previously did:
function myAsyncAction() {
   return dispatch => new Promise((resolve, reject) => {
      request().then((response) => {
         dispatch({type: SOME_ACTION, value: response.value});
         resolve(response);
      });
   });
}

dispatch(myAsyncAction()).then(() => this.setState({updateLocalComponentState: true}));

@gaearon nice, makes sense. We are already using redux-thunk so it works out great. Thanks Dan.


HRM not working

This version is working perfectly but HRM is not working. Any change in the files don't update in the browser.  Console showing HRM connected  but not updating any change
I've also set export $ASPNETCORE_ENVIRONMENT=Development

Try it without the dollar before aspnetcore ? Let us know !

nah, It isn't working for me. I'm trying in Ubuntu 16.04. Don't know about others .

Thanks for your reply. It was due to less number of System inotify limits. This comment in Angular-cli sloved the issue.
HRM is now working completely fine.


build(mobile-app): bump to v1.1.0+5

Mobile App Release v1.1.0 (2021-08-16)
Bug Fixes

119: swap flutter_icons with fluttericon (#129) (f43c8c7)
Added the on tap to disappear keyboard (#55) (df5c7dc)
i18n: remove old i18n configuration and add new workflow for intl (#124) (0bce311)
ib: Add SVG Support to images. (#114) (fc39311)
ib: bug fixes and misc improvements (9fc1fb5)
ib: builders deadlock between setState and FutureBuilder (#117) (7144fd8)
ib: Inline HTML tags and support for sub, sup tags (#116) (cbc9eb9)
ib: introduce vertical padding in headings (#127) (b9398d5)
ib: scroll to local links within page (#125) (30b5bd1)
Timing spelling typo corrected (#90) (7a1d006)

Features

Add fastlane configuration (3af8dd8)
cd: enable deployments via GitHub releases (#128) (e33e140)
commitlint: enable commit linting via git hooks (940c6ba)
ib: Add support for Pop Quizzes. (#115) (e8186b6)
ib: initial beta support for Mathjax forumulas (4511344)
ib: scroll to index links in table of contents (#123) (9e9287f)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
3910

Relevant Lines:
5280

💛  - Coveralls


Franz goes to tray but does not appear on the taskbar after that

I've had an issue specifically on my work PC that I've not been able to resolve. On my home PC which runs the exact same version of Windows (10, Pro) I don't have the problem at all. Often when I close Franz it just moves to the system tray instead of fully closing. I then later suddenly receive a notification from someone sending me a message. I check the tray and voila, there's Franz.
I can close it from there if I want, but something weird happens when I decide to select "Show Franz". The window appears, but it does not appear on the taskbar. I'm not one for Alt+Tabbing into windows so I click the applications on my taskbar, but Franz is not there (just in the tray) which is very frustrating. I have to close Franz and restart it to get it to appear on the taskbar again.

did you restart your work PC since you installed Franz? Or did you just put it in hybernate or sleep mode when you stopped working?
Since, I had a similar issue after Franz install, which was resolved after a PC restart.

No I never put it in sleep or hibernation mode, I have it disabled that it goes into either after a while. At around 9:00 am I turn it on and work on it until I turn it off around 5:00 pm.
Verstuurd vanaf mijn iPhone
Op 15 mei 2017 om 16:45 heeft mark-franz <notifications<EMAIL_ADDRESS>het volgende geschreven:
did you restart your work PC since you installed Franz? Or did you just put it in hybernate or sleep mode when you stopped working?
Since, I had a similar issue after Franz install, which was resolved after a PC restart.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/meetfranz/plugins/issues/268#issuecomment-301497272, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AFZIfjnguSJlHlT3A464_1d2lBWvdx14ks5r6GTwgaJpZM4NVfXP.

I'm saving a similar issue and I have had Franz installed for 3 months roughly... I'm also on Windows 10 and I have already rebooted my PC several times since the installation of Franz

I am also having the same issue. I have Franz pinned in my taskbar (Win 10), After starting Franz it shows up properly in the taskbar, but after it is closed (sent to tray) and summoned again from the tray it wont show up in the taskbar. It wont be visible in Alt+Tab too so the only way to restore to window is by clicking on tray icon. Restarting the app brings me to the beginning of the post. Restarting the system does not help.

I have the same issue but I'm using Linux Mint 18.1

I have the same issue. Windows 10 Pro. Franz 4.0.4 Build 40
Have to quit Franz & restart

sometimes it works, but most of the time it doesn't
For this and other reasons, I uninstalled it again.

Whenever I have this problem, I simply click Shift+LeftMouseButton and Maximize the window.
Works everytime

Thanks @pedrodcsousa. Work for me as well
+1

pedrodcsousa THANK YOU!

@pedrodcsousa THANK YOU!

I fixed it by restoring the window.

Open franz
Right mouse click on the title bar
Click restore

I'm also having this problem on Linux (even thou 4.0.4 change log states that it was fixed).
I don't think it will get fixed thou... seems like the project is dead. No commits or update on their blog for a year. :-/


on ECDHBase key getter behaviour

I've no idea whether this is proper, please comment.
By adding ECPoint.__bool__ similar to MPI, instances' bool value can be checked equivalent to availability.
Thus the bool value of @property(_*_key) should agree with _has_* methods.
When comparing keys from instances, although zero equals to zero, accessing uninitialized key might not be expected behaviour, so a KeyError is raised similar to accessing a key not in a dict.
This change is not applied to @property(shared_secret) because of potential API break. Should it be applied?

The first patch is perfectly fine.
For the second, I am not sure. To me, returning a null object is perfectly acceptable instead of raising an exception. This is what happens in ECPoint.{x,y,z} for example and raising in ECDHBase would not be consistent. Furthermore I generally do not think that raising an exception in a property is a good idea because properties should be trivial accessors.
In code, I find
if alice._private_key:
    ...

more natural than
try:
    k = alice._private_key
except:
    ...

On a side note, KeyError is a LookupError. ValueError may be a better choice here.
Does the second patch solve a concrete problem in your application?

I am not sure either. Feel free to cherry pick only the first commit.
It is absolutely correct to return a null object from C. The idea here is trying to behave a pythonic way. As if ECDHBase is a dict, keys are values in the dict.
Instead of check key in dict before access, it is preferred to lookup and catch exception in python.
A ValueError may indicate the key is invalid or in some error state. A LookupError indicate this value is missing, it mighy be uninitialized or unassigned.
Or as a property, should an AttributeError be raised instead?
Since this is only checked in property getter, it would not affect property setter if it is implemented in future.
This would introduce problem when assign to ECPoint's property by accessing property setter of an
uninitialized public_key property of ECDHBase instance. But currently there is no setter for ECPoint's properties, and probably we will never try to manipulate x, y, and z value of an ECPoint individually from python. Currently, the only way to instantiate ECPoint from python is either a zero point or a copy of an existing point. From python's perspective of view, ECPoint is immutable and similar to tuple. If ECPoint is immutable, then ECPoint.{x,y,z} would be readonly, there would be no need to access the property setter of a zero point.
I knew this is doubtable, it is totally ok to reject this pr.

Thank you for your answer. I think I understand what problem you are trying to solve. Indeed, ECPoint is immutable. I am trying to make as many classes as I can immutable in this library. Sometimes, it is to enforce the relevant PEPs (as in x509 for example) some other times because it is safer and easier to implement.
As a result, instantiating ECPoint from python is useless. You are correct. To me, ECPoint is something you may obtain from the library to represent a key and no more. I do not think any method in python-mbedtls takes an ECPoint.
To be honest, it is not really something I would like to change for now because I am not sure where this should lead.
Also, implementing ECPoint._tuple() and friends (__contains__(), __getitem__(), __len__(), etc.) now seems to me like a mistake. I may remove this behavior in a coming release. I guess I wanted to have the class behave like a namedtuple("ECPoint", "x y z") but this is confusing and not very useful. ECPoint._tuple() is even missing z.
To conclude: I will take your first patch and leave the second.

Merged the first commit in ff478c4.

Very well.
Do I need to close this pr manually?

It is closed on my side.

Just for your information, I have added ECPoint.__init__(x, y, z) and tests to ECPoint in 37cf1d31336709edb6f5ec93bbfee7a345b45e24. Maybe that is useful to you.


Problem with .Net 4.7.2

I was using IntrospectionClient and TokenClient from the IdentityModel v3.6.1. But when I upgraded the project from .Net 4.7.1 to 4.7.2 I got build errors:

"Error	CS0012	The type 'HttpMessageHandler' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Net.Http, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

The project is already referencing "System.Net.Http" v4.3.3 via NuGet.
Possibly it has got to do with this issue: https://github.com/Microsoft/dotnet/blob/master/releases/net472/KnownIssues/613745%20-%20Single-name%20references%20are%20removed%20by%20the%20SDK%20when%20targeting%204.7.2.md
But the workaround suggested here was not working for me.

Try
https://www.nuget.org/packages/IdentityModel/3.7.0-preview1

Ok, this worked! Thanks.


docs: fix readme title typos

Description
just fix this typos "monorpo" to "monorepo" in readme.md

Thanks for the contribution, but I've removed this file already


Clarification of the setting name

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the Bug
Once installed, VS Code "EXTENSIONS" tab/navigator/list (Ctrl+Shift+X on Linux) > Explorer Exclude > Settings wheel > Extension Settings > Edit in settings.json points to "explorerExclude.backup".

Also, it creates such an "explorerExclude.backup" entry (with an empty object as value) when I use VS Code > EXPLORER > "Add to Hidden Items ...".
However,

"Add to Hidden Items ..." doesn't add anything to "explorerExclude.backup". Instead, it adds to "files.exclude".
Editing "files.exclude" has an effect (while "explorerExclude.backup" does not).

I see that "explorerExclude.backup" is still being set (with some delay) - probably as backup only.
Please

fix VS Code "EXTENSIONS" tab/navigator/list (Ctrl+Shift+X on Linux) > Explorer Exclude > Settings wheel > Extension Settings > Edit in settings.json to point to files.exclude instead.
make population of explorerExclude.backup optional, and add a setting that would enable it. Or get rid of explorerExclude.backup completely.

Extension Output
Not needed.
Steps To Reproduce
As per above.
Expected Behavior
No response
Screenshots
No response
Environment
- OS: Current Manjaro Linux x64, the newest 5.19 kernel
- current VS Code (released/ported to Manjaro today)
- Version: 1.73.0
- Commit: 8fa188b2b301d36553cbc9ce1b0a146ccb93351f
- Date: 2022-11-01T15:44:09.336Z
- Electron: 19.0.17
- Chromium: 102.0.5005.167
- Node.js: 16.14.2
- V8: <IP_ADDRESS>-electron.0
- OS: Linux x64 5.19.17-1-MANJARO
- Sandboxed: No

Additional Context
No response

@peter-kehl no, this is not a setting intended for the user to edit, that setting is exactly what the name suggests, it is a backup.  This gets used when you need to temporarily disable all your exclude settings.  This extension just makes a copy of the exclude settings in the state they were in when you clicked to disabled the exclude settings.
The reason it's stored in the same settings.json file is so when you are ready to turn the exclude settings back on, it will restore the previous state that was backed up.  If you go tinkering with the backup settings it will only be an issue if you had the exclude settings disabled and went back to re-enable them.


General Issue: derive_var_obs_number  treat missing values NA a little different with SAS

Background Information
dplyr::arrange, NA are: always sorted to the end for local data, even when wrapped with dplyr::desc().
SAS PROC SORT: a missing value for a numeric variable is smaller than all numbers. Missing values of character variables are smaller than any printable character value.
Definition of Done
I just want to confirm that it is necessary  to consider the missing values when sorting data, as the missing values do not seem so important.
Please see the following example.
library(dplyr, warn.conflicts = FALSE)
#> Warning: package 'dplyr' was built under R version 4.2.3
library(admiral)
#> Warning: package 'admiral' was built under R version 4.2.3
vs <- tribble(
  ~STUDYID, ~DOMAIN,      ~USUBJID, ~VSTESTCD, ~VISITNUM, ~VSTPTNUM,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         3,        NA,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         3,       815,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         3,       816,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         4,       815,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         4,       816
)

vs %>%
  derive_var_obs_number(
    by_vars = exprs(USUBJID, VSTESTCD),
    order = exprs(VISITNUM, VSTPTNUM)
  )
#> # A tibble: 5 × 7
#>   STUDYID DOMAIN USUBJID     VSTESTCD VISITNUM VSTPTNUM  ASEQ
#>   <chr>   <chr>  <chr>       <chr>       <dbl>    <dbl> <int>
#> 1 PILOT01 VS     01-703-1182 DIABP           3      815     1
#> 2 PILOT01 VS     01-703-1182 DIABP           3      816     2
#> 3 PILOT01 VS     01-703-1182 DIABP           3       NA     3
#> 4 PILOT01 VS     01-703-1182 DIABP           4      815     4
#> 5 PILOT01 VS     01-703-1182 DIABP           4      816     5

Created on 2023-11-28 with reprex v2.0.2
Reproduct example from SAS
data vs;
    infile datalines dsd truncover;
    input STUDYID:$7. DOMAIN:$2. USUBJID:$11. VSTESTCD:$5. VISITNUM:32. VSTPTNUM:32.;
    label ;
datalines;
"PILOT01","VS","01-703-1182","DIABP",3,
"PILOT01","VS","01-703-1182","DIABP",3,815
"PILOT01","VS","01-703-1182","DIABP",3,816
"PILOT01","VS","01-703-1182","DIABP",4,815
"PILOT01","VS","01-703-1182","DIABP",4,816
;;;;
run;

proc sort data=vs out=vs_2;
    by USUBJID VSTESTCD VISITNUM VSTPTNUM;
run;

data vs_3;
    set vs_2;
    by USUBJID VSTESTCD VISITNUM VSTPTNUM;
    if first.VSTESTCD then ASEQ = 0;
    ASEQ + 1;
run;

HI @ynsec37, thanks for reaching out with this question.
As you have noted, the issue at heart here is that dplyr::arrange() and proc sort behave differently when sorting NA values. Though SAS places them at the start, the documentation for arrange() states: "Unlike base sorting with sort(), NA are always sorted to the end for local data, even when wrapped with desc()." Since {admiral} depends on {dplyr}, this is why you are observing this behaviour in derive_var_obs_number().
My opinion: ADaM standards should be language agnostic, and as long as the supporting documentation is clear, it is natural that we can observe small differences in implementation across programming languages. Indeed we have already seen (and made peace with) a similar case with rounding, where R rounds to the nearest even whereas SAS rounds up. In the ADaM IG, we find that: "Sequence number given to ensure uniqueness of subject records within an ADaM dataset. As long as values are unique within a subject within the dataset, any valid number can be used for ASEQ. ASEQ uniquely indexes records within a subject within an ADaM dataset." So, essentially, sequence variables essentially serve to give unique keys to the data when all other keys are matching, thus the placement of NA variables in this case shouldn't make a noticeable difference.
At the end of the day, I think this is an acceptable difference between the R and SAS approach.

Hi @ynsec37 , the order argument of the admiral functions accept expressions. This allows you to specify explicitly how NA should be treated. For example, the following call sorts NA to the start (like SAS).
> vs %>%
+     derive_var_obs_number(
+         by_vars = exprs(USUBJID, VSTESTCD),
+         order = exprs(VISITNUM, if_else(is.na(VSTPTNUM), -Inf, VSTPTNUM))
+     )
# A tibble: 5 × 7
  STUDYID DOMAIN USUBJID     VSTESTCD VISITNUM VSTPTNUM  ASEQ
  <chr>   <chr>  <chr>       <chr>       <dbl>    <dbl> <int>
1 PILOT01 VS     01-703-1182 DIABP           3       NA     1
2 PILOT01 VS     01-703-1182 DIABP           3      815     2
3 PILOT01 VS     01-703-1182 DIABP           3      816     3
4 PILOT01 VS     01-703-1182 DIABP           4      815     4
5 PILOT01 VS     01-703-1182 DIABP           4      816     5

I would always specify explicitly the handling of NAs for order variables where NAs are expected.

Shall we add this in as an example for this function?

Hi @manciniedoardo  and @bundfussr, thanks much for your reply

order argument of the admiral functions accepts expressions

For ascending sort, we can add a !is.NA() to make the NA smallest first, it can work both for numeric and character
library(dplyr, warn.conflicts = FALSE)
#> Warning: package 'dplyr' was built under R version 4.2.3

library(admiral)
#> Warning: package 'admiral' was built under R version 4.2.3

vs <- tribble(
  ~STUDYID, ~DOMAIN,      ~USUBJID, ~VSTESTCD, ~VISITNUM, ~VSTPTNUM,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         3,        NA,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         3,       815,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         3,       816,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         4,       815,
  "PILOT01",    "VS", "01-703-1182",   "DIABP",         4,       816
)

# For ascending order, add extra `!is.na()` make the NA smallest
vs %>% dplyr::group_by(USUBJID, VSTESTCD) %>%
  dplyr::arrange(VISITNUM, !is.na(VSTPTNUM), VSTPTNUM)
#> # A tibble: 5 × 6
#> # Groups:   USUBJID, VSTESTCD [1]
#>   STUDYID DOMAIN USUBJID     VSTESTCD VISITNUM VSTPTNUM
#>   <chr>   <chr>  <chr>       <chr>       <dbl>    <dbl>
#> 1 PILOT01 VS     01-703-1182 DIABP           3       NA
#> 2 PILOT01 VS     01-703-1182 DIABP           3      815
#> 3 PILOT01 VS     01-703-1182 DIABP           3      816
#> 4 PILOT01 VS     01-703-1182 DIABP           4      815
#> 5 PILOT01 VS     01-703-1182 DIABP           4      816

vs %>%
  derive_var_obs_number(
    by_vars = exprs(USUBJID, VSTESTCD),
    order = exprs(VISITNUM, !is.na(VSTPTNUM), VSTPTNUM)
  )
#> # A tibble: 5 × 7
#>   STUDYID DOMAIN USUBJID     VSTESTCD VISITNUM VSTPTNUM  ASEQ
#>   <chr>   <chr>  <chr>       <chr>       <dbl>    <dbl> <int>
#> 1 PILOT01 VS     01-703-1182 DIABP           3       NA     1
#> 2 PILOT01 VS     01-703-1182 DIABP           3      815     2
#> 3 PILOT01 VS     01-703-1182 DIABP           3      816     3
#> 4 PILOT01 VS     01-703-1182 DIABP           4      815     4
#> 5 PILOT01 VS     01-703-1182 DIABP           4      816     5

Created on 2023-11-29 with reprex v2.0.2

Shall we add this in as an example for this function?

Yes, it is a good idea to provide this information. However, it does not affect derive_var_obs_number() only. It affects all functions with an order argument.
What about adding a section to the "Generic Derivations" vignette and then add a link referring to the section to the description of the order argument?

I like the addition to the Generic vignette.
This also sounds like a great blog post for the pharmaverse blog!!

OK, I'll add it to the vignette (I need to add some new functions anyway.).


spec: Implement Changelog File

https://paimon.apache.org/docs/master/concepts/specification/
After #11 have been merged, I will start the Changelog task.

We don't need to have changelog file now, it is for streaming read.

We don't need to have changelog file now, it is for streaming read.

Thanks! I'll remove this issue from the 0.1 tracking list. It makes sense to further narrow the scope of 0.1 to create a usable version quickly.

We don't need to have changelog file now, it is for streaming read.

Okay, I will start it when the streaming read is ready.


notejot: 1.6.0 -> 1.6.3

Semi-automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/lainsce/notejot/releases.
meta.description for notejot is: "Stupidly-simple sticky notes applet"
meta.homepage for notejot is: "https://github.com/lainsce/notejot"
Updates performed:

Version update

Release on GitHub
Compare changes on GitHub

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 1.6.3 with grep in /nix/store/c6wqwny2wvwk1avpzc99qy9azv3vmvah-notejot-1.6.3

directory tree listing: https://gist.github.com/617afc978f6f170febbd75cf2f964ae8

du listing: https://gist.github.com/5a54f1d11fbc62f826979d1fe77fa952

Rebuild report (if merged into master) (click to expand)

3 total rebuild path(s)
1 package rebuild(s)
1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
0 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
notejot

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/c6wqwny2wvwk1avpzc99qy9azv3vmvah-notejot-1.6.3 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/how-can-i-be-more-useful-at-reviewing-pull-requests/6731/3


[zh] Update cron-jobs and delete repeat context

Update cron-jobs and delete repeat context

Thx.
/lgtm
/approve


Fancyzone does not keep the settings after monitor goes to sleep

Microsoft PowerToys version
0.62
Running as admin

[X] Yes

Area(s) with issue?
FancyZones
Steps to reproduce
The setup:
1 x Samsung 49CRG90x Monitor
1x Dell 2412M Monitor
Computer: NUC12 with 64GB ram and 2TB disk space.
Windows 10 Brand new install with all the updates run on the system. - Windows 10 Build 19044-2006

Create a new custom Fancy zone.
Drag the windows accordingly (I.E on main monitor it is split in 4 sections, from Left to right
Attached Tidal to the Far Left, Browser in the middle and on the right hand side Telegram and WhatsApp.
Set the computer so the monitor goes to sleep

✔ Expected Behaviour
When monitor comes back from sleep all I would expect all the windows to be in the right place.
❌ Actual Behaviour
All windows get moved back to their original location and sizes. Everything is lost.
Other Software
No response

Just an observation. I have not done any changes but now i left the computer for say 10 min and the monitor was turned off. When i got back all windows was in its place. I think its after longer period away where this issue does occur.

For some reason the issue is now gone! After the last "windows update" and reeboot this works.


Hac Phi not on news page

Hac Phi https://wiki.haskell.org/Hac_Phi is not in the events list on the News page.

updated the events page on the wiki -- should filter through shortly.


Update autorest

We haven't taken a new version of autorest since July 30th, 2020. The latest was published on July 11th, 2022. Even that, though, doesn't include a fix I'd like: https://github.com/Azure/autorest/pull/4603. Ideally, we'd need a new autorest version that includes that.

/cc @jsquire @pallavit

@timotheeguerin said they're publishing new versions to NPM now, which is on 3.9.2 at this time. I think we need to update how we pull autorest from what we're doing in eng/CodeGeneration.targets.
/cc @JoshLove-msft

//cc: @m-nash

but I timeboxed this effort since I can work around the issue.

How do you workaround this? Do you point to a specific autogen version in your SDK?

I ended up just using the basic where clause e.g. where: $.paths.*.*. It's hacky, but it has/does work.


Proposal | Mintbase Studio by Metasky

Project Abstract
MintBase Studio, developed by Metasky, presents a comprehensive platform empowering creators, brands, and projects to curate, engage, and monetize their NFTs and communities. It focuses on three core pillars: Curation, Engagement, and Monetization.
For which grant level are you applying?

[ ] Level 1:  Up to $10,000, 2 approvals
[x] Level 2:  Up to $50,000, 3 approvals and one pitch to Mintbase Council
[ ] Level 3:  Unlimited, 5 approvals and mutliple pitches to Mintbase Council

Application Checklist

[x] The application template has been copied, renamed ( project_name.md) and updated.
[x] NEAR address for the payment of the milestones is provided inside the application.
[x] I have read and acknowledged the terms and conditions.
[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.

How Did You Hear About our grants program?

[ ] Mintbase Website
[x] Mintbase Community (Twitter, Discord, Telegram etc.)
[ ] Hackathon
[x] Personal Recommendation
[ ] Investor/VC
[ ] Online Search
[ ] Other: _______

Congratulations on getting your proposal approved.


SideMenuItem: Set FontSize to a bindable value

The default FontSize of the Header is too small on WindowsPad, and it cannot be customized.
Default FontSize(14):

FontSize(20):

Hi,
We have no specific plan on supporting touch devices, it is out of our scope. However, I have nothing against merging PR that add customization where it should be, just be sure that the default appareance stay still.
Can you modify your PR to let the FontSize 14 by default ?

Hi,
We have no specific plan on supporting touch devices, it is out of our scope. However, I have nothing against merging PR that add customization where it should be, just be sure that the default appareance stay still.
Can you modify your PR to let the FontSize 14 by default ?

https://github.com/kikipoulet/SukiUI/pull/365 the new one


How can I get 'single_init.pt' in /nodec_experiments/kuramoto/train.ipynb

Even in the 'gen_parameters.py' , there is no way to gain 'single_init.pt'

Hi @kaieye. you are correct this seems to be missing from the repo code.
For reproduce-ability, you may find the experimental data on two possible sources if I remember right:

https://ieee-dataport.org/documents/neural-ordinary-differential-equation-control-dynamics-graphs

https://codeocean.com/explore/02eb3fc8-312e-426a-aa5b-159a82f9d99b?query=IEEE Transactions on Control of Network Systems&page=1&filter=all&refine=journal

For training and testing on a new batch of samples, which is expected to produce effective neural network controllers as well, you may generate the initial state, namely x0, yourself. E.g. if the initial states of your dynamics are sampled from a uniform distribution with support $[0,1]$, namely $x_0 \in [0,1]^N, x_0^{(i)} \sim \mathcal{U}(0, 1)$ for $N$ nodes, you may try x0 = torch.rand([batch_size, n_nodes]).
In general, please keep in mind that different hyper-parameters may be required to efficiently learn control for different distributions/samples of initial states, so you may be required to change hyper-parameters to get the desired results.
Hope the above help and please let me know if everything worked fine.

I added a series of related codes and some path errors in the code, you can check my pr. If it works, I'm glad to make a contribution


Support non-integer keys

Hi.
I was trying this library with a model using UUID on sqlite, and it worked fine, except that it doesn't escape UUID strings all the time.
I had to change this to make it work (for sqlite at least):
def pk(of):
-    return of.pk if hasattr(of, "pk") else of
+    return str(of.pk).replace("-", "") if hasattr(of, "pk") else of

Perhaps other backends will require more, testing is needed.

Bump.  I'm investigating tree solutions and this one seems great but I need UUID pks.  @matthiask or @SafaAlfulaij  is this feasible with  with the small tweak?  Thanks!

@hairypalm I think it shouldn't be that hard. The primary key instance is available at model._meta.pk and we should be able to use get_db_prep_value to do the work.
The whole "use .hex or not" is handled perfectly well in there already:
https://github.com/django/django/blob/f38458fe56bf8850da72a924bd2e8ff59c6adf06/django/db/models/fields/__init__.py#L2395-L2403


When the pod is rolled and updated, the http request is interrupted for nearly 1s

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
No response
Expected Behavior
No response
Steps To Reproduce
No response
Kong Ingress Controller version
No response
Kubernetes version
No response
Anything else?
No response

When adding upstream, is it possible to judge the status of the pod?

@chenzhougit, please fill in the expected & actual behavior when reporting issues in our repo.
Based on my understanding of the problem you're reporting, I think that the /status/ready endpoint (https://github.com/Kong/charts/pull/844) in Kong might give you the behavior you're expecting.


Add ObservedGeneration to the sub Resources

This patch does two main things:

it adds observedGeneration to the sub custom resources
it proposes to bump the observedGeneration at the beginning of the reconciliation loop (see the knative conversation)
it checks, at the top level, if the ObservedGeneration matches with the metadata.generation assigned to the subCR(s)

Depends-on: https://github.com/openstack-k8s-operators/lib-common/pull/488

/test glance-operator-build-deploy-kuttl

/test glance-operator-build-deploy-kuttl


C# dotnet capacity to build VS Code Extensions

I'd like the capacity to build VS Code extensions using dotnet C# technologies under the forwards-looking "C# Everywhere" paradigm that is driving client-to-cloud technologies forwards in an ever-accellerating rate.
I recently looked at an official Visual Studio Code team  YouTube video here and although I was dissapointed to have missed the livestream, I was even further dissapointed that my request for information was deleted from the video comments.
I had made a comment asking about this, and as has been answered by the VS Code team in another issue raised on this GitHub account about why there isn't a VS Code forum, the answer from the VS Code team was that they prefer this Github isues section instead. Hence I'm raising the same issue and presenting the same comment that was deleted. The comments made were genuine, and presented without malice.
To give further context, this view as expressed here and in the attachment is a genuine view of a career C# client-to-cloud engineer, I've been on teams producing over 40 apps in the app stores, and I am presently full-time on a Maui app and we are looking for VS Code functionality to support the dotnet tools that we have made and are continuing to make for the open source libraries that we are releasing.
However because we are C# client-to-cloud engineers without any Javascript or Typescript experience - and because of the "C# Everywhere" initiative that has driven such projects as WASM and Maui forwards, we are unlikely to acquire Javascript or Typescript skills - so it seems our hands are currently tied with the prospect of VS Code not being a useful tool for the ilk of we until we can create extensions using dotnet and C#.
I'd love some positive feedback about the prospect of VS Code Extensions being capable of being created using dotnet and C# technologies, with VS Code Technical Evangellists presenting their tutorials about VS Code Extensions being created using dotnet and C# without any reference to non-dotnet frameowrks such as npm, etc, as the ilk of these are unfamiliar to us.
To me it's all about "dotnet tools for dotnet engineers" and I'd like to see acceptance of this need and a prospective timeline.
Naturally, if it is not possible, for any reason, I'd also like to understand why as this would have to make us rethink our dotnet everywhere policy.

@HarrisonOfTheNorth thanks for your feedback. I have closed this issue as this is not something we plan to work on in the next 6 months, however let me answer your question.
The VS Code extensions have to run in a Node context, thus the core of each extension can be written in Typescript / Javascript. However, each extension can choose it's dependencies and libraries as it wants. And those libraries can be written in C#, it is up to the extension author.
Also Typescript is getting more and more features and almost everything you can do in C# can be done in Typescript. We hope you give it a try.

Thanks, but I don't intend getting involved in Typescript - vis-a-vis my expressed usecase - "dotnet tools for dotnet engineers"
This has made me look at Kotlin multiplatform, however, they seem commited to an end-to-end solution in the one language.


TX with tokens sent to multiple addresses

https://cardanoscan.io/transaction/0a416d362c9e1884292c4160254a7a8afc4b3921c783114d3d7574a8087ba3da
⤴ Sent Funds and Tokens 06.12.2023, 04:03 PM
🔹Fee 0.25 ₳ (0.11 $)
🔹Sent -14.00 ₳ (-6.27 $)
💬Dexhunter Trade
🔸Empowa 887.42
In reality 3,025.279531 EMP were sent

could be related to #43

It was not related to #43, it was actually a wrong implementation when the same asset is sent from multiple addresses to a single receiver (see Dexhunter scenario)


add DiscreteTimeSum subclass of pybamm.Symbol

Description
This would add a new unary operator in a pybamm expression tree that would represent a discrete sum over time. This would be a discrete version of the already existing pybamm.ExplicitTimeIntegral class.
Motivation
This would give model developers and users the ability to add "sum of squares" type variables to a pybamm model that would calculate the difference between, for example, a solution variable and a user-provided dataset. This would be useful for implementing parameter inference using pybamm
Possible Implementation
Similar to the ExplicitTimeIntegral, this would only be evaluated in the Solution class (see _update_variable function). I would propose that the sum is done over the list of time points in the solution (rather than have a separate list of points in the expression tree node), that way a user can specify the time-points via t_interp.
I'm a bit unsure how to allow users to provide their data to the expression. Perhaps they would wrap it in an Interpolant:
data = pybamm.Interpolant(data_t, data_y, pybamm.t)
model.variable["data_comparison"] = pybamm.DiscreteTimeSum((model.variable["Voltage"] - data)**2)

Additional context
see https://github.com/pybop-team/PyBOP/issues/513

I'm a bit unsure how to allow users to provide their data to the expression. Perhaps they would wrap it in an Interpolant:

@martinjrobins I think we should be able to extract all the information we need from the Interpolant class, but it could confuse a user as to why they need to create an interpolant from their raw data. Maybe we can make a class derived from Interpolant called DiscreteTimeData or something to make this more explicit,
class DiscreteTimeData(pybamm.Interpolant):
    def __init__(self, t, y, children=pybamm.t, ...):
        super().__init__(t, y, children, ...)

and we can keep essentially the same API,
data = pybamm.DiscreteTimeData(data_t, data_y)
model.variable["data_comparison"] = pybamm.DiscreteTimeSum((model.variable["Voltage"] - data)**2)

Yea, agree that the DiscreteTimeData subclass is the way to go. How do we want to handle inconsistancies between the time points in the solution, and the time points in the data provided? Ideally the user will make sure they match, for example:
# ... model setup
data = pybamm.DiscreteTimeData(data_t, data_y)
model.variable["data_comparison"] = pybamm.DiscreteTimeSum((model.variable["Voltage"] - data)**2)
# .... solver setup
sol = solver.solve(t_eval=[data_t[0], data_t[-1]], t_interp=data_t)
print("sum of squares is:", sol["data_comparison"])

My first thought is that we should raise an error on the last line if the timepoints in sol don't match data_t. We could alternativly interpolate the solution onto the data points, this might make sense (i.e. not introduce to much additional error) if we use the new hermite interpolation

this might make sense (i.e. not introduce to much additional error) if we use the new hermite interpolation

I think this is the correct way forward, with the solve time taken from the last t value in the data. t_interp is set so that it matches data_t, ensuring the prediction points are aligned with the measured (data_t). This would also allow different t values for the multiple fitting interpolants in the future, one would just need to take the largest final value from data_t and interpolate the points on the corresponding variable.

We should make sure only one interpolant is allowed inside here.

I think we either need to ensure data is constructed with matching numpy lengths or interpolate them onto the right variable. In the below,data_y is a dictionary of numpy arrays with keys that match the fitting variables. In PyBOP, the data object (pybop.Dataset) contains both data_t and data_y to achieve this. This could be implemented within pybamm.DiscreteTimeData; however, it might be blurring the lines between PyBaMM and PyBOP a bit more than needed.
# ... model setup
dataset = pybamm.DiscreteTimeData(data) # Accepts a dictionary of fitting variables and returns a dict of interpolants for each
model.variable["data_comparison"] = pybamm.DiscreteTimeSum((model.variable["Voltage [V]"] - dataset["Voltage [V]")**2)
# .... solver setup
sol = solver.solve(t_eval=[data_t[0], data_t[-1]], t_interp=data_t)
print("sum of squares is:", sol["data_comparison"])

after chatting with @BradyPlanden, we came to the following conclusion:

We will interpolate from the solution to the datapoints given (this will handle the case where different output variables could have different data timepoints)
pybamm.DiscreteTimeData will take a single dataset, if you want multiple datasets you could do this like so:

I understand the perspective of optimizing an objective function, but I think we shouldn't be too fancy with this. At a minimum, the only specialization we need for a DiscreteTimeSum vs. a traditional time-series observable is to sum over all the points in time before returning the value. On Brady's point, I think anything more on the PyBaMM side is blurring the lines between PyBaMM as a simulation tool vs. an optimization tool. In my mind, a tool like PyBOP is the appropriate place to implement these optimization-specific niceties.

How do we want to handle inconsistancies between the time points in the solution, and the time points in the data provided?

data_t is not necessarily equal to sol.t because the simulation will stop at all the t_interp + t_eval points which do not always overlap with data_t. We can just interpolate the DiscreteTimeSum observable onto the data_t points and then sum them up.

I'm not sure we need this constraint, given the above. I think either ensuring that data is constructed with matching numpy lengths or interpolating them onto the right variable will allow for multiple interpolants, do you see any issues with that?

Yeah we can do that. This is not an issue with the dataframe example, but for general interpolants, we just need to make sure that they have identical data_t values within one objective function.


🐛 OneLineInstallScript installs future3?

I wanted to clean install my phoniebox. I think the installscript installs the new version, not 2.4. Could that be?
It looks not as my old version and it don't work correctly.

If you followed the instructions here https://github.com/MiczFlor/RPi-Jukebox-RFID#quick-install-version-2 it should be 2.4.
What‘s the output of cat ~/RPi-Jukebox-RFID/settings/version?

Thanks, had to be at the wront install tutorial. Took your link and now it works. Sorry :-(


⚠ Bofrost.at has degraded performance

In 82c47d6, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1533 ms

Resolved: Bofrost.at performance has improved in fe7a431.


feat(io): buffer pool IO traits

Split from #276, and renamed the names.

I'm not sure if this is the best design. Can you open a tracking issue and layout some of the design decisions?

I modified this PR to return owned buffer.


General - user cases, searching and API formatting

USER CASES:
1 - The user wants a random poem
When they click on the “Go find me a poem” button they are presented with a random poem.
[As we’ve discussed we might limit by default the number of lines that the random poem can be]
Corresponding url query:
https://poetrydb.org/random/1/author,title,lines
2- The user wants a poem from a specific author
When they input an author name and click on the search button they are presented with a poem from this author.
[Because an author will usually have several poems we need a way to select a specific poem. It can be a random poem from the list to make it simplier]
Corresponding url query:
input: Shakespeare
https://poetrydb.org/author,random/Shakespeare;1
3- The user searches for a poem by its title
When they input a poem title (or part of it) and click on the search button they are presented with this title (or part of it).
[Caveat: There might be poems with the same name?]
Corresponding url query:
input: Heaven and Earth
https://poetrydb.org/title/Heaven and Earth/
=> Because of the way the url query needs to be constructed I think we need a way to tell whether the user inputs the name of the author or the title of the poem. It could be done either with:
2 different search boxes
1 box with 2 check boxes on the side enabling the user to select either “author” or “title” or both?
Shahid- I agree - perhaps something like this would allow the options
https://bbbootstrap.com/snippets/bootstrap-property-advanced-search-form-collapse-45610458 - a searchbar with a dropdown menu
4- The user searches for a poem by its title and the author name
When they input the poem title and the author name  and click on the search button they are presented with the corresponding poem.
input 1: George Gordon
input 2: Heaven and Earth
https://poetrydb.org/author,title/George Gordon;Heaven and Earth
Corresponding url query:
See comment and link at query 3 - i think this might address both issues
5- The user searches for a line/word from the poem - Optional?
See comment and link at query 3 - i think this might address both issues

Todo - specific title with a specific writer
BUT writer, or title or line is fine for now


CB-17407 Support postgres 11 on embedded database

If the DistroXV1Request->externalDatabase has the databaseEngineVersion set to 11 and availabilityType1 set to NONEorON_ROOT_VOLUME`,
then use postgresql 11 version.

this will stop the postgresql-10 service and disable it
set the postgres related alternatives like pgsql to the 11 version binary
relink postgresql service to postgresql-11
relink /var/lib/pgsql/data to /var/lib/pgsql/11/data

None of these happens if remote database is configured.
See detailed description in the commit message.

image part: https://github.com/hortonworks/cloudbreak-images/pull/705


Fix broken automation tests

@nkramer44 All builds are passing. LMK if you're good for me to merge this one.


fix aes-xts bug on aarch64 big-endian env.

fix #20796
Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

@tom-cosgrove-arm Could you please review this?

Cause we have so many modes such as ecb, cbc, ctr, xts, etc. modes to use the key schedule, If we want to re-structure the code, maybe it's better to change in the key schedule(init step) to store the round keys by byte, and then change the keys load in this file relatively.
Anyway, I just learned that there were some patches to fix the big-endian issue for other modes, and have no need to waste extra effort to change them back.
I just have tested the PR locally with big-endian and little-endian, all of them passed.
The change itself seems no problem, which change the load instructions to align with the store instructions of the schedule keys.
Currently agree that we can change the endian order in the AES bodys,  just as this PR did.

(reviewed internally and approved by Xiaokang - @xkqian - thanks)

You're welcome.

Merged to master, 3.1, and 3.0 branches. Thank you for your contribution.


feat(scenegraph,lex,parse): Add support for

The  component loads a set of namespaced components from a location declared in its uri field.  Some remote resources can be loaded, but they require signing and packaging -- both of which are out of scope for this project.  Load pkg:/-local component libraries, which rely only on .zip compression for packaging.
fixes #589

Draft PR because I think I forgot to reject non-pkg:/ URIs

This looks great I just have one question: do we need to version the zip package if you're already including the shell script?

I'd rather avoid adding that script to the build pipeline.  It's fastish and pretty simple, but that .zip is going to change so rarely that doesn't feel terribly worth it.  I'm happy to add it in anyway if you disagree though 😄


Connection refused error

Problem description
aivanovalocal@PC99458 Aug2021 % curl -I https://raw.githubusercontent/slacgismo/gridlabd/$(gridlabd --version=git-branch)/gldcore/version.h
ERROR [gridlabd-version] HiPAS GridLAB-D 4.2.27-210927 (develop-fix-recorder-timestep) remote not found
curl: (7) Failed to connect to raw.githubusercontent port 443: Connection refused

Steps to reproduce
See above
Expected behavior
No refused connection
System information

GridLAB-D version: aivanovalocal@PC99458 Aug2021 % gridlabd --version=all

HiPAS GridLAB-D 4.2.27-210927 (develop_fix_recorder_timestep) Darwin
ERROR [gridlabd-version] HiPAS GridLAB-D 4.2.27-210927 (develop-fix-recorder-timestep) remote not found

Operating system: Darwin PC99458 19.6.0 Darwin Kernel Version 19.6.0: Tue Aug 24 20:28:00 PDT 2021; root:xnu-6153.141.40~1/RELEASE_X86_64 x86_64

Attachments

This no longer happens as of HiPAS GridLAB-D 4.2.29-211225 (develop) Darwin.


How do I train a very lightweight object detector?

For me, I want to train a very lightweight/fast object detection model for recognizing a single solid object e.g. a play station joystick. I tried transfer learning on tensorflow object detection API with SSDLiteMobileNetV2 but it's not fast enough because it was made to be big so that it can predict multiple classes. But I want to predict only one class which is a rigid object that won't deform or change shape at all.
That's why I'm thinking of defining MobileNetV2 to be a bit smaller and training SSD from scratch (as I think it's not possible to reuse the weights from the bigger model) so that I could achieve faster inference on a mobile phone. And maybe later I will convert the model to TF Lite.
For example, I want my model to run fast like this paper: https://arxiv.org/abs/1907.05047
So I want to know your opinion about how I could achieve my goal.
@pierluigiferrari

It seems that SSD7 is lightweight enough, I can just configure it to fit my needs. The only concern left is to test speed on mobile phone.


Selected value not working when adding value property in option

When using this form the example
<select id="lunchBegins" class="selectpicker" data-live-search="true" data-live-search-style="begins" title="Please select a lunch ...">
  <option>Hot Dog, Fries and a Soda</option>
  <option>Burger, Shake and a Smile</option>
  <option>Sugar, Spice and all things nice</option>
  <option>Baby Back Ribs</option>
  <option>A really really long option made to illustrate an issue with the live search in an inline form</option>
</select>

and setting the default value using $('#lunchBegins').selectpicker('val', 'Baby Back Ribs'); it works fine.
But when adding value property in the option tag the function is not working.
<select id="lunchBegins" class="selectpicker" data-live-search="true" data-live-search-style="begins" title="Please select a lunch ...">
  <option value="1">Hot Dog, Fries and a Soda</option>
  <option value="2">Burger, Shake and a Smile</option>
  <option value="3">Sugar, Spice and all things nice</option>
  <option value="4">Baby Back Ribs</option>
  <option value="5">A really really long option made to illustrate an issue with the live search in an inline form</option>
</select>

That's because the option has a different value. If no value is specified, the value of the option is assumed to be equal to its text. If you want to select Baby Back Ribs using the code in your second example, you'll need to use:
$('#lunchBegins').selectpicker('val', '4');


Add hal for ESP32

I implemented HAL for the ESP32 microcontroller.
It's confirmed that main_concurrent.c code works correctly in both cases of MRBC_NO_TIMER value.
Also, I created a application template for running mruby/c on ESP32.

https://github.com/mruby-esp32/mrubyc-esp32

Regards,

ping @kaz0505

Is this proposal unnecessary?

Thank you for applying mruby/c to ESP32.
Firstly, I'd like to merge your https://github.com/pandax381/mrubyc into mruby/c.

Thank you for your reply!


Provide matched num_rows when array's columns is empty (#4442)

Provide right num_rows when array's columns is empty.
What type of PR is this：

[x] bug
[ ] feature
[ ] enhancement
[ ] others

Which issues of this PR fixes ：

Fixes ArrayExpr to avoid crash.
Problem Summary(Required) ：

run starrocks_clang-format


Add MeanShiftBlur

Codecov Report

Merging #466 into master will increase coverage by 0.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #466      +/-   ##
==========================================
+ Coverage   95.94%   95.96%   +0.01%
==========================================
  Files          34       34
  Lines       11245    11283      +38
==========================================
+ Hits        10789    10827      +38
  Misses        456      456


Fix Case Typo - 'THe' to 'The'

Typo, fixing the case for 'THe' to 'The'

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


New Website UI

📑 Description

New website UI using daisyui
Christmas Special

Demo 👉🏻 https://codinasion-git-web-beta-codinasion.vercel.app

Feedback or suggestions will be helpful

Hi @harshraj8843,
Thanks for your request! I've taken a look at the current design of the Codinasion website, and while it's functional, I've noticed a few areas where improvements could enhance its overall appeal.
Aesthetic Issues:

The design lacks visual appeal, and there are inconsistencies in the layout that could be addressed.

Christmas Theme Proposal:

Given the proximity to Christmas, I'd like to propose a festive Christmas theme to add a touch of holiday spirit. This could involve incorporating seasonal colours, subtle snow effects, and thematic graphics.

Timing Constraints:

Considering the upcoming holiday in just 2 days and my current schedule, extensive improvements might not be feasible. However, I'm happy to assist post-Christmas if a more thorough revamp is desired.

Feel free to review the suggestions, and let me know if you'd like to proceed with the Christmas theme or discuss further improvements in the new year. Thanks!
Best,
@0ME9A

Thanks, @0ME9A, for your review. I agree with all the points you made. However, we won't be able to fix it right away due to time constraints. We'll work on it after the New Year. 🎉 🤗

Hey folks, @harshraj8843 & @0ME9A,
So, personally, I didn't feel the need to comment on what was done; there were no thoughts in my mind that would be to enhance or improve anything, so I refrained from commenting.
Currently, from what I see, it was a great job, especially considering that we are one or two days away from Christmas and its celebratory festivities.
Speaking about the design coming up for next year, I'll be here to help with its programming if needed.
P.S.: As I mentioned in a previous comment, I'm not very good at drawing and/or imagining design.
Cheers,
Yuri.

Thanks @isyuricunha @0ME9A 🤗


rdFMCS Bond Flag "Compare Order" only matches single and aromatic bonds (not double bonds)

Configuration:

RDKit Version: 2019.03.4
Operating system: Centos7

Description:
The issue concerns the treatment of bonds in the MCS calculation ( rdFMCS module). As described in the documentation, it is possible to set a flag bondCompare=rdFMCS.BondCompare.CompareOrder, which allows the matching of single and aromatic bonds, but double bonds are not matched. Is there an application where this setting is particularly useful? I would consider it more useful to have a flag that allows the matching of single and double bonds on aromatic bonds in rings. This would still be different than the flag rdFMCS.BondCompare.CompareAny, since single and double bonds should not match (or at least not outside rings).
See below a simple example. In the second MCS, due to the presence of double bonds, the resulting MCS is only a chain of C atoms with query bonds (:,-). I would like to obtain a ring with query bonds (:,-) and (:,=).
Example:
from rdkit import Chem
from rdkit.Chem import rdFMCS
mol1=Chem.MolFromSmiles('C1CCCCC1')
mol2=Chem.MolFromSmiles('c1ccccc1')
mol3=Chem.MolFromSmiles('C1=CC=CCC1')
MCS12=rdFMCS.FindMCS([mol1,mol2],bondCompare=rdFMCS.BondCompare.CompareOrder).smartsString
print(MCS12)
MCS23=rdFMCS.FindMCS([mol2,mol3],bondCompare=rdFMCS.BondCompare.CompareOrder).smartsString
print(MCS23)

I'm reluctant to change the existing behavior, but adding a new option which allows aromatic bonds to match single and double bonds in rings seems like a reasonable thing to do.

@greglandrum I'd very much like to add the possibility to use custom compare functions from Python (currently that can only be done in C++). If you like it I'll add an enhancement for this one too and take both in charge.

@ptosco : If we had the custom compare parameters working in a sensible way from Python, then we wouldn't even need this additional option. I would be extremely happy if you wanted to take this on. :-)

@greglandrum It should be doable - I know it will be a fun one, that's why I am volunteering to take it on :-) And yes, that would avoid the additional option.

This was added in #3023


CI updates

Various small CI changes:

Remove duplicate entry from dependabot.yml
Don't run CI for push and pull requests
Enable caching of poetry packages

Closes #597.
Tagging @cc-a in case you're interested!

Hmm... currently the cache seems to not be being used, even though I rebased this branch to test it: poetry cache is not found
I've found a workaround: https://github.com/actions/setup-python/issues/374
Maybe that'll do the trick...

That seemed to do it :-D

Though seemingly the cache isn't being used for the Windows runner... Oh well.


How to specify syntax higlighting into .md file

I'm wondering how can I add highlighting properties inside the .md file, right now I'm only able to specify the language but none of the other properties.
I want to do something like this:
'''java, highlightStyle: idea
package com.yyy.zzz;
...
'''
Thanks.

You can set a highlight style per slideshow and override it per slide, but not per code block:
https://jsfiddle.net/7dx8fuxb/1/


Add support for Imba

Fixes #1844
Changes proposed:

[X] Add
[ ] Delete
[ ] Fix
[ ] Prepare

I added the V2 provided at the issue but had no idea how to add it to the iconsManifest.

@KingDarBoja are you using Illustrator? I updated the wiki with the settings you should have to use when exporting for screens.

@KingDarBoja are you using Illustrator? I updated the wiki with the settings you should have to use when exporting for screens.

I do but to be honest, my Illustrator version doesn't have that option since mine is CC (2013) while this feature was introduced in later version (2015).
What I usually do is place the svg on the correct viewbox and edit the xml to minify the code being generated.


cloudflared: running service as type Loadbalancer errors out due to two different protocols

I am running the service with type Loadbalancer on my local k3s+MetalLB cluster.
However, after enabling the metrics, I cannot upgrade as mixed protocols are not allowed on services of type Loadbalancer.
Error: UPGRADE FAILED: cannot patch "cloudflared" with kind Service: Service "cloudflared" is invalid: spec.ports: Invalid value: []core.ServicePort{core.ServicePort{Name:"dns", Protocol:"UDP", AppProtocol:(*string)(nil), Port:53, TargetPort:intstr.IntOrString{Type:0, IntVal:5053, StrVal:""}, NodePort:30686}, core.ServicePort{Name:"metrics", Protocol:"TCP", AppProtocol:(*string)(nil), Port:49312, TargetPort:intstr.IntOrString{Type:0, IntVal:5053, StrVal:""}, NodePort:0}}: may not contain more than 1 protocol when type is 'LoadBalancer'

I can think of two solutions:

rework to have two separate services (aka two service template files)
do not expose the metrics via the service

Hi @johanneskastl, Thanks again for your input and contributions. Splitting up the service into multiple services sounds good to me. I will have a look at your PR in the evening and give some feedback! 🙂

I hope this bug is now fixed using the latest chart version (v1.2.0). Let me know if you still have issues using a LoadBalancer service!


#2837 Use cache folder for lockfile

Fixes #2837
Use a cache folder directory to store the FileLock.
The issue was that the lock file was in a readonly folder.

The CI fail about the meteor metric is unrelated to this PR


Added handling for ignoring certificates to support T-mobile EOP

Closing stale, assuming no longer required.
Additional cert logging in #191 should help diagnose issues.


[Event Request] Table 7302 - "Bin Content" - OnBeforeCheckIncreaseBinContent

Dear Support,
We would like to add a new event OnBeforeCheckIncreaseBinContent in the following Procedure below, using the IsHandled pattern. This would allow us to further customize the code and migrate existing customizations.
procedure CheckIncreaseBinContent(QtyBase: Decimal; DeductQtyBase: Decimal; DeductCubage: Decimal; DeductWeight: Decimal; PutawayCubage: Decimal; PutawayWeight: Decimal; CalledbyPosting: Boolean; IgnoreError: Boolean): Boolean
var
    WhseActivLine: Record "Warehouse Activity Line";
    WMSMgt: Codeunit "WMS Management";
    QtyAvailToPutAwayBase: Decimal;
    AvailableWeight: Decimal;
    AvailableCubage: Decimal;
    IsHandled: Boolean;  //New  Code --++
begin
    //New  Code --
    IsHandled := false;
    OnBeforeCheckIncreaseBinContent (Rec, QtyBase, DeductQtyBase, DeductCubage, DeductWeight, PutawayCubage, PutawayWeight, CalledbyPosting, IgnoreError, IsHandled);
    if IsHandled then
    exit;
    //New  Code ++
    if "Block Movement" in ["Block Movement"::Inbound, "Block Movement"::All] then
        if not StockProposal then
            FieldError("Block Movement");

    GetLocation("Location Code");
    if "Bin Code" = Location."Adjustment Bin Code" then
        exit;

    if not CheckWhseClass(IgnoreError) then
        exit(false);

    if QtyBase <> 0 then
        if Location."Bin Capacity Policy" in
           [Location."Bin Capacity Policy"::"Allow More Than Max. Capacity",
            Location."Bin Capacity Policy"::"Prohibit More Than Max. Cap."]
        then
            if "Max. Qty." <> 0 then begin
                QtyAvailToPutAwayBase := CalcQtyAvailToPutAway(DeductQtyBase);
                WMSMgt.CheckPutAwayAvailability(
                  "Bin Code", WhseActivLine.FieldCaption("Qty. (Base)"), TableCaption(), QtyBase, QtyAvailToPutAwayBase,
                  (Location."Bin Capacity Policy" =
                   Location."Bin Capacity Policy"::"Prohibit More Than Max. Cap.") and CalledbyPosting);
            end else begin
                GetBin("Location Code", "Bin Code");
                if (Bin."Maximum Cubage" <> 0) or (Bin."Maximum Weight" <> 0) then begin
                    Bin.CalcCubageAndWeight(AvailableCubage, AvailableWeight, CalledbyPosting);
                    if not CalledbyPosting then begin
                        AvailableCubage := AvailableCubage + DeductCubage;
                        AvailableWeight := AvailableWeight + DeductWeight;
                    end;

                    if (Bin."Maximum Cubage" <> 0) and (PutawayCubage > AvailableCubage) then
                        WMSMgt.CheckPutAwayAvailability(
                          "Bin Code", WhseActivLine.FieldCaption(Cubage), Bin.TableCaption(), PutawayCubage, AvailableCubage,
                          (Location."Bin Capacity Policy" =
                           Location."Bin Capacity Policy"::"Prohibit More Than Max. Cap.") and CalledbyPosting);

                    if (Bin."Maximum Weight" <> 0) and (PutawayWeight > AvailableWeight) then
                        WMSMgt.CheckPutAwayAvailability(
                          "Bin Code", WhseActivLine.FieldCaption(Weight), Bin.TableCaption(), PutawayWeight, AvailableWeight,
                          (Location."Bin Capacity Policy" =
                           Location."Bin Capacity Policy"::"Prohibit More Than Max. Cap.") and CalledbyPosting);
                end;
            end;
    exit(true);
end;

Event Signature:
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckIncreaseBinContent(var BinContent: Record "Bin Content"; QtyBase: Decimal; DeductQtyBase: Decimal; DeductCubage: Decimal; DeductWeight: Decimal; PutawayCubage: Decimal; PutawayWeight: Decimal; CalledbyPosting: Boolean; IgnoreError: Boolean; var IsHandled: Boolean)
begin
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 53441.


implement conference status events

https://github.com/ant-media/Ant-Media-Server/issues/5106

The related implemnetations are merged with https://github.com/ant-media/WebRTC-Android-SDK/pull/34


Fix travis build running twice the test suite

Fixes #518

@saveriomiroddi It seems that the new script doesn't import test coverage data properly, so the coverage is now down to 32%.

I should've noticed this before merge. I thought the 32% is about target coverage 😫

It seems that the new script doesn't import test coverage data properly, so the coverage is now down to 32%.

This is very likely caused by the original script having a bug also in the coverage calculation; in this case, it should be because the strategy used:
if [ -f profile.out ]; then
  cat profile.out >> coverage.txt
  rm profile.out
fi

doesn't work as intended, for some reason.

Um.....this should be fixed ASAP. I'm investigating now.

It's hard to work on this area (full testing) without the database setup. I'll work on setting up the database next, and I'll put the instructions on the wiki.

If you already have PG installed and have a proper PG role/user, run these commands and it should work:
psql
create database goby_test;

During the last attempt, things didn't turn out to be trivial overall, I'll need to review it.

I think I found the reason, the command that runs all vm tests doesn’t generate profile result.
We used to use the coverage of the first run and never have the coverage of the second run. And the old first run script doesn’t have the —run flag to filter test cases, so it runs all tests and gives full coverage. But now it only runs those not race detecting tests.
So the solution should be adding the same if statement block that inserting profiling results, just below the second vm test command and above continue (also remember to add coverage flags to second test command)


Does not work on Nexus 5 Android 4.4

Html5Video does not work on Android 4.4
Do you any help from it?
My sample code here: https://github.com/mthuong/Html5VideoSample.git

when the video is playing, i exit the app. Go back to the app and the app crashes, it does not play the video. Any idea?


Feat/rpc server

Pull Request type

Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[ ] Documentation content changes
[ ] Testing
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Does this introduce a breaking change?

[ ] Yes
[ ] No

Other information

Closing as @danilowhk 's PR covers this content


defined function cant be found when called

Ive found another function that has a similar issue to #56 but does not have comments in it.
(defvar mylib (load-library "mylib.so"))
(defvar myfunc (get-function mylib "my_func"))

(myfunc 10)

Function '(myfunc 10)' is not defined

This is because mylib.so does not exist, or the function within it does not exist. These functions are for loading external functions out of a c library, they return undefined when not found, therefore this is working as intended. Now if you are loading a library and the function does exist, then this is a problem.


Drop default config for 'context' including languages and currencies

As soon as we have self site-recognition (mutlisite) in place (https://github.com/SAP/cloud-commerce-spartacus-storefront/issues/1810), we don't need to provide multiple languages and currencies in our default config.
It's a breaking change, becuase some customers could rely on our default config with languages and currencies, so it's a thing for 2.0 .

Let's put it on hold since it's not highest priority for 2.0 and it requires additional work regarding the deployment process and installation schematics (requires new options 'langauge' and 'currency' of custom array comma-delimited format - see https://stackoverflow.com/questions/54410585/pass-collection-into-custom-angular-schematic).

As an alternative to providing language & currency config explicitly in all places (schematics, installation scripts and in stackblitz examples), we could investigate making Spartacus able to work without any preconfigured currency or language on the frontend side and rely only on the default lang & curr configured on the backend side.


Protocol patching feature

There should be a facility to patch protocols in response to bugs.

Versions should be able to have multiple patches applied for a specific schema version, e.g. one for each bug.
Patches should be defined like reducers/migrations, e.g. (protocol) => protocol
We will only run patches that match the schema version, this won't need to patch between versions the way migrations does.
Suggested implementation: Can we use validation errors as an input to drive patches, e.g.
(protocol, errors) => errors.forEach(...)

Use-case we had in mind when discussing this:
Version A of Architect contains a bug that creates invalid protocols. Version B of Architect is released to fix this bug. Schema versions are unaltered between these releases.
When opening a protocol that has been saved in a malformed state by version A, version B will attempt (and fail) to validate the protocol, but will offer to optionally run any available 'patches' against this protocol to try to fix the error.
Knowing that the error existed, we created a patch function in Version B that specifically rectifies the consequences of this bug.
When the user agrees to run the patch, a new version of the protocol file is created with the output.


Whitespace-only changes.

Why just the unit tests?!
Something must be or have been weird here.  But what?
Is there a way to create a travis rule to prevent this?

I'd imagine there's something we can add like with flake8 that enforces
whitespace. Will look into it.
On Mon, Mar 6, 2017 at 12:49 PM, Tom Swirly<EMAIL_ADDRESS>wrote:

Why just the unit tests?!
Something must be or have been weird here. But what?
Is there a way to create a travis rule to prevent this?
You can view, comment on, or merge this pull request online at:
https://github.com/ManiacalLabs/BiblioPixel/pull/129
Commit Summary

Fix line endings.
Fix tiny style error that flake8 complains about now.

File Changes

M .travis.yml
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-0
(20)
M benchmark/matrix_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-1
(476)
M benchmark/strip_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-2
(60)
M bibliopixel/animation/receiver.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-3
(128)
M bibliopixel/drivers/WS2801.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-4
(132)
M bibliopixel/main/demo.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-5
(2)
M bibliopixel/threads/compose_events.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-6
(62)
M test/compose_events_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-7
(44)
M test/driver_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-8
(180)
M test/gamma_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-9
(20)
M test/layout_matrix_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-10
(74)
M test/matrix_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-11
(376)
M test/producer_consumer_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-12
(70)
M test/segment_test.py
https://github.com/ManiacalLabs/BiblioPixel/pull/129/files#diff-13
(24)

Patch Links:

https://github.com/ManiacalLabs/BiblioPixel/pull/129.patch
https://github.com/ManiacalLabs/BiblioPixel/pull/129.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ManiacalLabs/BiblioPixel/pull/129, or mute the thread
https://github.com/notifications/unsubscribe-auth/AA6a6tbozQI0Mk0uoPfzFFInQPFmuLECks5rjEcagaJpZM4MUeVI
.


added support for various border radius in hover effect

Summary:
This PR adapts hoverStyle API to properly use variable corner radius for each corner of the view. This is continuation of #66.
this PR fixes #69
Changelog:
[VISIONS] - added support for various border radius in hover effect
Test Plan:

Experiment with various border radius for each corner

Thanks for opening the PR! I'm sorry that this happened once again with the rebase messing up your git history 😅 Can you open a new one / also rebase it?

Thanks for opening the PR! I'm sorry that this happened once again with the rebase messing up your git history 😅 Can you open a new one / also rebase it?

😅sure will rebase it and open a new one

Raising a new PR


Filters Per Calendar

I would like to be able to have filters on specific calendars. My use cases are the following.
I have a work calendar, but I don't want all of my work events to show up on the family calendar. I only want ones that match specific subjects, such as "Company Holiday" or "OOTO".
The other use case is my wife is a fitness instructor and she has a calendar that shows which instructor is teaching that day. I only want those events to show up if she is the one teaching.
But again, the important part here is I want to filter these events IN, but only from certain calendars. If I set a filter as it is today, ONLY those events would show up, and all the events on my personal calendars wouldn't match those filters and would not show up.

I've added the filter per calendar. It will be included in the 1.8.0 release.


Each time you launch, the application version rolls back

Open Visual Studio Code
Check the version (could be 1.40 always)
Check for update
Update
Restart app
6.The application version again changes to 1.40

This issue was closed because it doesn't meet our standards of a properly filled issue. Please read our guide about Submitting Bugs and Suggestions.


backport seeds to v3.x for consistent directions

Closes: #805
Add seed nodes to v3.x
Backports the automatic addition of seeds to the v3.x series of osmosis so that making archives is easier.

For contributor use:

[ ] Targeted PR against correct branch (see CONTRIBUTING.md)
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
[ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
[ ] Re-reviewed Files changed in the Github PR explorer

Ah sweet, thanks!! I am generally suspicious of nodes abilities to sync from genesis without direct peering to archive nodes or downloading an archive snapshot though. (State synced peers won't help here, as old blocks are out of disk)


Unify Adaptive elements' delete / create / copy behavior in Composer / Form / Visual

Is your feature request related to a problem? Please describe.
In Visual Editor, delete / create / copy behavior are hooked with LU / LG resources heavily;
in Form Editor & composer, if we want a unified behavior, we have to implement the same thing again by copying the code.
Now that we are hooking dialog operations with more external resources such as LG / LU or even QnA, we really need a shared lib to handle the complexity of dialog element changes.

Describe the solution you'd like
Have a shared dialog CRUD lib and hook the CRUD handlers with LG / LU resource management API.
Share the lib across Shell / Visual / Form

Describe alternatives you've considered

Additional context

refs #2273 #2209

Adaptive dialog CRUD operations checklist
Visual Editor

DELETE action via '...' flyout
ADD action via '+' flyout
PASTE action via '+' flyout

Form Editor

UPDATE action
UPDATE trigger
UPDATE dialog

Shell - Toolbar

COPY action selection
CUT action selection
MOVE action selection + ADD target trigger via modal
DELETE action selection

Shell - ProjectTree

ADD trigger via 'New Trigger...' modal
ADD dialog via 'New Dialog...' modal
DELETE trigger via '...' flyout
DELETE dialog via '...' flyout

Resource types X Operations

Dialog x Add | Update | Delete
Trigger x Add | Update | Delete
Action x Add | Update | Delete | Copy | Paste | Move

@lei9444 @a-b-r-o-w-n @cwhitten please review, hope I didn't miss any operation

@yeze322  the list looks good, one question is i think we were talking about if it's possible to be done entirely in Shell, totally transparent to Visual and Form.
Is that option still valid or not working so that we need a shared lib called by different component?

@boydc2014 This item is important but not necessarily to be included in R9.
I tagged it with 'R9' weeks ago, I also prefer to postpone it to R10

@boydc2014 This item is important but not necessarily to be included in R9.
I tagged it with 'R9' weeks ago, I also prefer to postpone it to R10
It's a progressive work.

I think it's OK to do it systematically in R10, the thing is for LG, it's actually ok, even if we don't delete some content, but for LU, it's better to clean up when deleting input and trigger, because anything left in .lu file will affect model's behavior because it would be trained together. I will have Leilei to fix the LU behaviors first. Make sense?

Also, talking about a good solution in R10, I will vote for a transparent layer (like some hooks or listeners of dialog json updates) maybe combine some "virtual property" for LU and LG, if possible. A shared lib is less ideal because it still explicitly managing "side effects", which seems like a leak of abstraction.  What do you think? Is there any operations must be exposed to editor directly?

I think that the extension package would be great for exposing these apis. It's the connection between the shell and the extension and has a clear boundary. It already exposes a useShellApi hook, but it would be nice to have a set of hooks like useDialogApi useActionApi etc that can apply additional layers of performance optimization (memoization, etc). Basically, take the shell's state and actions and divide them by domain and memoize.

I think we can centralize incoming CRUD request at dialog level (dialog driven), looks like

When actions.dialog accept a request
add:
{
     "$kind": "Microsoft.SendActivity",
     "$designer": {
            "id": "tzI6jE"
      },
      "activity": "${bfdactivity-tzI6jE()}"
}

dialog action center would trigger an add lg action, same to delete/copy.

Considerations:

Abstraction: Managing side effects outside editor @boydc2014

motivation -  avoid leak of abstraction
currently - all action operations are managed by Visual Editor
todo - we need improvements to not expose operations to editor directly

Plugin: Extension packages should handle additional logic @a-b-r-o-w-n

motivation - plugin system
currently - LG resource is manually maintained in Composer-core
todo - under the plugin pattern, it's 'ui-plugins/lg' that provide LG controllers (delete/copy/create)

CRUD API: Have a centralized dialog CRUD layer shared by Form/Visual/Shell @zhixzhan @ Benjamin who works on ScreenReader

motivation - unified CRUD experience
currently - actions managed by Visual, triggers & dialogs managed by Shell
todo - Shell should provide basic json operations shared by Shell / Visual / Form, then we can hook after an operation to notify downstream consumer such as

notify Screen Reader to read something
if special resources LG / LU are detected to be changed, trigger extra CRUD APIs

Customized action: Schema-driven copy & paste & delete @yeze322

motivation - handle LG / LU resources in cutomized action automatically
currently - constructors & destructors are manually maintained, if a customized action contains IActivityTemplate, it cannot be handled automatically
todo - copy & paste & delete should be schema driven, hooked after the centralized dialog center, if an action is deleted, a schema checker will try invoking the registered destructor that matches given field type

In R9, we can focus on the Plugin part (it answers Abstraction), figure out what should be provided by a plugin (e.g. LG / LU) to serve the Aspect of dialog operation.

I suggest we think it in AOP but start from a very basic context + callback pattern
const copyAction = (dialog, actionId) => {
  const { copyConstructor } = useContext(ActionApi);
  const action = get(dialog, actionId);
  const copy = copyConstructor(action)
  return copy;
}

const copyConstructor = (action) => {
  // @ before
  // copy

  // @ after
}

Thank @yeze322 for thoughtful considerations, and to @zhixzhan let dialog directs the operations is good.
From a high level, there are two principles i'm thinking it would be great if we can hold
1  Make editors care as less as possible, call APIs as less as possible
In that sense, LG and LU related update should be managed totally as side effect and totally transparent to editors, if possible. I think most cases, like create a node, are possible and also very straightforward, i will address how it can be supported in our hoisted experiences. See later section for "Virtual Property".
From an editor's POV, the editor calls dialog api, create, update, copy, delete, whatever operations on whatever node (trigger or action),  all the related side effects should be happen behind the scene.
Regardless how this is done, eventually the criteria for checking if we meet this principle, is there is no lg\lu related api call on normal operations of those editors.
2 Manage side effects through a clean and decoupled pattern
Then we move to how to manage side effects, I think we need a better pattern for this, instead of manually trigger lg\lu actions again inside dialog api, which is still not scalable.
A pub-sub pattern through an event system seems perfect fine for this case. The flow i can image is

Editor calls dialogApi.createStep(initial payload)
the API is invoked (shellAPI or dialogAPI) dialog content is updated, and a event is generated
there are two subscribers to this event, lg, lu, which will all process this event and do proper processing. screen reader can also be one of them.

we probably can even also include dialog as subscriber, then our api action becomes a pure event generator, our solution is more like a pure event sourcing system.

Virtual Property for hoisted contents
[To be filled]

@boydc2014 Inspired by AOP, we can also consider introducing decorators in TS.
Pub-sub model can solve side effect problems, but in some cases, we need middlewares or @before processor + @after processor.
As an example, when copying a SendActivity, current logic is:
const copySendActivity = (action) => {
  const copy = deepClone(action);
  const lgContent = getLgTemplate(copy.activity);
  copy.activity = lgContent;
  return activity;
}

To decouple LG effects, it could be
@after('replaceLgToContent')
@after('readScreen')
function copySendActivity (action) {
  return deepClone(action);
}

The problem in a stream pattern is, plugins have no reason to subscribe the event, so the complexity is still in Composer. What a plugin can provide may be middlewares before / after COPY | DELETE | ...
const LGPlugin = {
  middlewares: {
    copy: {
      after: (action) => replaceLgToContent(action)
    }
  }
}

const mergePlugins = (plugins) => {
  const beforeCopyHandlers = plugins.map(x => x.middlewares.copy.before);
  const beforeCopyHandlers = plugins.map(x => x.middlewares.copy.after);
  const copy = action => {
    const action' = before(action);
    ActionApi.copy(action');
    return after(action');
  }
}

@boydc2014 yes, my high priority in R9 is just fixing the LU resource behavior, I will use a traditional callback pattern to achieve that

I did't get why a Pub-Sub system won't work in your case of copy LgActions, i would image
function copySendActivity(action: SendAcitvity)
{
  // step 1: clone the json
  const clone = deepClone(action);
  // step 2:  regen id
  clone.designer.id =genid()
  // step 3: copy is just create
  dialogAPI.addNode(clone, path)
}

function addNode(node, path)
{
 emitEvent( {type: NodeAdded, path: path})
}

I think this should work  if we take care of the rest of lg\lu.
Also, i don't know why "it has no reason that plugin subscribe to events", let plugin subsribe to events is something very common, like vscode, all the extensions in vscode has certain capabilities to subscribe to a wide range of events.
If i understand correctly, you are refering to that the editor (also a plugin) itself have to know when certain action is finished, right?
If some thing has to wait until all side effects to be finished, we can emit a DONE event and the sender (who init the action) can get notified.  But i really doubt that, we will have many or even some cases that we have to wait the side effects to be totally done.
Speaking of AOP and decorators, i think it looks neat by looking the code it delivered as samples. But based on my experience on C# and python decorators, i don't think it should heavily used for normal coding tasks. My understanding of AOP, it focus on solving an aspect, which usually each aspect is a totally different view of the product, like you will treat "logging" or "debugging" as an aspect. But hardly we want to treat the pre\after of an action, inside a normal coding path as an "aspect".  I assume probably when you say inspired by AOP, maybe you are only referring the decorator patterns, I will love to give a try see how that can simplify code, if we are only talking about coding patterns.
Speaking of Pub-Sub and event system, i think that's something proven to deliver good decoupling that helps separate the concern.
In the high level of this design issue, at the end the day, the question i would ask is not we use pattern A vs pattern B, is that

Are we making each component more focused

by reducing the number of components that it talks to or
by simplifying the way how a component talk to the other component

https://github.com/microsoft/BotFramework-Composer/pull/2718


EKF: add const reference getters for status flags

This is for convenient usage outside of ECL.
Before
		filter_control_status_u control_status;
		_ekf.get_control_mode(&control_status.value);

		_preflt_checker.setUsingGpsAiding(control_status.flags.gps);

After
		_preflt_checker.setUsingGpsAiding(_ekf.control_status_flags().gps);

I'm a little hesitant to make it easier to expose potentially implementation-specific internals of ECL, but since we seem to be moving in that direction anyways...

That's a fair point, but PX4 ekf2 already crossed that bridge years ago. I'd be happy to discuss walking some of that back.


Add blocking progress mode to Python async

Implements the blocking progress mode (UCX-Py default), which was still not implemented in UCXX.

I think the core of this looks fine, but I am reminded that this epoll_wait issue with asyncio doesn't actually quite work correctly with the code we are using (see discussion here rapidsai/ucx-py#888)

Yes, I remember that. The purpose of this is not necessarily to be used long-term, but rather to have a fallback to original UCX-Py behavior. This will allow us testing as close as possible with what UCX-Py did in the past, and we may later deprecate/remove this if we are confident we have a better option (e.g., thread progress mode).

/merge

Thanks all for the reviews here!


Need to create an upload programmatically

I have a need to occasionally programmatically create uploads to my Upload model. The upload er I have attached uses carrierwave_direct.
Unfortunately I get a "text_file_name is not valid" error when attempting this. I think it has to do with my not using :key.
However, I am not at all clear about how to set the key myself. You have helper methods for Capybara, and unit testing, but those don't work from application code.
I would really think that this is not an edge case.
Please help.

Could you give a sample test case of what you would like to see?

class FilePoller
  include Sidekiq::Worker

  def perform(files)
    files.each do |filename|
        # Create an Upload object off of the local filesystem
        upload = Upload.new(text_file_name: Rails.root.join(filename))
        upload.save!
        # LoaderWorker operates off of an upload object
        LoaderWorker.perform_async(upload.id)
      end
   end

end

That's basically it. There's a parent worker that polls customer SFTP directories and picks up the files to hand off to this worker.

I think I figured it out. I added:
    upload.text_file_name = File.open(Rails.root.join(basename))
    upload.text_file_key = upload.text_file_name.key

and it worked.