text:
[Table]: Column grouping

There is a change request on the Table component to support groupings of columns

MVP requirements

Column may be given a group
A Group has a name
All grouped columns shall be managed as part the group

The group may be reordered in relation to other columns / groups
The same user gestures shall be used to reorder a group as reordering a column
Individual columns in a group may be reordered
A column in a group may not be reordered / moved out of the group
A column in a group may be shown / hidden
Hiding the last column in a group will hide the group

That shall be a visual design styling that differentiate top level columns and groups vs columns in a group. (see example above)
All use-cases for sorting and filtering that apply to a column also apply to a column in a group.

Additional design showing that columns in groups are filterable:

I've sized this at around 2 person-days for development and test.

Hey Bryan, here's the latest versions of the visuals for the double header update with filters.
Table

##Table with filters

@amymillett please could you review visual design and let Laura + me know if you have any comments, updates or queries?
Thanks.

@amymillett is this design completed? Is there an updated spec we can link here?

@amymillett @davidicus I'm validating if this has been included in the EDS.

This issue is stale. Closing. Please re-open if needed.

This requirement was added by the Tririga / Building Insights team. I'll FW the link in case its still relevant in the designs and should be reopened.

@davidicus I confirmed that Tritiga / BI withdraw this requirement.
Thanks for letting us know, Mats.
We went with a different pattern for the current designs for TBI, so it is no longer required.
Mit freundlichen Grüßen/Kind regards,
Laura Dohle

authors: bryancboyd daphoenix davidicus matsgothe

repo: IBM/carbon-addons-iot-react


text:
feat(list): add fixed column width option

Summary

I have added the ability, like in the Table, to provide a per-column width in order to provide greater rendering control to the component user.

Example in context:

Acceptance Test (how to verify the PR)

Verify the new 'fixed width' story.

:tada: This PR is included in version 1.31.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.31.0 :tada:
The release is available on npm package (@release-1.x dist-tag)
Your semantic-release bot :package::rocket:

source: gharchive/pull-request

license_type: permissive

license_source: github-api


text:
Create New User - Unit Test Cases Development

Task for creating and executing Unit Tests.

Task is completed on 29-Mar-2019

source: gharchive/issue

repo: IBM/commerce-ui


text:
Please provide version of all linting tools in docs/development.md

We saw several times local lint passed but server lint failed...

/assign @morvencao

repo: IBM/go-repo-template


text:
Create CRTFRMSTMF.py

Move all executable scripts into script directory
Move all makei modules into makei directory
Move bob general Makefile into mk directory
Add IBMJob Class to manage database connections, run command within the same job, and dump joblogs
Add getJobLog python program to generate joblog file

Thus we can remove the jq and db2util dependencies

Rewrite CRTFRMSTMF in python
Add support to dump the joblog in crtfrmstmf
Strip some of the outputs
Fix wrong target mapping for MSGF type

why do we need 2 jobs?

We use another job to manipulate the eventf, creat savefile, etc. So that we only dump part of the joblogs.

why do we need 2 jobs?

We use another job to manipulate the eventf, creat savefile, etc. So that we only dump part of the joblogs.

why do we need 2 jobs?

We use another job to manipulate the eventf, creat savefile, etc. So that we only dump part of the joblogs.

with the savf are we not counting on QTEMP to save and restore to so of course they use the same job. There will be a bit of a performance impact but if we don't notice any impact...

We are creating the savf into the QTEMP. But it is still ok to use the same job. Then we will get all the joblogs including the saving and restoring?

authors: TongkunZhang edmundreinhardt

repo: IBM/ibmi-bob


text:
Issue319 - VpnServerForm (Draft PR)

Almost complete with form, running into one slight bug when trying to test it within the storybook and I'm not sure how to resolve with the invalidCallback prop, I would appreciate any assistance on how to resolve this:

index.esm.js:1775 Uncaught TypeError: props.invalidCallback is not a function
    at IcseTextInput (index.esm.js:1775:1)
    at renderWithHooks (react-dom.development.js:16305:1)
    at mountIndeterminateComponent (react-dom.development.js:20074:1)
    at beginWork (react-dom.development.js:21587:1)
    at HTMLUnknownElement.callCallback (react-dom.development.js:4164:1)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:4213:1)
    at invokeGuardedCallback (react-dom.development.js:4277:1)
    at beginWork$1 (react-dom.development.js:27451:1)
    at performUnitOfWork (react-dom.development.js:26557:1)
    at workLoopSync (react-dom.development.js:26466:1)

you will need to bump ver again (sorry)

you will need to bump ver again (sorry)

let's just call this 0.6.0

authors: Ay1man2 isaaceichelberger jvallexm

repo: IBM/icse-react-assets


text:
Provide retry for startup connections to redis and kafka

On startup kar fails fast on connections to redis and kafka. This is a problem for applications that start at the same time as these services, for example all in the same pod.
One approach could be to add kar command line options
-redis_retry duration
-kafka_retry duration

