Does not log in

I put user name admin and password admin the page seems to flicker but just stays a it is.
Installation process:
(..)TaskBoard$ ./build/build-all
Building...
Installing dependencies
Warning: This development build of composer is over 60 days old. It is recommended to update it by running "./build/composer.phar self-update" to get the latest version.
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file

Installing firebase/php-jwt (1.0.0)
Loading from cache

Installing gabordemooij/redbean (v4.2.1)
Loading from cache

Installing ircmaxell/password-compat (v1.0.4)
Loading from cache

Installing phpmailer/phpmailer (v5.2.14)
Loading from cache

Installing slim/slim (2.6.2)
Loading from cache

phpmailer/phpmailer suggests installing league/oauth2-client (Needed for XOAUTH2 authentication)
phpmailer/phpmailer suggests installing league/oauth2-google (Needed for Gmail XOAUTH2)
slim/slim suggests installing ext-mcrypt (Required for HTTP cookie encryption)
Generating autoload files
Compiling lib JS files...
./minify-libs: line 3: java: command not found
(...)/TaskBoard$ ./build/composer.phar self-update
Updating to version d9885d5b3bd1b28a6d8c679df848540e565ee818.
Downloading: 100%
Use composer self-update --rollback to return to version feefd51565bb8ead38e355b9e501685b5254d0d5
Any

Hi,
Did you make sure that build directory is world writable ?
Have you installed openjdk-8-jre, sqlite and php-5-sqlite ?

I did none of those things. Thank you! Any chance php7-sqlite might work?
Also is it only the build folder that needs to be world writeable, not the children?
Changing to world writable means going from drwxrwxr-x to drwxrwxrwx, yes?
I've just done the openjdk-8-jre, sqlite and php7.0-sqlite3 using $chmod 777 build and $chmod -R build and it still does not log in. So my assumption would be that there is not need to make the build children world writeable. And that I need to uninstall php7 and find a ppa (in case of ubuntu debian) that still does php5 and install php5-sqlite.

^ php*-sqlite3 and similar are strictly tied to the used PHP version, where the lib is installed and whether the PHP program can access that lib. While you could fool/force using older than designed versions you'll likely just break something or cause security issues.

I've just done the openjdk-8-jre, sqlite and php7.0-sqlite3 using $chmod 777 build and $chmod -R build and it still does not log in.

Uh, what paths exactly you did those at ? You're supposed to install from package management, figure out their locations and what is tried to be used from where (the locations are deduced by the structure in the package and the last one by looking at the error log and trying stuff out).

^ php*-sqlite3 and similar are strictly tied to the used PHP version, where the lib is installed and whether the PHP program can access that lib. While you could fool/force using older than designed versions you'll likely just break something or cause security issues.

So, since the package requires php-5-sqlite then should php7.0-sqlite3 be OK? because I am going forward rather than backwards?

Uh, what paths exactly you did those at ? You're supposed to install from package management, figure out their locations and what is tried to be used from where (the locations are deduced by the structure in the package and the last one by looking at the error log and trying stuff out).

Sorry, the paragraph is  all poorly written. I did the following:
$ apt-get install openjdk-8-jre sqlite php7.0-sqlite3
because when I $ apt-get install  php5-sqlite

Package is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

I later did $chmod 777 build and $chmod -R build in order to make the "build" folder world writeable.
This is what I understood with @bbichero comment above and following the introduction instructions above.
Currently I am installing it on my desktop ubuntu 16.04. Though I would like to install it on a server ideally.  I have access to a BSD server, a debian Jessie server and one of those "hire for wordpress or similar apps" server .

^

$ apt-get install openjdk-8-jre sqlite php7.0-sqlite3

I think you made a mistake there by writing sqlite instead of sqlite3 cuz the former is SQLite 2.8.17 and the latter currently SQLite 3.11.0. It's unlikely you'll be using the interior SQLite2 databases on a modern NIX.
I just noticed the output in OP says you lack Java Runtime Environment which the minification system requires, but you can skip the minification by passing a flag (I don't remember which) at the cost of higher network and probly memory usage.

OK just checked and sqlite in my ubuntu machine defaults to sqlite3 so I have sqlite3 installed.
Minification system no longer to seems to be a problem. I only get problem with IE8 users which in this case I can safely ignore:

(~)/TaskBoard$ ./build/build-all

Building...
Installing dependencies
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
Compiling lib JS files...
Minifying lib CSS files...
Compiling app JS files...
controllers/settingsBoardForm.js:241: ERROR - Parse error. IE8 (and below) will parse trailing commas in array and object literals incorrectly. If you are targeting newer versions of JS, set the appropriate language_in option.
preferredFormat: 'hex3',
^
1 error(s), 0 warning(s)

But still can't log in.

You have to remove the coma at line 241 from settingsBoardForm.js
Tell me if you got another error after fix this.

/TaskBoard$ ./build/build-all
Building...
Installing dependencies
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
Compiling lib JS files...
Minifying lib CSS files...
Compiling app JS files...
Minifying app CSS files...
Updating index.html...
Build Complete

Thanks. no errors on build now after removing the comma on (...)/TaskBoard/js/controllers/settingsBoardForm.js
Still does not log in. user admin pass admin, is there any where I should be looking for a log?
the build folder and children are highlighted in green in my terminal meaning they are world writeable. (I am guessing)

I had to enable mod_expires to apache in order for it to work. The api directory has a .htaccess file that references it.

Thank you guys for providing help. I really appreciate it!

You are welcome @kiswa, @amunizp, have you enable mod_expire and mod_rewrite on apache ?

OK, so maybe I should have done this before on my local machine: it obviously has been done on most servers but I forgot that I had an almost fresh install of ubuntu.

sudo apt-get install apache2

sudo apt-get install mysql-server

sudo apt-get install libapache2-mod-php5

Now apache and php are confirmed to be working. Taskboard still not logging in, I found the hidden file (...)/TaskBoard/api/.htaccess file:

ExpiresActive Off
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(.?/)(.)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteRule ^taskboard.db$ %{ENV:BASE}api.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}api.php [QSA,L]

So I changed ExiresActive to On and left RewriteEngine On.

No difference.

@amunizp You actually want that .htaccess to have ExpiresActive Off.
What @bbichero was mentioning is that you need to enable the mods with apache:
a2enmod rewrite
a2enmod expires

OK set ExpiresActive Off.

$ sudo a2enmod rewrite
[sudo] password for amunizp:
Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart
$ service apache2 restart

Same.

$ sudo a2enmod expires
Enabling module expires.
To activate the new configuration, you need to run:
service apache2 restart
$ service apache2 restart

Same. I tried with indexDev.html as well. Same.
Ran

$ ./build/build-all
Building...
Installing dependencies
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
Compiling lib JS files...
Minifying lib CSS files...
Compiling app JS files...
Minifying app CSS files...
Updating index.html...
Build Complete

still no change.

What version of PHP are you running? TaskBoard v0.3.1 doesn't work well with the latest PHP.
PHP 5.6.x or 7.0.x seem to be fine, but 7.1.x tends to break.

Seems Like I am just about in the clear:

