[All hosts] yo office updates to quick starts and tutorials (#961)

Start of updates to Excel (basic) qs; with minor changes to notes and other related files too.

Update screenshot image.

More updates to Excel task pane quick start.

Relabel Excel quick starts in the TOC.

Minor updates.

Update TOC text.

Update name of include file to fix build issue.

Minor updates to Excel task pane qs.

Update Excel task pane (Angular) quick start.

Update Excel task pane (React) quick start; minor changes to other Excel task pane quick starts.

Update note structure in Excel qs Try it out section.

Minor update.

Minor update.

Minor update.

Update Excel React Yo prompt screenshot.

Update Excel (Vue) quick start.

Update Excel Angular Yo prompt screenshot.

Update Excel Custom Functions quick start.

Update yo prereq include, yo project components js, and excel cf qs and tutorial.

Changes to Excel Custom Functions quick start and tutorial.

Update CF articles.

Update CF articles.

Fix steps in Excel CF quick start (formatted as markdown, not HTML).

Convert HTML markup to markdown in the Excel Custom Functions tutorial.

Fix note indentation in Excel CF tutorial.

Fix typo (add closing ticks after code sample.

Update Word quick start.

Fix screenshot mistake.

Fix typo.

Update PowerPoint quick start.

Fix typos.

Update OneNote quick start.

Add (missing) image.

Minor changes.

Minor change in wording.

Update code comments.

Update Project quick start and Sideload on Windows topic.

Update sideloading topics.

Update Word quick start to reflect new functionality and minor wording updates to other quick starts.

Update info about trusting cert in the custom functions debugging article.

Fix typo.

Remove 'Web' from 'Office Web Add-ins'.

Change text for links to OfficeDev/office-generator/src/docs/ssl.md to match new page title.

Remove troubleshooting info from OneNote quick start.

Streamline language around testing your add-in on different platforms.

Shorten 'npm run-script [script]' to 'npm run [script]'.

Additional updates to 'npm start...' commands.

Update language designation for command line code blocks.

Fix typo in yo office prompt text.

Add language designation to code blocks.

Add language designation to code block.

Updates to Angular qs.

Minor updates.

Update React quick start and other minor changes.

Minor updates to 'Explore the project' section of quick starts.

Minor updates to 'Explore the project' section of quick starts.

Update Excel Vue quick start.

Update CF tutorial.

Update CF tutorial.

Update CF tutorial (fix typo).

CF tutorial - minor updates.

Fix typo in streaming custom function.

Update verbiage in CF tutorial about re-registering the add-in.

Add 'npm run build' command after adding each new function.

Fix typos.

updating quick start with Ricky's feedback from bug bash

fixes per Ricky's bug bash comments

update images

minor tweak in tutorial

Docs Build status updates of commit bd81166:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/custom-functions-debugging.md
:white_check_mark:Succeeded

docs/images/12-10-fork-cf-pic.jpg
:white_check_mark:Succeeded

docs/images/excel-quickstart-addin-3b.png
:white_check_mark:Succeeded

docs/images/excel-quickstart-addin-3c.png
:white_check_mark:Succeeded

docs/images/list-stock-ticker-red.png
:white_check_mark:Succeeded

docs/images/onenote-debug.png
:white_check_mark:Succeeded

docs/images/onenote-first-add-in-3.png
:white_check_mark:Succeeded

docs/images/onenote-first-add-in-4.png
:white_check_mark:Succeeded

docs/images/powerpoint_quickstart_addin_1b.png
:white_check_mark:Succeeded

docs/images/powerpoint_quickstart_addin_1c.png
:white_check_mark:Succeeded

docs/images/powerpoint_quickstart_addin_3b.png
:white_check_mark:Succeeded

docs/images/powerpoint_quickstart_addin_3c.png
:white_check_mark:Succeeded

docs/images/project-quickstart-addin-1.png
:white_check_mark:Succeeded

docs/images/project_quickstart_addin_1.png
:white_check_mark:Succeeded

docs/images/project_quickstart_addin_2.png
:white_check_mark:Succeeded

docs/images/project_quickstart_addin_3.png
:white_check_mark:Succeeded

docs/images/select-insert.png
:white_check_mark:Succeeded

docs/images/word-quickstart-addin-1.png
:white_check_mark:Succeeded

docs/images/word-quickstart-addin-1c.png
:white_check_mark:Succeeded

docs/images/word-quickstart-addin-2b.png
:white_check_mark:Succeeded

docs/images/yo-office-excel-angular-2.png
:white_check_mark:Succeeded

docs/images/yo-office-excel-angular.png
:white_check_mark:Succeeded

docs/images/yo-office-excel-cf.png
:white_check_mark:Succeeded

docs/images/yo-office-excel-react-2.png
:white_check_mark:Succeeded

docs/images/yo-office-excel-react.png
:white_check_mark:Succeeded

docs/images/yo-office-excel.png
:white_check_mark:Succeeded

docs/images/yo-office-jquery.png
:white_check_mark:Succeeded

docs/images/yo-office-manifest-only-vue.png
:white_check_mark:Succeeded

docs/images/yo-office-manifest-only.png
:white_check_mark:Succeeded

docs/images/yo-office-onenote-jquery.png
:white_check_mark:Succeeded

docs/images/yo-office-onenote.png
:white_check_mark:Succeeded

docs/images/yo-office-powerpoint-jquery.png
:white_check_mark:Succeeded

docs/images/yo-office-powerpoint.png
:white_check_mark:Succeeded

docs/images/yo-office-project-jquery.png
:white_check_mark:Succeeded

docs/images/yo-office-project.png
:white_check_mark:Succeeded

docs/images/yo-office-word-jquery.png
:white_check_mark:Succeeded

docs/images/yo-office-word.png
:white_check_mark:Succeeded

docs/images/yo-office.png
:white_check_mark:Succeeded

docs/images/zztest.png
:white_check_mark:Succeeded

docs/includes/note-yeoman-generator-update.md
:white_check_mark:Succeeded

docs/includes/quickstart-yo-prerequisites.md
:white_check_mark:Succeeded

docs/includes/quickstart-yo-start-server-excel.md
:white_check_mark:Succeeded

docs/includes/yo-task-pane-project-components-js.md
:white_check_mark:Succeeded

docs/quickstarts/excel-custom-functions-quickstart.md
:white_check_mark:Succeeded

docs/quickstarts/excel-quickstart-angular.md
:white_check_mark:Succeeded

docs/quickstarts/excel-quickstart-jquery.md
:white_check_mark:Succeeded

docs/quickstarts/excel-quickstart-react.md
:white_check_mark:Succeeded

docs/quickstarts/excel-quickstart-vue.md
:white_check_mark:Succeeded

docs/quickstarts/onenote-quickstart.md
:white_check_mark:Succeeded

docs/quickstarts/powerpoint-quickstart.md
:white_check_mark:Succeeded

This comment lists only the first 50 files in the pull request.
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Add documentation for datastream config override support via AEP Mobile SDK

AEP Mobile SDK is adding support for datastream ID override and datastream config override, so would like this page to include some details for that.
Mobile docs PR for reference:
https://github.com/AdobeDocs/aep-mobile-sdkdocs/pull/427

Closing this issue as it was tracked and resolved in PLAT-171257.


fix: ListObjects returning IDs not from the chosen type when contextu…

Fix for https://github.com/openfga/openfga/issues/354

Codecov Report
Base: 83.77% // Head: 83.66% // Decreases project coverage by -0.11% :warning:

Coverage data is based on head (ef24cbb) compared to base (46d5914).
Patch coverage: 92.08% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #366      +/-   ##
==========================================
- Coverage   83.77%   83.66%   -0.12%
==========================================
  Files          85       85
  Lines       13697    13923     +226
==========================================
+ Hits        11474    11648     +174
- Misses       1852     1892      +40
- Partials      371      383      +12

Impacted Files
Coverage Δ

server/test/write.go
88.88% <ø> (ø)

server/commands/write_assertions.go
70.37% <50.00%> (-13.85%)
:arrow_down:

server/commands/write.go
82.95% <72.41%> (-9.41%)
:arrow_down:

server/commands/check.go
85.08% <74.28%> (-2.33%)
:arrow_down:

server/commands/expand.go
80.98% <81.81%> (-8.82%)
:arrow_down:

internal/validation/validation.go
89.18% <89.18%> (ø)

server/commands/list_objects.go
79.89% <90.00%> (+1.50%)
:arrow_up:

pkg/typesystem/typesystem.go
81.38% <92.00%> (+1.16%)
:arrow_up:

pkg/tuple/tuple.go
100.00% <100.00%> (+5.17%)
:arrow_up:

pkg/tuple/validation.go
54.54% <100.00%> (+21.21%)
:arrow_up:

... and 17 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Standardized token symbology for tomo wrapped coins add "tw" or "t" in front

Hi, would the Tomo team kindly consider a standardized token symbology for Tomo wrapped coins adding "tw" or "t" in front? This would prevent confusion once an erc-20 is wrapped from Ethereum to Tomochain.
As ex. on Ethereum USD Coin would be USDC. While on Tomochain the wrapped version would be twUSDC, or tUSDC.
Kindly provide feedback on the same as I added a dozen tokens to Tomobridge and would kindly request Tomochain feedback before proceeding with any token updates.
thanks,
D

Ok, we will consider it.

Ok, we will consider it.

ty. I edited pull request #149 to not yet include "tw" or "t" pending your feedback. Kindly let me know and If required I can update the token info. tsk, D

ty. I edited pull request #149 to not yet include "tw" or "t" pending your feedback. Kindly let me know and If required I can update the token info. tsk, D


Psql query parameter casting sequence changing result value

Laravel Version: v8.34.0
PHP Version: 7.4.10
Database Driver & Version: PostgreSQL 12.6 (Ubuntu 12.6-0ubuntu<IP_ADDRESS>) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit

Description:
There is some strange behavior going on when casting named parameters twice on query builder; It seems like the first time one named attribute is casted, it changes it's value for the next cast
Steps To Reproduce:
Running this code on tinker:
>>> \DB::select("SELECT :date::DATE, :date::TIMESTAMPTZ", ['date' => '2021-01-01 10:00:00']);
=> [
     {#4825
       +"date": "2021-01-01",
       +"timestamptz": "2021-01-01 00:00:00+00",
     },
   ]
>>>

I was expecting for the timestamptz to be "2021-01-01 10:00:00+00"...
But if I change the select order, it does work:
>>> \DB::select("SELECT :date::TIMESTAMPTZ, :date::DATE", ['date' => '2021-01-01 10:00:00']);
=> [
     {#4818
       +"timestamptz": "2021-01-01 10:00:00+00",
       +"date": "2021-01-01",
     },
   ]

Is this a Laravel thing or should I open this up somewhere else?
Note: When running the same query on psql terminal, I get the expected result:
# \set date '2021-01-01 10:00:00'
# SELECT :'date'::DATE, :'date'::TIMESTAMPTZ;
    date    │      timestamptz
════════════╪════════════════════════
 2021-01-01 │ 2021-01-01 10:00:00+00
(1 row)

Does it work as expected with just using PDO?
Also when testing with raw PDO be sure to use the same PDO attributes Laravel uses by default for comparision, specially ATTR_EMULATE_PREPARES
Can you try using SQL-standard casts? SELECT CAST(:date AS TIMESTAMPTZ), cast(:date AS DATE)

Hey there,
Can you first please try one of the support channels below? If you can actually identify this as a bug, feel free to report back and I'll gladly help you out and re-open this issue.

Laracasts Forums
Laravel.io Forums
StackOverflow
Discord
Larachat
IRC

Thanks!

It does seems to be a problem with PDO. Thanks anyway!

@gilbertorussi I was about to post the same after some testing:
<?php

$pdo = new PDO('pgsql:host=<IP_ADDRESS>;port=5432', 'postgres', 'Rodrigo123456', [
    PDO::ATTR_CASE => PDO::CASE_NATURAL,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
    PDO::ATTR_STRINGIFY_FETCHES => false,
]);

$date = '2021-01-01 10:00:00';

// original order
$stmt = $pdo->prepare('SELECT :date::DATE, :date::TIMESTAMPTZ');
$stmt->bindParam('date', $date);
$stmt->execute();

print_r($stmt->fetchAll(PDO::FETCH_ASSOC));
echo $date, PHP_EOL;

// using casts
$stmt = $pdo->prepare('SELECT CAST(:date AS DATE), CAST(:date AS TIMESTAMPTZ)');
$stmt->bindParam('date', $date);
$stmt->execute();

print_r($stmt->fetchAll(PDO::FETCH_ASSOC));
echo $date, PHP_EOL;

// inverted order
$stmt = $pdo->prepare('SELECT :date::TIMESTAMPTZ, :date::DATE');
$stmt->bindParam('date', $date);
$stmt->execute();

print_r($stmt->fetchAll(PDO::FETCH_ASSOC));
echo $date, PHP_EOL;

output
Array
(
    [0] => Array
        (
            [date] => 2021-01-01
            [timestamptz] => 2021-01-01 00:00:00+00
        )

)
2021-01-01 10:00:00
Array
(
    [0] => Array
        (
            [date] => 2021-01-01
            [timestamptz] => 2021-01-01 00:00:00+00
        )

)
2021-01-01 10:00:00
Array
(
    [0] => Array
        (
            [timestamptz] => 2021-01-01 10:00:00+00
            [date] => 2021-01-01
        )

)

Can't say it is a known issue with PDO or if there is a bug tracker open within PHP itself.


Result analysis and ask for solution

Dear author,
I rendered a bullet-time effect for an in-the-wild video.  But as shown in the video (rendered frames) below, you can find that the human body does not stand up straight on the ground. Do you know the reason for this and how to solve it?
Thanks a lot!
https://github.com/chungyiweng/humannerf/assets/26050719/a760a07b-d6a0-4b51-8958-34925b0a31bf

https://github.com/chungyiweng/humannerf/assets/26050719/275799a7-bcae-4d0e-800c-6449c4b96765

Even I faced the same issue with my own data. Trying to figure out why is this the case..
It maybe due to the Rh or Th values of the smpl.
If you figured it out, let me know as well

Even I faced the same issue with my own data. Trying to figure out why is this the case..
It maybe due to the Rh or Th values of the smpl. If you figured it out, let me know as well

I still cannot figure it out. Do you know other pose estimation method that might fix this issue?

Even I faced the same issue with my own data. Trying to figure out why is this the case..
It maybe due to the Rh or Th values of the smpl. If you figured it out, let me know as well

I still cannot figure it out. Do you know other pose estimation method that might fix this issue?

Did you used the weak perspective camera transformation for custom videos? If not , please try.
And then train the model.

Even I faced the same issue with my own data. Trying to figure out why is this the case..
It maybe due to the Rh or Th values of the smpl. If you figured it out, let me know as well

I still cannot figure it out. Do you know other pose estimation method that might fix this issue?

Did you used the weak perspective camera transformation for custom videos? If not , please try. And then train the model.

Yes, I did. I used the VIBE to compute the smpl parameters and the camera parameters and got those results. I saw your discussion in https://github.com/chungyiweng/humannerf/issues/65. I think you are right that this might caused by the Rh and Th. But this problem cannot be solved by using weak perspective camera. Do you think that the camera pose and smpl parameters can be decoupled?

Even I faced the same issue with my own data. Trying to figure out why is this the case..
It maybe due to the Rh or Th values of the smpl. If you figured it out, let me know as well

I still cannot figure it out. Do you know other pose estimation method that might fix this issue?

Did you used the weak perspective camera transformation for custom videos? If not , please try. And then train the model.

Yes, I did. I used the VIBE to compute the smpl parameters and the camera parameters and got those results. I saw your discussion in #65. I think you are right that this might caused by the Rh and Th. But this problem cannot be solved by using weak perspective camera. Do you think that the camera pose and smpl parameters can be decoupled?

There's another method which you can try, it's from Easymocap ( the repository which gave Zju-mocap dataset )
There you can run motion capture on your data and get the accurate smpl. Just before training on humannerf transform the matrix as you did here and see if it improves.
I am using That Repo for both mono and multi smpl. Works great

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap.

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you successfully run your dataset in HumanNeRF from Easymocap?

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

Oh, thank you very much. Could you tell me what axis you use in People_snapshot？

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

Oh, thank you very much. Could you tell me what axis you use in People_snapshot？ Can you elaborate on what is an axis of such monocular videos？

If you particularly looking to work on people_snapshot, check this repo https://github.com/JanaldoChen/Anim-NeRF.git
They did NERF just on Snapshot dataset.

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

Oh, thank you very much. Could you tell me what axis you use in People_snapshot？ Can you elaborate on what is an axis of such monocular videos？

If you particularly looking to work on people_snapshot, check this repo https://github.com/JanaldoChen/Anim-NeRF.git
They did NERF just on Snapshot dataset.

Ok, I want to train HumanNeRF with Snap_shot dataset

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

Oh, thank you very much. Could you tell me what axis you use in People_snapshot？ Can you elaborate on what is an axis of such monocular videos？

If you particularly looking to work on people_snapshot, check this repo https://github.com/JanaldoChen/Anim-NeRF.git
They did NERF just on Snapshot dataset.

Ok, I want to train HumanNeRF with Snap_shot dataset

I mean to say, u can check the way they generated smpl for snapshot and try the same then use HumanNeRF to train

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

Oh, thank you very much. Could you tell me what axis you use in People_snapshot？ Can you elaborate on what is an axis of such monocular videos？

If you particularly looking to work on people_snapshot, check this repo https://github.com/JanaldoChen/Anim-NeRF.git
They did NERF just on Snapshot dataset.

Ok, I want to train HumanNeRF with Snap_shot dataset

I mean to say, u can check the way they generated smpl for snapshot and try the same then use HumanNeRF to train

I get it. Thank you!

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

Oh, thank you very much. Could you tell me what axis you use in People_snapshot？ Can you elaborate on what is an axis of such monocular videos？

If you particularly looking to work on people_snapshot, check this repo https://github.com/JanaldoChen/Anim-NeRF.git
They did NERF just on Snapshot dataset.

Ok, I want to train HumanNeRF with Snap_shot dataset

I mean to say, u can check the way they generated smpl for snapshot and try the same then use HumanNeRF to train

I had an error using Anim-NeRF. Then I used Easy_mocap.

Can I just use these parameters directly? How should I modify them？

and I find another pose in other file, which file should I choose?

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

I have successfully used Easymocap and train the dataset, thank you very much!

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

Oh, thank you very much. Could you tell me what axis you use in People_snapshot？ Can you elaborate on what is an axis of such monocular videos？

If you particularly looking to work on people_snapshot, check this repo https://github.com/JanaldoChen/Anim-NeRF.git
They did NERF just on Snapshot dataset.

Ok, I want to train HumanNeRF with Snap_shot dataset

I mean to say, u can check the way they generated smpl for snapshot and try the same then use HumanNeRF to train

I had an error using Anim-NeRF. Then I used Easy_mocap.  Can I just use these parameters directly? How should I modify them？  and I find another pose in other file, which file should I choose?

Always use the  output-smpl-3d one. That's the final SMPL values

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

I have successfully used Easymocap and train the dataset, thank you very much!

Great to hear that!! Good luck on your work

I am using That Repo for both mono and multi smpl. Works great.

Thanks a lot! I will have a try with Easymocap. By the way, is this the instruction (https://chingswy.github.io/easymocap-public-doc/develop/02_fitsmpl.html) that you followed to get the accurate?

Hello, have you used Easy_mocap to predict smpl parameters and successfully run it on humannerf @xyIsHere

I used Easymocap and trained 3 dataset. People snapshot, Humam3.6m and random YouTube ones

is the smpl patameters of People_snapshot estimated from Easymocap correct?

The parameters generated are correct, one just has to make sure about the axis of such monocular videos. Because during rendering the result maybe like the one you saw at the top of this issue.
Anyways the axis of Original SMPL and the EasyMocap Smpl are different. Please remember that

I have successfully used Easymocap and train the dataset, thank you very much!

Great to hear that!! Good luck on your work

I find that the predicted smpl parameters of Easymocap are not completely correct and the result rendering is problematic.

may I know the settings you used for generating the smpl and the front view of the render.
Lastly, is this the trained result,  if so how many epoch did you run?

I just run the "python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl. The result is the novel view. I think maybe to human is fat, so the smpl generated is wrong.

I just run the "python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl. The result is the novel view. I think maybe to human is fat, so the smpl generated is wrong.

The human is not that fat since I have trained the same subject succesfully. It seems the training is still incomplete since the hands are not rendered.
python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl
try to add --mode and set it to some sort of mono.
Please make sure to process the files accurately and also the Mask is really important

I just run the "python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl. The result is the novel view. I think maybe to human is fat, so the smpl generated is wrong.

The human is not that fat since I have trained the same subject succesfully. It seems the training is still incomplete since the hands are not rendered.
python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl
try to add --mode and set it to some sort of mono.
Please make sure to process the files accurately and also the Mask is really important

Thank you. I'll give it a try and let you know.

I just run the "python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl. The result is the novel view. I think maybe to human is fat, so the smpl generated is wrong.

The human is not that fat since I have trained the same subject succesfully. It seems the training is still incomplete since the hands are not rendered.
python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl
try to add --mode and set it to some sort of mono.
Please make sure to process the files accurately and also the Mask is really important

Thank you. I'll give it a try and let you know.

have a look at this. I trained it for 165k epochs

I just run the "python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl. The result is the novel view. I think maybe to human is fat, so the smpl generated is wrong.

The human is not that fat since I have trained the same subject succesfully. It seems the training is still incomplete since the hands are not rendered.
python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl
try to add --mode and set it to some sort of mono.
Please make sure to process the files accurately and also the Mask is really important

Thank you. I'll give it a try and let you know.

have a look at this. I trained it for 165k epochs

This is very good. Is your smpl model generated from Easymocap better than mine?

I just run the "python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl. The result is the novel view. I think maybe to human is fat, so the smpl generated is wrong.

The human is not that fat since I have trained the same subject succesfully. It seems the training is still incomplete since the hands are not rendered.
python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl
try to add --mode and set it to some sort of mono.
Please make sure to process the files accurately and also the Mask is really important

Thank you. I'll give it a try and let you know.

have a look at this. I trained it for 165k epochs

This is very good. Is your smpl model generated from Easymocap better than mine?

I deleted the smpl results since I focused on multi-view data.
but is it possible for you to share me the processing file you used for snapshot.
I can check and see the error if any.

The processing file is simple.
path_smpl = '/home/shengbo/EasyMocap-master/data/male-2-sport/output-smpl-3d/smplfull/'+i[:-4]+'/'+str(1000000+int(i[:-4]))[1:]+'.json'
    if not os.path.exists(path_smpl):
        print(path_smpl)
        continue

    with open(path_smpl,'r') as f:
        data = json.load(f)

    print(type(data))
    print(data.keys())
    poses = np.array(data["annots"][0]['poses'][0], dtype=np.float32)
    Rh = np.array(data["annots"][0]['Rh'][0], dtype=np.float32)
    Th = np.array(data["annots"][0]['Th'][0], dtype=np.float32)

    betas = np.array(data["annots"][0]['shapes'][0], dtype=np.float32)
    #K = np.array(cam_body_info['cam_intrinsics'], dtype=np.float32)
    #E = np.array(cam_body_info['cam_extrinsics'], dtype=np.float32)

    K = np.array( [
  [1296.0000000, 0.0000000,<PHONE_NUMBER>],
  [0.0000000, 1296.0000000,<PHONE_NUMBER>],
  [0.0000000, 0.0000000, 1.0000000]
], dtype=np.float32)

    # pose = np.eye(4, dtype=np.float32)
    # pose[:3, :3] = R_.transpose()
    # pose[:3, 3] = R_.transpose() @ -t_
    # c2w = torch.from_numpy(pose[:3, :4]).float()
    E = np.array([[1.0, 0.0, 0.0, 0.0],
        [0.0, 1.0, 0.0, 0.0],
        [0.0, 0.0, 1.0, 0.0],
        [0.0, 0.0, 0.0, 1.0]], dtype=np.float32)

    all_betas.append(betas)

    ##############################################
    # Below we tranfer the global body rotation to camera pose

    # Get T-pose joints

    _, tpose_joints = smpl_model(np.zeros_like(poses), betas)

    # get global Rh, Th
    #pelvis_pos = tpose_joints[0].copy()

    # get refined T-pose joints
    #tpose_joints = tpose_joints - pelvis_pos[None, :]

    # remove global rotation from body pose
    #poses[:3] = 0

    # get posed joints using body poses without global rotation
    _, joints = smpl_model(poses, betas)
    #joints = joints - pelvis_pos[None, :]

    mesh_infos[i[:-4]] = {
        'Rh': Rh,
        'Th': Th,
        'poses': poses,
        'joints': joints,
        'tpose_joints': tpose_joints
    }

I just run the "python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl. The result is the novel view. I think maybe to human is fat, so the smpl generated is wrong.

The human is not that fat since I have trained the same subject succesfully. It seems the training is still incomplete since the hands are not rendered.
python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-sport/ --work internet" to get smpl
try to add --mode and set it to some sort of mono.
Please make sure to process the files accurately and also the Mask is really important

Thank you. I'll give it a try and let you know.

have a look at this. I trained it for 165k epochs

This is very good. Is your smpl model generated from Easymocap better than mine?

I deleted the smpl results since I focused on multi-view data.
but is it possible for you to share me the processing file you used for snapshot. I can check and see the error if any.

Is it possible that because I trained so few images, I only used a few images?

use as many images as you can and train it longer. hopefully it will improve

OK, thank you very much!

use as many images as you can and train it longer. hopefully it will improve

I found out that this was because I chose the wrong pose to render a new perspective. Did you choose a random pose for a frame to render?

use as many images as you can and train it longer. hopefully it will improve

I found out that this was because I chose the wrong pose to render a new perspective. Did you choose a random pose for a frame to render? May I ask if you have tried rendering from a new perspective, rather than just a trained perspective?

like what sort of perspective are you referring to? if you can clarify it a bit and possibly show the result

Yes, the camera angle. I chose an smpl that renders images from different camera perspectives. But I've found that it only works well in training perspective. New view rendered below:

Yes, the camera angle. I chose an smpl that renders images from different camera perspectives. But I've found that it only works well in training perspective. New view rendered below:

I tried to use more training images and it worked better

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py where the cameras.pickle is loaded, play with that value and u will get new perspective renders better

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl.
Could tell me where can I find the correct axis?

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

Hey, I actually asked a few other people under my contact and it seems to be an issue for Monocular Videos itself. Many face such issues. You can refer to this issue I raised there. Hope it helps.
https://github.com/wyysf-98/MoCo_Flow/issues/1#issue-1954072829
If it doesn't then try SMPL once with PARE or VIBE and parse as WILD dataset in Humannerf by body-centering around the pelvis joint

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

https://github.com/chungyiweng/humannerf/assets/122679046/4e3c2154-4613-4c1b-b268-f8bb793397b7
https://github.com/chungyiweng/humannerf/assets/122679046/e4fdd4c3-9823-4b6c-ad6d-afd3a88a4378
The render result depends on which smpl parameter I select

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

https://github.com/chungyiweng/humannerf/assets/122679046/d4c43984-d13f-487e-8f6c-9e33ac976d53
https://github.com/chungyiweng/humannerf/assets/122679046/890afb2b-5242-4919-ab60-296ad5fc3be1

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

male-3-casual.mp4
male-3-plaza.mp4

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

what exactly you mean by different smpl parameters.
as per what I remember, when you run mocap.py and passing --write_smpl_full,  you get 2 folders in the output, smpl and smpl_full.
are you talking about this?
or did you pass any new arguments in the mocap.py ? Can you inform it?

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

male-3-casual.mp4
male-3-plaza.mp4

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

what exactly you mean by different smpl parameters. as per what I remember, when you run mocap.py and passing --write_smpl_full, you get 2 folders in the output, smpl and smpl_full.
are you talking about this?
or did you pass any new arguments in the mocap.py ? Can you inform it?

no, I don't talk about the smpl_full. I choose one smpl parameter of one image(One of the frames from the video), then I render novel view with this smpl parameter.

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

male-3-casual.mp4
male-3-plaza.mp4

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

what exactly you mean by different smpl parameters. as per what I remember, when you run mocap.py and passing --write_smpl_full, you get 2 folders in the output, smpl and smpl_full.
are you talking about this?
or did you pass any new arguments in the mocap.py ? Can you inform it?

no, I don't talk about the smpl_full. I choose one smpl parameter of one image(One of the frames from the video), then I render novel view with this smpl parameter.

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

male-3-casual.mp4
male-3-plaza.mp4

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

what exactly you mean by different smpl parameters. as per what I remember, when you run mocap.py and passing --write_smpl_full, you get 2 folders in the output, smpl and smpl_full.
are you talking about this?
or did you pass any new arguments in the mocap.py ? Can you inform it?

no, I don't talk about the smpl_full. I choose one smpl parameter of one image(One of the frames from the video), then I render novel view with this smpl parameter.

I see. It's random. Some smpl are good while some are bad for the same video? That's strange.
Can you tell me the python script your run for mocap.py
The entire CLI arguments too

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

male-3-casual.mp4
male-3-plaza.mp4

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

what exactly you mean by different smpl parameters. as per what I remember, when you run mocap.py and passing --write_smpl_full, you get 2 folders in the output, smpl and smpl_full.
are you talking about this?
or did you pass any new arguments in the mocap.py ? Can you inform it?

no, I don't talk about the smpl_full. I choose one smpl parameter of one image(One of the frames from the video), then I render novel view with this smpl parameter.

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

male-3-casual.mp4
male-3-plaza.mp4

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

what exactly you mean by different smpl parameters. as per what I remember, when you run mocap.py and passing --write_smpl_full, you get 2 folders in the output, smpl and smpl_full.
are you talking about this?
or did you pass any new arguments in the mocap.py ? Can you inform it?

no, I don't talk about the smpl_full. I choose one smpl parameter of one image(One of the frames from the video), then I render novel view with this smpl parameter.

I see. It's random. Some smpl are good while some are bad for the same video? That's strange.
Can you tell me the python script your run for mocap.py The entire CLI arguments too

OK, thank you !!!
import os
from os.path import exists
from os.path import join
import sys
sys.path.append('/home/shengbo/EasyMocap-master')
from easymocap.config import Config, CfgNode
from glob import glob
from easymocap.mytools.debug_utils import run_cmd, check_exists, myerror, log, mywarn
def check_image(path):
if not check_exists(join(path, 'images')):
mywarn('Images not found in {}'.format(path))
if exists(join(path, 'videos')):
cmd = 'python3 apps/preprocess/extract_image.py {}'.format(path)
run_cmd(cmd)
def check_camera(path, mode):
if mode == 'scan':
return 0
#print("??????????????????")
if not os.path.exists(join(path, 'intri.yml')) or
not os.path.exists(join(path, 'extri.yml')):
myerror('[error] No camera calibration found in {}'.format(path))
raise FileNotFoundError
def format_subs(subs):
subs = ', '.join(list(map(lambda x:"'{}'".format(x), subs)))
subs = f'''"[{subs}]"'''
return subs
def mocap_demo(path, mode, exp=None):
# check images
check_image(path)
# check camera
check_camera(path, mode)
# run triangulation
if mode in ['object3d']:
dir_k3d = join(path, 'output-object3d')
else:
dir_k3d = join(path, 'output-keypoints3d')
if not check_exists(join(dir_k3d, 'keypoints3d')) or args.restart_mocap:
if 'half' in mode:
cfg_data = 'config/recon/mv1p.yml'
cfg_exp = 'config/recon/mv1p-half.yml'
elif mode == 'object3d':
cfg_data = 'config/recon/mvobj.yml'
cfg_exp = 'config/recon/tri-mvobj.yml'
elif mode.startswith('smpl-3d-mp-wild'):
cfg_data = 'config/recon/mvmp.yml'
cfg_exp = 'config/recon/mvmp-wild.yml'
elif args.mp:
# In this mode, we just perform triangulation on matched 3d keypoints
cfg_data = 'config/recon/mvmp.yml'
cfg_exp = 'config/recon/mvmp-match.yml'
else:
cfg_data = 'config/recon/mv1p.yml'
cfg_exp = 'config/recon/mv1p-total.yml'
opt_data = f'args.path {path} args.out {dir_k3d}'
if args.subs is not None:
opt_data += ' args.subs {}'.format(args.subs)
if args.subs_vis is not None:
opt_data += ' args.subs_vis {}'.format(format_subs(args.subs_vis))
if args.disable_visdetec:
opt_data += ' args.writer.visdetect.enable False'
if args.vismatch:
opt_data += ' args.writer.vismatch.enable True'
if args.disable_visrepro:
opt_data += ' args.writer.visrepro.enable False'
if args.disable_crop:
opt_data += ' args.writer.vismatch.crop False args.writer.visdetect.crop False '
if args.ranges is not None:
opt_data += ' args.ranges {},{},{}'.format(*args.ranges)
# config for experiment
opt_exp = ' args.debug {}'.format('True' if args.debug else 'False')
cmd = 'python3 apps/fit/triangulate1p.py --cfg_data {cfg_data} --opt_data {opt_data} --cfg_exp {cfg_exp} --opt_exp {opt_exp}'.format(
cfg_data=cfg_data,
cfg_exp=cfg_exp,
opt_data=opt_data,
opt_exp=opt_exp
)
run_cmd(cmd)
# compose videos
cmd = f'python3 -m easymocap.visualize.ffmpeg_wrapper {dir_k3d}/match --fps 50'
run_cmd(cmd)
# TODO: check triangulation
# run reconstruction
if mode in ['object3d']:
return 0
exp = mode if exp is None else exp
if not check_exists(join(path, 'output-{}'.format(exp), 'smpl')) or args.restart:
# load config
config = config_dict[args.mode]
cfg_data = config.data
cfg_model = config.model
cfg_exp = config.exp
_config_data = Config.load(cfg_data)
    cmd = f'python3 apps/fit/fit.py --cfg_model {cfg_model} --cfg_data {cfg_data} --cfg_exp {cfg_exp}'

    # opt data
    output = join(path, 'output-{}'.format(exp))
    opt_data = ['args.path', path, 'args.out', output]
    opt_data += args.opt_data
    opt_data += config.get('opt_data', [])
    if 'camera' in _config_data.args.keys():
        opt_data.extend(['args.camera', path])
    if args.ranges is not None:
        opt_data.extend(['args.ranges', '{},{},{}'.format(*args.ranges)])
    if args.subs is not None:
        opt_data.extend(["args.subs", "{}".format(args.subs)])
    if args.disable_vismesh:
        opt_data += ['args.writer.render.enable', 'False']
    if args.vis_scale is not None:
        opt_data += ['args.writer.render.scale', '{}'.format(args.vis_scale)]
    if args.vis_mode is not None:
        opt_data += ['args.writer.render.mode', args.vis_mode]
    if args.pids is not None and args.mp:
        opt_data += ['args.pids', ','.join(map(str, args.pids))]
    cmd += ' --opt_data "{}"'.format('" "'.join(opt_data))
    # opt model
    opt_model = config.get('opt_model', [])
    if len(opt_model) > 0:
        cmd += ' --opt_model "{}"'.format('" "'.join(opt_model))
    # opt exp
    opt_exp = ['args.monitor.printloss', "True"] + args.opt_exp
    opt_exp += config.get('opt_exp', [])
    if len(opt_exp) > 0:
        cmd += ' --opt_exp "{}"'.format('" "'.join(opt_exp))

    log(cmd.replace(output, '${output}').replace(path, '${data}'))
    run_cmd(cmd)
videoname = join(path, 'output-{}'.format(exp), 'smplmesh.mp4')
if not exists(videoname) or args.restart:
    cmd = 'python3 -m easymocap.visualize.ffmpeg_wrapper {data}/output-{exp}/smplmesh --fps 50'.format(
        data=path, exp=exp
    )
    run_cmd(cmd)

def mono_demo(path, mode, exp=None):
check_image(path)
# check cameras
if not os.path.exists(join(path, 'intri.yml')):
cmd = f'python3 apps/calibration/create_blank_camera.py {path}'
run_cmd(cmd)
print("????????????")
# run reconstruction
exp = mode if exp is None else exp
if args.subs is None:
args.subs = sorted(os.listdir(join(path, 'images')))
for sub in args.subs:
outdir = join(path, 'output-{}'.format(exp), 'smplmesh')
videoname = join(outdir, sub+'.mp4')
if os.path.exists(videoname) and not args.restart:
continue
# load config
config = config_dict[mode]
cfg_data = config.data
cfg_model = config.model
cfg_exp = config.exp
cmd = f'python3 apps/fit/fit.py --cfg_model {cfg_model} --cfg_data {cfg_data} --cfg_exp {cfg_exp}'
_config_data = Config.load(cfg_data)
    # opt data
    output = join(path, 'output-{}'.format(exp))
    opt_data = ['args.path', path, 'args.out', output, 'args.subs', format_subs([sub]).replace('"', '')]
    opt_data += args.opt_data
    opt_data += config.get('opt_data', [])
    if 'camera' in _config_data.args.keys():
        opt_data.extend(['args.camera', path])
    if args.ranges is not None:
        opt_data.extend(['args.ranges', '{},{},{}'.format(*args.ranges)])
    if args.vis_scale is not None:
        opt_data += ['args.writer.render.scale', '{}'.format(args.vis_scale)]
    if args.vis_mode is not None:
        opt_data += ['args.writer.render.mode', args.vis_mode]
    if args.pids is not None and args.mp:
        opt_data += ['args.pids', ','.join(map(str, args.pids))]
    if args.render_side:
        opt_data += ['args.writer.render.mode', "left"]
    cmd += ' --opt_data "{}"'.format('" "'.join(opt_data))
    # opt model
    opt_model = config.get('opt_model', [])
    if len(opt_model) > 0:
        cmd += ' --opt_model "{}"'.format('" "'.join(opt_model))
    # opt exp
    opt_exp = [] + args.opt_exp
    if args.debug:
        opt_exp.extend(['args.monitor.printloss', "True", 'args.monitor.check', 'True'])
    opt_exp += config.get('opt_exp', [])
    if len(opt_exp) > 0:
        cmd += ' --opt_exp "{}"'.format('" "'.join(opt_exp))

    log(cmd.replace(output, '${output}').replace(path, '${data}'))
    run_cmd(cmd)

    cmd = 'python3 -m easymocap.visualize.ffmpeg_wrapper {data}/output-{exp}/smplmesh/{sub} --fps {fps}'.format(
        data=path, exp=exp, sub=sub, fps=30
    )
    run_cmd(cmd)

def run_triangulation(cfg_data, cfg_exp, path, out, args):
opt_data = f'args.path {path} args.out {out}'
if args.subs is not None:
opt_data += ' args.subs "{}"'.format(format_subs(args.subs).replace('"', ''))
if args.subs_vis is not None:
opt_data += ' args.subs_vis {}'.format(format_subs(args.subs_vis))
if args.pids is not None and 'mp' in args.work:
opt_data += ' args.pids ' + ','.join(map(str, args.pids))
if args.disable_visdetec:
opt_data += ' args.writer.visdetect.enable False'
if args.vismatch:
opt_data += ' args.writer.vismatch.enable True'
if args.disable_visrepro:
opt_data += ' args.writer.visrepro.enable False'
if args.disable_crop:
opt_data += ' args.writer.vismatch.crop False args.writer.visdetect.crop False '
if args.vis_scale is not None:
opt_data += ' args.writer.visrepro.scale {}'.format(args.vis_scale)
opt_data += ' args.writer.visdetect.scale {}'.format(args.vis_scale)
opt_data += ' args.writer.vismatch.scale {}'.format(args.vis_scale)
if args.ranges is not None:
opt_data += ' args.ranges {},{},{}'.format(*args.ranges)
# config for experiment
opt_exp = ' args.debug {}'.format('True' if args.debug else 'False')
if args.triangulator_min_views is not None:
opt_exp += ' args.config.keypoints2d.min_view {view}'.format(view=args.triangulator_min_views)
cmd = 'python3 apps/fit/triangulate1p.py --cfg_data {cfg_data} --opt_data {opt_data} --cfg_exp {cfg_exp} --opt_exp {opt_exp}'.format(
cfg_data=cfg_data,
cfg_exp=cfg_exp,
opt_data=opt_data,
opt_exp=opt_exp
)
run_cmd(cmd)
cmd = f'python3 -m easymocap.visualize.ffmpeg_wrapper {out}/match --fps {args.fps}'
run_cmd(cmd)
def append_mocap_flags(path, output, cfg_data, cfg_model, cfg_exp, config, args):
cmd = f'python3 apps/fit/fit.py --cfg_model {cfg_model} --cfg_data {cfg_data} --cfg_exp {cfg_exp}'
_config_data = Config.load(cfg_data)
# opt data
opt_data = ['args.path', path, 'args.out', output]
if args.subs is not None:
opt_data.extend(['args.subs', format_subs(args.subs).replace('"', '')])
if args.subs_vis is not None:
opt_data.extend(['args.subs_vis', format_subs(args.subs_vis).replace('"', '')])
opt_data += args.opt_data
opt_data += config.get('opt_data', [])
if 'camera' in _config_data.args.keys():
opt_data.extend(['args.camera', path])
if args.ranges is not None:
opt_data.extend(['args.ranges', '{},{},{}'.format(*args.ranges)])
if args.disable_vismesh:
opt_data += ['args.writer.render.enable', 'False']
if args.vis_scale is not None:
opt_data += ['args.writer.render.scale', '{}'.format(args.vis_scale)]
if args.vis_mode is not None:
opt_data += ['args.writer.render.mode', args.vis_mode]
if args.disable_vismesh:
opt_data += ['args.writer.render.enable', 'False']
if args.pids is not None:
opt_data += ['args.pids', ','.join(map(str, args.pids))]
if len(args.pids) == 1:
opt_data[-1] += ','
if args.render_side:
opt_data += ['args.writer.render.mode', "left"]
cmd += ' --opt_data "{}"'.format('" "'.join(opt_data))
# opt model
opt_model = config.get('opt_model', [])
if len(opt_model) > 0:
cmd += ' --opt_model "{}"'.format('" "'.join(opt_model))
# opt exp
opt_exp = [] + args.opt_exp
if args.debug:
opt_exp.extend(['args.monitor.printloss', "True", 'args.monitor.check', 'True'])
opt_exp += config.get('opt_exp', [])
if len(opt_exp) > 0:
    cmd += ' --opt_exp "{}"'.format('" "'.join(opt_exp))
run_cmd(cmd)
outdir = join(output, 'smplmesh')
filenames = os.listdir(outdir)
filenames_ = [i for i in filenames if i.endswith('.jpg') and os.path.isfile(join(outdir, i))]
subs_ = [i for i in filenames if os.path.isdir(join(outdir, i))]
if len(filenames_) == 0:
    # try to find sub-folders
    if args.subs is not None:
        subs_ = args.subs
    for sub in subs_:
        cmd = f'python3 -m easymocap.visualize.ffmpeg_wrapper {output}/smplmesh/{sub} --fps {args.fps}'
        run_cmd(cmd)
else:
    cmd = f'python3 -m easymocap.visualize.ffmpeg_wrapper {output}/smplmesh --fps {args.fps}'
    run_cmd(cmd)
return cmd

def workflow(work, args):
if not os.path.exists(join(args.path, 'images')):
mywarn('Images not exists, extract it use default setting')
cmd = f'python3 apps/preprocess/extract_image.py {args.path}'
run_cmd(cmd)
workflow_dict = Config.load('config/mocap_workflow.yml')
for filename in glob(join('config', 'mocap_workflow_*.yml')):
dict_ = Config.load(filename)
workflow_dict.update(dict_)
workflow = workflow_dict[work]
for key_work in ['subs', 'pids']:
if key_work in workflow.keys():
if key_work == 'subs':
args.subs = workflow[key_work]
elif key_work == 'pids':
args.pids = workflow[key_work]
exp = work if args.exp is None else args.exp
if 'extract_keypoints' in workflow.keys() and not args.skip_detect:
if isinstance(workflow['extract_keypoints'], str):
cmd = workflow['extract_keypoints'].replace('${data}', args.path)
run_cmd(cmd)
else:
pass
if 'calibration' in workflow.keys() and workflow['calibration'] != 'none':
cmd = workflow['calibration'].replace('${data}', args.path)
run_cmd(cmd)
# check triangulation
if 'triangulation' in workflow.keys():
cfg_data = workflow.triangulation.data
cfg_exp = workflow.triangulation.exp
out = join(args.path, workflow.triangulation.out)
# check output
if not args.restart_mocap and os.path.exists(join(out, 'keypoints3d')) and len(os.listdir(join(out, 'keypoints3d'))) > 10:
log('[Skip] Triangulation already done, skipping...')
else:
run_triangulation(cfg_data, cfg_exp, args.path, out, args)
if 'fit' in workflow.keys():
if isinstance(workflow.fit, str):
workflow.fit = config_dict[workflow.fit]
cfg_data = workflow.fit.data
cfg_model = workflow.fit.model
cfg_exp = workflow.fit.exp
# check output
path = args.path
if 'output' in workflow.keys():
output = join(args.path, workflow.output)
else:
output = join(args.path, 'output-{}'.format(exp))
append_mocap_flags(path, output, cfg_data, cfg_model, cfg_exp, workflow.fit, args)
if 'postprocess' in workflow.keys():
for key, cmd in workflow.postprocess.items():
cmd = cmd.replace('${data}', args.path).replace('${exp}', args.exp)
if '${subs_vis}' in cmd:
cmd = cmd.replace('${subs_vis}', ' '.join(args.subs_vis))
if '${vis_scale}' in cmd:
cmd = cmd.replace('${vis_scale}', '{}'.format(args.vis_scale))
run_cmd(cmd)
if name == 'main':
import os
os.environ['PYOPENGL_PLATFORM'] = 'egl'
config_dict = Config.load('config/mocap_index.yml')
modes = list(config_dict.keys())
usage = '''This script helps you to motion capture from multiple views.

The following modes are supported:

'''
for mode, config in config_dict.items():
usage += '\t{:20s}: {}\n'.format(mode, config.comment)
import argparse
parser = argparse.ArgumentParser(usage=usage)
parser.add_argument('--work', type=str, default=None,
help='This is the most top abstract of the workflow')
parser.add_argument('path', type=str)
parser.add_argument('--num', type=int, default=1)
parser.add_argument('--fps', type=int, default=50)
parser.add_argument('--ranges', type=int, default=None, nargs=3)
parser.add_argument('--pids', type=int, default=None, nargs='+')
parser.add_argument('--vis_scale', type=float, default=None)
parser.add_argument('--vis_mode', type=str, default=None)
parser.add_argument('--subs', type=str, default=None, nargs='+')
parser.add_argument('--subs_vis', type=str, default=None, nargs='+')
parser.add_argument('--mode', type=str, default='smpl-3d')
parser.add_argument('--exp', type=str, default='output-smpl-3d')
parser.add_argument('--opt_data', type=str, default=[], nargs='+')
parser.add_argument('--opt_exp', type=str, default=[], nargs='+')
parser.add_argument('--debug', action='store_true')
parser.add_argument('--mono', action='store_true')
parser.add_argument('--mp', action='store_true', help='use multi-person')
parser.add_argument('--skip_detect', action='store_true')
parser.add_argument('--restart_mocap', action='store_true')
parser.add_argument('--restart', action='store_true')
parser.add_argument('--bodyonly', action='store_true')
parser.add_argument('--disable_visdetec', action='store_true')
parser.add_argument('--vismatch', action='store_true')
parser.add_argument('--render_side', action='store_true',
help='render the mesh on the right')
parser.add_argument('--disable_visrepro', action='store_true')
parser.add_argument('--disable_vismesh', action='store_true')
parser.add_argument('--disable_crop', action='store_true')
parser.add_argument('--triangulator_min_views', type=int, default=None)
args = parser.parse_args()
#print(args)
if args.work is not None:
workflow(args.work, args)
exit()
if args.mono:
mono_demo(args.path, mode='mono-'+args.mode, exp=args.exp)
else:
if args.subs is not None:
args.subs = format_subs(args.subs)
mocap_demo(args.path, mode=args.mode, exp=args.exp)
I run python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-plaza/ --work internet

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

male-3-casual.mp4
male-3-plaza.mp4

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

what exactly you mean by different smpl parameters. as per what I remember, when you run mocap.py and passing --write_smpl_full, you get 2 folders in the output, smpl and smpl_full.
are you talking about this?
or did you pass any new arguments in the mocap.py ? Can you inform it?

no, I don't talk about the smpl_full. I choose one smpl parameter of one image(One of the frames from the video), then I render novel view with this smpl parameter.

for rendering views from different perspective, you need to check the rendering camera values. Check Freeview.py

the axis of Easymocap smpl is different from original smpl. I made a custom one axis, but it's not the truth axis of Easymocap smpl. Could tell me where can I find the correct axis?

could you provide me with the rendering result? like a small video would be great

male-3-casual.mp4
male-3-plaza.mp4

Rendering results depend on which smpl parameters I choose, some of the smpl parameters predicted by Easymocap have serious errors.

what exactly you mean by different smpl parameters. as per what I remember, when you run mocap.py and passing --write_smpl_full, you get 2 folders in the output, smpl and smpl_full.
are you talking about this?
or did you pass any new arguments in the mocap.py ? Can you inform it?

no, I don't talk about the smpl_full. I choose one smpl parameter of one image(One of the frames from the video), then I render novel view with this smpl parameter.

I see. It's random. Some smpl are good while some are bad for the same video? That's strange.
Can you tell me the python script your run for mocap.py The entire CLI arguments too

mocap.txt
I  run
python3 apps/preprocess/extract_keypoints.py /home/shengbo/EasyMocap-master/data/male-2-outdoor/ --mode mp-holistic
python3 apps/demo/mocap.py /home/shengbo/EasyMocap-master/data/male-2-plaza/ --work internet


Update Tick Count Programatically

Reference Issue :  #81
Seekbar generated from XML does not accept tick count programatically.
There is a method present IndicatorSeekBar#setTickCount( count ) , but it crashes the application.

Hi, any update on this issue? I'm still facing this issue.


MSID: 93830 Version: 1 DOI: 10.1101/2<IP_ADDRESS>9779

MSID: 93830
Version: 1
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>9779
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=93830
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>9779

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/93830v1
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>9779
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/93830/v1/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

Most of the references have duplicated content.

Thanks Rebecca! Should be fixed in the next few hours


puzzle words container background

I love this wordfind game and have several puzzles at http://phaedrus.hopto.org/games/wordfind.
I like to put up a background image related to the word category but it often makes the words too hard to read.
Is there a way to create a background color behind the puzzle words on the right?
Thank you,
Cy Kurtz

Oops! Never mind. It was a browser cache problem. Thanks for a great game!


fixing the issue with possible mess when build number is reset

Please Make sure these boxes are checked before submitting your pull request - Thanks ahead!

[ ] Proper pull request title - concise and clear for others.
[ ] Proper pull request short description - clear and concise (as it should appear in the Jira ticket) for other developers and users.
[ ] Proper Jira ticket - Number, Link in pull request description.
[ ] The PR can is merged on your machine without any conflicts.
[ ] The PR can is built on your machine without any (new) warnings.
[ ] The PR passed sanity tests by you / QA / DevTest / Good Samaritain.
[ ] Add unit tests with new features.
[ ] If you added any dependency to the POM - Please update @YafimK

will reopen with less history


Add info about KEXT to caveats documentation

Documentation update based on this comment.

@vitorgalvao Do we need to say that the kext caveat will only be shown on >= :high_sierra?

@commitay I don’t think we need to care. This is likely a seldom visited part of the documentation. I’d rather have it forwards facing now than outdated later (because we’ll forget about that note).

Thanks @nrlquaker!


Eternally "building" projects

Sometimes something goes awry during the build process and we end up with projects that never seem to resolve themselves: https://autotune.voxmedia.com/projects/vox-donald-trump-book-tax-plan.

I think this was caused by deploying. I think deploying seems to break any running builds.

So I tried rebuilding one project that was stuck on building... it kept getting stuck on building... until it didn't.

Seems likely that deploying would be the cause. Actually, now that you mention it, I have accidentally mimicked that behavior locally by quitting and restarting while projects are building - which results in the eternal building status.

Updated deployment to reload resque instead of restart.


Add ruby 2.3 in CI

Ruby 2.3 has been released! Let's support it.
https://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/

I'm closing this as we're supporting Ruby 2.5 with 2.3 and 2.4.
https://github.com/dtaniwaki/rack-secure-upload/pull/8


@discordjs/rest: Cannot find module 'timers/promises'

Please describe the problem you are having in as much detail as possible:
In running a very slightly modified version of the code in the djs guide for updating commands, I have encountered this error:
Error: Cannot find module 'timers/promises'
Require stack:
-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>
-<EMAIL_ADDRESS>- /mnt/c/Users/Fiona/Desktop/Code/discord-mod-bot/updateCommands.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/mnt/c/Users/Fiona/Desktop/Code/discord-mod-bot/node_modules/@discordjs/rest/dist/lib/handlers/SequentialHandler.js:6:20)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)```

**Include a reproducible code sample here, if possible:**

```js
require("dotenv").config();
const {REST} = require("@discordjs/rest");
const {Routes} = require("discord-api-types/v9");

const commands = require("./commands.json");

const rest = new REST({"version": "9"}).setToken(process.env.TOKEN);

(async () => {

    try {

        console.log("Started refreshing application (/) commands.");

        if (process.argv.length) {

            await rest.put(
                Routes.applicationGuildCommands(process.env.CLIENT_ID, process.argv[0]),
                {"body": commands}
            );

        } else {

            await rest.put(
                Routes.applicationCommands(process.env.CLIENT_ID),
                {"body": commands}
            );

        }

        console.log("Successfully reloaded application (/) commands.");

    } catch (error) {

        console.error(error);

    }

})();

node updateCommands.js<PHONE_NUMBER>36554402```

**Further details:**

- discord.js version: main as of time of posting
- Node.js version: 14.16.1
- Operating system: WSL2 Ubuntu 18.4 on Windows 10

Node version issue

shouldn't you like... fix it? I downloaded the recommended version

discord.js requires at least nodejs v16.6.

Oh alright

yeah that was my mistake too, I was using node 14 rather then node 16


Installation failed

Problem 1
- Can only install one of: jwilsson/spotify-web-api-php[2.5.0, dev-master].
- Can only install one of: jwilsson/spotify-web-api-php[2.5.1, dev-master].
- Installation request for jwilsson/spotify-web-api-php dev-master -> satisfiable by jwilsson/spotify-web-api-php[dev-master].
- Installation request for jwilsson/spotify-web-api-php ^2.5 -> satisfiable by jwilsson/spotify-web-api-php[2.5.0, 2.5.1].
Installation failed, reverting ./composer.json to its original content.

I've come across this, and this answer on SO helped

Hi!
Did @adamazad's reply help you?
If not, we need some more info. What are you trying do to?

Installing it through Composer?
Which command are you using in that case?
Is the library already listed in your composer.json?


Documentation: Use same RTD theme for aarch64 as everywhere else

Previously, installing the python package ran npm install to
regenerate the assets, which would fail on arm64 due to node-sass, but
with https://github.com/cilium/sphinx_rtd_theme/pull/15, installing the
package does not run npm anymore, so this work-around should no longer
be necessary.
This requires https://github.com/cilium/sphinx_rtd_theme/pull/15 to be merged first.

https://github.com/cilium/sphinx_rtd_theme/pull/15 was merged, but had to be reverted for now :/.

Ill close this until we can sort out the theme issue


Merge to publish.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

VBA/Access-VBA/articles/access-modern-charts-properties.md
:white_check_mark:Succeeded

VBA/Excel-VBA/articles/application-selection-property-excel.md
:white_check_mark:Succeeded

VBA/Language-Reference-VBA/articles/typename-function.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

VBA/Access-VBA/articles/access-modern-charts-properties.md
:white_check_mark:Succeeded

VBA/Excel-VBA/articles/application-selection-property-excel.md
:white_check_mark:Succeeded

VBA/Language-Reference-VBA/articles/typename-function.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


HTTPServerRequest needs some custom storage

Currently, there is the params member, which can store custom strings to be passed through the chain of processors.
However, there are plenty of use cases where I want to store something other than a string in the request data. For instance, I want to store the user id in the session, and early on in the routing, I want to fetch all the information about the user from the database, and store that User object in the request, for further access.
I don't want to cache the user data in the session, since it may change in the DB. And I don't want to fetch that data from the database at every step in the router chain.
What I'm going to do for now, is to use the params member, with the value "string" being 0 length and pointing at some object that I really know what it is. And just add casts everywhere.
This should work, but god is it ugly! HTTPServerRequest desperately needs some mechanism to store custom types according to an id or string. I understand from searching the forums that this is a recognized problem, and the backwards compatibility requires that we don't muck with how params works. I propose to add a new variable that is a Variant[string], or even void*[string], called context or something like this (hell, even if we have a void * context member), so that I can simply pass data around.

Java has attributes as part of the ServletRequest Spec:
https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletRequest.html#setAttribute(java.lang.String, java.lang.Object)
This would be a very useful addition!

The Variant[string] (or a Variant typed DictionaryList) is probably the most useful. void* would be bad, because it can store only one value, so multiple libraries using it would cause trouble for sure!

Fixed by 9d0a75b838b53bf281f21a0dd8209b508a2a0b67.


Adds jiyongjung0 to github org members list.

Hi,
This PR adds myself, Jiyong Jung(jiyongjung0) to the github org members list.
My contributions:

https://github.com/kubeflow/pipelines/pull/2876
https://github.com/kubeflow/pipelines/pull/6373
https://github.com/kubeflow/pipelines/pull/7227

@zijianjoy and @chensun might be able to sponsor me.

/lgtm
/approve

Thank you Jiyong for your contributions! Glad to see that you join the community!


Bcmohad 5497

Created dependent Picklist values on Case/Error log. New Fields.

Incorrect file submission (Layouts) should be fields within Error Log. Closing and resubmitting with correct story.


Meeting (10/15/21) ⎼ First Meeting

started: 7:00 PM
ended: 7:30 PM
slides: https://docs.google.com/presentation/d/1XmEEYeQHtryt2998wSv0s4YUuN9nYu88NTgnf1E8ezw/edit

This was the first official meeting of the Fall 2021 semester sprint.

Adjourned at 7:30 PM.


Adding a node fails using --limit.

Bug Report
What happened:
Ceph-ansible fails to add a node when run as suggested by the manual using the --limit option. Not using this option does not run into this problem.
How to reproduce it (minimal and precise):
Try to add another node to an existing, running ceph cluster.
To do so, the suggested procedure is to:

Edit the 'hosts' file to include this new node (as osd, mon, mgr, etc... the things you want to run on it).
Install the prerequisites on this host (ansible/deploy user with sudo access and an SSH key installed on the ansible host, bash, ssh, python2, python3).
Verify network connectivity.
Run the playbook using the "limit" option like so:

ansible-playbook site.yml --limit newnode.mysite.com
As instructed by https://docs.ceph.com/projects/ceph-ansible/en/latest/day-2/osds.html#:~:text=Adding new OSD(s) on,new osd nodes being added.
What you expected to happen:
This installs the chosen ceph components on the new host.
What actually happens:
This fails with the message that discovered_interpreter_python cannot be found in ansible.vars.hostvars.hostvarvars for the step  get current fsid if cluster is already running. The problem file is the script /ceph/ceph-ansible/roles/ceph-facts/tasks/facts.yml, line 155.
The code in question:
- name: fsid related tasks
  when:
    - generate_fsid | bool
    - current_fsid.rc != 0
    - not rolling_update | bool
  block:
    - name: generate cluster fsid
      command: "{{ hostvars[groups[mon_group_name][0]]['discovered_interpreter_python'] }} -c 'import uuid; print(str(uuid.uuid4()))'"
      register: cluster_uuid
      delegate_to: "{{ groups[mon_group_name][0] }}"
      run_once: true
    - name: set_fact fsid
      set_fact:
        fsid: "{{ cluster_uuid.stdout }}"

Apparently ceph-ansible tries to access this variable even for hosts that are not the --limit ed host, failing to run the script when trying to expand the cluster. Not using the --limit option gets around this issue, but is inefficient. There are two reasons when you have a large cluster:

The sheer amount of time it takes to all the checks; disks may fail faster than this.
The fact that a large cluster may have failed disks/nodes all the time. Running the full site.yml from ceph-ansible will break and abort if even one disk or node cannot be reached.

Either there is some bug that this no longer works or the manual is out of date. What's the proper way of adding a node? Note: the manual also suddenly assumes docker is there (it references site-container.yml instead of site.yml), so that might have something to do with it not working for the other one. But there's no command or syntax on how to do this simple task with the regular (non-dockerized) version.
Version/config info:
OS: Ubuntu 20.04 LTS
Version: Stable
Ceph version: From OS-repo, latest stable.
Current configuration: Bug is independent of this (as long as there's a working ansible-configured ceph cluster, it will happen).

@AphidGit could you please share a full log?

@AphidGit could you please share a full log?

Closing due to inactivity

@AphidGit How did you solve this problem?


Create an integration test for CheckConsistency* functions.

We need an integration test that creates a table (which may need to be replicated), then calls TableAdmin::GenerateConsistencyToken(), and later calls TableAdmin::CheckConsistency (and/or TableAdmin::WaitForConsistencyCheck) until the consistency is achieved.

@coryan

We need an integration test that creates a table (which may need to be replicated)

can we make assumption that instance passed as an argument to integration test uses replication (multiple clusters)?

Yes. Please check (using ListClusters()) at the beginning of the integration test, and printing a nice error message when the condition is not met.

Yes. Please check (using ListClusters()) at the beginning of the integration test, and printing a nice error message when the condition is not met.

CheckConsistency is from TableAdmin where as ListClusters is part of InstanceAdmin, we haven't used both TableAdmin and InstanceAdmin in a single integration test till now. So should I create a bigtable_client_common_integration_test which would use both. This way CheckConsistency test case and even the SnapshotTable integration tests can be run against production without assuming existence of instances and clusters.


TCP connection closed after write (regression/change from 0.9.6)

In <IP_ADDRESS>, we were able to POST data to the /write endpoint over http 1.1 and influxdb would keep the connection open, as one would expect in http 1.1.
However, in 0.10.1, with the same POST, influxdb returns a "Connection: closed" header and then closes the connection.  Why did this change?  Is it intended?  Is there another way to periodically send data (say one batch every second) without restarting the connection?
Here is the curl output with the sample command from the InfluxDB Documentation on version <IP_ADDRESS> (notice the connection stays open):
curl -vvv -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64<PHONE_NUMBER>000000000'
* Hostname was NOT found in DNS cache
*   Trying <IP_ADDRESS>...
* Connected to localhost (<IP_ADDRESS>) port 8086 (#0)
> POST /write?db=mydb HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:8086
> Accept: */*
> Content-Length: 74
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 74 out of 74 bytes
< HTTP/1.1 204 No Content
HTTP/1.1 204 No Content
< Request-Id: 7bec7945-e008-11e5-8005-000000000000
Request-Id: 7bec7945-e008-11e5-8005-000000000000
< X-Influxdb-Version: <IP_ADDRESS>
X-Influxdb-Version: <IP_ADDRESS>
< Date: Tue, 01 Mar 2016 23:51:14 GMT
Date: Tue, 01 Mar 2016 23:51:14 GMT

<
* Connection #0 to host localhost left intact

Here is the result of the identical command on 0.10.1 - notice the connection is not left intact and the "Connection: close" header is sent:
curl -vvv -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64<PHONE_NUMBER>000000000'
* Hostname was NOT found in DNS cache
*   Trying <IP_ADDRESS>...
* Connected to localhost (<IP_ADDRESS>) port 8086 (#0)
> POST /write?db=mydb HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:8086
> Accept: */*
> Content-Length: 74
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 74 out of 74 bytes
< HTTP/1.1 204 No Content
HTTP/1.1 204 No Content
< Request-Id: 3d72a1e6-e009-11e5-801e-000000000000
Request-Id: 3d72a1e6-e009-11e5-801e-000000000000
< X-Influxdb-Version: 0.10.1
X-Influxdb-Version: 0.10.1
< Date: Tue, 01 Mar 2016 23:56:39 GMT
Date: Tue, 01 Mar 2016 23:56:39 GMT
< Connection: close
Connection: close

<
* Closing connection 0

Thanks,
Jonathan

I experienced the same issue yesterday, going from InfluxDB 0.9.4 to 0.10.1 . I opened an issue at https://github.com/influxdata/docs.influxdata.com/issues/284 to at least know what the expected behavior should be and if it's a bug or a "feature" and which steps, if any, we can take to set the connection to the standard HTTP/1.1 Keep-Alive


inficere.kext File Location

Where can I find the inficere.kext file?

Build the kext inside the "kext" directory and "inficere.kext" will appear in your output build dir.


Add a 'Page last updated on xxx' at article foot

useful to show date article was last modified. I suggest this can be in small, muted text like Google (and others) do.

I think I added something like this?

yep - looks great now :-)


Add json v2 format, update misc. examples (addresses #3453 )

Closes #3453

Add JSON v2 format doc
Point to v2 doc in legacy version
Update misc. examples to use v2 version

Reviewers -- there was a pre-existing v2 doc that I took out of draft status. It doesn't look 'new' in the diff, but it is new to the public-facing docs, so please review the whole thing. Thank you!


Enryption of Messages in DB

Nice to have an extra level of security, considering it's so easy to do.

SHould be sorted, but will keep an eye and test.


setting to skip line number (simpler diffs)

done here https://github.com/AlexMost/babel-plugin-c-3po/pull/29


Update scrabble-score tests with latest canonical data

Based on https://github.com/exercism/x-common/issues/509

@ErikSchierboom can you take a look at this when you get a chance please? It should be pretty straightforward. Thanks!

@robkeim Sorry about that! Totally forgot. My bad.

No worries, thanks @ErikSchierboom! I figured you had forgotten about it since you're usually super reactive with reviewing PRs :)


lab1 - Implement Fibonacci and Negafibonacci

Fixes https://github.com/anz-bank/go-course/issues/312
Review of colleague's PR https://github.com/anz-bank/go-course/pull/321#pullrequestreview-247602940
Changes proposed in this PR:
- Add function to print Fibonacci sequentially and tests

Codecov Report

Merging #313 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master   #313   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          20     21    +1
  Lines         328    346   +18
=====================================
+ Hits          328    346   +18

Impacted Files
Coverage Δ

01_fib/davidbroughsmyth/main.go
100% <100%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b64a6e9...80e5d89. Read the comment docs.

I'm going to assume this has been reviewed by colleague (@sriyapaka)


update the build to add 2.12 support

This is motivated by my desire to move to finagle-postgres and use the latest finagle with 2.12. And of course it's the future.

Thanks @crispywalrus!


Associations only saving the last one added

Hi! I see you've got a slur of issues already but I was hoping you might have some insight on what I (probably) am doing wrong in using it.
I have an app in which objects have a lot of named, self-referential (and normal) associations. For example, the Character model has a best_friends association (pointing to at least 1 Character), a siblings association (pointing to at least 1 Character), a hometowns association (pointing to at least 1 Location), etc. In the Character#edit page, I allow users to create these associations using Cocoon, and observe the following:

Saving associations one at a time works as expected, even if creating multiple associations as long as each one only has 1 (e.g. creating one best_friends and one siblings works, but creating two siblings relations only saves the latter one).
Removing a relation and adding a new one in-line (e.g. deleting any best_friends associations and adding a new one) works, but of course only adds the last one.

Just to give you a sense of context, here's what the UI looks like adding relations:

(Ugly I know, but just trying to get it working right now! :) )
Here's the relevant code:
CharactersController
  ...
  def edit
    @content = Character.find(params[:id])
  end
  ...

relevant edit.html.erb (in the Content class, which Character inherits from)
        <% content.class.attribute_categories.each do |category, data| %>
          <div id="<%= category %>" class="row">
            <% data[:attributes].each do |attribute| %>

                <% value = content.send(attribute) %>
                <% if value.is_a?(ActiveRecord::Associations::CollectionProxy) %>
                  <% through_class = content.class.reflect_on_association(attribute).options[:through].to_s %>
                  <%= render 'content/form/relation_input', f: f, attribute: attribute, relation: through_class %>
                <% else %>
                  <%= render 'content/form/text_input', f: f, attribute: attribute %>
                <% end %>

            <% end %>

        <% end %>

content/form/_relation_input.html.erb (rendered in the case of associations, like this question):

  <%= f.label attribute, attribute.humanize.capitalize %>

<div id="<%= relation %>">
  <%= f.fields_for relation do |builder| %>
    <%= render 'content/form/groupship_fields', f: builder, attribute: attribute.singularize, parent: f.object %>
  <% end %>

    <% color = f.object.send(attribute).build.class.color %>
    <%= link_to_add_association "add #{attribute.to_s.singularize}", f, relation,
        class: "btn #{color}",
        partial: 'content/form/groupship_fields',
        render_options: { locals: {
            attribute: attribute.singularize,
            parent: f.object
        }} %>

content/form/_groupship_fields.html.erb

  <% uuid = SecureRandom.uuid %>

  <% if f.object && f.object.send(attribute) %>
    <% klass = f.object.send(attribute).class %>

      <%= link_to f.object.send(attribute) do %>
        <span class="<%= klass.color %>-text">
          <%= klass.icon %>

        <%= f.object.send(attribute).name %>
      <% end %>

    <%= link_to_remove_association 'remove', f %>

  <% else %>
    <% klass = parent.send(attribute.pluralize).build.class.name.downcase %>

      <%= f.label attribute %>
      <%= f.autocomplete_field "#{attribute}_id", send("autocomplete_name_#{klass.pluralize}_path"), 'data-auto-focus' => true, id_element: "##{uuid}" %>
      <%= f.hidden_field "#{attribute}_id", id: uuid %>

      <%= link_to_remove_association 'remove', f %>

  <% end %>

And, of course, back to the CharacterController#update that handles processing:
  def update
    @content = Character.find(params[:id])

    if @content.update_attributes(content_params)
      successful_response(@content, t(:update_success, model_name: humanized_model_name))
    else
      failed_response('edit', :unprocessable_entity)
    end
  end

If there's any insight you can give into what I might be doing wrong, it'd be much appreciated. I assume I'm just messing up something small to make it only process the last of each association sent.
Please let me know if there's any other information you need to take a look. The relevant code (though not simplified) is all in https://github.com/indentlabs/Indent/tree/master/app/views/content if you want to look at the source directly.

First thing: check what is actually posted to the controller? Sometimes due to an error in your html (e.g. using id's instead of classes) it will only send one of a repeating group. But from what I could see, that seems ok (still check to be safe).
I saw in your code (thanks for sharing it), that you use a handy shortcut to define your relations: relate :siblings, with: :siblingships and in the concern you ony add the accepts_nested_attributes_for for the connecting relation. Imho you also have to add it for the actual relation you are editing. A bit weird that it partially works, so not sure if that is the case.
Also, you might have a problem: all your "related"-classes are in the folder content_groupers but you do not prefix the class with ContentGroupers so not sure if the rails autoloading will actually find the class correctly (but maybe you solved that otherwise --I didn't go looking to far).

Thanks for the insight. Upon inspecting what is actually posted to the controller, you may be right: there's only one ID being passed through: when adding two mothers (in addition to one existing one), the relevant posted params look like:
 "motherships_attributes"=>
  {"0"=>{"id"=>"1", "_destroy"=>"false"},
   "1470283435380"=>{"mother_id"=>"2", "_destroy"=>"false"},
   "1470283438992"=>{"mother_id"=>"", "_destroy"=>"false"}},

And after wiping them all (successfully, in one submit), trying to add 3 at the same time:
 "motherships_attributes"=>
  {"1470285441878"=>{"mother_id"=>"3", "_destroy"=>"false"},
   "1470285445040"=>{"mother_id"=>"", "_destroy"=>"false"},
   "1470285447940"=>{"mother_id"=>"", "_destroy"=>"false"}},

Pretty sure those empty mother_id params are the culprit here. Do you see anything in the HTML that might be the reason?
Also FWIW on the relate shortcut, I tried adding in the actual relation as well, but it didn't seem to make a difference here. I'll take a look around whether I need it in the long run though, thanks for the heads up.
And yep! Adding config.autoload_paths += Dir[Rails.root.join('app', 'models', '{*/}')] to config/application.rb should be recursively autoloading everything in the models directory, at least.
Thanks again for your help. I'll keep digging at the HTML, but anything you can offer would be much appreciated. And thanks for Cocoon!

It is a little over my head, just gave it a quick cursory read, but please note that all views are server-side-rendered, so every time you press link_to_add_association it just inserts a pre-rendered partial. If you need to set a specific value upon insertion, you will have to use js and the callbacks.
Also, not sure but you seem to make it harder on yourself. To be clear:

you do not have to specify an id for new elements (cocoon does that: if the id does not exist in the database, rails assumes it is a new element)
you do not have to specify a parent-id for a nested element, since the hash is nested, it is clear to what rails must add it

(I will read it in more detail later, if needed)

Just an FYI, the complications seemed to stem from the autocomplete field I was using (rails-jquery-autocomplete) that required me to specify the ID. I swapped it out for a native rails f.select and everything works perfectly now!
Thank you for your all your help! :)