I think Redis at least is  covered by ``request_retry_limit` now.

authors: dgrove-oss eaepstein

repo: IBM/kar


text:
Keeping our Apps up to date

I have been looking at your "Keeping our Apps up to date" script located on JAMF.com from JNUC2021. However, I can't seem to get it to work as is, and am wondering if there have been changes to it (I don't see a copy in this repo).
https://www.jamf.com/blog/ibm-notifier-jamf-pro-integration-jnuc2021/
Any update would be appreciated!
Thanks,
Stephen

Hi @stephenutsw, can you please provide the script you're trying to work with so that I can review it? Since we're talking about a 2-year-old keynote, something has changed in the meantime with IBM Notifier; so I believe the issue lies there. I'll convert this into a discussion since it's not about a real issue with the tool itself.

authors: SMartorelli stephenutsw

repo: IBM/mac-ibm-notifications


text:
add hostAliases capability

resolves #155
Signed-off-by: Stuart Hayton stuart.hayton@uk.ibm.com

looks good to me. thank you for the effort ;)

Closing as this is stale and has merge conflicts; please reopen and fix the conflicts if this is still needed.

authors: causalityloop molepigeon sjhx

repo: IBM/portieris


text:
Use cryptography which is free from CVE-2023-23931

Use cryptography which is free from CVE-2023-23931. See https://www.mend.io/vulnerability-database/CVE-2023-23931.

I am not going to require a specific version of cryptography because of several reasons:

cryptography is most often provided by the system libraries and I don't control that version
there are many users that use a downlevel cryptography due to its Rust dependency in later versions
this is not a really a security issue if you read the CVE description

authors: BrunoHenriques mrodden

repo: IBM/redstone


text:
Design Rust experiments

Currently, the Rust implementations are using the Criterion crate to experimentally compare the implementations. I've spent some time with them, and done a deep-dive into Criterion itself. At the moment, my conclusion is that it doesn't quite meet our needs. My main concerns:

Criterion is exclusively a time-based benchmarking framework. What I mean by that is that users tell Criterion how long to run for. Since how long the experiments are run for is static, the workload itself is necessarily variable. The experiments we have used to assess the current SWAGs, and published, are vice-versa: we keep the workload static and allow the time they run to be variable. (In fact, how long they take is one of the main things we report.) The Criterion author makes a case that for microbenchmarks this is fine, and I agree that for most use cases it is. But for us, since we're simulating a streaming system, it's imperative that (say) we actually process 5 million elements, even if it takes 5 minutes. We get less information if we only process 83,000 elements in 5 seconds. We need to make sure we process enough elements so that we can correctly scale up our window sizes, and to make sure we fully exercise all parts of a SWAG. I find our requirements don't mesh with Criterion being a time-based benchmarking framework.
I have had difficulty generating the kinds of comparisons across the dimensions that I want (SWAG, window size).
Collecting and storing raw data does seem to be a priority of the framework. That's critical for eventually publishing the eperiments.
This is a minor point compared to the others, as I would negotiate with it if all of the above worked for our needs easily, but: I'm not comfortable that parts of the experiment are run in code outside of our control. When investigating performance over the years, have completely control over the full lifecycle of the program has benefited us in fully understanding various behavior that we see. When we control everything, we can be confident that differences in performance are from differences in the SWAGs and not experimental artifact. (As an example of the sort of thing we have done while investigating performance anomalies, see https://github.com/scotts/sliding-window-aggregators/blob/3b756f77baa340fa9f4b04a1ce486c4498f88292/cpp/src/data_benchmark.cc#L50-L54.)

The good news is that Rust makes writing our on benchmarks much simpler than C++! For example, my mess of template overloads in C++ can become a proper Rust macro, resulting in something much more understandable and extendable:
    query_run! {
        opts =>
            [[ReCalc, Sum, Max],
             [TwoStacks, Sum, Max],
             [Reactive, Sum, Max],
             [SoE, Sum]]
    }

See https://github.com/scotts/sliding-window-aggregators/blob/rust-exp/rust/benches/bench_static.rs for the Rust equivalent to https://github.com/scotts/sliding-window-aggregators/blob/rust-exp/cpp/src/benchmark_driver.cc. Note that the C++ benchmark driver includes a header file which has now also gotten out of hand.
I had hoped we could keep both the Criterion and by-hand benchmarks around at the same time, but I ran into difficulties with that approach. I ran into conflicts with options when using cargo bench.
@segeljakt, I'm interested to hear your thoughts.

@scotts I agree with your points, often I include Criterion in my projects because it is easy to setup and it does the statistical analysis for you. For more serious evaluation I think it is better to roll a custom benchmark suite. It should be possible to have both Criterion and custom benchmarks if we create a cargo workspace:
swag/
    Cargo.toml
    swag-core/
        Cargo.toml
        src/
        benches/
        tests/
    swag-criterion/
        Cargo.toml
        benches/

The code looks great. It is probably not needed, but I recently found out there is a function black_box that can be used for hiding optimisation opportunities from Rust.
There are also some useful testing/profiling frameworks for finding bugs/bottlenecks:

cargo-fuzz (Fuzzing)
coz-rs (Causal profiling)
flamegraph (Profiling)
iai (One-shot benchmarks)

I have recently been using cargo-fuzz in a project I'm working on. My memory is still fresh so I could help out integrating it if you want. It is great for finding workloads which causes the program to crash.

authors: scotts segeljakt

repo: IBM/sliding-window-aggregators


text:
update ko.json

corrected some phrases and translated the parts that have not been translated.

@yhlee1627 Thanks so much for the updates!

repo: IBM/taxinomitis


text:
IBMi-bob migration log

I am migrating a library with IBMi-bob. I am using this documentation.
I tried with many SRC-PF but the migration always fails. There is just 1 error with code "1":
/tmp/vscodetemp-O_svPnzGtK/QILEGEN: export PATH="/QOpenSys/pkgs/bin:$PATH:" && /QOpenSys/pkgs/bin/makei cvtsrcpf -c *JOB -t -l QILEGEN P_FENS
{
    "code": 1,
    "signal": null,
    "stdout": "",
    "stderr": "bsh: PATH=/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin:: is not an identifier"
}

There is also another thing I don't understand: before to start the migration, I executed the following command to set the current path
cd /SMEDOC/BOB/P_FENS which is my destination folder
nevertheless in some messages I can see the path to my home folder:
/home/COSANT
For example:
/home/COSANT: mkdir -p /tmp/vscodetemp-O_svPnzGtK/SRCWK
{
    "code": 0,
    "signal": null,
    "stdout": "",
    "stderr": ""
}

Could you please help me to understand is the problem?
I attached the log file.
migration.log

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

Hello @cosentino-smeup.
Looks like the issue is because of the extra colons :: in the PATH variable. Since the PATH variable should already be set properly, I updated our extension to avoid setting it. I just pushed an update so can you update the Project Explorer extension to 2.11.1 and have a try again?

There is also another thing I don't understand: before to start the migration, I executed the following command to set the current path
cd /SMEDOC/BOB/P_FENS which is my destination folder
nevertheless in some messages I can see the path to my home folder:
/home/COSANT

The path which you see here in the log is simply where the command is being run in on the IBM i. This is controlled by the extension. In most cases, the user's home directory will be used unless the command needs to run in a specific directory. Could you clarify what you mean by /SMEDOC/BOB/P_FENS is your "destination folder".

I installed the version 2.11.1 of the library "Project Explorer extension". I don't get the previous error message anymore but another one has shown up:
/tmp/vscodetemp-O_eAQjPLaL/£UI_SRC: /QOpenSys/pkgs/bin/makei cvtsrcpf -c *JOB -t -l £UI_SRC P_FENS
{
    "code": 1,
    "signal": null,
    "stdout": "It looks like /QOpenSys/pkgs/bin/ is not currently in your system PATH. \nThis means that programs and tools installed in this directory may not be \neasily accessible from the command line.\n\nTo add /QOpenSys/pkgs/bin/ to your system PATH (if it is not already present), \nuse the following command:\n\nexport PATH=$PATH:/QOpenSys/pkgs/bin\n\nYou can also add this command to your shell profile file \n(e.g. ~/.bashrc or ~/.bash_profile) to make the change permanent.\n\npython3 is not installed or not in your system PATH.",
    "stderr": ""
}

Please find attached the migration
migration-2.log
log

Hello @SanjulaGanepola, I was able to migrate some sources after I created the following files in my home folder:
/home/COSANT/.bashrc:
export PATH=/QOpenSys/pkgs/bin:$PATH
/home/COSANT/.profile:
PATH=/QOpenSys/pkgs/bin:$PATH
export PATH PASE_PATH

That is great to hear. Yes, a .bashrc file is required to be created in your home directory for all this to work. In fact, the Code for IBM i extension should provide you the following prompt to have one created for you upon first connecting:

After clicking Yes, it will create one similar to this:
# Generated by Code for IBM i
export PATH=/QOpenSys/pkgs/bin:$PATH:/QOpenSys/usr/bin:/usr/bin

In some cases, due to caching, you may not see this prompt even though you do not have a .bashrc file (which is what happened for you). In this case, you can right-click on the connection and use the Connect and Reload Server Settings option to trigger the check for if it exists.

This is my first migration with IBMi-bob, so maybe I didn't get everything or misunderstood something even if I have read the documentation.

No worries, great to hear you are using this tool and happy to help :smile:

That said, what I meant by "destination folder" is that I expect the migration will convert the source from the library I have chosen from the object browser and put the new source files in the "destination" folder "/SMEDOC/BOB/P_FENS" on IFS.

As for this issue, the main purpose of this migration tool is to migrate source to your local workspace for local development. So while Project Explorer does use cvtsrcpf to migrate source first to the IFS and then to the local workspace, it will use a temporary IFS directory to convert the files and they get deleted at the end of the process. This is why in the log you saw the working directory to be /tmp/vscodetemp-O_svPnzGtK when the cvtsrcpf command was being run.
Is your goal to migrate source to the IFS or the local workspace? If you would like the source to also be in the IFS, after migrating the source to your local workspace, you can set your deploy directory and then deploy your entire project there. This is explained here

To set the folder "/SMEDOC/BOB/P_FENS" as current directory, I used the PASE terminal and executed the following command:
cd /SMEDOC/BOB/P_FENS

Changing directory in the PASE terminal will only apply for the terminal session which you are in. As mentioned previously, the current directory in which the commands are run in are controlled by the extension.

Thank you very much @SanjulaGanepola for the explanation.

Is your goal to migrate source to the IFS or the local workspace? If you would like the source to also be in the IFS, after migrating the source to your local workspace, you can set your deploy directory and then deploy your entire project there. This is explained here

My goal in this migration phase is:

migrate my IBMi library to my local workspace
when everything will be migrated, I will push to github
from github I want to create a github action which will copy the sources files to the IFS folder

When I finished the migration, the workflow will be approximately the same:

make the changes to my local workspace
push to github in a branch
from github I want to create a github action which will intercept the approval of the pull request and will copy the sources files to the IFS folder

So, according with what you said before, I think I don't need to use the deploy action from the project explorer, because I want Github to push the changes into IFS automatically.
At the moment I still can't migrate some source files and I don't understand why. For example, in the file SRCDZ, there are 4 PF sources files. Only 3 over 4 get migrated. One of them gives a error, but I can't understand what is the problem.
/tmp/vscodetemp-O_VRHf9Ulw/SRCDZ: /QOpenSys/pkgs/bin/makei cvtsrcpf -c *JOB -t -l SRCDZ P_FENS
{
    "code": 1,
    "signal": null,
    "stdout": "4 source members found.\nConverting $DIZ_ED to $diz_ed.pf\n>  CPYTOSTMF FROMMBR('/QSYS.LIB/P_FENS.LIB/SRCDZ.FILE/$DIZ_ED.MBR') TOSTMF('/tmp/vscodetemp-O_VRHf9Ulw/SRCDZ/$diz_ed.pf') ENDLINFMT(*LF) STMFCCSID(1208) STMFOPT(*REPLACE)\nSuccessfully imported member text!\nConverting $DIZ_JA to $diz_ja.pf\n>  CPYTOSTMF FROMMBR('/QSYS.LIB/P_FENS.LIB/SRCDZ.FILE/$DIZ_JA.MBR') TOSTMF('/tmp/vscodetemp-O_VRHf9Ulw/SRCDZ/$diz_ja.pf') ENDLINFMT(*LF) STMFCCSID(1208) STMFOPT(*REPLACE)\nSuccessfully imported member text!\nConverting $DIZ_C£ to $diz_c£.pf\n>  CPYTOSTMF FROMMBR('/QSYS.LIB/P_FENS.LIB/SRCDZ.FILE/$DIZ_C£.MBR') TOSTMF('/tmp/vscodetemp-O_VRHf9Ulw/SRCDZ/$diz_c£.pf') ENDLINFMT(*LF) STMFCCSID(1208) STMFOPT(*REPLACE)",
    "stderr": "Traceback (most recent call last):\n  File \"/QOpenSys/pkgs/lib/bob/src/makei/cli/makei_entry.py\", line 293, in <module>\n    cli()\n  File \"/QOpenSys/pkgs/lib/bob/src/makei/cli/makei_entry.py\", line 41, in cli\n    args.handle(args)\n  File \"/QOpenSys/pkgs/lib/bob/src/makei/cli/makei_entry.py\", line 269, in handle_cvtsrcpf\n    CvtSrcPf(args.file, args.library, args.tolower, args.ccsid, args.text).run()\n  File \"/QOpenSys/pkgs/lib/bob/src/makei/cvtsrcpf.py\", line 116, in run\n    member_text = result[0][0][0]\nTypeError: 'NoneType' object is not subscriptable"
}

"object is not subscriptable" is recurring error in many PF-SRC.
Do you know what it means?
Is there a way to get a detailed log with the error descriptions in order to understand what the problems are?
Some source file name contains the character "£" which is translated correctly, is it possible to change the code page to 280 (Italy)?

Also, I noticed that the migration didn't update the /COPY path.
Is there a way to do it automatically?
$b£g02b.rpgle.txt

Hello @SanjulaGanepola I think I converted almost everything. The problem was a parameter that changed the name of the source files to lowercase.

Glad it is working now!

So, according with what you said before, I think I don't need to use the deploy action from the project explorer, because I want Github to push the changes into IFS automatically.

Based on what you described, you are right in that deploy from Project Explorer will not be needed.

from github I want to create a github action which will intercept the approval of the pull request and will copy the sources files to the IFS folder
then, I want to compile the code

In case you have not heard of @ibm/ibmi-ci, you should definitely check it out as it can be used for what you are trying to achieve here. Example of it being used in a GitHub action here as well.

Also, I noticed that the migration didn't update the /COPY path.

Is there a way to do it automatically?

At the moment, the current include/copy directive fixing involves updating the source to use Unix style paths instead of member styled paths. I believe there is no support as of right now for checking the includePath in iproj.json and updating it automatically. I will mention this as an enhancement for source orbit which is what Project Explorer uses for this.

In case you have not heard of @ibm/ibmi-ci, you should definitely check it out as it can be used for what you are trying to achieve here. Example of it being used in a GitHub action here as well.

Thank you @SanjulaGanepola, that's a great advise. I will definitely check it out!

At the moment, the current include/copy directive fixing involves updating the source to use Unix style paths instead of member styled paths. I believe there is no support as of right now for checking the includePath in iproj.json and updating it automatically. I will mention this as an enhancement for source orbit which is what Project Explorer uses for this.

What are my options to bypass the problem in the mean time that SourceOrbit considers whether to implement this feature or not?

I brought up the idea to @worksofliam who manages source orbit and he agreed it would be a great feature. I have opened an issue to track the enhancement here.
Until it is added, the only current option would be to do this manually. However, adding this feature will probably be looked at next week so hopefully it should be out soon.

I brought up the idea to @worksofliam who manages source orbit and he agreed it would be a great feature. I have opened an issue to track the enhancement here.
Until it is added, the only current option would be to do this manually. However, adding this feature will probably be looked at next week so hopefully it should be out soon.

Thanks @SanjulaGanepola that will be a great improvement !!! I'll wait.

In case you have not heard of @ibm/ibmi-ci, you should definitely check it out as it can be used for what you are trying to achieve here. Example of it being used in a GitHub action here as well.

Thank you @SanjulaGanepola, that's a great advise. I will definitely check it out!

At the moment, the current include/copy directive fixing involves updating the source to use Unix style paths instead of member styled paths. I believe there is no support as of right now for checking the includePath in iproj.json and updating it automatically. I will mention this as an enhancement for source orbit which is what Project Explorer uses for this.

What are my options to bypass the problem in the mean time that SourceOrbit considers whether to implement this feature or not?
Do I have to modify all manually?

Hello @SanjulaGanepola, I was checking out the documentation of ibm-ci but I don't understand if it must be installed on IBMi, the client or Github. Would you please suggest me a documentation about the procedure to install it?
Thank you in advance for the advice

@cosentino-smeup ibmi-ci does not get installed on the IBM i. It can be installed on your local machine using the command npm i -g @ibm/ibmi-ci and then you can use ici to see the parameters which can be used. If you plan to use it locally, you will need to setup the environment variables as it suggests.

The main use case for this tool will however be in a GitHub action. In this case, you can create a yaml file with a step for the installation like this and then execute a deploy/build like this. Similar to running locally, note that environment variables will need to be set like this meaning that you will need to setup up GitHub repository secrets to store credentials to your IBM i.
You can also checkout Liam's blog post on this tool here for more info.

FYI @cosentino-smeup
The happy path for migration is to

Migrate to local workspace vis the tools provided
Publish to github at your leisure, test and official build pipelines will triggered from this source of truth
But for active development you deploy to a personal IFS directory and build into a personal library and test there before comitting to git and trigger ci/cd from there

authors: SanjulaGanepola Taiga-A cosentino-smeup edmundreinhardt yiweifengyan

repo: IBM/vscode-ibmi-projectexplorer


text:
Add service authentication support for starter kit + kubernetes

This PR authenticates with VCAP_SERVICES (cloud foundry) first, and then falls back on the environment variables passed to the application in a starter kit + kubernetes deployment.

@dolph can you make this two PRs? I can merge the first set of changes to the app without having to change the starterkit tag

@stevemart removed the second commit, and revised the PR title & PR message to reflect accordingly.

authors: dolph stevemart

repo: IBM/watson-banking-chatbot


text:
Decrease memory footprint

This reduces the memory footprint to match the Lite / Free tier.

do we need to test this out?

I tested this earlier this morning; this was one of the combinations I got to run successfully. I was just worried about the memory footprint pushing so close to the 256MB limit.

repo: IBM/watson-discovery-news


text:
All languages (COBOL first) - Function to expand COPY/INCLUDE in a temporary working source file

Description of the enhancement requested
We have developed a very rich COBOL framework using COPYBOOKs and conditional compilation.
This results in the disappearance of a very large volume of data-entry description and procedural code at the program source level.
For a developer not accustomed to using this framework, this can make it difficult to understand the program, even if Z Open Editor can display the contents of COPYBOOKs (but without the replacement operations).
It may be inciting to launch compilations only to see the final code after COPY/INCLUDE and conditional compilation processing.
We would like Z Open Editor to be able to produce a complete source code with expansion of all COPY/INCLUDE, with resolution of replacements, (for COPY/INCLUDE accessible either locally or remotely, some COPY/INCLUDE may for some reason or another not be accessible).
This COPY/INCLUDE expansion work must also take into account the conditional compilation introduced by COBOL V6.
Technically, if the process of COPY/INCLUDE expansion and conditional compilation processing is too complex, Z Open Editor could, in the case of COBOL, launch a compilation in "MDECK(NOCOMPILE)" mode and some other appropriate options and retrieve the SYSMDECK output.
This complete source code would be temporary and is not intended to be kept, but we can also consider saving or exporting it.

@FALLAI-Denis this is what the IBM Dependency-Based Build integration will give you: you right-click in the editor and select Run User Build and it will return a log file that shows the expanded code. How to run such a build can be configured. See this video, jump to Minute 45, for a demo: https://www.youtube.com/watch?v=O35vEFfzAi4

Hi @phaumer,
Doing a user build, whether with DBB or another solution, is exactly what we want to avoid.
Doing a user build has consequences, such as making programs active in the test environment associated with the user build.
To just have COPYBOOKs expansion, with conditional compilation option processing, you'd have to define two kinds of user builds: one to only get an expanded source, and one to actually build the program.
This doesn't seem to be provided in DBB.
Just as in DBB, the build (the build options) is not intended to be context-dependent, i.e. the Git branch from which you are building.
These are not user options, but global (workspace) options attached to the build context, and which must be shared by all users.
This point has already been discussed regarding the zapp.yaml file.
See #163, #99, #98, #97.
Depending on the Git branch containing the source to be built, we do not use the same sets of libraries (copybooks for compilation, object module for linkedit), nor sometimes the same compilation options.
Builds made from a "hotfix" branch target programs in production: you must use "production reference" level libraries.
The constructions made from a "feature" branch target the programs for a next version: you must use the "development" level libraries.
Builds made from a "release" branch (correction during user validation) target release candidate programs: you must use "release" level libraries.
In fact, each Git branch corresponds to a build context, whether for a user build, activated from VS Code, or a project build, activated from Jenkins.
I will describe this point in another dedicated issue, (we will soon study the implementation of DBB, with IBM support to assist us, including people who participated in the writing of whitepapers on DBB).

@FALLAI-Denis user build will copy the files you currently have checked out in your local workspace. So if you are on a specific branch it will copy that program version that you have currently open in the editor as well as the local copybooks that is includes and uploads all of these into a uss folder and then use a user-defined data sets to build it.
The Groovy scripts that get executed for building the developer can control themselves as well. They can also be part of the same git repo and branch and could be copied over as part of the user build as well.
Once the log files are download the user can then see the expanded source like this:

Oh, that is just the default in VS Code for .log files. We have not developed a textmate for these types of logs, yet.

Hi @FALLAI-Denis,
Peter had pointed me to your discussion here around the user builds in VS Code. I would like to provide my perspective on it.
The purpose of User Builds is to validate that the program builds correctly and that the syntax is good. It is assumed to create a binary into the library of the user. Users could start some simple tests from these libraries - which works for batch jobs.
However, it is not expected, that the outputs are made available in a development test environment. It is not a total no, while you have the ability to install the outputs with a post-build script into a shared execution environment (so, up to the design)
A User build first takes all the application copybooks which can be found in the local directories. You can configure the build framework to add your custom libraries containing the generated data access or architecture copybooks.
Using zAppBuild / DBB as the build framework you can define a custom compile Syslib Concatenation to your needs
Sample Cobol.properties to include the foreign copybooks. But, you are right, that this is an overlap to the configured remote libraries in the property group.
You could even go that far, that the user build just invoke the compile with MDECK,NOCOMPILE to have the listing with the expanded source and skip subsequent build steps. Just a matter of the configuration of the build framework.
Best regards
Dennis
In another issue you were referring that the pipeline needs to be sensitive if it is a emergency/hotfix, release of a different change that the developer is implementing. This also can be taken into consideration based on the pipeline builds which are processed from the CI Orchrestrator

Hi @dennis-behm , @phaumer
Thank you for all of your comments.
I think we are digressing a bit from the original request and I will open another request regarding the management of build contexts against Git branches, either in a IBM Z Open Editor discussion or in another space may be more dedicated to IBM DBB.
In our context, user builds feed a project-level test environment, in the sense of the same reason for change, (common to all developers of the same project / same reason for change), and we look at how to manage this environment with IBM Wazi Sandbox. Project builds, triggered by Jenkins during a merge or push type action on the Gits Repository server (Bitbucket), feed shared environments (common to all projects). We plan project builds at different stages of the Git workflow: merge on develop branch, merge on release branch, merge on master branch, push from hotfix branch.
I will make a diagram to illustrate this operation and materialize the sets of libraries involved each time.
At the Workspace VS Code level, which corresponds to a Git Repository, I do not see how the user build configuration files can manage the different build contexts, which for us are dependent on the Git branches, (choice of compilation options, selection of sets of copybooks for compilation, and set of loadlibs for linkedit).
Build configuration files must be shared by all developers and all branches, (taken into account during branch merges).
If in addition it is necessary to distinguish the real user builds which produce and install a loadmodule, the user builds "for the form" which are just used to make a syntax check and an expansion of the COPYBOOKs, that complicates things even more.
Just to come back to the initial request: it was a question of expanding the COBOL source code by resolving calls to COPYBOOKs, while taking into account conditional compilation. I think the Language Server already does its work in the background, without actually triggering a build.

Hi @dennis-behm, @phaumer
I opened a discussion #228 to expose my vision of the management of builds and interactions with the Git workflow.

Hi @phaumer,
IDz 16 did it!
Opening expanded source files
This is exactly what we would like to have in Z Open Editor.

In Micro Focus Enterprise Developer there is also the option of expanding copybooks by pressing “F4”. This opens the corresponding program in a temporary file (read mode), in which all copy statements are resolved and their content can be viewed directly in the program code.
Our developers would also like to use this feature in the IBM Z Open Editor.

Not accustomed to a certain complex framework, it would be really helpful having an function to create temporarily a complete source code with expansion of all COPY/INCLUDE members. While using Micro Focus ED for example this is - in my opinion - one of the most important features of this IDE.

Hi,
In the expansion example given above, it should be noted that we use the *CONTROL NOSOURCE / *CONTROL SOURCE compilation directive to hide part of the code in the compilation listing, (this directive is ignored by the MDECK and TEST(DWARF) options of the IBM Enterprise COBOL compiler).
To see if in ZOE we could have an option to respect or ignore the *CONTROL NOSOURCE / *CONTROL SOURCE compilation directive: the goal of the expanded source is not to compile it, but to understand the assembly of the original COBOL source code and the code fragments imported by the copybooks.
Thanks.

authors: FALLAI-Denis dennis-behm dvag-dominik-schumacher dvag-klaus-bell phaumer

repo: IBM/zopeneditor-about


text:
LSF exit code mapping

Hello,
Not sure if this is the correct repo to open issue, if not please close this issue and I can reopen the issue to a desired one.
Can you please share details on LSF exit code mapping, for instance, exit code 32 to UNIX signal mapping. The documentation for 32 code says EXIT but there could be several reasons for exit. Does exit code 32 mean SIGPROF?
Thanks

This is old, but continue to be relevant.
Error Status Reporting in LSF and RTM.pptx

In RTM we provide a custom column that will provide the App: XX, Sig: XX, or something like what can be seen in the image below.

Real old screen shot too.

@adamsla Really informative. I still don't see the exit code as 32 mapping.

@asm582, there are some cases where the raw exit code slips past and for that, I'm not quite certain how it happens (not the LSF developer, RTM yes, LSF no).  I think this may happen when you get a post exec error, though I've never confirmed.
If you are getting an "exit status" 32, that would likely be the raw signal.  But let's be clear we are talking about the same thing.  If you run either a 'bjobs -l' or a 'bhist -l jobid', you should get either the real "exit code" (as exited by the application), or something like "TERM_OWNER".
Now, as said, bhist and bjobs will give the real exit code, instead of the various API's which will give you the three column crazy combo (the construction of the value is a Linux design limitation).  I hope that makes more sense.

@adamsla Thanks for explaining. I am looking at lsf.acct files in the cluster and I see a lot of exit codes with 32.

If you are looking at the raw account files and it's 'exitStatus' from the API perspective, then a 32 is likely a signal/post exec failure.  Try 'bacct -l jobid', and see what it comes back with.

Do a bhist -l jobid and see what that comes back with.

repo: IBMSpectrumComputing/lsf-kubernetes


text:
change name of the default branch

as per guidelines the "main" branch shall no longer have the name "master"

renamed to develop


text:
ARIA1 - Example 1

tested and added link back to github file

Merged - Thanks Cam!  Check your gitignore file though - your .DS_store file came over with this PR.  Not a problem, I'm just going to delete - but just wanted to give you a heads-up for future PRs.

authors: cambeaudoin marcjohlic

license: mit

license_source: bigquery


text:
请问这个报错怎么解决呢    n, h, w = masks.shape ValueError: too many values to unpack (expected 3)

Traceback (most recent call last):
File "/mnt/workspace/lailai/segment/Grounded-SAM-2/grounded_sam2_tracking_demo.py", line 123, in
all_sample_points = sample_points_from_masks(masks=masks, num_points=1)
File "/mnt/workspace/lailai/segment/Grounded-SAM-2/track_utils.py", line 14, in sample_points_from_masks
n, h, w = masks.shape
ValueError: too many values to unpack (expected 3)

可以检查一下masks的输入，打印一下masks的shape，按理来说应该是 (n, h, w) n表示mask数量，如果不是的话可能需要在前面增加一个维度

Would you like to provide the text prompt you use and the video source for your demo, so we can check this issue more conveniently:
I've successfully run this demo in my env and return the following results (only vis first frame):

可以检查一下masks的输入，打印一下masks的shape，按理来说应该是 (n, h, w) n表示mask数量，如果不是的话可能需要在前面增加一个维度
我们在代码中提供了这样的转换:
# convert the mask shape to (n, H, W)
if masks.ndim == 3:
    masks = masks[None]
    scores = scores[None]
    logits = logits[None]
elif masks.ndim == 4:
    masks = masks.squeeze(1)

按理来说不会报这个问题

我把if中的内容注释掉了，弄了个pass，能跑通了，谢谢您

可以检查一下masks的输入，打印一下masks的shape，按理来说应该是 (n, h, w) n表示mask数量，如果不是的话可能需要在前面增加一个维度
我们在代码中提供了这样的转换:
# convert the mask shape to (n, H, W)
if masks.ndim == 3:
    masks = masks[None]
    scores = scores[None]
    logits = logits[None]
elif masks.ndim == 4:
    masks = masks.squeeze(1)

按理来说不会报这个问题

我把if中的内容注释掉了，弄了个pass，能跑通了，谢谢您

Would you like to provide the text prompt you use and the video source for your demo, so we can check this issue more conveniently:
I've successfully run this demo in my env and return the following results (only vis first frame):

视频比较单一，就是画面中只有一个人走动的视频，因为视频中是我同事，我不方便提供，谢谢您，不过是不是因为单目标的原因，mask打印出来是(1, 960, 540)，经过if中的语句处理后变成了(1, 1, 960, 540），但是我看示例经过if-else语句后还是（n,h,w）三维的，所以我就注释掉if中语句的内容就跑通了，if代码我也没怎么看懂，不知道对后面有没有影响，但是对当前的我提供的照片组是能跑通的，感谢！

可以检查一下masks的输入，打印一下masks的shape，按理来说应该是 (n, h, w) n表示mask数量，如果不是的话可能需要在前面增加一个维度
我们在代码中提供了这样的转换:
# convert the mask shape to (n, H, W)
if masks.ndim == 3:
    masks = masks[None]
    scores = scores[None]
    logits = logits[None]
elif masks.ndim == 4:
    masks = masks.squeeze(1)

按理来说不会报这个问题

我把if中的内容注释掉了，弄了个pass，能跑通了，谢谢您

Would you like to provide the text prompt you use and the video source for your demo, so we can check this issue more conveniently:
I've successfully run this demo in my env and return the following results (only vis first frame):

视频比较单一，就是画面中只有一个人走动的视频，因为视频中是我同事，我不方便提供，谢谢您，不过是不是因为单目标的原因，mask打印出来是(1, 960, 540)，经过if中的语句处理后变成了(1, 1, 960, 540），但是我看示例经过if-else语句后还是（n,h,w）三维的，所以我就注释掉if中语句的内容就跑通了，if代码我也没怎么看懂，不知道对后面有没有影响，但是对当前的我提供的照片组是能跑通的，感谢！

好的好的，我们这边也会检查一下这些接口的使用，正常输出的mask shape是 (n, h, w) n表示object number就行

authors: rentainhe shnulailai


text:
About Edge model

So far I only play with the API token, I guess would be from Pro version, may I know if I can call Edge one?

Hi @TheMattBin
You can switch to Edge model at here:

authors: Mountchicken TheMattBin


text:
🛑 Org Software is down

In e4164ec, Org Software (https://snapmaker.com/snapmaker-luban) was down:

HTTP code: 502
Response time: 2 ms

Resolved: Org Software is back up in 6553b28.

repo: IDKHTS/upptime-demo

license: MIT


text:
🛑 CN Org Home is down

In c33d557, CN Org Home (https://snapmaker.cn/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: CN Org Home is back up in 8e02335 after 6 minutes.


text:
🛑 IDR (image 3125776) is down

In 536cd4e, IDR (image 3125776) (https://idr.openmicroscopy.org/webclient/?show=image-3125776) was down:

HTTP code: 0
Response time: 0 ms

Resolved: IDR (image 3125776) is back up in ad12f15 after 21 minutes.

repo: IDR/upptime


text:
🛑 IDR (well 45407) is down

In c8c5cb4, IDR (well 45407) (https://idr.openmicroscopy.org/webclient/?show=well-45407) was down:

HTTP code: 502
Response time: 82 ms

Resolved: IDR (well 45407) is back up in 95b10e1 after 9 minutes.


text:
🛑 IDR (well 1024671) is down

In 779e88b, IDR (well 1024671) (https://idr.openmicroscopy.org/webclient/?show=well-1024671) was down:

HTTP code: 0
Response time: 0 ms

Resolved: IDR (well 1024671) is back up in 32d4e8c after 1 hour, 30 minutes.


text:
Adding Typebot deployment + upgrading Botpress to Caddy

Reviewer: @Tanmay-97
Estimate: 30mins

Ticket
Fixes: AAQ-367
Also upgrades Botpress deployment to Caddy!
Description, Motivation and Context
Goal

Add Typebot deployment and demo flow
Upgrade Botpress deployment to Caddy

How has this been tested?

Follow the deployment instructions in the docs, under chat managers for both Botpress and Typebot

Checklist
Fill with x for completed. Delete any lines that are not relevant

[x] My code follows the style guidelines of this project
[x] I have reviewed my own code to ensure good quality
[x] I have tested the functionality of my code to ensure it works as intended
[x] I have resolved merge conflicts
[x] I have updated affected documentation (if applicable)

Great work @amiraliemami Could you also please add a Typebot section below Botpress in MKDocs.yml -> nav/other-components?

Nice catch, added thanks :)

Also, how can I test this? Should I run docker-compose in my local machine and check?

@Tanmay-97 Yes please! Try following the deployment instructions in the docs to see if you can get it working. I'll make Loom videos for the deployments if you find that it's not straight-forward.

Hi @amiraliemami
I tried to run this - docker-compose command builds the containers all fine.
In the DB I get this error:
2024-02-28 18:01:27.213 UTC [55] FATAL: password authentication failed for user "postgres"
2024-02-28 18:01:27.213 UTC [55] DETAIL: Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"
In Builder I see this:
Datasource "db": PostgreSQL database "$POSTGRES_DB", schema "public" at "typebot-db:5432"
Error: P1000: Authentication failed against database server at typebot-db, the provided database credentials for postgres are not valid.
❌ Invalid environment variables: {
ADMIN_EMAIL: [ 'String must contain at least 1 character(s)' ],
GITHUB_CLIENT_ID: [ 'String must contain at least 1 character(s)' ],
GITHUB_CLIENT_SECRET: [ 'String must contain at least 1 character(s)' ],
GOOGLE_CLIENT_ID: [ 'String must contain at least 1 character(s)' ],
GOOGLE_CLIENT_SECRET: [ 'String must contain at least 1 character(s)' ]
}
-- I fixed this using my GitHub creds.
But could you provide light guidance on the 1st one, and hint at resolving these 2 in the docs?

Hi @amiraliemami
I tried to run this - docker-compose command builds the containers all fine.
In the DB I get this error: 2024-02-28 18:01:27.213 UTC [55] FATAL: password authentication failed for user "postgres" 2024-02-28 18:01:27.213 UTC [55] DETAIL: Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"
In Builder I see this: Datasource "db": PostgreSQL database "$POSTGRES_DB", schema "public" at "typebot-db:5432" Error: P1000: Authentication failed against database server at typebot-db, the provided database credentials for postgres are not valid.

I wonder if this is because of some overlaps with old postgres volumes you may have on Docker... Can you delete all volumes on Docker Desktop and try again? I wonder also if it's some windows issue.

❌ Invalid environment variables: { ADMIN_EMAIL: [ 'String must contain at least 1 character(s)' ], GITHUB_CLIENT_ID: [ 'String must contain at least 1 character(s)' ], GITHUB_CLIENT_SECRET: [ 'String must contain at least 1 character(s)' ], GOOGLE_CLIENT_ID: [ 'String must contain at least 1 character(s)' ], GOOGLE_CLIENT_SECRET: [ 'String must contain at least 1 character(s)' ] } -- I fixed this using my GitHub creds.

Added clarifying comments to the template.env file - should be good now.

Also, please add a line describing how to go about creating GITHUB_CLIENT or GOOGLE_CLIENT, which is mandatory to make this work
For local testing, I realized I needed to setup a new Github OAuth App - could we set one up for this project? Or we could use ID and SECRET of the one I created - it redirects to https://localhost/api/auth/callback/github

repo: IDinsight/aaq-core


text:
[DOC]: Replace the list of technologies used in README.md with their logos

Changes Suggested

Replace the list of technologies used in README.md with their official logos

Change the text

This software uses the following open source packages:

to

Technologies used in this project are:

Or you can use your line that is more appropriate at this point.

Hey @IIvexII Can you assign this to me

Hey @gogoiakash2311 I have assigned it to you. You can work on it now.

Okay

@gogoiakash2311  Have you started working on it? If you need help, do let me know.

@IIvexII While setting up the project locally, After running "npm start" it's showing:
There is an error while connecting to database.

@IIvexII While setting up the project locally, After running "npm start" it's showing: There is an error while connecting to database.

Bro, there is no need to setup the project at all. Because you are just working on docs. Just work on the required changes. Don't worry about the codebase.

Okay

repo: IIvexII/LGU-TimetableAPI


text:
[G003] Documento de Apresentação da Equipe

Detalhes em https://github.com/fgagamedev/IJE/blob/master/tasks/G003_Documento_de_Apresentacao_da_Equipe.md

https://github.com/IJE-Manaslu/Traveling_Will/wiki/Apresentação-da-Equipe


text:
Documentation cleanup/renaming effort

Change Summary
Just wanted to clean up and rearrange some docs, and add a link to the new NASA TOPS open science 101 course. I'd appreciate any notes on naming changes or locations.
Overview

Renamed a few top level files to be more specific, and moved files that I thought made more sense in different areas. With :ref: this didn't make much difference in the actual contents of the files, although I did tidy up a few index.rst files.
Text changes

top level index.rst file
code-documentation/tools/cdf-global-attrs

Just added a few sentences here, mostly wanted to add it so I can start fleshing this out in a later PR

It can be hard to figure out the changes in the github view so here's the renaming:
Big name changes:
reference is renamed to code-documentation
development is renamed to development-guide
Created external-tools
Moves:
moved CDF and poetry docs to external-tools
Moved xarray to cdf and xtce documentation into code-documentation/tools
So, the main top-level directories are now:
code-documentation
development-guide
external-tools
project-mangement (unchanged in this PR)
Which I feel makes it more clear to external users what the documentation groups contain and make it easier to dig down and find what you're looking for.

@all-contributors please add @maxinelasp for maintenance

authors: bourque maxinelasp


text:
Add positioning doc

Here is some explanation about mocap and other positioning systems. I've placed it in the usage.rst file for now
It is not as extensive as the crazyswarm1 doc: https://crazyswarm.readthedocs.io/en/latest/configuration.html but I think that the motion capture package also provides quite doc and explanation about it as well. Same goes with the positioning for onboard positioning (like the loco deck, flow deck etc) which can be referred to the bitcraze website.

fixes #231

Looking great - thanks:-)

authors: knmcguire whoenig


text:
🛑 namescape.nl website is down

In f21ad47, namescape.nl website (https://blog.namescape.nl) was down:

HTTP code: 0
Response time: 0 ms

Resolved: namescape.nl website is back up in b7a3273.

repo: INL/ivdnt-statusoverzicht


text:
Investigation of Neo's current Blackrock IO and incorporating fixes/features where necessary

Current Blackrock IO in Neo seems to have problems with some of our data. In this issue we will

test the current blackrock IO and reintroduce/enhance the unit tests of version 2
investigate any limitations in working with the IO regarding feature richness of the current IO due to the uncluttering of the API from V2 to V3.

Work is carried out on branch https://github.com/INM-6/python-neo/tree/feature/new_blackrockio_v4
Branch is based on apibreak branch of upstream.

Issue found: Tanya files do not load (problem with date-time). Possibly due to version problem.

Issue found: Events all have the same ID (at least when using Nikos2 data)

Issue with date-time also occurs for Lilou data.


text:
Add option to burn in IMSC catpions

There should be an option to burn-in subtitles in the video frame. This is an extension of #3. The exported PNG could be input for a "burn-in" service.

Resolved in release 0.4.0

repo: IRT-Open-Source/imsced


text:
Add support for studios and language registries

See https://github.com/ISDCF/registries/pull/28

@SteveLLamb if you're working on this, you might want to grab the existing template for the languages page. Or let me know if you want me to help.

@SteveLLamb if you're working on this, you might want to grab the existing template for the languages page. Or let me know if you want me to help.

@radford-for-smpte I'll try to jump on this tomorrow. I'm going to use the facilities template as the base, as there was a lot of customizing I did for mobile and proper anchoring. I'll refer to the template you linked for the proper values to look for. Thanks!

authors: SteveLLamb palemieux radford-for-smpte

repo: ISDCF/registries-site


text:
[BlockSparseArrays] Permute and merge blocks

This PR adds this functionality for merging blocks while preserving the block sparse structure:
julia> using BlockArrays: Block, BlockedVector

julia> using NDTensors.BlockSparseArrays: BlockSparseArray

julia> a = BlockSparseArray{Float64}([2, 2, 2, 2], [2, 2, 2, 2])
typeof(axes) = Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

4×4-blocked 8×8 BlockSparseArray{Float64, 2, Matrix{Float64}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Matrix{Float64}, 2, NDTensors.BlockSparseArrays.BlockZero{Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}:
 0.0  0.0  │  0.0  0.0  │  0.0  0.0  │  0.0  0.0
 0.0  0.0  │  0.0  0.0  │  0.0  0.0  │  0.0  0.0
 ──────────┼────────────┼────────────┼──────────
 0.0  0.0  │  0.0  0.0  │  0.0  0.0  │  0.0  0.0
 0.0  0.0  │  0.0  0.0  │  0.0  0.0  │  0.0  0.0
 ──────────┼────────────┼────────────┼──────────
 0.0  0.0  │  0.0  0.0  │  0.0  0.0  │  0.0  0.0
 0.0  0.0  │  0.0  0.0  │  0.0  0.0  │  0.0  0.0
 ──────────┼────────────┼────────────┼──────────
 0.0  0.0  │  0.0  0.0  │  0.0  0.0  │  0.0  0.0
 0.0  0.0  │  0.0  0.0  │  0.0  0.0  │  0.0  0.0

julia> @views for I in [Block(1, 1), Block(2, 2), Block(3, 3), Block(4, 4)]
         a[I] = randn(size(a[I]))
       end

julia> a
typeof(axes) = Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

4×4-blocked 8×8 BlockSparseArray{Float64, 2, Matrix{Float64}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Matrix{Float64}, 2, NDTensors.BlockSparseArrays.BlockZero{Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}:
 0.635764  -0.347639  │   0.0      0.0       │   0.0        0.0       │   0.0        0.0
 0.675381   1.19467   │   0.0      0.0       │   0.0        0.0       │   0.0        0.0
 ─────────────────────┼──────────────────────┼────────────────────────┼──────────────────────
 0.0        0.0       │   1.83942  0.484242  │   0.0        0.0       │   0.0        0.0
 0.0        0.0       │  -1.08625  0.541457  │   0.0        0.0       │   0.0        0.0
 ─────────────────────┼──────────────────────┼────────────────────────┼──────────────────────
 0.0        0.0       │   0.0      0.0       │   0.883359  -2.29911   │   0.0        0.0
 0.0        0.0       │   0.0      0.0       │  -2.80531    0.267481  │   0.0        0.0
 ─────────────────────┼──────────────────────┼────────────────────────┼──────────────────────
 0.0        0.0       │   0.0      0.0       │   0.0        0.0       │  -0.397101   0.506121
 0.0        0.0       │   0.0      0.0       │   0.0        0.0       │  -0.255275  -0.36543

julia> I = BlockedVector(Block.(1:4), [2, 2])
2-blocked 4-element BlockedVector{Block{1, Int64}, BlockArrays.BlockRange{1, Tuple{UnitRange{Int64}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}:
 Block(1)
 Block(2)
 ────────
 Block(3)
 Block(4)

julia> a[I, I]
typeof(axes) = Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

2×2-blocked 8×8 BlockSparseArray{Float64, 2, Matrix{Float64}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Matrix{Float64}, 2, NDTensors.BlockSparseArrays.BlockZero{Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}:
 0.635764  -0.347639   0.0      0.0       │   0.0        0.0        0.0        0.0
 0.675381   1.19467    0.0      0.0       │   0.0        0.0        0.0        0.0
 0.0        0.0        1.83942  0.484242  │   0.0        0.0        0.0        0.0
 0.0        0.0       -1.08625  0.541457  │   0.0        0.0        0.0        0.0
 ─────────────────────────────────────────┼────────────────────────────────────────────
 0.0        0.0        0.0      0.0       │   0.883359  -2.29911    0.0        0.0
 0.0        0.0        0.0      0.0       │  -2.80531    0.267481   0.0        0.0
 0.0        0.0        0.0      0.0       │   0.0        0.0       -0.397101   0.506121
 0.0        0.0        0.0      0.0       │   0.0        0.0       -0.255275  -0.36543

julia> using NDTensors.BlockSparseArrays: block_stored_indices

julia> block_stored_indices(a[I, I])
2-element Dictionaries.Dictionary{CartesianIndex{2}, Block{2, Int64}}
 CartesianIndex(1, 1) │ Block(1, 1)
 CartesianIndex(2, 2) │ Block(2, 2)

It also adds support for setting a new blocking at a more fine-grained level while preserving the block sparse structure:
julia> using BlockArrays: blockedrange

julia> I = blockedrange([1, 3, 3, 1])
4-blocked 8-element BlockArrays.BlockedOneTo{Int64, Vector{Int64}}:
 1
 ─
 2
 3
 4
 ─
 5
 6
 7
 ─
 8

julia> a[I, I]
typeof(axes) = Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

4×4-blocked 8×8 BlockSparseArray{Float64, 2, Matrix{Float64}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Matrix{Float64}, 2, NDTensors.BlockSparseArrays.BlockZero{Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}:
 0.635764  │  -0.347639   0.0      0.0       │   0.0        0.0        0.0       │   0.0
 ──────────┼─────────────────────────────────┼───────────────────────────────────┼───────────
 0.675381  │   1.19467    0.0      0.0       │   0.0        0.0        0.0       │   0.0
 0.0       │   0.0        1.83942  0.484242  │   0.0        0.0        0.0       │   0.0
 0.0       │   0.0       -1.08625  0.541457  │   0.0        0.0        0.0       │   0.0
 ──────────┼─────────────────────────────────┼───────────────────────────────────┼───────────
 0.0       │   0.0        0.0      0.0       │   0.883359  -2.29911    0.0       │   0.0
 0.0       │   0.0        0.0      0.0       │  -2.80531    0.267481   0.0       │   0.0
 0.0       │   0.0        0.0      0.0       │   0.0        0.0       -0.397101  │   0.506121
 ──────────┼─────────────────────────────────┼───────────────────────────────────┼───────────
 0.0       │   0.0        0.0      0.0       │   0.0        0.0       -0.255275  │  -0.36543

julia> block_stored_indices(a[I, I])
8-element Dictionaries.Dictionary{CartesianIndex{2}, Block{2, Int64}}
 CartesianIndex(1, 1) │ Block(1, 1)
 CartesianIndex(2, 1) │ Block(2, 1)
 CartesianIndex(1, 2) │ Block(1, 2)
 CartesianIndex(2, 2) │ Block(2, 2)
 CartesianIndex(3, 3) │ Block(3, 3)
 CartesianIndex(4, 3) │ Block(4, 3)
 CartesianIndex(3, 4) │ Block(3, 4)
 CartesianIndex(4, 4) │ Block(4, 4)

This PR now supports permuting and merging blocks in a single slicing operation:
julia> using BlockArrays: Block, BlockedVector

julia> using NDTensors.BlockSparseArrays: BlockSparseArray, block_stored_indices

julia> a = BlockSparseArray{Float64}([2, 2, 2, 2], [2, 2, 2, 2]);

julia> @views for I in [Block(1, 1), Block(2, 2), Block(3, 3), Block(4, 4)]
         a[I] = randn(size(a[I]))
       end

julia> a
typeof(axes) = Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

4×4-blocked 8×8 BlockSparseArray{Float64, 2, Matrix{Float64}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Matrix{Float64}, 2, NDTensors.BlockSparseArrays.BlockZero{Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}:
  0.35991  -0.363998  │   0.0       0.0      │   0.0       0.0        │   0.0       0.0
 -1.0964    0.478964  │   0.0       0.0      │   0.0       0.0        │   0.0       0.0
 ─────────────────────┼──────────────────────┼────────────────────────┼─────────────────────
  0.0       0.0       │   1.36241   1.66477  │   0.0       0.0        │   0.0       0.0
  0.0       0.0       │  -1.44313  -1.43454  │   0.0       0.0        │   0.0       0.0
 ─────────────────────┼──────────────────────┼────────────────────────┼─────────────────────
  0.0       0.0       │   0.0       0.0      │   0.253089  1.26423    │   0.0       0.0
  0.0       0.0       │   0.0       0.0      │  -0.581412  0.0754013  │   0.0       0.0
 ─────────────────────┼──────────────────────┼────────────────────────┼─────────────────────
  0.0       0.0       │   0.0       0.0      │   0.0       0.0        │   0.459771  0.227871
  0.0       0.0       │   0.0       0.0      │   0.0       0.0        │  -0.966115  0.223543

julia> I = BlockedVector(Block.(reverse(1:4)), [2, 2])
2-blocked 4-element BlockedVector{Block{1, Int64}}:
 Block(4)
 Block(3)
 ────────
 Block(2)
 Block(1)

julia> a[I, I]
typeof(axes) = Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

2×2-blocked 8×8 BlockSparseArray{Float64, 2, Matrix{Float64}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Matrix{Float64}, 2, NDTensors.BlockSparseArrays.BlockZero{Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}, BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}:
  0.459771  0.227871   0.0       0.0        │   0.0       0.0       0.0       0.0
 -0.966115  0.223543   0.0       0.0        │   0.0       0.0       0.0       0.0
  0.0       0.0        0.253089  1.26423    │   0.0       0.0       0.0       0.0
  0.0       0.0       -0.581412  0.0754013  │   0.0       0.0       0.0       0.0
 ───────────────────────────────────────────┼─────────────────────────────────────────
  0.0       0.0        0.0       0.0        │   1.36241   1.66477   0.0       0.0
  0.0       0.0        0.0       0.0        │  -1.44313  -1.43454   0.0       0.0
  0.0       0.0        0.0       0.0        │   0.0       0.0       0.35991  -0.363998
  0.0       0.0        0.0       0.0        │   0.0       0.0      -1.0964    0.478964

This is useful for abelian fusion, it is a key step in fusing multiple dimensions/axes/indices into a single one. I'll demonstrate that in the next post.

Here is a demonstration of abelian fusion, specifically matricizing an n-dimensional abelian symmetric tensor, as of this PR (before it was permuting the blocks, but not merging adjacent blocks that are in the same symmetry sectors):
julia> using BlockArrays: Block

julia> using NDTensors.BlockSparseArrays: BlockSparseArray

julia> using NDTensors.GradedAxes: GradedAxes, gradedrange

julia> using NDTensors.TensorAlgebra: fusedims, splitdims

julia> struct U1
         n::Int
       end

julia> GradedAxes.dual(c::U1) = U1(-c.n)

julia> GradedAxes.fuse_labels(c1::U1, c2::U1) = U1(c1.n + c2.n)

julia> Base.isless(c1::U1, c2::U1) = isless(c1.n, c2.n)

julia> r = gradedrange([U1(0) => 1, U1(1) => 1])
2-blocked 2-element BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}:
 NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}(1, U1(0))
 ──────────────────────────────────────────────────────────────
 NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}(2, U1(1))

julia> a = BlockSparseArray{Float64}(r, r, r, r)
typeof(axes) = NTuple{4, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

2×2×2×2-blocked 2×2×2×2 BlockSparseArray{Float64, 4, Array{Float64, 4}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Array{Float64, 4}, 4, NDTensors.BlockSparseArrays.BlockZero{NTuple{4, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}}}, NTuple{4, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}}:
[:, :, 1, 1] =
 0.0  0.0
 0.0  0.0

[:, :, 2, 1] =
 0.0  0.0
 0.0  0.0

[:, :, 1, 2] =
 0.0  0.0
 0.0  0.0

[:, :, 2, 2] =
 0.0  0.0
 0.0  0.0

julia> @views for I in [
         Block(1, 1, 1, 1),
         Block(2, 1, 2, 1),
         Block(2, 1, 1, 2),
         Block(1, 2, 2, 1),
         Block(1, 2, 1, 2),
         Block(2, 2, 2, 2),
       ]
         a[I] = randn(size(a[I]))
       end

julia> m = fusedims(a, (1, 2), (3, 4))
typeof(axes) = Tuple{BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

3×3-blocked 4×4 BlockSparseArray{Float64, 2, Matrix{Float64}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Matrix{Float64}, 2, NDTensors.BlockSparseArrays.BlockZero{Tuple{BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}}}, Tuple{BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}}:
 -0.636756  │  0.0       0.0       │   0.0
 ───────────┼──────────────────────┼───────────
  0.0       │  1.16831   0.508419  │   0.0
  0.0       │  0.138778  1.21531   │   0.0
 ───────────┼──────────────────────┼───────────
  0.0       │  0.0       0.0       │  -0.590217

We can also split the dimensions to recover the original n-dimensional tensor:
julia> splitdims(m, (r, r), (r, r))
typeof(axes) = NTuple{4, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}

Warning: To temporarily circumvent a bug in printing BlockSparseArrays with mixtures of dual and non-dual axes, the types of the dual axes printed below might not be accurate. The types printed above this message are the correct ones.

2×2×2×2-blocked 2×2×2×2 BlockSparseArray{Float64, 4, Array{Float64, 4}, NDTensors.SparseArrayDOKs.SparseArrayDOK{Array{Float64, 4}, 4, NDTensors.BlockSparseArrays.BlockZero{NTuple{4, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}}}, NTuple{4, BlockArrays.BlockedOneTo{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}, Vector{NDTensors.LabelledNumbers.LabelledInteger{Int64, U1}}}}}:
[:, :, 1, 1] =
 -0.636756  0.0
  0.0       0.0

[:, :, 2, 1] =
 0.0      0.138778
 1.16831  0.0

[:, :, 1, 2] =
 0.0       1.21531
 0.508419  0.0

[:, :, 2, 2] =
 0.0   0.0
 0.0  -0.590217

@emstoudenmire to translate this back to the existing NDTensors.j/ITensors.jl code, this is performing two combiner operations (one combining the first two indices, and one combining the last two indices) in a single operation. The code implementing fusedims is quite simple in the end, it basically just implemented by optionally calling permutedims if needed depending on the fusion call, performs a naive reshape into a block sparse matrix that doesn't involve any block permutations/block merging, and then uses the block permutation and merging operation shown in my previous comment.
This PR brings us one step closer to replacing the current TensorStorage-based system of NDTensors.jl with the new system based off of NamedDimsArrays, BlockSparseArrays, GradedAxes, DiagonalArrays, etc. This is a key operation needed for matricizing n-dimension abelian symmetric tensors in order to perform blockwise factorizations like QR, eigendecompositions, and SVD.

@ogauthe this involves a lot of changes to the design of slicing of BlockSparseArrays, but doesn't change the interface (just adds support for new slicing operations). Some of the output types of slicing operations are different after this PR, but in general they should be simpler and easier to work with. Once tests pass I'll merge and register this, let me know if you have any issues with it in your code.
Note that fusedims can be used to convert "dense" abelian symmetric tensors to matricized/fusion tensors, so is an alternative to your implementation when the tensors are abelian. It would be good to confirm it outputs the same thing as your code for abelian tensors, for example that the two follow the same conventions in terms of where blocks end up in the data matrix. Also my implementation is probably quite different from yours, it would be interesting to compare the steps of the two and see if they can share some operations or be designed in similar ways. I realize a lot of the steps will be different to handle non-abelian symmetries but I think it would still be an illuminating exercise and may inspire a new perspective on how to design the dense to fusion tensor conversion for non-abelian tensors.

Nice! I did not observe any change in BlockSparseArrays behavior in FusionTensors, the changes are transparent.
I confirm that I get the same data matrix as obtained from fusedims, I just need to take dual axes in the domain. This is already my convention; if I change to dual in the codomain, then the matrix blocks would be in opposite order. I don't know if fine control of dual is a feature you wish for a BlockSparseArray, it is not strictly required in the abelian case.
ft = FusionTensor(a, GradedAxes.dual.((r,r)), (r,r))
data_matrix(ft) ≈ m  # true

authors: mtfishman ogauthe


text:
CP-decomposition by alternating least-squares (ALS)

This is an implementation of the classic Alternating Least-Squares (ALS) algorithm for CP-decomposition (aka Canonical Polyadic/CANDECOMP/PARAFAC), as described in "Tensor Decompositions and Applications", Kolda & Bader 2009, Figure 3.3.
The test only demonstrates that it seems to work for random 2x2x2 matrices, and further tests may be necessary. The implementation should support generic tensor orders and sizes, though.
This code was based on a prior Python+NumPy implementation, and can probably be vastly improved to make a better use of ITensor features.

Thanks! I have been eager to make ITensor more useful and connected to the wider applied math and machine learning community, so having an ALS CP code is very welcome. Please give us a bit of time to review your code and we'll get back to you.
One quick comment is that it may not be necessary to explicitly unfold tensors into matrices within ITensor, if it's for the purpose of contracting them with other tensors (or other matrices or vectors), or for the purpose of computing matrix factorizations such as SVD or QR. (The reason is that ITensor automatically handles mappings to matrices and back for both types of operations.) But I could imagine an explicit unfolding function could be necessary if you need to do other matrix operations not yet provided at the level of the ITensor interface.

Hi Miles! I'm sure I'm far from being able to write idiomatic ITensor code, and I'm looking forward to your review. My priority was just porting my old code making sure it works, and refactor it later. I bet my uses of diagonal tensors and combiners can be completely rewritten. Perhaps I can comment the code some more to help rewriting it? While it is short, it's maybe a little "dense", especially if you are only used to matrix algorithms like myself...
Refactoring this will probably be very instructive to a newbie like me, once we finish I can go back and add what I didn't know to the basic examples.

Codecov Report

Merging #260 (c5ec591) into main (ae3b49d) will decrease coverage by 44.20%.
The diff coverage is 0.00%.

:exclamation: Current head c5ec591 differs from pull request most recent head e2db4a1. Consider uploading reports for the commit e2db4a1 to get more accurate results

@@             Coverage Diff             @@
##             main     #260       +/-   ##
===========================================
- Coverage   76.35%   32.14%   -44.21%
===========================================
  Files          84       84
  Lines        9951     9898       -53
===========================================
- Hits         7598     3182     -4416
- Misses       2353     6716     +4363

Impacted Files
Coverage Δ

src/cp_als.jl
0.00% <0.00%> (ø)

src/NDTensors/octavian.jl
0.00% <0.00%> (-100.00%)
:arrow_down:

src/physics/site_types/boson.jl
0.00% <0.00%> (-100.00%)
:arrow_down:

src/physics/site_types/fermion.jl
0.00% <0.00%> (-98.39%)
:arrow_down:

src/physics/site_types/qudit.jl
0.00% <0.00%> (-97.30%)
:arrow_down:

...c/ContractionSequenceOptimization/three_tensors.jl
0.00% <0.00%> (-96.16%)
:arrow_down:

src/mps/observer.jl
7.14% <0.00%> (-92.86%)
:arrow_down:

src/iterativesolvers.jl
0.00% <0.00%> (-89.62%)
:arrow_down:

src/mps/projmps.jl
0.00% <0.00%> (-88.38%)
:arrow_down:

src/mps/diskprojmpo.jl
0.00% <0.00%> (-83.34%)
:arrow_down:

... and 61 more

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 ae3b49d...e2db4a1. Read the comment docs.

Hi @nlw0, sorry for the slow response on this.
I think it would help to have an explanation of the equations that different steps of the code are trying to implement, so we can determine if there is a better way to translate them to ITensor code. I am not so familiar with details of solving the CP-decomposition with ALS.
As a general strategy, it is best to avoid calling internals, for example use dim(i) instead of i.space. Also, it is generally best to avoid grabbing indices in a certain position, like inds(A)[1]. Instead, you can almost always determine the index you want through set functions, like commonind(A, B) if the index you want is shared with another tensor B in your network (alternatively, you might know that it is not shared with some other tensors B and C, and use uniqueind(A, B, C)).
Also, something we could do is have this in a small external package, like ITensorCP, since it is a bit orthogonal to the other functionality in the codebase.

Hi @mtfishman ! No worries, I wrote this mostly as an exercise to learn more about ITensors and about the subject itself, but I hope this might be useful to others since it seems to be a classic algorithm in the field. Whether it belongs here along iterativesolvers.jl, as an example, test or separate package is totally up to you.
I'll do my best to try to remember how it all works. Please keep in mind that this code is potentially very bad and inefficient right now, and the proper implementation might end up looking very different.

authors: codecov-commenter emstoudenmire mtfishman nlw0


text:
🛑 API is down

In c6fb244, API ($API_ENDPOINT) was down:

HTTP code: 0
Response time: 0 ms

Resolved: API is back up in bdd2d21.

repo: IVAO-Portugal/status-page


text:
🛑 Events is down

In 712f839, Events (https://events.pt.ivao.aero) was down:

HTTP code: 521
Response time: 151 ms

Resolved: Events is back up in 9e28b7f after 5 minutes.


text:
🛑 Website is down

In d946484, Website (https://pt.ivao.aero/portal) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Website is back up in a1930c2.


text:
adding physics or collision to generated terrain

alright im just going to say i love the way this works and its great but there is one thing i have a problem with how in the world do you add physics to it or like make it solid so my player wont fall through it when i use physi.js

I suggest starting from this example. The only difference is that you should use the plane geometry generated by THREE.Terrain instead of the custom one that is generated in that example.

sir it will not work for me i have done this so far
    var ground_material = THREE.Terrain.generateBlendedMaterial([
        // The first texture is the base; other textures are blended in on top.
        {
            texture: THREE.ImageUtils.loadTexture("textures/grass.jpg")
        },
        // Start blending in at height -80; opaque between -35 and 20; blend out by 50
        {
            texture: THREE.ImageUtils.loadTexture("textures/rock.jpg"),
            levels: [20, 20, 240, 250]
        }, {
            texture: THREE.ImageUtils.loadTexture("textures/grass.jpg"),
            levels: [-20, 5, 5, 10]
        }, {
            texture: THREE.ImageUtils.loadTexture("textures/snow.jpg"),
            levels: [250, 260, 290, 300]
        }, {
            texture: THREE.ImageUtils.loadTexture("textures/rock.jpg"),
            levels: [200, 210, 300, 300]
        },
        // How quickly this texture is blended in depends on its x-position.
        {
            texture: THREE.ImageUtils.loadTexture("textures/grass.jpg"),
            glsl: '1.0 - smoothstep(65.0 + smoothstep(-256.0, 256.0, vPosition.x) * 10.0, 80.0, vPosition.z)'
        },
        //Use this texture if the slope is between 27 and 45 degrees
        {
            texture: THREE.ImageUtils.loadTexture("textures/rock.jpg"),

            glsl: 'slope > 0.7853981633974483 ? 0.2 : 1.0 - smoothstep(0.47123889803846897, 0.7853981633974483, slope) + 0.2'
        },
    ]);

    var xS = 200,
        yS = 200;

    ground_geometry =
        new THREE.Terrain({
            easing: THREE.Terrain.Linear,
            frequency: 2.5,
            heightmap: THREE.Terrain.Hill,
            material: material,
            maxHeight: 1000,
            minHeight: -1000,
            steps: 10,
            useBufferGeometry: false,
            xSegments: xS,
            xSize: 90000,
            ySegments: yS,
            ySize: 90000,
        })

    // If your plane is not square as far as face count then the HeightfieldMesh
    // takes two more arguments at the end: # of x faces and # of y faces that were passed to THREE.PlaneMaterial
    ground = new Physijs.HeightfieldMesh(
        ground_geometry,
        ground_material,
        0, // mass
        50,
        50
    );

i keep getting this error       geometry.computeBoundingBox is not a function

Unfortunately this is not a support forum and I can't help you write code for a third party library. I suggest posting on Stack Overflow or somewhere similar. However I can tell you that your ground_geometry variable is not a THREE.Geometry instance but rather a THREE.Object3D instance. The geometry you want is probably accessible at ground_geometry.children[0].geometry


text:
Search <start,end> functionality not working

Start date seems to default to 7days ago? seems to work for dates previous to the start of december? any help would be appreciated to get data from 1st to 3rd
note : if search from 1st to 10th december, still only returns 3-10th

@HurinHu If you're not working on this issue. Should I take it up?

I have checked the google results, it seems the date range is not always correct as what we set, but it will return the date after start date, unless the search result is less than one page on the date range. If you search by period, it will return the proper results on the first and second page. If you go to third page, and they don't have more than 30 items, the result will be out of date range.
Just like the page show below, it is not always correct on the first page, it should be 1 month ago not 2 weeks ago, but google just return with wrong date. We can't make changes on this at the moment.

I have checked the google results, it seems the date range is not always correct as what we set, but it will return the date after start date, unless the search result is less than one page on the date range. If you search by period, it will return the proper results on the first and second page. If you go to third page, and they don't have more than 30 items, the result will be out of date range.
Just like the page show below, it is not always correct on the first page, it should be 1 month ago not 2 weeks ago, but google just return with wrong date. We can't make changes on this at the moment.

authors: GregorKerr1996 HurinHu sakshiseth

repo: Iceloof/GoogleNews


text:
login: registration button

the button should be a little bit closer to the textfield

fixed


text:
No newtonsoft json

fixes https://github.com/IdentityManager/IdentityManager2/issues/11

Awesome! Thanks for this, I'll take a look at it now

Any news on this one?

Waiting for your approval AFAIK :-)

There are a couple of comments inline.


text:
GetSigningCredentials should throw Exception if Certificate is null

Apparently if a Certificate is not found, perhaps due to misconfiguration, null is returned for the SigningCredentials. This causes the JwtToken not to bo signed at all. This is unexpected behavior to me and could compromise the AuthorizationServer.
I would suggest changing the following code:
public override SigningCredentials GetSigningCredentials()
{
var cert = this.Certificate;
if (cert == null) return null;
return new X509SigningCredentials(cert);
}
to something like this:
public override SigningCredentials GetSigningCredentials()
{
var cert = this.Certificate;
if (cert == null) throw new Exception("No certificate could be found");
return new X509SigningCredentials(cert);
}

sure - feel free to change it.

authors: leastprivilege rzontar

repo: IdentityModel/AuthorizationServer


text:
Make OidcClientSettings.authorityand .client_id optional in TS typings

(As it was before 9e712ecaf88d872e0780c0bbbccaa397e5de6237.)
Fixes #1017

Thanks!

BTW, does this require a new release to npm for TS to pick this up?

Thank you! And BTW, also for this great library!

does this require a new release to npm for TS to pick this up?

Yep. (The TypeScript compiler simply uses the index.d.ts from the installed package for its type checks).

okies, i don't use TS myself, thus the question. i'll put a patch out.

authors: brockallen ulrichb

repo: IdentityModel/oidc-client-js


text:
Source Link not working

Nuget package IdentityServer4 version 3.1.3
I'm migrating a project from .NET Core 2.1 to 3.1 so I performed a database migration (cf: issue 2845). However now when I execute this line
return await _identityServerInteractionService.GetAuthorizationContextAsync(returnUrl);

I get the following error:

SqlException: Invalid object name 'IdentityProperties'.
Microsoft.Data.SqlClient.SqlCommand+<>c.b__164_0(Task result)

I checked the Identity Server source code and saw in the .csproj that the .PDB file is included in the Nuget package and the repository URL is included as well.
I checked the package in my cache under C:\Users\username\.nuget\packages\identityserver4\3.1.3 just to be sure I see the .PDB file and the repository's URL in the .nuspec file.
I set the proper options in Visual Studio 2019 (v16.5.4) as described here however when I try to step into the GetAuthorizationContextAsync method it just doesn't work.
Visual Studio doesn't ask me if I want to download the source code.
Have you tested this feature already? I'm wondering if I forgot something or if this is just not working anymore.
I've a bit of experience with Source Link and I'm wondering if this is because the IdentityServer4.dll inside the Nuget package might be compiled in Release mode?
In my experience, Source Link would work only with Debug compiled DLLs.
Could someone confirm the IdentityServer4.dll is a Debug one? Or did I miss something?
I created another ticket (Question) for my IdentityProperties issue. I'd be really glad if you could answer me about this problem as well.
Thanks for your answers

Could you at least give me an explanation instead of just closing this ticket please?
Thanks

Not sure what to say.

Ok thanks for your answer.
So f it works in Rider there's no reason it couldn't work with Visual Studio.
Just out of curiosity, do you compile the DLL in Debug or Release mode?
I've this stackoverflow question open, I'm wondering if this is even possible with a Release DLL...

you can compile in release mode and produce PDBs.

My PDBs were stored on the Azure DevOps's Symbol Server.
Maybe Source Link with a release DLL simply doesn't work yet with Visual Studio.
I wouldn't be surprised if Rider was ahead of VS with this technology.
Ok then closing this issue.
Thanks for your answers

authors: jmevel leastprivilege


text:
Use Task.CompletedTask to reduce allocations

What issue does this PR address?
Very simple change to reduce memory allocations.
Does this PR introduce a breaking change?
No impact on existing codebase.
Please check if the PR fulfills these requirements

[x] The commit follows our guidelines
[x] Unit Tests for the changes have been added (for bug fixes / features) No unit tests for AspNetIdentity project

Other information:
Created simple benchmarks project to test my change using BenchmarkDotnet.
Here are the results:

Method
Mean
Error
StdDev
Gen 0
Gen 1
Gen 2
Allocated

WithTaskCompleted
1.146 us
0.0222 us
0.0197 us
0.2155
-
-
680 B

WithTaskFromResult
1.181 us
0.0188 us
0.0157 us
0.2384
-
-
752 B

Yes, looks good. Thanks.

authors: brockallen mkrtich-m


text:
Support for macros.

Macros are hard-coded at the moment. Implementing them properly requires some serious module system ironing action. Can't really do macros with first class modules apparently.

Here's a terriblegreat idea: macros defined as arbitrary pattern transformers based on PEGs. For example:
(define-syntax swap
  (syntax-peg ()
))

Here's a terrible idea - define macros as PEG-based syntax transformers:

(define-syntax cond
  (syntax-rules ()
    ((cond (else result))
     result)
    ((cond (condition result) rest ...)
     (if condition
         result
         (cond rest ...)))))

Maps to something along these lines:
(define-syntax cond
  (syntax-peg ()
   (Cond
    ('cond (* Case) Else)
    (* Case)
    Else)
   (Case
    (condition value)
    ('if condition
         value
         ...))
   (Else
    (/ ElseClause Default))
   (ElseClause
    ('else result)
    result)
   (Default
     ()
     '#f)))

Each rule is a PEG-like matcher, that matches quoted symbols verbatim and binds any unquoted symbols to the AST node they represent. Afterwords a similar DSL is used to generate fresh new code, except that there each quoted symbol results in a symbol being produced, while an unquoted symbol results in whatever has been matched before. The special ... symbol is still needed unfortunately, for the cases that result in nesting - it represents the continuation of the generated code, so anything that comes afterwards.

TODOS:

[x] Static environment handling.
[x] Syntactic closures.
[ ] Compile time evaluator.
[ ] define-for-syntax, define-syntax & let-syntax support.
[ ] Macro init file containing basic built-in macros.
[ ] ir-macro-transformer implementation.
[ ] syntax-rules implementation.
[ ] Support for macros generating macros.

repo: Idorobots/foof


text:
In mainactivity name is not showing properly

If name is more than specific length then we have to compress it and add '...' at the end

@maniyaom  Do it after length of 25 letters

it is overlapping after 17 characters

repo: Ijaiswalshivam/Talk-In


text:
[PE] BlendshapeEditor - Rebuild chached blendIndics, names list when blendshape added to sharedMesh

Rebuild chached blendIndics, names list when blendshape added to sharedMesh - on ApplyBlendShapeWeights()
added button - Refresh renderers list

Fixes #100

authors: ManlyMarco ReafLife

repo: IllusionMods/HSPlugins


text:
[FEAT]: Add button to report issue or chat with maintainer

Clear and concise description of the problem
As a user that has an idea or facing an issue, I want that we can directly report a problem or talk with the maintainer by tapping a button in the app so that it'd be a seamless user experience.
Suggested solution
In the top bar left hamburger menu, we can provide a new button with this function to an issue template at GitHub, a WA chat template for an issue, and links to maintainer contact.
Alternative
No response
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Closed by today commit

repo: ImBIOS/cardus-app


text:
how to use it?

I have tried everything but I can't get it to work, please help.

There's something I need to know before I explain.
Do you know the usage of node.js and npm?

I know the basics

the truth is that I don't know how to use npm or node.js, if it wouldn't be too much trouble, I would like some reference images to know what exactly I should do.

Install node.js at here.
Download all the source files of this repository.
Open cli at where the sources are.
Run command npm install.
See readme.

thank you very much for your help, I just needed to install npm

Can I close thie issue?

repo: ImSejin/kakao-webtoon-downloader


text:
Querying with wrong block hash or transaction hash throws exception, it should return empty row

When querying with transaction or block, which does not exists, it throws exception. ideally it should return empty result set instead of throwing exception.
Exception comes as below.
Exception in thread "main" java.lang.NullPointerException 	at com.impetus.eth.parser.EthQueryExecutor.getDataNode(EthQueryExecutor.java:291) 	at com.impetus.blkch.sql.parser.AbstractQueryExecutor.executeDirectAPIs(AbstractQueryExecutor.java:55) 	at com.impetus.blkch.sql.parser.AbstractQueryExecutor.executeDirectAPIs(AbstractQueryExecutor.java:46) 	at com.impetus.eth.parser.EthQueryExecutor.getFromTable(EthQueryExecutor.java:156) 	at com.impetus.eth.parser.EthQueryExecutor.executeQuery(EthQueryExecutor.java:90) 	at com.impetus.eth.jdbc.EthStatement.executeQuery(EthStatement.java:309) 	at com.impetus.blkchn.eth.Query.main(Query.java:39)

fixed with latest pull #27

authors: ashishkshukla ayushvasu

repo: Impetus/eth-jdbc-connector


text:
docs: Add instruction to run pnpm install

What does this do?
Adds instruction to run pnpm install.
Unsure about naming/wording here - feedback welcome.

thanks for the comment. I pushed a separate commit updating the title.


text:
feat(987): Fix console warnings when running storybook locally

By creating this pull request you agree to the terms in CONTRIBUTING.md.
https://github.com/Infineon/.github/blob/master/CONTRIBUTING.md
--- DO NOT DELETE ANYTHING ABOVE THIS LINE ---
CONTRIBUTING.md also tells you what to expect in the PR process.
Description
Provide the information we need to review your PR. What problem does the pull request solve? "Bug fix" is not a good description.
Related Issue
If you opened an issue before creating the PR, point to it here.
Context
What do we need to know about your development environment, tools, target, and so on. Screenshots are always helpful if there is a UI element to this PR.

📦 Published PR as canary version: 25.7.3--canary.1536.857ec9d79babff10b9feac4f4b358e74e0bb7cd1.0

:sparkles: Test out this PR locally via:
npm install @infineon/infineon-design-system-stencil@25.7.3--canary.1536.857ec9d79babff10b9feac4f4b358e74e0bb7cd1.0
# or
yarn add @infineon/infineon-design-system-stencil@25.7.3--canary.1536.857ec9d79babff10b9feac4f4b358e74e0bb7cd1.0

@verena-ifx
Is this PR ready for review?

authors: tishoyanchev verena-ifx

repo: Infineon/infineon-design-system-stencil


text:
Incorrect state when RCing fast

It seems like the bug came back because when I was in GOTR RCing fast, two pouches would track properly, but then the other two ended up being wrong

Interacting with altar feels like you can do each action faster than a tick, but it seems that it's on every tick
If you empty your pouch too fast, and there is essence in your inventory already with free space, that emptied essence will "group" up and craft together if you do the empty action

Of course, you have to re-interact with the altar after emptying again, so it seems like it will take precedence
Maybe this proves that altar crafting is every tick
Or is it such that the first altar interaction you wait until the next game tick, but then once you get into that cycle you can freely dump your pouches and craft as long as they happen on the same ticks as you craft and not break the cycle afterwards?

I suppose this is partially why Adam used ticks with his similar PouchActions class; however, his plugin had tick issues too - even inside the bank when filling pouches. It was even worse when emptying and crafting. I just tried it yet again to confirm once more, and all 4 pouches were inaccurate versus just my last two (medium and large) which was repeated in the image above.
I'm thinking of a few courses of action

Start manually tracking when crafting since currently that's where the problem lies
Experiment with sending ticks on actions and see if we need to be blocking/clearing and queues and other variables based on the first action in the queue and it's tick time

However, what if it's only that one action with the outdated tick? We'd be clearing the whole queue which is not right
Could cause issues with current implementation because if it allows onItemContainerChanged to run while we are still manipulating with the queue, there could be issues. Will have to experiment to confirm non-breaking

I'll begin working on manually tracking since it seems viable currently and go in hand with the rest of the spaghetti I've created
- Listen for the experience drop -> Clear all essence from inventory
- Verify we should listen for the experience if the user action was to "Craft-rune" on an "Altar"
- Actions could vary based on altar so just confirm

I pushed a PR #16 that greatly mitigates if not resolves this issue. I'll be testing it more tomorrow and hopefully accepting the PR and merging it onto master.

This has been resolved by #13 from my testing for a few hours at GOTR and < an hour normal RCing

repo: Infinitay/essence-pouch-degrading


text:
Update NIH API code

Version 2 of the NIH API is now live

[x] search criteria
[x] parsing search result

Imports are working again

repo: InfoCommons/cic


text:
chore: using nox_poetry

Det kom med noen linjeskiftendringer som nox foretok seg...
Det vesentlige er i noxfile.py og workflow-filene

Forøvrig bør du oppdatere "Requirements" i  README.md ved å legge til pipx inject nox nox-poetry.

authors: frederik-ronnevig stigbd


text:
[1.16] Server crash from simple machine frame recipe

Playing on Enigmatica 6 v0.2.0
Industrial Foregoing Version: 3.0.1
Titanium Version: 3.0.1
Crashlog If Applicable (Upload to pastebin/gist):
https://pastebin.com/d9eZ6KQZ

Update IF


text:
いいところ診断の結果に優しさを追加したい

以下の結果を追加したい
'{userName}のいいところは優しさです。あなたの優しい雰囲気や立ち振る舞いに多くの人が癒やされています。'

これから対応します

repo: InokumaUi/assessment


text:
Fixes to #66

Fixes for #66 with respect to https://github.com/InsightSoftwareConsortium/ITK/issues/66#issuecomment-526170791

COMP: Fixes the HDF5 build on MinGW

The HDF532defs.h were changed, as the number of arguments was wrong in Mingw32.  This was referenced on https://github.com/InsightSoftwareConsortium/ITK/pull/562#discussion_r266267263 in #562 but wasn't incorporated.  Left it as it didn't seem to be an issue anyone else had until yesterday.

CI build error with Visual Studio:
D:\a\1\s\Modules\ThirdParty\HDF5\src\itkhdf5\src\H5Defl.c(291): error C2059: syntax error: ')'

git remote add muschellij2 git@github.com:muschellij2/ITK.git
git fetch muschellij2
git checkout muschellij2/master -b XXX
git merge-base XXX origin/master
git reset 122173dd6fa1e67c1a45c89d4891d726a1a500ae

Pushed the result to #1217 to provide a much much smaller diff to review

Thanks @hjmjohnson
@muschellij2 I believe I submitted a variant of this to upstream HDF5, but there are still build issues with Visual Studio that we need to resolve.

authors: hjmjohnson muschellij2 thewtex

repo: InsightSoftwareConsortium/ITK