$ php --version
PHP 7.0.22-0ubuntu<IP_ADDRESS> (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.22-0ubuntu<IP_ADDRESS>, Copyright (c) 1999-2017, by Zend Technologies

What errors show up when you use F12 dev tools while accessing the site?

I think This is getting some where F12 and Console I guess is what you requested.

XML Parsing Error: not well-formed
Location: file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/css/combined.min.css
Line Number 1, Column 1:  combined.min.css:1:1
XML Parsing Error: not well-formed
Location: file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/css/styles.min.css
Line Number 1, Column 9:  styles.min.css:1:9
XML Parsing Error: not well-formed
Location: file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/partials/login.html
Line Number 3, Column 86:  login.html:3:86
Error: a is null
b.logIn/<@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/js/app.min.js:25:62
fa/x.error/<@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/libs.min.js:501:132
g/<@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/libs.min.js:532:343
$eval@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/libs.min.js:546:246
$digest@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/libs.min.js:543:324
$apply@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/libs.min.js:547:10
g@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/libs.min.js:501:336
u@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/libs.min.js:505:469
f@file:///home/amunizp/Documents/C4AD/jobs/CRE-8/projectManagement/TaskBoard/lib/libs.min.js:507:46
libs.min.js:523:50

But this seems to be errors on the mininimizing CSS thing. It should work without?

So, the problem is that you're accessing TaskBoard from the filesystem. You should be using a web server (Apache is the norm) to access TaskBoard.
Your URL should not start with file:///home/ it should start with http://localhost/ or similar.

I am so embarrassed right now.
So sorry! I'll move the files where they belong.
Can I build in a home user folder and then copy to /...var...www...html ?

^

Can I build in a home user folder and then copy to /...var...www...html ?

Shouldn't matter where. Login as the User the Web Server runs under and perform it there, which is even better than as another User and moving.

OK thank you. Hopefully I can help others if I recollect what I have done up to now (might make it to install guide?). My current objective is to install it in a local server so that people in the network (office) can access the board. It will not be accessible from outside.
Dependencies for ubuntu 16.04
$ sudo apt-get install openjdk-8-jre sqlite3 apache2 mysql-server libapache2-mod-php7.0 curl
$ sudo apt-get update && sudo apt-get upgrade

Modifications currently needed
Rename folder TaskBoard-Master to TaskBoard
remove  comma on line 241 (...)/TaskBoard/js/controllers/settingsBoardForm.js
$ ./build/composer.phar self-update
$ ./build/build-all

move to server.
 $ sudo cp -r TaskBoard/ /var/www/html/
Point browser to http://localhost/TaskBoard/ or http://machinename.local/TaskBoard
to see if you see the login page.
Next check is to see if your local network find out your IP address:
$ ifconfig
look at inet addr:xxx.xxx.x.xx
point browser to http://xxx.xxx.x.xx/TaskBoard and you should see the same screen as on your local machine.
Make the build folder world writable:

 /var/www/html/TaskBoard$ sudo chmod 777 -R build/
 /var/www/html/TaskBoard$ ls

Should show the build folder world writeable (green). Note your world is currently the local network.
Seems api folder needs to be writeable as well.
 /var/www/html/TaskBoard$ sudo chmod 777 -R api/
Where it starts to fail
Tried to log into the Taskboard with admin:admin
Did not work so tried .build/build-all
 $ .build/build-all
Found several errors which I attempted to solve:
 $ sudo chmod 777 -R vendor/composer/ (to access installed.json)
 $ sudo chmod 777 -R vendor/  (to access autoload.php)

/var/www/html/TaskBoard$ ./build/build-all
Building...
 Installing dependencies
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
 Compiling lib JS files...
java.io.FileNotFoundException: libs.min.js (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.filenameToOutputStream(AbstractCommandLineRunner.java:1153)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.fileNameToLegacyOutputWriter(AbstractCommandLineRunner.java:1126)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.createDefaultOutput(AbstractCommandLineRunner.java:741)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.outputSingleBinary(AbstractCommandLineRunner.java:926)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.processResults(AbstractCommandLineRunner.java:885)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.doRun(AbstractCommandLineRunner.java:826)
	at com.google.javascript.jscomp.AbstractCommandLineRunner.run(AbstractCommandLineRunner.java:400)
	at com.google.javascript.jscomp.CommandLineRunner.main(CommandLineRunner.java:1206)

Attempted:
 /var/www/html/TaskBoard$ sudo a2enmod rewrite
 /var/www/html/TaskBoard$ sudo a2enmod expires
 /var/www/html/TaskBoard$ service apache2 restart

Still did not work.
F12 on the browser. Console Net output is:
POST
XHR
http://<IP_ADDRESS>/TaskBoard/api/login [HTTP/1.1 404 Not Found 1ms]

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<title>404 Not Found</title>

Not Found

The requested URL /TaskBoard/api/login was not found on this server.

<address>Apache/2.4.18 (Ubuntu) Server at <IP_ADDRESS> Port 80</address>

On the CSS it has more outputs, I think maybe to large to post directly.
taskboard.txt
Thanks for all of your time, I hope this is helpful?

I followed your same steps and also got a 404 at the login screen. I was able to fix it by editing the apache2.conf file. (/etc/apache2/apache2.conf). You should see around line 166 that the directory /var/www/ is set to AllowOverride None. You should change None to All. Restart Apache and it should work.

Closing due to lack of response. Comment if this still needs assistance.


expose actual ssh session error

Importing one of the projects was failing with "SSH session failed" error, and not until I made the proposed changes I was able to see that ssh was attempting to use port 5432 which was already taken (by Postgres also running on my bastion host).
With the change I was able to see the root cause:
28/03/2024 14:06:20 - ERROR - Project_P39 - SSH connection failed. Stopping session xkp30g58a2ppqq3y

28/03/2024 14:06:21 - ERROR - Project_P39 - can't listen on port 5432: listen tcp :5432: bind: address already in use

Thanks for this @alexvdedov


[samurai]  Add new port

[x] Changes comply with the maintainer guide
[ ] The name of the port matches an existing name for this component on https://repology.org/ if possible, and/or is strongly associated with that component on search engines.
[x] Optional dependencies are resolved in exactly one way. For example, if the component is built with CMake, all find_package calls are REQUIRED, are satisfied by vcpkg.json's declared dependencies, or disabled with CMAKE_DISABLE_FIND_PACKAGE_Xxx
[x] The versioning scheme in vcpkg.json matches what upstream says.
[x] The license declaration in vcpkg.json matches what upstream says.
[x] The installed as the "copyright" file matches what upstream says.
[x] The source code of the component installed comes from an authoritative source.
[x] The generated "usage text" is accurate. See adding-usage for context.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is in the new port's versions file.
[x] Only one version is added to each modified port's versions file.

@FrankXie05 I don't understand why the REMOVE_RECURSEfailed now...

If you are header-only, the debug file should not exist. :)

@FrankXie05 I don't understand why the REMOVE_RECURSEfailed now...

I finally fixed this issue.

Now linux failed but I didn't change anything. It said that the configure_file defined here https://github.com/hpc-maths/samurai/blob/master/CMakeLists.txt#L13 doesn't exist. But it's not the case...
Is it possible to re-run the CI ?

/azp run

@gouarin  https://github.com/microsoft/vcpkg/pull/31051#discussion_r1174532187

@dg0yt could you explain to me how to make working the Windows build using VCPKG_CHAINLOAD_TOOLCHAIN_FILE?

@dg0yt could you explain to me how to make working the Windows build using VCPKG_CHAINLOAD_TOOLCHAIN_FILE?

Keep it simpel. Just don't touch it for the official triplets. They do have working toolchain files.


Type signature for Field() gt/lt/gte/lte validators should include timedelta

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
The type signature for the numeric min/max value constraints on Field() (i.e. gt, lt, gte, lte ) specified here is too restrictive, allowing only float or None.
In actual use, the validation works correctly as expected with timedelta() instances, but static type checkers (at least Pyright) object.
Example Code
from datetime import timedelta

from pydantic import BaseModel, Field

class Duration(BaseModel):
    td: timedelta = Field(timedelta(0), gt=timedelta(0))

Duration(td=timedelta(seconds=1))
Duration(td=timedelta(seconds=-1))
# ValidationError: 1 validation error for Duration
# td
#  Input should be greater than 0 seconds [type=greater_than, input_value=datetime.timedelta(days=-1), input_type=timedelta]
#    For further information visit https://errors.pydantic.dev/2.7/v/greater_than

# This is all perfectly valid code, but Pyright (and I assume also mypy) complains about the type signature

# $ pyright example.py
# /home/bjmc/Sandbox/example.py
#  /home/bjmc/Sandbox/example.py:6:44 - error: Argument of type "timedelta" cannot be assigned to # parameter "gt" of type "float | None" in function "Field"
#    Type "timedelta" is incompatible with type "float | None"
#      "timedelta" is incompatible with "float"
#      "timedelta" is incompatible with "None" (reportArgumentType)
# 1 error, 0 warnings, 0 informations

Python, Pydantic & OS Version
pydantic version: 2.7.1
        pydantic-core version: 2.18.2
          pydantic-core build: profile=release pgo=true
                 install path: /home/bjmc/.cache/pypoetry/virtualenvs/ska-oso-pdm-zPbyUnCb-py3.10/lib/python3.10/site-packages/pydantic
               python version: 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
                     platform: Linux-6.5.0-1022-oem-x86_64-with-glibc2.35
             related packages: typing_extensions-4.11.0 pyright-1.1.363
                       commit: unknown

I'm not a typing wizard, but I wonder if a good resolution here would be to use the comparison protocols defined by typeshed for these field validators?
I'm happy to open an PR if people like that approach, or have another suggestion.

Seems reasonable to use the comparison protocols, internally Pydantic uses the functions defined in pydantic._internal._validators (e.g. greater_than_validator).
Two options here:

Use the protocols defined in annotated_types (best option imo).
Import the protocols from _typeshed in an if TYPE_CHECKING: block. They are not defined as being stable.

Let's go with the annotated_types protocols

I agree that annotated_types is better since it's already a dependency.

@sydney-runkle I've got a draft MR up. I'm not quite sure where to add a test for this, since it's only a type-checking issue. Suggestions?

@bjmc,
Perhaps you could just add a before / after example to this PR running pyright on a file that uses a timedelta gt constraint as a proof of concept? PR looks great to me!


RENO-2240 - Build New Card Component in React DS

This PR does the following:

Build New Card Component based on specs provided
Renamed old Card Component to CardEdition
List Stories component updated to use CardEdition

Front End Review:

[ ] View the example in Storybook

@knezmilos feel free to add me to future PRs. Thanks!

@EdwinGuzman will do

@bigfishdesign13 question on CardActions child component, is it supposed to accept  and  as components or are they going to be passed as props?
Something like <CardActions type='button'....
Or

@bigfishdesign13 question on CardActions child component, is it supposed to accept and as components or are they going to be passed as props?
Something like <CardActions type='button'....
Or

@knezmilos
CardActions should allow Button and Link components as its own child components.  At this point, CardActions does not have any specific props being passed in.
<CardActions>
  <Button>Action 1</Button>
  <Button>Action 2</Button>
  <Button>Action 3</Button>
</CardActions>

This is ready for another review.

@knezmilos we recently moved from mocha/enzyme to jest/react-testing-library. This PR got caught in this transition. You did the work already for the component's test and I wouldn't want you to spend more time re-doing the tests in a new framework. I don't mind setting up a PR that points to this PR that converts these tests to jest/rtl. Do you want me to do that or do you want to handle that yourself?

@EdwinGuzman @bigfishdesign13 We can discuss this more, and I still need to test out locally some of the work done here, but ideally I'd like to be able to pass in custom components for Image and Heading/Link, because I would use NextJS components for this in my app. Code would be something like this:
// DS components
import Card, { CardContent } from "./Card";

// Next components
import Link from "next/link";
import Image from "next/image";

<Card>
  <Image
    alt="alt text of image"
    src="path/to/my-image.jpg"
    layout="responsive"
    width={900}
    height={450}
    quality={75}
  />

    <Link href={url}>
      {name}
    </Link>

  <CardContent>Read e-books, newspapers, and more in languages including Spanish, French, and Russian.</CardContent>
</Card>

If we made some tweaks to the DS Heading component, I think it could be used here and support the markup structure you need to use a Next Link component. Image is a different story though, and would have to be used in place of the DS image component.

The initial rendering in Storybook seems too big and it also is lacking the "Controls" tab:

@bigfishdesign13 So from testing Card in DXP Scout app for Blogs, I'm able to create the "Featured Posts" style. For Image, I'm using a local Image component that wraps the NextJS Image component. This is my code:
 <Card layout={CardLayouts.Horizontal} center>
    <CardImage
      component={
        <Image
          id={item.image.id}
          alt={item.image.alt}
          uri={item.image.uri}
          useTransformation={true}
          transformations={item.image.transformations}
          transformationLabel={"2_1_960"}
          layout="responsive"
          width={900}
          height={450}
          quality={90}
        />
      }
      imageAspectRatio={CardImageRatios.TwoByOne}
      imageSize={CardImageSizes.Large}
    />
    <CardHeading level={3}>
      {item.url && (
        <Link href={item.url}>
          {item.name}
        </Link>
      )}
    </CardHeading>
    <CardContent>

    </CardContent>
  </Card>

This mostly works fine, with one issue there's not enough bottom space between the Cards:

@bigfishdesign13 Tested this out for "Book List", with square images and "small" size, i.e.
imageAspectRatio={CardImageRatios.Sqaure}
imageSize={CardImageSizes.Small}

Looks good, but has a similar issue with the bottom spacing between items:

Not if the Card itself should even provide this bottom spacing? Something to discuss on Friday.

@bigfishdesign13 I updated my comments above to be more accurate with updated screenshots. The spacing issue below each card was a mistake on my end, sorry for the confusion. There is still 1 small spacing issue I mentioned that I think comes from the DS card.

Tugboat has finished building the preview for this pull request!
Link:

https://pr585-tqalyw3tkdq1e6y7ndurlfvgvgzaszje.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/611c2b3a331d46877762c868

The latest update looks good just minor comments.

Tugboat has finished building the preview for this pull request!
Link:

https://pr585-tqalyw3tkdq1e6y7ndurlfvgvgzaszje.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/611c2b3a331d46877762c868

Tugboat has finished building the preview for this pull request!
Link:

https://pr585-tqalyw3tkdq1e6y7ndurlfvgvgzaszje.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/611c2b3a331d46877762c868

Tugboat has finished building the preview for this pull request!
Link:

https://pr585-tqalyw3tkdq1e6y7ndurlfvgvgzaszje.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/611c2b3a331d46877762c868


support datastore cluster for vSphere Cloud Provider

Add support for datastore cluster in vSphere Cloud Provider.
Ref PR: https://github.com/kubernetes/kubernetes/issues/44007

PR: https://github.com/kubernetes/kubernetes/pull/44868

Hey the documentation is missing in kubernetes#44868, can you please add it.

Automated cherry pick PR: https://github.com/kubernetes/kubernetes/pull/45297

Merged to release 1.6


Paginated page types

Goal
The goal of this PR is to add the types for Paginated pages
Discussion
NOTE: I did a little bit of refactoring here to take advantage of commonalities between Paginated and Itemized pages.
Also, refactored a bit to try and get more proficient with Rust traits. If it's overkill, let me know & I can de-complicate it.
Checklist

[ ] Chain spec updated
[ ] Custom RPC OR Runtime API added/changed? Updated js/api-augment.
[ ] Design doc(s) updated
[x] Tests added
[ ] Benchmarks added
[ ] Weights updated

@JoeCap08055  this PR is set to merge in main, can you change it to private_graph_main branch


Compatibility issues with numpy's fromnumeric.py

xref #12644  (pandas)
While doing a spot check for my numpy PR #7325 in scipy, I came across many current incompatibilities between functions defined in numpy's fromnumeric.py module here that have identically-named but differently implemented methods/functions in scipy.sparse.
In particular, the ones that I have found so far are:
reshape
transpose
resize
sum
In pandas, what we have chosen to do is "swallow" incompatible arguments with an *args argument because numpy passes them in positionally internally even though the signature uses keyword.  However, I don't know what the protocol here is (or should be) in scipy.

In general, we try to instruct users to avoid calling numpy functions on sparse matrices altogether. It's still a pretty big source of issues, though, especially when the numpy function tries to convert the spmatrix to an array and ends up producing a single-element array with dtype=object.
I'm -1 for adding something like *unused_args, **unused_kwargs to the methods you identified because I suspect that would hide more bugs than it fixes.
I'm +1 for working toward numpy signature compatibility where possible. Hopefully numpy can settle on something like __numpy_ufunc__, but until then there's not a whole lot we can do about it.

When you pass in arguments that aren't used at all, what bugs could it hide?  The thing we do is pandas is check whether *unused_args contains only numpy-compatible arguments and then we ignore them afterwards.

Out of curiosity, where in the documentation does it actively discourage members from using numpy functions on sparse matrices?

Working towards __numpy_ufunc__ is certainly desirable, but that won't happen for sometime, and I guess we can't count on that in scipy immediately after it's implemented due to backwards compatibility.
I am alright with just making the discouragement more prominent in scipy due to these issues.  However, I guess it's a question of whether or not it's worth our while to enforce it.

Checking the unused args on each call seems expensive, but if you don't do it you'll hide typo bugs and silently do something the user doesn't expect. That's why I'm more in favor of updating the signatures to be more compatible without varargs hacks.
I'm not sure if the docs currently say that, but they should. I was referring more to how we respond to Github issues / StackOverflow questions / etc. For example: https://github.com/scipy/scipy/issues/5785#issuecomment-177597170
Offtopic: One nice thing about __numpy_ufunc__ is that it doesn't require much in the way of backwards compatibility hacks. In fact, there's already an implementation in scipy.sparse.spmatrix, it just doesn't do anything because numpy never calls it.

Yes, __numpy_ufunc__ would be nice to have but we don't have it.  If we did, this would never have become an issue.  I can't find too much on discouraging users to not use numpy functions with sparse matrices, so that certainly is something that can be done.
Finally, in terms of "updating" signatures, what exactly do you mean by that?  Surfacing arguments that are numpy-compatible is the first thing that comes to my mind but that means a little misleading if we don't actually use them but perhaps you meant something different.

My numpy PR regarding these fromnumeric.py incompatibilities has been merged.  So now (hopefully) we can just worry about backwards compatibility.  Any suggestions besides documentation?

By updating signatures, I mean surfacing the numpy-compatible kwargs that we might hope to eventually support (e.g., axis=None), then throwing an exception if we get a value we can't handle.

Wait, so we do actually want the signatures to be numpy-compatible even though we discourage using numpy functions for sparse matrices?  I'm confused.

Where possible, sure, we want them to be compatible. At the very least, it'll make the API easier for users to understand.
The main reason we discourage using numpy functions for sparse matrices is that they're not guaranteed to work in all cases. That doesn't mean we shouldn't try to make some of those cases not fail.


"Error encoding arguments: Error: Assertion failed" on valid transaction call

I was attempting to post a transaction using Remix earlier today, and noticed it was rejecting my transaction even though it was valid.
Environment:

Using "Injected web3" with Metamask 3.9.0
Using Solidity version 0.4.13+commit.fb4cb1a, with optimization ON

I've written a gist to demonstrate the issue, which can be found here: https://gist.github.com/Stickerpants/d72ff77887c383de71d865055eed4dab
Issue:
I attempt to call the transfer(address, uint256) function from an address which does have sufficient balance to transfer, using the amount<PHONE_NUMBER>0000000 (1e16, or 0.01 assuming 18 decimals). Remix gives back the following message: "Error encoding arguments: Error: Assertion failed".
This message does not appear and the transaction can be successfully posted, if the amount is reduced. I am not sure on the exact threshold that this happens, but I tried<PHONE_NUMBER> (1e-9 assuming 18 decimals) and it successfully works.
Steps to reproduce:

Paste the gist into Remix. Use "Javascript VM" as the environment.
Create TestToken, by passing an address into the constructor. Note that this address is automatically credited 1 * 10**18 tokens by the constructor. I'll refer to this address as originAddr.
From originAddr, attempt to call transfer to another address, and the set the transfer value to<PHONE_NUMBER>0000000 . An example of this might look like: "0xca35b7d915458ef540ade6068dfe2f44e8fa733c",<PHONE_NUMBER>0000000
Observe the returned error message.
Attempt another transfer, this time using a smaller transfer amount. Example: "0xca35b7d915458ef540ade6068dfe2f44e8fa733c",<PHONE_NUMBER>
Note that the transaction succeeds.

Other notes:
I am very confident that the transaction itself is valid and does not throw, because I built the transaction data manually by hand and had both Metamask and Parity send it. These transactions did work, my theory is that Remix is having issues parsing the arguments.
Let me know if you need further information. Thanks!

yes, we need to have better management of input parameters...
please try "0xca35b7d915458ef540ade6068dfe2f44e8fa733c", "10000000000000000"

I see! That's neat, I didn't realize I could quote integers. Thanks!

keep opened cause we still need to make all this more flexible

Was having the same problem. Solved it by adding double quotes to every integer argument.

Damn!
I spent 6 hours debugging this!

Please provide a documentation on how to pass inputs. Spending 2 hours for this is INSANE.

https://remix-ide.readthedocs.io/en/latest/udapp.html#passing-in-a-tuple-or-a-struct-to-a-function


Expose actions to duplicate editor groups

We have support to copy/duplicate editor groups including all of the editors, but we never exposed this as commands/actions.

Verification: try to use the 4 duplicate group actions and verify that text editors duplicate in the new group.

Verification: try to use the 4 duplicate group actions and verify that text editors duplicate in the new group.

Works great!
One suggestion: only show the Duplicate Group Left and Duplicate Group Up if there is more than 1 group currently open. Otherwise these actions are same as the others and might just create confusion...

Works great!
One suggestion: only show the Duplicate Group Left and Duplicate Group Up if there is more than 1 group currently open. Otherwise these actions are same as the others and might just create confusion...


Async serverless runner

Created async functions for invoking serverless endpoints

Please include a brief example on how to run a request using your async_runner. You can provide the example here in a comment.

Here's the brief example of usage
from runpod.endpoint.asyncio import Endpoint, Job
import aiohttp
import asyncio

async def main():
  async with aiohttp.ClientSession() as session:
    # Invoke API
    payload = {}
    endpoint = Endpoint("API_ID", session)
    job: Job = await endpoint.run(payload)

    # Get current job status
    status = await job.status()

    # Wait until job is completed or failed
    output = await job.output()

asyncio.run(main())


[Bug]: access notebook server button should behave like a link

Is there an existing issue for this?

[X] I have searched the existing issues

Deploy type
OpenDataHub core version (eg. v1.6.0)
Version
1.7.0
Current Behavior
The Access notebook server button on the Notebook server control panel page doesn't give direct access to the server URL for the user to be able to copy it or open the link in a new browser tab. The button isn't rendered as a link in the page but rather an action.

Expected Behavior
Expect all actions that perform navigation to be rendered as links to take advantage of build in browser behavior and accessibility.
Steps To Reproduce

Create a notebook server
navigate to the notebook control panel page /notebookController
ctrl+click on the Access notebook server button
Expected: a new window / tab to open
Observed: content is loaded in the current tab
Similarly, right click and attempt to "copy link address"
Observed: no option to copy link address since the button has no href.

Workaround (if any)

Duplicate the tab
Click the access notebook server button

What browsers are you seeing the problem on?
Firefox, Chrome, Safari, Microsoft Edge
Anything else
No response

JupyterHub design... 😞 We can look to improving it to be more a11y.
cc @kywalker-rh this is outside of everyone's SME ... you're up 🙂

Not sure there's much for UX to do here. Makes sense to me that we would simply change the current button to a link. I think it is mostly a transparent change, unless I am missing something.

Not sure there's much for UX to do here. Makes sense to me that we would simply change the current button to a link. I think it is mostly a transparent change, unless I am missing something.

Okay, not sure if we want to talk about the futures of this page on this issue -- but that makes sense to me. It was designed this way because of JupyterHub some 10 months ago lol.

@christianvogt @andrewballantyne @kywalker-rh following the same reasoning, should also these buttons have a link attached?


If time units is known, show in axes labels

E.g. have "Time (days)" for sc2ts trees.

Fixed in #125


Pointset multiplication with 0 fails. (i.e. normal(3,2) * 0)

I understand why it does, but it's pretty annoying.
I imagine in many of these cases, if the PointSet is a valid distribution, the result should be a discrete distribution with all mass at 0.

It's not a pointset, in constructs an invalid normal(0, 0):


Shakaplayer Issue with React 17.0.2

WARNING in ./node_modules/shaka-player/dist/controls.css (./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[5].use[2]!./node_modules/source-map-loader/dist/cjs.js!./node_modules/shaka-player/dist/controls.css)
Module Warning (from ./node_modules/source-map-loader/dist/cjs.js):
Failed to parse source map from 'C:\Users\Sanjay\Desktop\code test\react-video-player\node_modules\shaka-player\ui\https:\fonts.googleapis.com\icon?family=Material+Icons+Round' file: Error: ENOENT: no such file or directory, open 'C:\Users\Sanjay\Desktop\code test\react-video-player\node_modules\shaka-player\ui\https:\fonts.googleapis.com\icon?family=Material+Icons+Round'
@ ./node_modules/shaka-player/dist/controls.css 8:6-235 22:17-24 26:7-21 58:25-39 59:36-47 59:50-64 63:6-73:7 64:54-65 64:68-82 70:42-53 70:56-70 72:21-28 83:0-205 83:0-205 84:22-29 84:33-47 84:50-64 61:4-74:5
@ ./src/App.js 7:0-40
@ ./src/index.js 7:0-24 11:33-36
3 warnings have detailed information that is not shown.
Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it.
webpack 5.65.0 compiled with 3 warnings in 1517 m

Respected sir/Madam,
I am Madhusudan Pareek , a computer science undergraduate , I have just entered to my 4th semester at TC College affiliated with Savitri Bai Phule Pune University. I am new to open source but I am well aware of JavaScript , Nodejs, PostgreSQL, MySQL, HTML,CSS, bootstrap, React and also good knowledge of making rest api’s. I would love to contribute to your organization  and want to work on this issue.. Currently I had worked with an organization ‘IBKAAS’ as an intern and developed their backend with NodeJS ( express )and PostgreSQL and now I’m looking for open source..
Hoping to hear from you soon.
Regards
Madhusudan

I am facing same issue here.

Were you able to solve this issue with the shaka player in React?

We don't officially support React, but people have contributed here: https://github.com/shaka-project/shaka-player#framework-integrations
Does this help you?


Travis CI builds fail

https://travis-ci.com/lrozenblyum/chess/builds/119536904
Investigate and fix.
It looks like oraclejdk8 integration is broken?
https://travis-ci.community/t/solved-oraclejdk8-installation-failing-still-again/3428

Looks like it's a known bug: https://github.com/travis-ci/travis-ci/issues/10290

See also https://travis-ci.community/t/oracle-jdk-11-and-10-are-pre-installed-not-the-openjdk-builds/785


Update binary_sensor.py for wireless clients count

Think it was copy/paste mistake?

create new one


Broken link

The last link "Migrate Azure AD Graph apps to Microsoft Graph" in the first paragraph of https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/active-directory/develop/active-directory-graph-api.md is broken. It should refer to this page: https://github.com/microsoftgraph/microsoft-graph-docs/blob/master/concepts/migrate-azure-ad-graph-property-differences.md

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

ID: 44d6245e-2ebc-c815-2d35-c29450062f3b
Version Independent ID: 98ead160-0377-d530-345f-1909e0039955
Content: Azure Active Directory Graph API
Content Source: articles/active-directory/develop/active-directory-graph-api.md
Service: active-directory
Sub-service: develop
GitHub Login: @rwike77
Microsoft Alias: ryanwi

@commakoerschgen
Thanks for your feedback! We will investigate and update as appropriate.

@commakoerschgen
Thanks for your feedback! We will investigate and update as appropriate.

Closing this as a duplicate of https://github.com/MicrosoftDocs/azure-docs/issues/68919

Closing this as a duplicate of https://github.com/MicrosoftDocs/azure-docs/issues/68919


Is the TablesNamesFinder thread-safe?

Is the TablesNamesFinder thread-safe?

No. The list of extracted tables is instance global. However, instance creation is very cheap.

So can we close this issue?


Revert "Add amazon HOC modal after level 4 (#4756)"

This reverts the commit f0c6830e1d31b68a7d5d45b3d56e10604a4bbb37.

Coverage remained the same at 63.415% when pulling fc9b3549046c6b20318863a9132e2252bb81567a on revert-amazon-hoc-changes into 93aa138386c955b2c1f2e47dd28cc40f48247e07 on master.


feat: add realtimeClientOptions to Supabase.initialize() and release v1.4.0

What kind of change does this PR introduce?
Bringing this update to supabase-flutter. Also included a new version release.

@dshukertjr I guess the app link changes are a mistake?

@Vinzent03 Wow, yeah. I will fix it right now!

@Vinzent03 Done!


Update commands_update.cpp

I think this should be with a backslash "" instead of "/" or am I missing something?

I like / better.. works everywhere whereas \ works only on Windows.
\ doesn't even work in Git Bash for Windows.

Unfortunately, cmd.exe does not work with forward slashes. Since the vast majority of our users are using cmd or powershell, we need to use backslashes to ensure it works for the widest audience. Since bash users can be assumed to be more advanced, it's safer to trust that they'll figure out to replace \ with /.
I've added the .\ in 05ebbfb.
See https://github.com/Microsoft/vcpkg/issues/719#issuecomment-283051439 as well.

But cmd doesn't need the .\ ;)
Too bad it doesn't accept ./, it does accept / as directory separators.


Design doc for better/built-in Java annotation processing support

Superseeds #431
/cc @alkemist

Hey Thomas,
We finally have the bandwith to deal better with community contributions like this. With 2.12 there will be a 'compileOnly' dependency that can be used for annotation processing. If you're still interested to work on this, please let us know.

With 2.12 there will be a 'compileOnly' dependency that can be used for annotation processing.

Oh great! Looks a lot like what I do in net.ltgt.apt plugin

If you're still interested to work on this, please let us know.

Yes sure. How should we start? Do you want me to first update this PR taking into account the compileOnly/testCompileOnly that are already in? (possibly just marking them as already committed).

For now I would update the design doc to reflect that we have now compileOnly dependencies. The test coverage should also contain integration tests to ensure we don't break anything regarding the current behaviour. Would you mind prefixing the different stories in the spec with Story - . That makes it easier to follow in my opinion. I think we can all agree that having these additional compiler options available for dealing with annotations. I'm just not sure yet if we should have an additional default configuration coming with the java plugin for annotation processors. This brings some overhead to EVERY java projects.
With having compileOnly now available compile time only annotation processing does work with reasonable defaults.
I saw you have also provided a first implementation with #450. I'll comment on this separately.

Updated, also added a few things (used separate commits to make reviewing changes easier; tell me if you'd prefer I squash commits instead)

I'm just not sure yet if we should have an additional default configuration coming with the java plugin for annotation processors. This brings some overhead to EVERY java projects.

The reason is that you don't want annotation processor dependencies to mess with your project's dependencies, and end up with things that compile but don't run (hopefully fail tests, but that depends on test coverage).
There are annotation processors that look at what's in the classpath too to decide what to do (e.g. Immutables.org would default to using Guava collections if available in the classpath, and JDK collections with Collections.unmodifiableXxx otherwise; if another annotation processor brings Guava, that would affect the behavior of Immutables.org).
This can be avoided by clearly separating the processorpath from the compile classpath.
See https://github.com/google/dagger/issues/228 and https://github.com/google/auto/issues/268
That could probably be left to plugins though (such as android-apt and net.ltgt.apt); in this case, that could still be described here with a note that it won't be implemented, right?

This looks quite good to me. Yes I think we can just put a note on the stories which we probably no want in gradle core. Two minor remarks before I'll merge your stuff

is there any integration test missing from your point of view? I saw you have a todo in the spec
could you add a dedicated API section about the changes on the compile options. see https://github.com/gradle/gradle/tree/master/design-docs/features/ide-integration/source-and-target-jvm#story---expose-natures-and-builders-for-projects for example. many thanks!

is there any integration test missing from your point of view? I saw you have a todo in the spec

Well, actually, no. I believe described unit tests would be enough for the rest here (but, well, I also believed they were enough by themselves, without even integration tests, so…)

could you add a dedicated API section about the changes on the compile options. see https://github.com/gradle/gradle/tree/master/design-docs/features/ide-integration/source-and-target-jvm#story---expose-natures-and-builders-for-projects for example. many thanks!

Done.
PTAL

Hey,
I merged this pull request manually and did some minor tweaks to the spec. thanks for the contribution!

Thanks. What would be the next step then? Updating #450?

yes. I think so.


Yet another one: https://github.com/tathamoddie/System.IO.Abstractions/pull/193

Confirmed an issue. I don't know if I'm a huge fan of calling the underlying implementation as a workaround, but definitely an issue.

There might be some gotchas as the exception

should be thrown for more than 260 chars and .NET older than 4.6.2 or Windows long paths disabled
should not be thrown if on .NET 4.6.2+ and long paths enabled (https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/)
should not be thrown on .NET Core

The .NET core repo has some interesting path tests for those scenarios, and feature detection.

There also the issue of handling the 4-character unicode path prefix (\\?\), which allows for longer paths. It's referenced throughout the System.IO framework code. I don't understand it in detail, but you can read about it here: https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file

Does the \\?\ syntax work for you? I just tried it in csi, and it threw an Exception. I think that this is probably not accessible from .NET ..?
> System.IO.Directory.EnumerateFiles(@"\\?\D:\")
Illegal characters in path.
  + System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(string)
  + FileSystemEnumerableIterator<TSource>..ctor(string, string, string, System.IO.SearchOption, SearchResultHandler<TSource>, bool)
  + System.IO.Directory.EnumerateFiles(string)
> using System.IO.Abstractions.TestingHelpers;
> var mfs = new MockFileSystem();
> mfs.Path.GetFullPath(@"\\?\D:")
"\\\\?\\D:"

Your link does pose another interesting question for this library, though: How do you want to cope with filenames that are forbidden on an OS? This seems to be another case that the abstraction accepts, but .NET fails on:
> mfs.AddFile("COM1", new MockFileData("dummy"))
> mfs.File.ReadAllText("COM1")
"dummy"
> System.IO.File.Create("COM1")
FileStream will not open Win32 devices such as disk partitions and tape drives. Avoid use of "\\.\" in the path.
  + System.IO.FileStream.Init(string, System.IO.FileMode, System.IO.FileAccess, int, bool, System.IO.FileShare, int, System.IO.FileOptions, Microsoft.Win32.Win32Native.SECURITY_ATTRIBUTES, string, bool, bool, bool)
  + System.IO.FileStream..ctor(string, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, int)
  + System.IO.File.Create(string)

Hmmm... I get the same error. If I try a relative path like @"\\?\.", it says that's an invalid UNC path.
You can see the prefix referenced in the reference source and I saw the same thing when I decompiled the reference assemblies I'm using.
So probably not worth worrying about \\?\.

I'd personally wouldn't worry about it, especially forbidden filenames. I don't want to get into a situation where we're trying to cover every little corner case and introducing a lot of branching on Windows vs. Unix.
It would just be a nightmare to maintain if we get that granular. @fgreinacher @robkeim

That’s really corner-case behavior, sometimes even depending on what the OS does. So I’d also say let’s ignore it.

Alright I'm going to close this out.


Tunnel : doesn't work anymore on 14.10 and above

Describe the bug
The tunnel seems to be established but SSH or SFTP child connections don't work anymore on 14.10 and above

No it works : bad port used on my side :(


Cannot run simulator on iOS with expo

Hi guys,
I have got expo message after upgrade MacOS:
Trying to open the project in iOS simulator...
Simulator is installed but is identified as 'com.apple.CoreSimulator.SimulatorTrampoline'; don't know what that is.
Simulator not installed. Please visit https://developer.apple.com/xcode/download/ to download Xcode and the iOS simulator. If you already have the latest version of Xcode installed, you may have to run the command sudo xcode-select -s /Applications/Xcode.app.
I tried run "sudo xcode-select -s /Applications/Xcode.app" but it doesn't working.
Could you tell me how to solve them, please?
Thank you.

@nguyentvnhat Thanks for reporting, we'll close because duplicate of https://github.com/facebook/react-native/issues/23878.


[Design] Add ability to parse just until the first directive

Issue - #1195
@rynowak @NTaylorMullen
Super hacky design PR. Some variable cleanup got mixed up in the middle of this. Please ignore those.

🆙 📅 Using options to get the boolean.
@rynowak I didn't do what you suggested (Putting the DirectiveTokenizer logic in CSharpTokenizer itself) because it turned out to be a fair amount of "if"s and didn't look very good. Let me know if you feel strongly otherwise.

🆙 📅 No longer in design.


onViewColumnsChange function

Hello,
I hope you are doing well!
We have an issue with the onViewColumnsChange (previously onColumnViewChange) function, when we click on the checkbox to display or hide a column.
The event has already been done (the column is displayed or hidden in the table). Indeed, the event parameter is add or remove depending on the action and the column has already been set in a way to display/hide before we
modify the display property in column options.
Each time we check/uncheck a column, we would like to do a call to the backend, wait for the data and then display the column with the data.
Is there a way to handle the add/remove action before the onViewColumnsChange ? Is there a function do to that ? We saw nothing on the documentation related to our issue.
Thank you for your help
Have a good day.

Hello,
Do you have any update about it?
Thank you :)
Have a good day


Upgrading checkstyle version.

Description of changes:
Upgrading checkstyle dependency version.

Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

Will require passing in a custom checkstyle config to fix:

Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module TreeWalker - TreeWalker is not allowed as a parent of LineLength Please review 'Parent Module' section for this Check in web documentation if Check is standard.


CLI sync command no longer works with pnpm

As far as I can tell, a recent update is causing the following error message:
"HandledError: "srcDir" in plasmic.json is outside of ."
It seems like the following function is the source:
https://github.com/plasmicapp/plasmic/blob/c1f2560551d97e2e4b2c52669a262532795f54b2/packages/cli/src/utils/npm-utils.ts#L110-L146
Since yarn and npm are the only pms allowed, it defaults to npm in the else clause and runs "npm list --package-lock-only --json ${pkg}". This of course fails because there is no package-lock file.
One potential short-term fix would be to allow passing of --skip-upgrade-check as a CLI arg; this seems to be an escape hatch, but it's not possible to pass in as of now.
Thanks for this awesome software, btw! A lifesaver for small teams.

Hey @gavry!
Thank you for reporting it. We have a fix on the way to make findInstalledVersion() work with pnpm and it will be published soon. However, all errors in that detection (like the use of --package-lock-only when you have no package-lock.json) are being caught, so they should not block CLI usage (although it does show a scary message). I just tested plasmic sync in a repository with pnpm here and the script continues running after such errors:
$ plasmic sync
npm ERR! code ENOLOCK
npm ERR! ls This command requires an existing lockfile.
npm ERR! ls Try creating one first with: npm i --package-lock-only
npm ERR! ls Original error: loadVirtual requires existing shrinkwrap file
{
  "error": {
    "code": "ENOLOCK",
    "summary": "This command requires an existing lockfile.",
    "detail": "Try creating one first with: npm i --package-lock-only\nOriginal error: loadVirtual requires existing shrinkwrap file"
  }
}

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/tiago/.npm/_logs/2023-03-24T16_59_37_185Z-debug-0.log
Could not detect installed version of @plasmicapp/react-web using npm: Error: Command failed: npm list --package-lock-only --json @plasmicapp/react-web
npm ERR! code ENOLOCK
npm ERR! ls This command requires an existing lockfile.
npm ERR! ls Try creating one first with: npm i --package-lock-only
npm ERR! ls Original error: loadVirtual requires existing shrinkwrap file
{
  "error": {
    "code": "ENOLOCK",
    "summary": "This command requires an existing lockfile.",
    "detail": "Try creating one first with: npm i --package-lock-only\nOriginal error: loadVirtual requires existing shrinkwrap file"
  }
}

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/tiago/.npm/_logs/2023-03-24T16_59_37_185Z-debug-0.log

? A more recent version of @plasmicapp/react-web >=0.2.177 is required. Would you like to upgrade via "npm install --ignore-scripts @plasmicapp/react-web"? (Y/n)

Are there any other errors you see after that?

Also, thank you for the suggestion of adding a --skip-upgrade-check flag. That will be added in the upcoming release of @plasmicapp/cli.

Thanks for the reply! I think, previously, the issue was:

It was scanning for package versions using the package-lock.json file (after defaulting to npm)
It was requiring a specific version level of @plasmicapp/react-web to run the sync command
The upgrade script it offered to run was using npm, so I would select "no"
It would exit, as the upgrade was required

So, it wasn't exactly an unexpected error, but it wasn't letting me proceed. Here's where that logic comes in:
https://github.com/plasmicapp/plasmic/blob/a5a006a45481883a719885a6db254188b25ca101/packages/cli/src/actions/sync.ts#L123-L137
But I'm not 100% sure, you guys would know the codebase much better 🤷
Anyways, I've upgraded to the latest CLI version and it totally works again! Thank you so much!!


Args enhancements

Instantiate class
Allow specifying defaultValue with a property initializer

:tada: This issue has been resolved in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add Project Reference on OSX fails

Using "Add Project Reference" fails on OSX (homebrew mono)
The Forge log contains the following:
forge add project -n /Users/thomas/src/fsdemo/src/MyLibrary/MyLibrary.fsproj -p /Users/thomas/src/fsdemo/src/console/console.fsproj --no-prompt
Unrecognized command or missing required parameter

The binding to Forge seems broken.
Using:

vscode 1.3.1
Ionide-fsharp 2.2.8

On the other hand it could be same as this: https://github.com/fsprojects/Forge/issues/119

Should be fixed in 2.2.10


TicTacToe - Anyone with sucess?

Hi,
Has anyone trained the MuZero so that it wins on TicTacToe?
I have made a few tests and training sessions but when playing vs MuZero I always win. Sometimes Muzero has a chance to assure a win, but it fails to do so.
EDIT:
It does not play well on connect4 as well. How many hours are you guys training?
Thank you.

Hi, I am using these parameters and it takes ~20min for TicTacToe and ~16h for Connect4.
TicTacToe parameters:
    self.seed = 0  # Seed for numpy, torch and the game
    self.max_num_gpus = 1 #None  # Fix the maximum number of GPUs to use. It's usually faster to use a single GPU (set it to 1) if it has enough memory. None will use every GPUs available

    ### Game
    self.observation_shape = (3, 3, 3)  # Dimensions of the game observation, must be 3D (channel, height, width). For a 1D array, please reshape it to (1, 1, length of array)
    self.action_space = list(range(9))  # Fixed list of all possible actions. You should only edit the length
    self.players = list(range(2))  # List of players. You should only edit the length
    self.stacked_observations = 0  # Number of previous observations and previous actions to add to the current observation

    # Evaluate
    self.muzero_player = 0  # Turn Muzero begins to play (0: MuZero plays first, 1: MuZero plays second)
    self.opponent = "expert"  # Hard coded agent that MuZero faces to assess his progress in multiplayer games. It doesn't influence training. None, "random" or "expert" if implemented in the Game class

    ### Self-Play
    self.num_workers = 5  # Number of simultaneous threads/workers self-playing to feed the replay buffer
    self.selfplay_on_gpu = False
    self.max_moves = 9  # Maximum number of moves if game is not finished before
    self.num_simulations = 25  # Number of future moves self-simulated
    self.discount = 1  # Chronological discount of the reward
    self.temperature_threshold = None  # Number of moves before dropping the temperature given by visit_softmax_temperature_fn to 0 (ie selecting the best action). If None, visit_softmax_temperature_fn is used every time

    # Root prior exploration noise
    self.root_dirichlet_alpha = 0.2
    self.root_exploration_fraction = 0.25

    # UCB formula
    self.pb_c_base = 19652
    self.pb_c_init = 1.25

    ### Network
    self.network = "resnet"  # "resnet" / "fullyconnected"
    self.support_size = 1  # Value and reward are scaled (with almost sqrt) and encoded on a vector with a range of -support_size to support_size. Choose it so that support_size <= sqrt(max(abs(discounted reward)))

    # Residual Network
    self.downsample = False  # Downsample observations before representation network, False / "CNN" (lighter) / "resnet" (See paper appendix Network Architecture)
    self.blocks = 3  # Number of blocks in the ResNet
    self.channels = 64  # Number of channels in the ResNet
    self.reduced_channels_reward = 8  # Number of channels in reward head
    self.reduced_channels_value = 8  # Number of channels in value head
    self.reduced_channels_policy = 8  # Number of channels in policy head
    self.resnet_fc_reward_layers = [16]  # Define the hidden layers in the reward head of the dynamic network
    self.resnet_fc_value_layers = [16]  # Define the hidden layers in the value head of the prediction network
    self.resnet_fc_policy_layers = [16]  # Define the hidden layers in the policy head of the prediction network

    # Fully Connected Network
    self.encoding_size = 32
    self.fc_representation_layers = []  # Define the hidden layers in the representation network
    self.fc_dynamics_layers = [64]  # Define the hidden layers in the dynamics network
    self.fc_reward_layers = [64]  # Define the hidden layers in the reward network
    self.fc_value_layers = []  # Define the hidden layers in the value network
    self.fc_policy_layers = []  # Define the hidden layers in the policy network

    ### Training
    self.results_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../results", os.path.basename(__file__)[:-3], datetime.datetime.now().strftime("%Y-%m-%d--%H-%M-%S"))  # Path to store the model weights and TensorBoard logs
    self.save_model = True  # Save the checkpoint in results_path as model.checkpoint
    self.training_steps = 1000000  # Total number of training steps (ie weights update according to a batch)
    self.batch_size = 256  # Number of parts of games to train on at each training step
    self.checkpoint_interval = 10  # Number of training steps before using the model for self-playing
    self.value_loss_weight = 0.25  # Scale the value loss to avoid overfitting of the value function, paper recommends 0.25 (See paper appendix Reanalyze)
    self.train_on_gpu = torch.cuda.is_available()  # Train on GPU if available

    self.optimizer = "Adam"  # "Adam" or "SGD". Paper uses SGD
    self.weight_decay = 1e-5  # L2 weights regularization
    self.momentum = 0.9  # Used only if optimizer is SGD

    # Exponential learning rate schedule
    self.lr_init = 0.005  # Initial learning rate
    self.lr_decay_rate = 1  # Set it to 1 to use a constant learning rate
    self.lr_decay_steps = 10000

    ### Replay Buffer
    self.replay_buffer_size = 10000  # Number of self-play games to keep in the replay buffer
    self.num_unroll_steps = 5  # Number of game moves to keep for every batch element
    self.td_steps = 9  # Number of steps in the future to take into account for calculating the target value
    self.PER = False  # Prioritized Replay (See paper appendix Training), select in priority the elements in the replay buffer which are unexpected for the network
    self.PER_alpha = 0.5  # How much prioritization is used, 0 corresponding to the uniform case, paper suggests 1

    # Reanalyze (See paper appendix Reanalyse)
    self.use_last_model_value = False  # Use the last model to provide a fresher, stable n-step value (See paper appendix Reanalyze)
    self.reanalyse_on_gpu = False

    ### Adjust the self play / training ratio to avoid over/underfitting
    self.self_play_delay = 0  # Number of seconds to wait after each played game
    self.training_delay = 0  # Number of seconds to wait after each training step
    self.ratio = None # None  # Desired training steps per self played step ratio. Equivalent to a synchronous version, training can take much longer. Set it to None to disable it

Connect4 parameters:
    self.seed = 0  # Seed for numpy, torch and the game
    self.max_num_gpus = 1 # None  # Fix the maximum number of GPUs to use. It's usually faster to use a single GPU (set it to 1) if it has enough memory. None will use every GPUs available

    ### Game
    self.observation_shape = (3, 6, 7)  # Dimensions of the game observation, must be 3D (channel, height, width). For a 1D array, please reshape it to (1, 1, length of array)
    self.action_space = list(range(7))  # Fixed list of all possible actions. You should only edit the length
    self.players = list(range(2))  # List of players. You should only edit the length
    self.stacked_observations = 0  # Number of previous observations and previous actions to add to the current observation

    # Evaluate
    self.muzero_player = 0  # Turn Muzero begins to play (0: MuZero plays first, 1: MuZero plays second)
    self.opponent = "expert"  # Hard coded agent that MuZero faces to assess his progress in multiplayer games. It doesn't influence training. None, "random" or "expert" if implemented in the Game class

    ### Self-Play
    self.num_workers = 5  # Number of simultaneous threads/workers self-playing to feed the replay buffer
    self.selfplay_on_gpu = False
    self.max_moves = 42  # Maximum number of moves if game is not finished before
    self.num_simulations = 50  # Number of future moves self-simulated
    self.discount = 1  # Chronological discount of the reward
    self.temperature_threshold = None  # Number of moves before dropping the temperature given by visit_softmax_temperature_fn to 0 (ie selecting the best action). If None, visit_softmax_temperature_fn is used every time

    # Root prior exploration noise
    self.root_dirichlet_alpha = 0.2
    self.root_exploration_fraction = 0.25

    # UCB formula
    self.pb_c_base = 19652
    self.pb_c_init = 1.25

    ### Network
    self.network = "resnet"  # "resnet" / "fullyconnected"
    self.support_size = 1  # Value and reward are scaled (with almost sqrt) and encoded on a vector with a range of -support_size to support_size. Choose it so that support_size <= sqrt(max(abs(discounted reward)))

    # Residual Network
    self.downsample = False  # Downsample observations before representation network, False / "CNN" (lighter) / "resnet" (See paper appendix Network Architecture)
    self.blocks = 3  # Number of blocks in the ResNet
    self.channels = 64  # Number of channels in the ResNet
    self.reduced_channels_reward = 8  # Number of channels in reward head
    self.reduced_channels_value = 8  # Number of channels in value head
    self.reduced_channels_policy = 8  # Number of channels in policy head
    self.resnet_fc_reward_layers = [16]  # Define the hidden layers in the reward head of the dynamic network
    self.resnet_fc_value_layers = [16]  # Define the hidden layers in the value head of the prediction network
    self.resnet_fc_policy_layers = [16]  # Define the hidden layers in the policy head of the prediction network

    # Fully Connected Network
    self.encoding_size = 32
    self.fc_representation_layers = []  # Define the hidden layers in the representation network
    self.fc_dynamics_layers = [64]  # Define the hidden layers in the dynamics network
    self.fc_reward_layers = [64]  # Define the hidden layers in the reward network
    self.fc_value_layers = []  # Define the hidden layers in the value network
    self.fc_policy_layers = []  # Define the hidden layers in the policy network

    ### Training
    self.results_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../results", os.path.basename(__file__)[:-3], datetime.datetime.now().strftime("%Y-%m-%d--%H-%M-%S"))  # Path to store the model weights and TensorBoard logs
    self.save_model = True  # Save the checkpoint in results_path as model.checkpoint
    self.training_steps = 1000000  # Total number of training steps (ie weights update according to a batch)
    self.batch_size = 256  # Number of parts of games to train on at each training step
    self.checkpoint_interval = 10  # Number of training steps before using the model for self-playing
    self.value_loss_weight = 0.25  # Scale the value loss to avoid overfitting of the value function, paper recommends 0.25 (See paper appendix Reanalyze)
    self.train_on_gpu = torch.cuda.is_available()  # Train on GPU if available

    self.optimizer = "Adam"  # "Adam" or "SGD". Paper uses SGD
    self.weight_decay = 1e-5  # L2 weights regularization
    self.momentum = 0.9  # Used only if optimizer is SGD

    # Exponential learning rate schedule
    self.lr_init = 0.005  # Initial learning rate
    self.lr_decay_rate = 1  # Set it to 1 to use a constant learning rate
    self.lr_decay_steps = 10000

    ### Replay Buffer
    self.replay_buffer_size = 10000  # Number of self-play games to keep in the replay buffer
    self.num_unroll_steps = 5  # Number of game moves to keep for every batch element
    self.td_steps = 42  # Number of steps in the future to take into account for calculating the target value
    self.PER = False  # Prioritized Replay (See paper appendix Training), select in priority the elements in the replay buffer which are unexpected for the network
    self.PER_alpha = 0.5  # How much prioritization is used, 0 corresponding to the uniform case, paper suggests 1

    # Reanalyze (See paper appendix Reanalyse)
    self.use_last_model_value = False  # Use the last model to provide a fresher, stable n-step value (See paper appendix Reanalyze)
    self.reanalyse_on_gpu = False

    ### Adjust the self play / training ratio to avoid over/underfitting
    self.self_play_delay = 0  # Number of seconds to wait after each played game
    self.training_delay = 0  # Number of seconds to wait after each training step
    self.ratio = None # None  # Desired training steps per self played step ratio. Equivalent to a synchronous version, training can take much longer. Set it to None to disable it

Hi Perecasxiru,
Thank you for your reply.
I have trained for TicTacToe with your settings and it still plays badly. I have made over 2.5k games while training. What about you? (Think games is better than time because we likely have different machines).
One game MuZero had 2 options to end the game, and chose none! I can see on tensorboard that there is some progress, but I must confess I know nothing about this. Trying to learn from a built algorithm.
Is it asking for too much if you could share the training file? Now I'm curious if I'm just a great TicTacToe player! hahaha
I have not tried connect4 yet.
Thank you very much for your time.
All the best,
João

Here you have it
2021-02-10--15-58-33.zip

Thank you. I left it training for a few hours to get a behavior close to yours.
Anyway, now it does not only lose poorly, but it also searches for a win.
Much appreciated.


Close it!

@hmusum or @freva please merge :)

It may not have flushed everything to the byte array when that is read. I'm hoping it's the problem :)


Jemalloc-sys fails to build within docker

When building inside a docker environment, jemalloc-sys fails to build. I'm not 100% sure if this is an issue in jemalloc-sys or jemalloc itself.
Proof of concept: https://github.com/Firstyear/jemallocator_build_docker
docker build .
Sending build context to Docker daemon   10.5MB
Step 1/6 : FROM opensuse/tumbleweed:latest
 ---> 4924d7532ace
Step 2/6 : RUN zypper -vv ref && 	zypper dup -y && 	zypper install -y 		cargo 		rust 		gcc 		bash
 ---> Using cache
 ---> 59b26627f325
Step 3/6 : COPY . /usr/src/demo
 ---> 29bbb73eb100
Step 4/6 : WORKDIR /usr/src/demo
 ---> Running in 5b8f4ec381ba
Removing intermediate container 5b8f4ec381ba
 ---> 709fc2dab885
Step 5/6 : RUN cargo build --release
 ---> Running in 7247482af628
   Compiling fs_extra v1.2.0
   Compiling cc v1.0.66
   Compiling libc v0.2.86
   Compiling jemalloc-sys v0.3.2
error: failed to run custom build command for `jemalloc-sys v0.3.2`

Caused by:
  process didn't exit successfully: `/usr/src/demo/target/release/build/jemalloc-sys-df3486eb4be3f3de/build-script-build` (exit code: 101)
  --- stdout
  TARGET=x86_64-unknown-linux-gnu
  HOST=x86_64-unknown-linux-gnu
  NUM_JOBS=8
  OUT_DIR="/usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out"
  BUILD_DIR="/usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/build"
  SRC_DIR="/usr/src/demo/vendor/jemalloc-sys"
  OPT_LEVEL = Some("3")
  TARGET = Some("x86_64-unknown-linux-gnu")
  HOST = Some("x86_64-unknown-linux-gnu")
  CC_x86_64-unknown-linux-gnu = None
  CC_x86_64_unknown_linux_gnu = None
  HOST_CC = None
  CC = None
  CFLAGS_x86_64-unknown-linux-gnu = None
  CFLAGS_x86_64_unknown_linux_gnu = None
  HOST_CFLAGS = None
  CFLAGS = None
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
  CC="cc"
  CFLAGS="-O3 -ffunction-sections -fdata-sections -fPIC -m64 -Wall"
  JEMALLOC_REPO_DIR="jemalloc"
  JEMALLOC_SRC_DIR="/usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc"
  cargo:rustc-cfg=prefixed
  --with-jemalloc-prefix=_rjem_
  running: "sh" "/usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc/configure" "--disable-cxx" "--with-jemalloc-prefix=_rjem_" "--with-private-namespace=_rjem_" "--host=x86_64-unknown-linux-gnu" "--build=x86_64-unknown-linux-gnu" "--prefix=/usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out"
  /usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc/configure: This script requires a shell more modern than all
  /usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc/configure: the shells that I found on your system.
  /usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc/configure: Please tell<EMAIL_ADDRESS>about your system,
  /usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc/configure: including any error possibly output before this
  /usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc/configure: message. Then install a modern shell, or manually run
  /usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc/configure: the script under such a shell if you do have one.

  --- stderr
  thread 'main' panicked at 'command did not execute successfully: "sh" "/usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out/jemalloc/configure" "--disable-cxx" "--with-jemalloc-prefix=_rjem_" "--with-private-namespace=_rjem_" "--host=x86_64-unknown-linux-gnu" "--build=x86_64-unknown-linux-gnu" "--prefix=/usr/src/demo/target/release/build/jemalloc-sys-aa4a5c2372fb2439/out"
  expected success, got: exit code: 1', /usr/src/demo/vendor/jemalloc-sys/build.rs:392:9
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
The command '/bin/sh -c cargo build --release' returned a non-zero code: 101

It it worth noting that if the dockerfile steps are taken manually (IE docker run -i -t opensuse/tumbleweed:latest) then you install the components and do the build it succeeds. It appears that something about the lack of interactivity may be causing the sh checker to fail.
cargo/rust version 1.49.0, jemalloc-sys 0.3.2

This is coming from autoconf (the ./configure script):

This script requires a shell more modern than all
the shells that I found on your system.

What's your /bin/sh? You might need to install a mondern shell frist.


How to load contract with<EMAIL_ADDRESS>

I did not find any example on how to load a contract which is already deployed on the chain with the bindings / definitions for target<EMAIL_ADDRESS>I assume one must somehow create a contract with new web3.eth.Contract and cast it to the type generated by typechain.
But web.eth.Contract needs the abi. I dirtily load the abi from the .json file but I cannot call the methods because "out of gas". Could someone provide a working example? Thanks!

I assume one must somehow create a contract with new web3.eth.Contract and cast it to the type generated by typechain.

Yes, this is exactly what you need to do. Typechain provides only typings so if you're getting out of gas errors there's somewhere problem on your end.
Idea: first try to make it work without typechain (with anys) and once it works cast it to typechain type and develop further. FYI: Out of gas errors could be rejected txs in disquise.
I am gonna close it since it's not releated to TypeChain itself.

@krzkaczor Thank you very much for your answer, I will have a look into it.


Replace mistakes with rsyslog config

Hi there.
Sorry for "pull request" without issuing an "issue". &  Sorry for two consecutive days...
Replacement mistake with checker.conf & metrics.conf
After runnning "install.sh"  the server, it was the following
# cat /etc/rsyslog.d/metrics.conf
if  startswith 'metrics' then /var/www/haproxy-wi/log/metrics-error.log
& stop

# cat /etc/rsyslog.d/checker.conf
if  startswith 'checker' then /var/www/haproxy-wi/log/checker-error.log
& stop

I think that  "$programname"  was treated as a variable
I'm sorry, can you confirm it?
If there is any other good ideas, please correct it !

Thank you!


Feat: Added modal and rating

Modal is not opening.

Modal is not opening.

Not able to figure out the issue , my brain is exhausted, oufff


Integer overflow in usage request

If an account sets no character translation limit the limit is 1 000 000 000 000.
In that case requesting the usage will return a negative number for the character limit.
Minimal example:
Translator translator = new Translator(authKey)
Usage.Detail characterUsage = translator.getUsage().getCharacter();
characterUsage.getLimit() // returns -727379968

The cause of the error lies in UsageDeserializer::createDetail line 28 and 29.
There the limit and count are parsed as Integer, even though they are declared as long in Usage.Detail.
Given that the request can return a number larger than Integer::MAX_VALUE they should not only be declared as long but also parsed as such.

I added a pull request for a fix: https://github.com/DeepLcom/deepl-java/pull/45

The fix was released with version 1.5.1


How to install a module like the blog or forum?

Thank you for silverstripe!
Sorry if I posted this here in the wrong place but i'm fairly new to GitHub still :-)
I don't know how to install modules, could you provide me a link to a walkthrough for things like blog and forum ?
I also would like to make some feature requests if i may:
1: please put in a "modify the site-wide css" and also have a field in every page that we could edit a local "style ... /style" which would go in the page header 'after' the site-wide css loads.
2: I would like a toggle button/link option while in the page preview pane ( during editing a page ) to show/hide the redbox and other guides like that "View as regular visitor"
also please tell everyone a note about that so that new users don't feel confused.
4: If i may also add one more request; I started using your cms by installing it through my godaddy economy web hosting account and I would greatly appreciate if you could have godaddy put in some extra templates in addition to simple :-)
I would love you guys for adding these things in!!

Hi @devrich78, welcome to the SilverStripe community!
Here are some links to help you gaining help and requesting new features:
Requests for help are best served through the SilverStripe forums - http://www.silverstripe.org/community/forums/
New features can be requested by using the SilverStripe UserVoice - http://www.silverstripe.uservoice.com
The GitHub account is generally only used for posting issues and bugs, and for pull requests which create new features. In answer to your questions though, you may be best served by going through the SilverStripe documentation at http://doc.silverstripe.org/en/
:smile:

Thanks, stevie-mayhew :)


1.7.12 release

Bug fix, chance to update GDAL to 2.2.4 in wheels.
Target date: 2018-04-01.

If 1.7 is running GDAL 2.2.x you should cherry-pick 41521e4fe333f9d94323b859f4df982d317e976e from master.

@snorfalorpagus I'd rather not add a new feature in 1.7.12.

[x] issues closed
[x] tagged
[x] wheels built with frs-wheel-builds 1.8.2 (GDAL 2.2.4)
[x] uploaded to PYPI


Feature Inquiry: Extra EXIF Parameters (Heading and Orientation)

Does OpenSFM take advantage of extra EXIF information such as GPS Img Direction, GPS Image Direction Ref, and User Comment (Yaw, Pitch, Roll) to help with the processing and reconstruction?
OpenCamera, for instance, can optionally write these parameters, which in addition to normal GPS EXIF for lat/long/elevation, you get heading and orientation as Yaw/Pitch/Roll.
Let's say you get those orientation values from the flight log of a sUAS, and join them to the images in pre-processing. Wouldn't that help with matching and reconstruction?
To me, this seems like a great bit of extra data to use.
Example attached:

Thanks!

There's support for compass and even accelerometer, but no pitch/yaw/roll https://github.com/mapillary/OpenSfM/blob/71d405dd80be3175d458d20b6ffad8ea28924f7d/opensfm/src/map/src/shot.cc#L43
That's understandable; not every camera has a gimbal attached (and most cameras in fact do not have a gimbal).

Do you think, given the recent proliferation of flying cameras, micro-gimbals, embedded Android, and IMU-based camera stabilization ala GoPro, that these extra info might be beneficial to take advantage of when present?
I know that I could attach all of the heading/Yaw/Pitch/Roll to my SUAS. data from the Ardupilot dataflash logs, for instance.

If you have camera parameters( and rotation(YPR) and translation(XYZ) you can do the reconstruction directly from this information. For larger projects, you can use Pix4d.com.

@Saijin-Naib @pierotofy that's a feature that we're currently discussing and I'm hoping to see someday this year.


Hard to click on observatory profiles

Version r33758
It's extremely hard to click on the heap profile (or any other non-cpu profile).
I click on the "profile" link on the root isolate.
This opens the cpu profile.
There I hover of the "root isolate" ("Observatory > root isolate > cpu profile" at the top).
This shows the heap profile as option. When I move the mouse down the pop-up disappears. After some trial-and-error I managed to click it, by either moving the mouse very fast, or by using an extension that allows me to click without moving the mouse.
Clicking the "root isolate" itself doesn't work and brings me back from where I started. (How would the hover work on mobile?)
Tested in Chrome (Dev, Aura) and Firefox.

Can't reproduce, assumed stale.


Improvements for WeMo Insight switches

Description:

Changes current power units to watts
Adds power on times and additional totals

Related issue (if applicable): fixes #

Partially addresses messed up labels and adds missing Insight data fields #3506
Recommend patch (https://github.com/pavoni/pywemo/issues/64) to resolve lack of updates for WeMo Insight devices

Hi @jumpkick,
It seems you haven't yet signed a CLA. Please do so here.
Once you do that we will be able to review and accept this pull request.
Thanks!

I've released your pywemo changes as 0.4.13 ready for when you have time to wrap up this PR.

@jumpkick Let me know if you need some help on this.
My suggestion would be to leave the overridden switch attributes (current_power_mwh and today_power_mw) as they are for this PR.
Some of the issues you've found with these properties should be reworked as a broader PR to change all these attributes across all devices (https://github.com/home-assistant/home-assistant/issues/3828)).
The other attributes you want to include can just be added as device_state_attributes.

@pavoni yeah, I'm thinking of starting over on this patch...  leave the stuff that's there and just load up device_state_attributes w/ the additional attributes.  I agree with #3828, but not sure how to incorporate it.

👍  Looks good to me.
@balloob are you happy for me to merge?

Thanks! 🐬 🍪 💯


Feature/windows build

Ive squashed as many commits as I could but am hitting rebase issues on the emrge commits so im going to leave it at that and have a final squash when merging to main

You mean the conditional check that was added?
From: Tim Paine @.>
Sent: Monday, May 20, 2024 5:08 PM
To: Point72/csp @.>
Cc: Ambalu, Robert @.>; Author @.>
Subject: Re: [Point72/csp] Feature/windows build (PR #229)
@timkpaine commented on this pull request. In .github/workflows/conda-win. yml: > @@ -0,0 +1,71 @@ +name: Windows Conda End-to-end Test + +on: + push: + branches: + - main + - feature/windows_build ok i think this is it: https: //github. com/Point72/csp/blob/5a6bb27fc4356ac76baf5592d20690269f6a2359/setup. py#L37
@timkpaine commented on this pull request.

In .github/workflows/conda-win.ymlhttps://urldefense.com/v3/__https:/github.com/Point72/csp/pull/229*discussion_r1607292408__;Iw!!K_TC0FI_KA!ueWkUaUbVaPkYGOO60aL5zd66a_RRh66zcQY5IOdZbnbB6aLboXmnpD7tk-FmIRb8X7wBBuw7GLHjJa6mdbLxoY-F8UBOg$:

@@ -0,0 +1,71 @@

+name: Windows Conda End-to-end Test

+on:

push:

branches:

 - main

 - feature/windows_build

ok i think this is it:
https://github.com/Point72/csp/blob/5a6bb27fc4356ac76baf5592d20690269f6a2359/setup.py#L37https://urldefense.com/v3/__https:/github.com/Point72/csp/blob/5a6bb27fc4356ac76baf5592d20690269f6a2359/setup.py*L37__;Iw!!K_TC0FI_KA!ueWkUaUbVaPkYGOO60aL5zd66a_RRh66zcQY5IOdZbnbB6aLboXmnpD7tk-FmIRb8X7wBBuw7GLHjJa6mdbLxoYAIAyoUg$
I must have missed that in my review, but we really shouldnt be doing that as i think it will conflict with the binary cache check in vcpkg
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/Point72/csp/pull/229*discussion_r1607292408__;Iw!!K_TC0FI_KA!ueWkUaUbVaPkYGOO60aL5zd66a_RRh66zcQY5IOdZbnbB6aLboXmnpD7tk-FmIRb8X7wBBuw7GLHjJa6mdbLxoY-F8UBOg$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/AG22D7DM2OY2YGZ4ABHWBRDZDJQ25AVCNFSM6AAAAABHYSVYMSVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDANRXGA2DQMJYHE__;!!K_TC0FI_KA!ueWkUaUbVaPkYGOO60aL5zd66a_RRh66zcQY5IOdZbnbB6aLboXmnpD7tk-FmIRb8X7wBBuw7GLHjJa6mdbLxobkVe_vIQ$.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>DISCLAIMER: This e-mail message and any attachments are intended solely for the use of the individual or entity to which it is addressed and may contain information that is sensitive, confidential, legally privileged or otherwise protected under applicable law. No confidentiality or privilege is waived or lost by transmission error. If you are not the intended recipient, you are hereby notified that any disclosure, dissemination, distribution, copying or other use of this message or its attachments is strictly prohibited. If you have received this message in error, please notify the sender immediately and permanently delete this message and any attachments.
Point72 reserves the right, to the extent required and/or permitted under applicable law, to monitor electronic communications, including telephone calls with Point72 personnel. This message is subject to the Point72 Terms of Use (https://point72.com/terms-of-use/) and our Global Privacy Policy (https://point72.com/global-privacy-policy), which describe your rights and how we handle personal and other data. If you cannot access these links, please notify us by replying to this message and we will send the contents to you.
Point72 does not warrant this e-mail message or any attachments is virus-free and is not liable for any losses or responsibilities arising from any virus being transmitted by this communication. E-mail communication is not a secure method of communication, can be intercepted and cannot be guaranteed to be error free.
By communicating with Point72 you acknowledge that you have read, understood and consented, where legally required and permitted, to the Disclaimer above, including the Point72 Terms of Use and the Global Privacy Policy referenced therein.

Looks good to go


Update config file parsing

Add menu text (commented out):
"USB Nugget Settings:
Here you can change the vendor ID (VID) and product ID (PID) that the USB Nugget reports itself as to any computer it is plugged in to. By default, the Nugget is set to identify as an Apple keyboard.
Wi-Fi Menu:
Change these settings to modify the Wi-Fi network name and password the Nugget creates for its Wi-Fi interface. Change the password to prevent others from logging into your nugget. Passwords must be at least 8 characters in length."
❌ Changing the Wi-Fi network name in the .conf file does not change the Wi-Fi network name
❌ Changing the Wi-Fi network password in the .conf file does not change the Wi-Fi network password
My conf file:
`# Settings
password must be 8 chars or longer
network = "WhompusNugget"
password = "password123"
vid = "0x05ac"
pid = "0x20b"
`


Any official plans to support the RUST SDK

Any official plans to support the RUST SDK

No, we don't have any plan for RUST


CallBack

Is there a way to use the Manhattan Callback and get its returned value? (not by the Solver itself.)
Something like:
NodeEvaluator2 manhattan_cost_callback = new Manhattan(location, coeff);
int distance = manhattan_cost_callback(i , j);

Or must I copy the distance calculation into a dedicated function?
Guy

I think it should work, why do you want to do it ?

Thx
I would like to list the solution's Nodes and provide the distance/cost between each consecutive pair.
Not clear how to pass the first Node and second Node indices to the callback.
Also if it's just:
int distance = manhattan_cost_callback
then VS indicates: Error	CS0029	Cannot implicitly convert type 'Google.OrTools.ConstraintSolver.NodeEvaluator2' to 'double'

Well
typedef RoutingNodeEvaluator2 NodeEvaluator2
src: https://github.com/google/or-tools/blob/master/ortools/constraint_solver/routing.h#L216
Then
typedef ResultCallback2<int64, RoutingNodeIndex, RoutingNodeIndex> RoutingNodeEvaluator2;
src: https://github.com/google/or-tools/blob/master/ortools/constraint_solver/routing_types.h#L40
Then
template <class R, class A1, class A2> class ResultCallback2 {
...
  virtual R Run(A1, A2) = 0;

src: https://github.com/google/or-tools/blob/master/ortools/base/callback.h#L76
So once you have instantiated your callback object:
RoutingModel::NodeEvaluator2 manhattan_cost_callback = new Manhattan(location, coeff);

You can call it using:
int distance = manhattan_cost_callback.Run(node_idx1, node_idx2);

Using long no compiler error. (not int)
Will test later.
Thx


Error: Error: connect ECONNREFUSED <IP_ADDRESS>:80

Branch: tests
Encountered when running src/index.js against tests. I think this has to do with argon2wasm.
        at Object.dispatchError (/Users/gavinatkinson/Tlon/keygen-js/node_modules/jsdom/lib/jsdom/living/xhr-utils.js:65:19)
        at Request.client.on.err (/Users/gavinatkinson/Tlon/keygen-js/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:676:20)
        at Request.emit (events.js:187:15)
        at Request.onRequestError (/Users/gavinatkinson/Tlon/keygen-js/node_modules/request/request.js:881:8)
        at ClientRequest.emit (events.js:182:13)
        at Socket.socketErrorListener (_http_client.js:371:9)
        at Socket.emit (events.js:182:13)
        at emitErrorNT (internal/streams/destroy.js:92:8)
        at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
        at process._tickCallback (internal/process/next_tick.js:174:19) undefined

fixed by changes to argon2-wasm.

Hell yeah!


[ng2] fix sidenav menu btn 1102

fixes https://github.com/angular/angular.io/issues/2731

Ok, that was an easy fix! :)


Trackpad not working

Thanks for this config!
Things are working for me except trackpad movements are not being detected. Trackpad clicks do seem to work though. I had previously installed Asahi+Arch and the trackpad worked correctly there.
This is with a new m2 air. It sounds like there were some changes for the M2 trackpad:  https://asahilinux.org/2022/07/july-2022-release/ is there something that needs to be updated to get the trackpad working?

Do you have libinput enabled in your configuration? I.e. services.xserver.libinput.enable = true;. I've had similar symptoms without this on some machines before.
I assume the official Asahi installer would have extracted the correct firmware for the trackpad but it wouldn't hurt to use asahi-fwextract as described in the installation guide.
Otherwise, I suppose it's possible there's a kernel config issue, but I didn't see any changes to the official config that would correlate to this.

Ah, it was that :facepalm: . I had copied a config from a different laptop that had disabled libinput for the synaptics driver and I removed the synaptics specific config but missed that libinput was still disabled.
Thanks!


Postfix Expression Evaluation using Stack

I want to work on this issue in C++.

@smv1999 Yes, you can work on it 😄


xrc721 how to Hardhat

@libengd I am seeing an error in the XRC721.sol file:

@libengd I am seeing an error in the XRC721.sol file:

Oh, that's right, sorry. I put the wrong code in there. Fixed it, should be fine now!


What about an action that affects multiple stores ?

Hi Péter,
The verbosity of redux is painful at times and your solution seems brilliant.

But I'm not able to get my head around how to trigger actions that affect multiple stores.
Ex:
Assume two stores:
Auth Store
Saves session_token, session_start_time and session_valid_until_time
User Store
Saves the logged_in_user (name, email, avatar etc)
The auth api returns auth data as well user data when /login is successful. Hence, in the standard redux universe, there is an action called login:
export function login(username, password) {
  api.post('/login', {username, password}).then(res => {
    return (dispatch) => { //thunk
        dispatch({type: 'userLoginSuccess', payload: res});
    };
  })
}

Then the user store and auth store will have a case listening for 'userLoginSuccess' action type and will return a derivative of the state with required mutations.
As Repatch actions returns mutations to it's stores, can we achieve this One(action)-to-Many(reducers) flow in Repatch ?
Thanks
K

Dear Shivek,
First thank you for join repatch users.
What do you mean two stores? Redux recommends that you should maintain only one store, your singletone state of your application. If you have two store instances, you need to maintain two thunk middlewares too. So in this case your redux action won't trigger both of them, unless you dispatch your action multiple times.
I assume you mean two sub-states in the sole store, eg.:
{
  auth: {
    sessionToken,
    sessionStartTime,
    sessionValidUntilTime
  },
  user: {
    name,
    email,
    avatar
  }
}

In this case in Redux you should define two sub-reducers, and both of them listening to one action.
In Repatch terminology actions are missing. So you can't interpret to listening them.
export function login(username, password) {
  return _ => async (dispatch, getState, { api } ) => {
    const {
      sessionToken,
      sessionStartTime,
      sessionValidUntilTime,
      user
    } = await api.post('/login', { username, password });
    dispatch(state => ({
      ...state,
      auth: {
        sessionToken,
        sessionStartTime,
        sessionValidUntilTime
      },
      user
    }));
  }
}

Repatch interprets sub-reducers differently. You find it here. If your reducible data is deeply nested, you can use these helpers.
I hope I answered your question well.

@jayhasyee
Yup. You answered it to perfection. npm installing repatch for my next project !
Thanks you.


Concat_Include_collection_ignored throws

Microsoft.EntityFrameworkCore.Query.QueryLoggingSqlServerTest.Concat_Include_collection_ignored

Assert.Contains() Failure
Not found: The Include operation for navigation '[o].OrderDetails' is unnecessary and was ignored because the navigation is not reachable in the final query results. See https://go.microsoft.com/fwlink/?linkid=850303 for more information.
In value:  SelectListIterator<ValueTuple<LogLevel, EventId, String, Object, Exception>, String> ["(queryContext) => new QueryingEnumerable<Order>(\r"..., "Creating DbCommand for 'ExecuteReader'.", "Created DbCommand for 'ExecuteReader' (0ms).", "A data reader was disposed."]
   at Microsoft.EntityFrameworkCore.Query.QueryLoggingSqlServerTest.Concat_Include_collection_ignored() in C:\aspnet\EntityFrameworkCore\test\EFCore.SqlServer.FunctionalTests\Query\QueryLoggingSqlServerTest.cs:line 130

We allow include after set operation.
#16065


Request to add chemformula package

The mhchem package is already integrated in MathJax, but I find the chemformula package more versatile and easier to use compared to mhchem.
Here is the CTAN page for chemformula: https://www.ctan.org/pkg/chemformula
Consider the following reaction:

Using mhchem, this can be typeset using:
\ce{Hg^2+ ->[I-]
$\underset{\mathrm{red}}{\ce{HgI2}}$
->[I-]
$\underset{\mathrm{red}}{\ce{[Hg^{II}I4]^2-}}$
}

Using chemformula,
\ch{Hg^2+ ->[ I- ] !(red)( HgI2 ) ->[ I- ] !(red)( [Hg^{II}I4]^2- )}

Which one is shorter and easier?

It is not a matter of which is shorter or easier, it is a matter of development resources.  The original author of the LaTeX version of mhchem volunteered to implement mhchem for MathJax, and continues to maintain it.  That is the reason that package is available in MathJax.  To support chemformula, someone would need to re-implement it in javascript, and maintain it once that is done.  That is a non-trivial task, and not one that we have the resources to undertake at the moment.
If someone wished to fund the development of a chemformula extension for MathJax, then we could look into making that happen.  Or if someone wanted to contribute their time to develop the extension as a third-party extension (as mhchem is), we would be happy to review that and document that is is available.