[Feature Request]: Requesting integration of widely used Tesseract OCR

Is there an existing issue for the same feature request?

[X] I have checked the existing issues.

Is your feature request related to a problem?
I am aware that it has deepdoc, but would like to request integration of extremely popular and widely used Tesseract OCR which supports more than 100 languages.

Easily applicable.

Describe the feature you'd like
Requesting Easily Implementable Feature Enhancement to achieve this Workflow, so that life of Researchers, Investigators, Officials, and PhD Students could improve
(I'm adding this through the eyes of researcher, I'm aware that certain capabilities may already have been implemented in some way or form, I'm also aware that some part of this was requested earlier, my the goal is to make end product much more cohesive considering upcoming University Season)
# High Level Workflow__
Step 1: Add Document for RAG -
User uploads a document (e.g., PDF, image, or text file) to the system. RagFlow performs RAG to store document in a respective database.
Step 2: RagFlow checks if Document Requires OCR
RagFlow analyzes the document to determine if it requires OCR (Optical Character Recognition). -
If the document is an image or scanned PDF, it likely requires OCR.
Step 3: OpenCV + Pillow Preprocessing prior OCR -
If OCR is required, RagFlow utilizes Tesseract OCR with OpenCV and Pillow preprocessing to extract text from the document. The extracted data is then stored to improve respective database.
( I have personally tested that OpenCV+Pillow Preprocessing prior Tesseract improves complex text recognition by 52% while supporting more than 100 languages ).
Step 4: Database Improvement -
If OCR was required, the extracted text is used to improve the database.
If OCR was not required, RagFlow uses its inbuilt capabilities to improve the database with the uploaded document.
Step 5: User Enters Query -
The user enters a query or question.
Step 6: Database Search and Web Search (if database insufficient)
RagFlow searches the database to satisfy the user's query. -
If the database search yields insufficient results, RagFlow utilizes a web search API (e.g., Google Custom Search or SearXNG) to fetch relevant results. The web search results are then stored in the database.
Step 7: RagFlow Processing -
RagFlow processes the query using its LLM models accessed through APIs. The LLM models generate a response based on the database search and web search results.
Step 8: Response Generation -
RagFlow generates a response to the user's query, utilizing the processed information. This workflow integrates OCR, web search, and LLM capabilities to provide accurate and up-to-date responses to user queries.
Reference:
https://github.com/ItzCrazyKns/Perplexica
https://github.com/tesseract-ocr/tesseract
https://pypi.org/project/opencv-python/
https://pillow.readthedocs.io/en/stable/
Describe implementation you've considered
No response
Documentation, adoption, use case
No response
Additional information
No response

+1 I'm also intefesting of this feature.


Add support for HA master nodes in Kubernetes cluster

Hi @sloopstash/devops , We have been using your Kubernetes starter-kit for our organization's purpose. It s good so far, but we also want a support for adding multiple master nodes in the K8s cluster. It would be great if master HA support is added to starter-kit.
Thank you.

Sure @kirankumar023 , we'll take your issue as an enhancement and we'll resolve this issue asap. Thank you.

@kirankumar023 the issues now resolved.


Add link to paper

Please add a hyperlink to the associated Arxiv paper into the repo's readme. The link is https://arxiv.org/abs/1811.00717

Thanks. Added.


init

What changes were proposed in this pull request?
(Please fill in changes proposed in this fix)
How was this patch tested?
(Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests)
(If this patch involves UI changes, please attach a screenshot; otherwise, remove this)
Please review http://spark.apache.org/contributing.html before opening a pull request.

https://github.com/Kyligence/KAP/issues/15855

retest this please


cannot convert 'esp_netif_ip_info_t*' to 'const tcpip_adapter_ip_info_t*

Hello
When I try to compile the code i get this error
1.cannot convert 'esp_netif_ip_info_t*' to 'const tcpip_adapter_ip_info_t*' in initialization
const tcpip_adapter_ip_info_t *ip_info = &event->ip_info;
What have I do to fix this error?

Hello @MahdiBabaie , what is the version of your IDF? You are using LAN8720 or what?

Hi,
I just wanted to be clear about one thing before asking any further questions. Are you using an ESP32 board with an external LAN8720 module, or one with a built-in LAN8720 Ethernet interface?
Thanks.

Hi,
I just wanted to be clear about one thing before asking any further questions. Are you using an ESP32 board with an external LAN8720 module, or one with a built-in LAN8720 Ethernet interface?
Thanks.

External LAN8720!


Update development environment documentation

It currently mentions 3.5 and 2.7, whereas the setup.py only mentions support for 3.6 and onward. The presence of f-strings throughout the codebase with no future import for f-strings confirms that 3.5 is no longer supported and the documentation is outdated.

[x] #384  : update 1.5.X maintenance branch)
[x] #385  : update 2.0 branch

PRs for it are merged, closing.


No module named 'flask_security.models'

I am using Python 3.6.8 in the virtual environment created whilst following the Quick Start. Same thing happens with Python 3.5.3.
This error comes up immediately when attempting to run the app.
Traceback (most recent call last):   File "appme.py", line 4, in <module>     from flask_security.models import fsqla ModuleNotFoundError: No module named 'flask_security.models'
The appme.py file is copied verbatim from the Quick Start.

Can you verify that you have Flask-Security-Too 3.2.0 installed?

I followed the steps in the Quick Start. It downloaded the default version. Just did a pip3 freeze. It showed
Flask-Security-Too==3.2.0

I could be wrong but further investigation showed the 3.2.0 version to be released on 27 June. The checkin where the file fsqla.py starts to appear is dated 9 July.  I'm not that familiar with package management etc but could there be a missing release?

Ahh yes that appears to be the case. The Quick Start documentation is also dated 9 July. The previous version of this file does not use fsqla, so I'm going to assume I need to use the older Quick Start tutorial until a newer package is released.

Ahh - how quickly we forget. Yes that hasn't been released yet. readTheDocs seems to default to 'latest' rather than 'stable' - you will see that the quickstart guide is different.
You can pip install directly from the master branch rather than going through pypi if you are just starting out. I will probably push another release in a month or so.


Is it sensible to use deprecated  tag?

The markup produced by this plugin for inline font color is the <font> tag. This feels semantically correct, but <font> as a tag is deprecated and all official advice states that this should not be used.
While potentially unlikely due to its historic prevalence, there could be a situation in the future where it is removed from browsers. All you're doing here is adding some inline CSS. Is there a reason a <span> element shouldn't be used instead?

Hey @chrisdeeming,
Thanks for bringing up the use of the deprecated  tag in our project!
We initially chose the  tag to provide a unique identifier, making it easier to pinpoint and undo color changes. We know  is pretty common and might be used by other plugins on the same text, so we wanted to avoid potential conflicts.
Your reminder about the  tag being deprecated is really helpful, and we're now looking into alternative solutions that might work better than using a  tag. In the meantime, we'd love to hear your thoughts and ideas, as you seem to have a ton of experience in this area. If you have any suggestions or would like to contribute by submitting a PR with an improved solution, we'd be super grateful for your input.

Hello everyone, I would like to point out an advantage of using the tag.
If I use html saved by the plugin to generate an xdoc file with PHPWord, the color of the text is recognized by Word.
If I use the span tag, the color is ignored. Considering that editorjs is a way to store text, you should consider this backward compatibility with word.
After a quick test it seems that to convert  to  you also need to use color in the form of hexadecimal like this: Lorem ipsum. Maybe converting the text created by editorJS to Word is not a common use, however I do not exclude that the same problem is present even if you convert it to text in PDF format

The font tag feels right in this context. You avoid having to sanitize the CSS inside the HTML (which can be a pain). It's sad that they have deprecated the tag, it seems still useful in specific situations like this.


Add the support of the ZDIFF, ZDIFFSTORE commands

Search before asking

[X] I had searched in the issues and found no similar issues.

Motivation
This issue considers to support zdiff, zdiffstore commands.
Solution

[ ] zdiff
[ ] zdiffstore

Are you willing to submit a PR?

[x] I'm willing to submit a PR!

Is this issue still ongoing, I think I can do it

@zevin02 cool, go ahead


nixVersions.nix_2_7: reinit at 2.7.0

Description of changes
per requested at https://github.com/NixOS/nixpkgs/pull/181180#issuecomment-1205459646

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

But generally these old versions lacks maintenance, and regressions can be tested directly on the nix repo, there's just no strong reason to leave all of them around.

We need people to commit to maintaining those versions as well, IMO. It'll probably not be too hard to do so, but sometimes they may require fixes when a dependency is updated or so.


Call log based on called number

i am trying to retrieve call log based on called number,following is my code.
    var a = rc_helpers.call();
    rc_platform.send({
        url: a.createUrl({
            active: !0
        }),
        async: 1,
        method: "GET",
        headers: {},
        query: {
            dateFrom: acRCObject.getDateinyyyymmdd(),
            page: page,
            perPage: perPage
        }
    }).then(function(e) {
        rc_renderlogs(e.json().records)
    })

but no records are being returned.
i am trying to retrieve call logs by pagination.
any suggestions?
thanks in advance.

This space is used for SDK issues, for general support please use<EMAIL_ADDRESS>also please provide full request & response from API along with your code.


question: Support golang memory profiling

Is your feature request related to a problem? Please describe.

[ ] Support golang memory profiling on cli
[ ] Support golang memory profiling on http
[ ] Find a way to configure this so it can be enable and disabled in production.

Describe the solution you'd like
TBD

this will live on a branch for development purposes only but never in prod version.


upgrade golang to 1.17

https://github.com/open-cluster-management/backlog/issues/15474
Signed-off-by: Song Song Li<EMAIL_ADDRESS>

/lgtm


Release v0.2.0

Release llama-api-server v0.2.0 and llama-chat v0.2.0
Fix #25
Fix #26
Fix #27
Fix #15

I  think the new WasmEdge ggml plugin also solved #21. So we will need to update the run-llm.sh again based on the comment here: https://github.com/second-state/llama-utils/issues/21#issuecomment-1851465074
And the temporary solution for #21 is here: https://github.com/second-state/llama-utils/commit/26159695edb5c7a76fb1f41e0bfbe07e4176c0d7


Hide the REPO_TOKEN in the help message.

Fixes #98.

@kirill-konshin FYI
@bshaffer Do you mind taking a look?
Thanks!

@keradus Thanks for the review!
I addressed your comments. Please take another look.

LGTM

Alright, I'm going to merge this. @keradus Let me know if you still have concerns.

@tmatsuo please be more patient with merging PRs (in general).
It is nothing wrong for waiting more than 12 hours for the merge. Especially at weekend

@keradus Sorry about it. I will. #130 for you.

just you know, it is good to let the community do some :+1: ;)


Unable to create object from file

When I attempt to upload the Jamf Configuration file (WindowsDefenderATPOnboarding.plist) in Jamf version 10.12.0, it gives the error "Unable to create object from file".

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

ID: 2f067243-d029-ec35-cb1d-cc271b00d0a1
Version Independent ID: 121d2480-5bbc-9a8e-68a6-17f708dc21d4
Content: Installing Microsoft Defender ATP for Mac with JAMF
Content Source: windows/security/threat-protection/windows-defender-antivirus/microsoft-defender-atp-mac-install-with-jamf.md
Product: w10
Technology: windows
GitHub Login: @martyav
Microsoft Alias: v-maave

Documentation Error.  Able to resolve ty adding it as a Custom Settings instead of "uploading" it as a Configuration Profile itself.


Gap Statistic Implementation for K-means algorithm

Is it possible to integrate gap statistic method for locating the optimal number of clusters for a given data set in dlib.
Also is it possible to include k-means extension like k-means++ and x-means.
Best regards

Yeah, you could definitely implement that and add it to dlib :)
Also, dlib.net/ml.html#pick_initial_centers is basically kmeans++.


Changed order of tiles by color

Great job on grouping the word tiles by color, we'll continue to pursue learning more about color theory and layout of comm boards to consider further updates based on our research.


feat(helm):Support reading the values file from STDIN

We can use the command like
sed "s|foo|bar|g" values-template.yaml | helm install -f - stable/foo
This may be helpful in scripting.
Closes #2709

Yep. Docker and a few other tools also accept a hyphen as STDIN.

@rocky-nupt do you feel like making the change or just merge it as-is?

I have changed it to TrimSpace. Now you can merge it.

Thanks!


Create Checklist component and write markup & add icons to images/join-us

I found the icons that were used in this component from the current codeforchicago website (jekyll project). Followed the same folder structure -> created folder called join-us inside of images.
I didn't think this wouldn't be a reusable component so I copied the content exactly.

I just deleted the Card.jsx file from the changed files section. Hope this will fix it!

Looks like that brings up a conflict with the existing card component. Maybe merge with main then see if that resolves the conflict.


gmail account error

Hello,
I’m receiving this error message when I try to add rss of my gmail account:
The URL entered does not appear to be a valid RSS/Atom feed.
My gmail account is in format<EMAIL_ADDRESS>My other gmail accounts that don’t have dots between username work OK. It seems that dots between name and lastname are an issue. Is there any way I can make this gmail account work?

I just tested this with my michael.fogleman gmail account and it works fine. Are you using the latest version of Feed Notifier? (2.5)

I figured it out. The program doesn't support passwords longer than 15 characters. When I changed my password from 16 to 15 characters it worked. Kind of a bummer to sacrifice security, but I'll live with it. Anyway, thanks for a quick reply, it moved me in the right direction.

That's strange. I don't see anything in the code that would impose a character limit on the password. Anyway, glad you figured it out.


Optimistic update for mutations that delete/remove objects

Is there a way to do optimisticResponse for the mutations that delete/remove objects? I am using react-apollo and this is what I have now ...
graphql(DELETE_BRAND, {
  props: ({ ownProps, mutate }) => ({
    deleteBrand: (id) => mutate({
      variables: { id },
      updateQueries: {
        brands: (prev, { mutationResult }) => {
          const id = mutationResult.data.deleteBrand
          return {
            brands: prev.brands.filter(b => b.id !== id)
          }
        },
      },
    }),
  }),
}),

It's too simple :) Just pass the name of the mutation an ID of the deleted object.
graphql(DELETE_BRAND, {
  props: ({ ownProps, mutate }) => ({
    deleteBrand: (id) => mutate({
      variables: { id },
      optimisticResponse: {
        deleteBrand: id,
      },
      updateQueries: {
        brands: (prev, { mutationResult }) => {
          const id = mutationResult.data.deleteBrand
          return {
            brands: prev.brands.filter(b => b.id !== id)
          }
        },
      },
    }),
  }),
}),

Closing issue.

so optimisticResponse will store a data like {         deleteBrand: id,       } to Redux, and updateQueries can get this data out and use it to update redux?
I don't understand what brands comes from,and where it will goto.


No help on deleting an environment

The section on deleting a broken Python environment doesn't actually tell you how to delete an environment. It suggests how to repair a broken environment, but if you want to delete one, there's no help.

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

ID: 563f476d-a91b-58c7-9e32-b238756cc97d
Version Independent ID: 0a0e9cac-a8dc-47a1-14e1-1dacc3441613
Content: Manage Python environments and interpreters - Visual Studio (Windows)
Content Source: docs/python/managing-python-environments-in-visual-studio.md
Product: visual-studio-windows
Technology: vs-python
GitHub Login: @cwebster-99
Microsoft Alias: cowebster

@machowsk -- thank you for your feedback.  Please consider these resources:

Ask a question or find an answer on the Microsoft Q&A page for Visual Studio.
Check the Visual Studio MSDN Forum.
Stack Overflow
Reddit

@cwebster-99 -- please look into this issue.

@machowsk  Thank you for the issue report! We appreciate the feedback. @WilliamAntonRohm This has been addressed in the PR above and can now be closed.

#please-close


docs: add new faq items

Signed-off-by: João Vanzuita<EMAIL_ADDRESS>

LGTM, good job, thanks
The only suggestion is that if we have an issue for the known bug downloading Terraform providers, we should link to it.

good idea! I just added it


node_exporter role errors out when templating the systemd service

TASK [prometheus.prometheus._common : Create systemd service unit node_exporter] *****************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.errors.AnsibleUndefinedVariable: 'dict object' has no attribute 'packages'
fatal: [cherry]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'packages'"}

PLAY RECAP ***************************************************************************************************************************************************
cherry                     : ok=17   changed=0    unreachable=0    failed=1    skipped=6    rescued=0    ignored=0

Since the issue sounds really similar to the issue #342 which I previously opened I also made sure that packages are generally detected when doing a ansible -m ansible.builtin.package_facts cherry but I think the fact collection for packages is not even run at all. Also issue #451 sounds similar given the symptoms but seems to have a entirely different root cause.
Versions:

ansible: 10.5.0
ansible-core: 2.17.5
prometheus-community: 0.22.0

Click to see log of full run
ansible-playbook playbooks/server.yml -l webserver --diff

PLAY [all] ***************************************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************************************
ok: [cherry]

TASK [ssh-keys : Set authorized key] *************************************************************************************************************************
[...]

TASK [prometheus.prometheus.node_exporter : Validating arguments against arg spec 'main' - Prometheus Node Exporter] *****************************************
ok: [cherry]

TASK [prometheus.prometheus.node_exporter : Preflight] *******************************************************************************************************
included: /home/chris/.ansible/collections/ansible_collections/prometheus/prometheus/roles/node_exporter/tasks/preflight.yml for cherry

TASK [Common preflight] **************************************************************************************************************************************
included: prometheus.prometheus._common for cherry

TASK [prometheus.prometheus._common : Validate invocation of _common role] ***********************************************************************************
ok: [cherry] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [prometheus.prometheus._common : Check for deprecated skip_install variable] ****************************************************************************
ok: [cherry] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [prometheus.prometheus._common : Check for deprecated binary_local_dir variable] ************************************************************************
ok: [cherry] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [prometheus.prometheus._common : Check for deprecated archive_path variable] ****************************************************************************
ok: [cherry] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [prometheus.prometheus._common : Naive assertion of proper listen address] ******************************************************************************
ok: [cherry] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [prometheus.prometheus.node_exporter : Assert that used version supports listen address type] ***********************************************************
ok: [cherry] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [prometheus.prometheus.node_exporter : Assert collectors are not both disabled and enabled at the same time] ********************************************
skipping: [cherry]

TASK [prometheus.prometheus.node_exporter : Assert that TLS key and cert path are set] ***********************************************************************
skipping: [cherry]

TASK [prometheus.prometheus.node_exporter : Check existence of TLS cert file] ********************************************************************************
skipping: [cherry]

TASK [prometheus.prometheus.node_exporter : Check existence of TLS key file] *********************************************************************************
skipping: [cherry]

TASK [prometheus.prometheus.node_exporter : Assert that TLS key and cert are present] ************************************************************************
skipping: [cherry]

TASK [Install] ***********************************************************************************************************************************************
included: prometheus.prometheus._common for cherry

TASK [prometheus.prometheus._common : Validate invocation of _common role] ***********************************************************************************
ok: [cherry] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [prometheus.prometheus._common : Check existence of binary install dir] *********************************************************************************
ok: [cherry]

TASK [SELinux] ***********************************************************************************************************************************************
skipping: [cherry]

TASK [prometheus.prometheus.node_exporter : Configure] *******************************************************************************************************
included: /home/chris/.ansible/collections/ansible_collections/prometheus/prometheus/roles/node_exporter/tasks/configure.yml for cherry

TASK [Configure] *********************************************************************************************************************************************
included: prometheus.prometheus._common for cherry

TASK [prometheus.prometheus._common : Validate invocation of _common role] ***********************************************************************************
ok: [cherry] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [prometheus.prometheus._common : Create systemd service unit node_exporter] *****************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.errors.AnsibleUndefinedVariable: 'dict object' has no attribute 'packages'
fatal: [cherry]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'packages'"}

PLAY RECAP ***************************************************************************************************************************************************
cherry                     : ok=17   changed=0    unreachable=0    failed=1    skipped=6    rescued=0    ignored=0

I believe that you are correct in the assumption that the config fails due to the fact that the package facts are missing, but something looks off in that log, there are missing tasks such as Assert usage of systemd as an init system, Install dependencies and finally the Gather package facts one.
What does your playbook and inventory look like? Might be useful to see the output of ansible-config dump --only-changed -t all also.

I invoke it with ansible-playbook playbooks/server.yml -l webserver --diff and this is what the playbook looks like:
---
- hosts: all
  roles:
    - ssh-keys
    - prometheus.prometheus.node_exporter

This is the output of ansible-config dump --only-changed -t all:
ANSIBLE_NOCOWS(env: ANSIBLE_NOCOWS) = True
CONFIG_FILE() = /home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg
DEFAULT_FORKS(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = 20
DEFAULT_HOST_LIST(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = ['/home/chris/Documents/shared_projects/ansible-mathphys/hosts.ini']
DEFAULT_ROLES_PATH(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = ['/home/chris/Documents/shared_projects/ansible-mathphys/roles']
EDITOR(env: EDITOR) = nvim
INTERPRETER_PYTHON(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = /usr/bin/python3
PAGER(env: PAGER) = less
RETRY_FILES_ENABLED(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = False
TAGS_SKIP(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = ['install']

GALAXY_SERVERS:

CONNECTION:
==========

ssh:
___
control_path(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = /tmp/ansible-%%h-%%p-%%r
pipelining(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = True
ssh_args(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = -C -o ControlMaster=auto -o ControlPersist=1800s

TAGS_SKIP(/home/chris/Documents/shared_projects/ansible-mathphys/ansible.cfg) = ['install']
This is the culpit, the package facts step is tagged with install

Oh my .. Sorry for not spotting this myself! Thanks a ton for the help! ❤

No problem, it is however something that we should probably fix since you should be able to run the configure without install.

If you want to PR-it up then I'd be happy to accept it

If you want to PR-it up then I'd be happy to accept it

I had a quick look, but tbh I'm not sure what needs to be done there as the task already has the configure tag set 😅
https://github.com/prometheus-community/ansible/blob/1231802a30f951663f6217aa7f44f9a6f0e220cb/roles/_common/tasks/preflight.yml#L68-L76

Yes but the install tag should be removed since the package facts are currently only used by configuration tasks


build(security): add nightly run of govulncheck with continue-on-error: false

Change Overview
Add nightly trigger to dependency review action.
Pull request type
Please check the type of change your PR introduces:

[ ] :construction: Work in Progress
[ ] :rainbow: Refactoring (no functional changes, no api changes)
[x] :hamster: Trivial/Minor
[ ] :bug: Bugfix
[ ] :sunflower: Feature
[ ] :world_map: Documentation
[ ] :robot: Test

Issues

fixes #2782

Test Plan
Make sure action run on PR has continue-on-error: true
Check action run nightly after merge

[x] :muscle: Manual
[ ] :zap: Unit test
[ ] :green_heart: E2E

Alternatively, have a separate workflow for govuln only, that runs both on PRs and nightly as well.

That's exactly what this workflow is. It triggers on PRs and nightlies, but it's not a part of any other pipeline.

Alternatively, have a separate workflow for govuln only, that runs both on PRs and nightly as well.

Right. This makes more sense. Moved govulncheck to a separate workflow.


Form.Select, Form.Dropdown doesn't accept defaultValue or value.

Hey guys, I've been digging around for a solution to initially setting the value of a Form.Select (and also tried Form.Dropdown).
I tried what looked to be the previously supported defaultValue prop, and later suggestions to using the value prop. Neither work, throws an error Failed prop type: Invalid prop 'value' supplied to 'Dropdown'. thrown by checkPropTypes.
Is this react specific?

Hrm, works fine with Form.Dropdown, I must have missed something earlier. It's just Form.Select that doesn't seem to have this functionality, so I'll stop using it and switch to Form.Dropdown.

Please fill our issue template fully, Form.Select is just an alias for Form.Dropdown.
Both components are working correctly: https://codesandbox.io/s/o9y4llrknz

For anyone else who runs into this issue, this is a result of passing an empty object to value.


File append

Codecov Report

Merging #13 (c3d132c) into master (9e58d51) will increase coverage by 0.57%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #13      +/-   ##
==========================================
+ Coverage   92.00%   92.57%   +0.57%
==========================================
  Files           3        3
  Lines         175      175
==========================================
+ Hits          161      162       +1
+ Misses         14       13       -1

Impacted Files
Coverage Δ

src/minilogger.jl
88.17% <100.00%> (+1.07%)
:arrow_up:

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 9e58d51...c3d132c. Read the comment docs.


Release 2024.1.1

Report robot as running Kotlin to the FMS
Update templates for 2024 (#154)
Update package version
Fix command skeleton template
Update GradleRIO versions
Fix broken functions for command skeleton
npm update/upgrade
Update Node versions in workflow

Release checklist:

[ ] Update RELEASE_NOTES.md
[ ] Update CHANGELOG.md
[ ] Update Changelog Webview HTML
[ ] Update version


Fixed hittest iOS18 not work

Hey! Thanks for your PR. I'll merge it after #142 as it changes the codebase significantly.
Have a nice day,
Tomasz


"Checkpoint not found" Web Server

I made a model using Luminoth, and it works well. But now I have to use the model.
In local, i used a python script :
detector = Detector(checkpoint='GoogleModel')
result = detector.predict(image)
All work well ! But now I have to use it on a webpage, so I used WampServer to make it in local.
A php file call the python script, but I have the error "Checkpoint not found. Check remote repository? [y/N]:".
I think it's because all my checkpoints are in local, but i don't know how use them online.
I tought download Luminoth on the WampServer and import the checkpoint but I don't know how do that.
Thank you for your help

Hi @SpeedyGonzalves!
What is GoogleModel here? For this to work, either it must be a remote checkpoint hosted by Luminoth (it is not), or it must have been saved by you (so it would be local to your computer).
Please check the section on working with checkpoints in the doc. In particular, "Create a checkpoint" shows the command that you need to run in order to output a checkpoint from a config file.

Hi @dekked !
"GoogleModel" is an alias of an existing checkpoint.

I succed when I used it in local, but this checkpoint are not available on the webserver.
Or maybe I just didn't understand what you tried to say ?

The checkpoints should be available in the ~/.luminoth/checkpoints/ folder. Check that this is the case wherever you are running the web server.

Same results, I put the .luminoth's folder at the root of my web server and also at the root of my project (just in case) but always the same error :
Checkpoint not found. Check remote repository? [y/N]:


GoSublime Dependence

What makes this plugin dependent on GoSublime? Is that really required ? Or can code changes be made to remove that dependency?

it is optional
just error in console
Error loading scope:source.gotemplate: Unable to find syntax file for scope source.gotemplate in Packages/GoDebug/GoDebug.tmLangu


(1,)+ is just silently accepted

The expression (1,)+ is currently parsed as a sequence of 1 and the pos-repetition operator.
main [start 1:1, end 1:6]
 sequence [start 1:1, end 1:6]
  op_mod_pos [start 1:1, end 1:6]
   sequence [start 1:1, end 1:5]
    value_integer [start 1:2, end 1:3] Str("1")

The correct interpretation would be:

(1,) shall be considered as a list with one item, therefore a list object is being generated
The pos-repetition operator is not valid in this case
Latter case may be heavy to resolve, but an error message should occur that no positive repetition on a list is allowed.

relates to #45 as well

Both problems of this issue had been resolved meanwhile:

1. `(1,)` shall be considered as a list with one item, therefore a list object is being generated

This is already the case since b48b42043428d8a89526194b915c73f4bd6adc81

2. The pos-repetition operator is not valid in this case
   Latter case may be heavy to resolve, but an error message should occur that no positive repetition on a list is allowed.

This is now correctly detected with 3338b5c0f68b497604f4973f10b7f7598b751361 and some commits before:
Tokay 0.6.0
>>> (1,)+
Line 1, column 1: Operator '+' has no effect on non-consuming sequence
>>>

Anyway, this issue will remain open until #10 is resolved, as this faces the same problem as well.


close dropdown problem

open dropdown
click div.trigger several times to close dropdown. Sometimes dropdown is not closing espacially when clicking fast.
Any browser, any platform.

Screencast https://drive.google.com/file/d/0B4gJaz6KIT-7dVdyNnQ2Mk1Zc1E/view
Any idea how to fix it?

Hey @rosivanov, I am not officially supporting or maintaining FancySelect at this time. You can read a bit more about the rationale behind that in the readme.


Add runtime configuration warning

Add an implicit parameter to the mount function with sensible default to configure what run time warning. Typical example we should be able so catch:

<input onClick={f}/> instead of onclick
<input clazz="c"/> instead of class
<inpu/> instead of input

foo
 instead of foo.toString

It would not have to be an implicit parameter, a regular parameter with default value is also fine.

I've started working on this, should very straight forward to implement.
What do you think about exposing
trait Config {
  def transformElement(a: Any): String
  def transformAttributeKey(k: String): String
  def transformAttributeValue(a: Any): String
  ...
}

instead of
trait Config {
  def inspectElement(a: Any): Unit
  def inspectAttributeKey(k: String): Unit
  def inspectAttributeValue(a: Any): Unit
  ...
}

?

Are the String return values the warning messages that should go to the console? I would prefer to type parameterize the warning and output types and then have a method emit (or some other name) that ingests the warning type to an output
trait Config[A, B] {
  def emit(a: A): B
  def transformElement(a: Any): A
  def transformAttributeKey(k: String): A
  def transformAttributeValue(a: Any): A

The default implementation would then be Config[String, Unit] and print all warnings. The user could still in theory do anything they like such as build richer warning types, maybe redirect warnings to the sbt console, etc.
Over-engineering?

I was thinking about these functions to "hot fix" stuff, like do the onClick → onclick transformation on the fly (in addition to side effectly printing warning to the console), but that's probably not such a good idea

Aah, I misunderstood the role of the config.
I'm not sure either whether "hot fixing" typos is a good idea. I can see it being occasionally convenient but it in the bigger picture it might allow you to be sloppy, which is bad IMO.
I guess it's best to leave this up to users. This design
trait Config {
  def transformElement(a: Any): String
  def transformAttributeKey(k: String): String
  def transformAttributeValue(a: Any): String
  ...
}

is incredibly flexible and it could be used in a ton of unexpected way to create developer/instrumentation tools. The power could be abused to hot fix typos, but I still think we should go with that.


cmd/link: SDYNIMPORT on arm results in incorrect assembly

What version of Go are you using (go version)?

$ go version
go version devel +7d7bd5abc7 Thu Aug 13 15:22:41 2020 +0000 openbsd/amd64

What did you do?
Building the following code for openbsd/arm (and presumably any ELF GOARCH=arm):

$ cat x.go
package main

import (
        _ "unsafe"
)

//go:cgo_import_dynamic libc_getpid getpid "libc.so"

//go:linkname libc_getpid libc_getpid

func trampoline()

func main() {
        trampoline()
}
$ cat x.s
TEXT ·trampoline(SB),0,$0
        CALL    libc_getpid(SB)
        RET

$ GOARCH=arm64 GOOS=openbsd go build

Results in a binary that decompiles to the following assembly:
...
0006a790 <main.main>:
   6a790:       e59a1008        ldr     r1, [sl, #8]
   6a794:       e15d0001        cmp     sp, r1
   6a798:       9a000002        bls     6a7a8 <main.main+0x18>
   6a79c:       e52de004        str     lr, [sp, #-4]!
   6a7a0:       eb000003        bl      6a7b4 <main.trampoline>
   6a7a4:       e49df004        ldr     pc, [sp], #4
   6a7a8:       e1a0300e        mov     r3, lr
   6a7ac:       ebfff097        bl      66a10 <runtime.morestack_noctxt>
   6a7b0:       eafffff6        b       6a790 <main.main>

0006a7b4 <main.trampoline>:
   6a7b4:       e59a1008        ldr     r1, [sl, #8]
   6a7b8:       e15d0001        cmp     sp, r1
   6a7bc:       9a000002        bls     6a7cc <main.trampoline+0x18>
   6a7c0:       e52de004        str     lr, [sp, #-4]!
   6a7c4:       00000019        andeq   r0, r0, r9, lsl r0
   6a7c8:       e49df004        ldr     pc, [sp], #4
   6a7cc:       e1a0300e        mov     r3, lr
   6a7d0:       ebfff08e        bl      66a10 <runtime.morestack_noctxt>
   6a7d4:       eafffff6        b       6a7b4 <main.trampoline>
Disassembly of section .plt:

0006a7d8 <.plt>:
   6a7d8:       e52de004        str     lr, [sp, #-4]!
   6a7dc:       e59fe004        ldr     lr, [pc, #4]    ; 6a7e8 <runtime.etext+0x10>
   6a7e0:       e08fe00e        add     lr, pc, lr
   6a7e4:       e5bef008        ldr     pc, [lr, #8]!
   6a7e8:       00065838        andeq   r5, r6, r8, lsr r8
   6a7ec:       e28fc600        add     ip, pc, #0      ; 0x0
   6a7f0:       e28cca65        add     ip, ip, #413696 ; 0x65000
   6a7f4:       e5bcf838        ldr     pc, [ip, #2104]!

In particular, note that the main.trampoline function contains an andeq instruction where a bl instruction would be expected. What I believe is happening is that the CALL is being replaced with a PLT and my current guess is that the actual instruction opcode is either not being included or is being being wiped in the process. I would think that the 00000019 value is specifying the offset to the PLT entry, however should have a 0xeb for the first byte in order to make this a bl instruction.

@cherrymui @rsc @mdempsky @ianlancetaylor
@mwhudson @thanm

Seems to reproduce with GOOS=linux too.

Is this new on tip (with the merge of the new linker), or it was wrong before as well?
As cgo_import_dynamic is not user-facing, if it is not currently used by the runtime it is not surprising that it doesn't work.
Is it for ARM (32-bit) or ARM64? I saw both mentioned in the original post. (The disassembly looks like ARM32.)

I'm reproducing with GOARCH=arm (and implicitly GOOS=linux).
I see similar andeq instructions in main.trampoline with Go 1.13 and Go 1.14.

I think CL https://go-review.googlesource.com/c/go/+/248399 fixes it.
It is related to issue #19811, which I really hate...

Is this new on tip (with the merge of the new linker), or it was wrong before as well?

I should have mentioned that this is the same with 1.13.9, so I do not believe it is a regression.

As cgo_import_dynamic is not user-facing, if it is not currently used by the runtime it is not surprising that it doesn't work.
Is it for ARM (32-bit) or ARM64? I saw both mentioned in the original post. (The disassembly looks like ARM32.)

Apologies - that should have been ARM32 (GOARCH=arm) (fixed).

I think CL https://go-review.googlesource.com/c/go/+/248399 fixes it.

It does indeed, thanks (I was looking at the correct line of code, but failed to spot the obvious fix!)
The disassembly now gives:
000aa2bc <main.trampoline>:
   aa2bc:       e59a1008        ldr     r1, [sl, #8]
   aa2c0:       e15d0001        cmp     sp, r1
   aa2c4:       9a000002        bls     aa2d4 <main.trampoline+0x18>
   aa2c8:       e52de004        str     lr, [sp, #-4]!
   aa2cc:       eb000008        bl      aa2f4 <runtime.etext+0x14>
   aa2d0:       e49df004        ldr     pc, [sp], #4
   aa2d4:       e1a0300e        mov     r3, lr
   aa2d8:       ebff1025        bl      6e374 <runtime.morestack_noctxt>
   aa2dc:       eafffff6        b       aa2bc <main.trampoline>

And executes correctly.

It is related to issue #19811, which I really hate...


feat: Java SDK API changes

overload for the API operations that accepts operation params
[WIP] add id as docId when a location header is found in response
added default '' to some enums

Models with id in their properties

Resource
SocialSocialInner
GetTemplates200ResponseMessagetemplatesInner
ListUsers
Event
CallbackCall
CallbackCallCallback
User
CustomList
Distributionlist
DistributionlistDistlistdetailsInner
Callback
GetCallbacks200ResponseCallbacksInner
Workspace
Template
SocialSocialInner

Closing this as this is merged into java-sdk-params-creation


Generate deepweeds and cwfid Weed COCO JSON in CI

Demonstrating the possibility of end-to-end testing referenced in https://github.com/Sydney-Informatics-Hub/Weed-ID-Interchange/pull/42#issuecomment-681807326.

Yay! Your code runs in CI!

Good job Joel!

Good job Joel!

You're welcome to be more critical than that! :D


de-google QR module

Review from a user:
"The flutter package uses a closed-source Google-owned algo that scans the QR code. There are other flutter packages out there that scan QR with no Google involvement but add ~3MB to the app."

This works on all our test devices. Closing this for now. If users have issues with it we can open a new issue with more specific details.

reopening...lets just wait for tests on Graphene to confirm.

Closing this. Let new issues that come up in testing be reported separately.

https://x.com/aeonbtc/status/1791606193737372156?s=46&t=_6Oe_Q359LmqPqg4ZZgQ4w
User reporting this as an issue.

Francis’ comment https://x.com/francispouliot_/status/1791609325372207393?s=46&t=_6Oe_Q359LmqPqg4ZZgQ4w

https://github.com/GrapheneOS/Camera
@i5hi  @leesalminen  is using the cameraX android library acceptable ?
there are a few newer flutter packages that use cameraX internally.


Add option to load test owners from a URL.

For example, a CSV file stored in a GCS bucket, updated by some other
process.

LGTM, will let someone else with go readability toss on the lgtm label

I don't know if this is a great plan. Why not just keep a local copy of the repo? And sync after a merge or every 15 minutes or something. I don't want to introduce another service. Remember we're going to need to run submit queue against other repositories-- I'd like to keep the operational complexity to a minimum.

We get OWNERS data out of the git repo every ~10 minutes.  We could pull test owners from there similarly...

@eparis @lavalamp is the request here to commit the CSV file somewhere and then download this on an intermittent basis directly from github rather than GCS?

Right, the OWNERs files should all be in the repository that they apply to.
(We want to rerun this infrastructure against all of our repositories!)
Ideally this won't be a CSV forever, or the CSV will be generated from
comments or whatnot in the source files.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/contrib/pull/1264#issuecomment-228900220,
or mute the thread
https://github.com/notifications/unsubscribe/AAnglisAZNoonNxlbd687m6nV4xNtY1Xks5qQFSsgaJpZM4I9Tfh
.

Agreed that we want this to work for any arbitrary repo (including non kubernetes repos).
For the time being may we decouple automatically generating the list of tests and owners for those tests from this PR?
For the time being we're depending on a CSV file and I want to prioritize moving auto-assignment off of Ryan's workstation and/or doing it by hand.
We can then iteratively improve the way we store/generate these test owners.

Yeah, I'm fine if we keep it as a CSV right now, but it should be checked
into and obtained from the repository.
On Mon, Jun 27, 2016 at 4:05 PM, Erick Fejta<EMAIL_ADDRESS>wrote:

Agreed that we want this to work for any arbitrary repo (including non
kubernetes repos).
For the time being may we decouple automatically generating the list of
tests and owners for those tests from this PR?
For the time being we're depending on a CSV file and I want to prioritize
moving auto-assignment off of Ryan's workstation and/or doing it by hand.
We can then iteratively improve the way we store/generate these test
owners.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/contrib/pull/1264#issuecomment-228902348,
or mute the thread
https://github.com/notifications/unsubscribe/AAnglqKx-oJQzcwjeRb_v7aCsFL_1GeEks5qQFdLgaJpZM4I9Tfh
.

How about pointing it at https://raw.githubusercontent.com/kubernetes/kubernetes/master/test/test_owners.csv (after that PR merges)?

It seems we've merged another way of doing this.


PicklistEnabler errors out if picklist doesn't exist on target org

Describe the bug
When deploying or releasing, in the "Executing Pre Deployer Picklist Enabler" phase we get an error :
Unable to process Picklist update due to Cannot read properties of undefined (reading 'Metadata')
From what I see in a debug session, it errors out when trying to process the "picklistInOrg" variable
TypeError: Cannot read properties of undefined (reading 'Metadata')
at PicklistEnabler.execute (@dxatscale/sfpowerscripts.core/lib/package/deploymentCustomizers/PicklistEnabler.js:84:55)
To Reproduce
Add a new picklist field to an object. package and deploy.
During the Picklist Enabler processing, the getPicklistInOrg()  returns undefined for the picklistInOrg variable
When it evalues
if (!picklistInOrg && picklistInOrg?.Metadata?.valueSetc?.valueSetDefinition) continue;
if doesn't continue, then falls over here
for (const value of picklistInOrg.Metadata.valueSet.valueSetDefinition.value)
Expected behavior
New picklists shouldn't need to be deployed as the bug this is trying to solve for is for modified picklists ?
so if you don't get a value back from the target org, skip further processing. It would also be helpful to get more information out of the trace logging too as theres a lot that can go wrong
Screenshots
If applicable, add screenshots to help explain your problem.
Platform Details (please complete the following information):

OS: MacOs
Version [e.g. CLI Version  eg: 1.6.6] @dxatscale/sfpowerscripts/23.4.2 darwin-arm64 node-v20.5.1
Salesforce CLI(sfdx cli) Version: @salesforce/cli/2.7.11 darwin-arm64 node-v20.5.1
CI Platform: GtiHub

Additional context
Add any other context about the problem here.

Yes, I noticed the same during scratch org pool prepare (in an empty scratch org), while going through the logs. The deployment doesn’t stop/exit thought. It just says: Unable to process Picklist update due to Cannot read properties of undefined (reading 'Metadata') .
As you mention in the issue, it probably return undefined as this custom picklist doesn’t exist in an empty scratch org before the package is being installed.

Running locally I change the line
if (!picklistInOrg && picklistInOrg?.Metadata?.valueSetc?.valueSetDefinition) continue;
to
if (!picklistInOrg || picklistInOrg?.Metadata?.valueSetc?.valueSetDefinition) continue;
which seemed to work

@cjbradshaw  thanks for this one, its an incorrect conditional, what you meant was valueSetc should be changed to valueSet right.


Need Null Safety Version

Please upgrade to null safety ASAP

Take a look here:  https://github.com/bradintheusa/flutter_circular_chart
I'll submit a pull request to https://github.com/GusRodrigues86/flutter_circular_chart shortly.

I forked the project and deploy a null safety version -> https://pub.dev/packages/awesome_circular_chart


Update dependencies

Hey @Mordil, you just merged a pull request, have a coin!
You now have 37 coins.


variable inside variables has not been replace

As title said, i created variable

path - $(build.artifactstagingdirectory)\for-deploy\website

but the output is C:\agent\_work\r1\a\$(build.artifactstagingdirectory)\for-deploy\website. It seems the variable build.artifactstagingdirectory has not been replace.

@jmvtrinidad , This issue has been fixed. Please feel free to reopen the issue if you are still facing the issue


flux calibration

Reproduce "sensefunc". Need to grab library of known flux standards from IRAF, compare to observed standard to get flux calibration.
Important to only get stellar continuum, mask out lines

seems to work coarsely. more testing needed, but closing this for now!


Blocking log calls are dangerous

Upon closer inspection I noticed that all logging calls are synchronous and blocking. This is very VERY dangerous, as it almost timed out our entire production system.
Log calls should be dispatched to a goroutine by default.

I actually wrote it in the README.. Do you want to submit a PR?


Implement PassiveScrollViewer; replace ScrollViewer in all XAML controls

Implement PassiveScrollViewer across various controls for improved mousewheel behavior
Pull request type

[x] Feature

Current Behavior
Currently, many controls in this library use a ScrollViewer, which, while configurable (CanContentScroll, etc) still consumes mousewheel events, leading to a less-than-optimal user experience Stackoverflow. This can be observed within the Gallery app by going to the 'NavigationView' section and attempting to mouse wheel down the page. While replacing .NET's control might seem heavy-handed the only current remedy for app devs is to copy the control and directly replace the style.
New Behavior

Open the Gallery app and go to the 'NavigationView' page
Use the mouse wheel to scroll through the controls down the center of the page (it's cheating if you mouse wheel over the scrollbar).
Optionally, toggle the IsScrollSpillEnabled default value new PropertyMetadata(true)); (PassiveScrollViewer.cs, line 21) and head over to the 'DataGrid' page to observe the difference.

Other information

Hey @koal44, thank you for your contributions to the WPF UI. It seems that event bubbling works perfectly and scroll correctly moves to higher controls.


Bug in calculation of 6-channel AudioRBResampler

Godot version:
Master (89e1b30)
OS/device including version:
All.
Issue description:
@Rubonnek found unnecessary assignments in AudioRBResampler::_resample in the C == 6 case: https://github.com/godotengine/godot/blob/9f479f096cb50fa8d1215e68c262f110116114ef/servers/audio/audio_rb_resampler.cpp#L101-L117
If compared with other channels calculations, there should likely be intermediate calculations: https://github.com/godotengine/godot/blob/9f479f096cb50fa8d1215e68c262f110116114ef/servers/audio/audio_rb_resampler.cpp#L70-L80
There's also something fishy in the C == 4 configuration as v3 and v4 are ignored: https://github.com/godotengine/godot/blob/9f479f096cb50fa8d1215e68c262f110116114ef/servers/audio/audio_rb_resampler.cpp#L82-L99

Code is unused and will likely never be used, but added version of it anyway


Proposal: use heuristic for determining comparison result

Note: there's more cleanup to be done and tests to be written/updated if folks are on board with this idea; this is just a proposal for the sake of discussion
I've been trying to debug a scenario where dive doesn't list files as modified, despite the layer size being upwards of 100MB. I started out following in the footsteps of #142, where I added ModTime to the FileInfo struct to handle a case such as this:
# base image
FROM alpine:latest
RUN dd if=/dev/zero of=zero.bin bs=1M count=1

# derived image
FROM base
RUN touch zero.bin

Currently, in dive, the layer list will show that the layer created by touch zero.bin is 1MB, but will not show the zero.bin file as a modified file. The file attributes that are currently tracked haven't changed, but the modification time (mtime) has, so Docker includes zero.bin in the layer created by touch zero.bin, and you're stuck carrying around 2MB instead of 1MB if that's what you desire.
The OCI image layer specification lists the file attributes that are tracked; this includes not only modification time, but extended attributes (xattrs). The latter, I found, is actually the root cause of my problem, because I have an image build process that modifies the ctime (changed time, ChangeTime in the TAR header).
I started to look in to comparing xattrs or ChangeTime in FileInfo.Compare, but ran into another problem: the Docker image as published contains the change time in the TAR header for the files in question, but exporting the Docker image from the engine (when dive starts) does not include these attributes. I don't know why that's the case, but it's definitely a lossy process.
So, I'm proposing redefining "modified" as "present in both the upper and lower layer", essentially leaving the decision up to whatever built the image instead of trying to make a comparison in dive itself. From a UX perspective, I could see value in the comparison logic for indicating why something was modified (the hash changed, the UID/GID changed, etc.), but regardless of the underlying reason, you're still carrying around the baggage if whatever built the image decided that something changed.

Sorry! I didn't mean to close this, I renamed the master branch to main... I should have switched the target here first.


Question regarding armor

Does this API have support for animating armor? Say, what if I want a hat that wobbles, does the API support animations created for armor?

Yeah propably if you use the RenderPlayerEvent, by calling all basics to animate an entity, I've not tested that things, but it's a great idea !
I could probably try to animate an armor (or the player literally) and if it's a success, I will make a tutorial on the Wiki !

@Timmypote Work on it actually ! Stay tuned !


Bot hanging and crashing randomly?

The bot randomly doesn't respond to commands and pressing any key in the command prompt some how refreshes it allowing it to responds to commands again. When this happens the command prompt doesn't say anything, until you refresh it by pressing a any key.
Also unknown if it's related or not the bot sometimes crashes with this error:
Task exception was never retrieved
future: <Task finished coro=<VoiceClient.poll_voice_ws() done, defined at C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\voice_client.py:265> exception=TimeoutError()>
Traceback (most recent call last):
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\asyncio\tasks.py", line 239, in _step
    result = coro.send(None)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\voice_client.py", line 272, in poll_voice_ws
    yield from self.ws.poll_event()
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\gateway.py", line 604, in poll_event
    msg = yield from asyncio.wait_for(self.recv(), timeout=30.0, loop=self.loop)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\asyncio\tasks.py", line 390, in wait_for
    raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
Error disconnecting during reconnect
Traceback (most recent call last):
  File "C:\Users\HENNESS_SERVER\MusicBot\musicbot\player.py", line 287, in websocket_check
    assert self.voice_client.ws.open
AssertionError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\gateway.py", line 403, in send_as_json
    yield from super().send(utils.to_json(data))
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\websockets\protocol.py", line 309, in send
    yield from self.ensure_open()
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\websockets\protocol.py", line 393, in ensure_open
    raise ConnectionClosed(self.close_code, self.close_reason)
websockets.exceptions.ConnectionClosed: WebSocket connection is closed: code = 1000, no reason.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\HENNESS_SERVER\MusicBot\musicbot\bot.py", line 302, in reconnect_voice_client
    await vc.disconnect()
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\voice_client.py", line 294, in disconnect
    yield from self.main_ws.voice_state(self.guild_id, None, self_mute=True)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\gateway.py", line 457, in voice_state
    yield from self.send_as_json(payload)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\gateway.py", line 406, in send_as_json
    raise ConnectionClosed(e) from e
discord.errors.ConnectionClosed: WebSocket connection is closed: code = 1000, no reason.
Task exception was never retrieved
future: <Task finished coro=<on_player_pause() done, defined at C:\Users\HENNESS_SERVER\MusicBot\musicbot\bot.py:410> exception=ConnectionClosed('WebSocket connection is closed: code = 1000, no reason.',)>
Traceback (most recent call last):
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\asyncio\tasks.py", line 239, in _step
    result = coro.send(None)
  File "C:\Users\HENNESS_SERVER\MusicBot\musicbot\bot.py", line 411, in on_player_pause
    await self.update_now_playing(entry, True)
  File "C:\Users\HENNESS_SERVER\MusicBot\musicbot\bot.py", line 467, in update_now_playing
    await self.change_status(game)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\client.py", line 1557, in change_status
    yield from self.ws.change_presence(game=game, idle=idle)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\gateway.py", line 426, in change_presence
    yield from self.send(sent)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\gateway.py", line 398, in send
    yield from super().send(data)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\websockets\protocol.py", line 309, in send
    yield from self.ensure_open()
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\websockets\protocol.py", line 401, in ensure_open
    raise ConnectionClosed(self.close_code, self.close_reason)
websockets.exceptions.ConnectionClosed: WebSocket connection is closed: code = 1000, no reason.
Traceback (most recent call last):
  File "C:\Users\HENNESS_SERVER\MusicBot\musicbot\bot.py", line 1940, in on_message
    also_delete=message if self.config.delete_invoking else None
  File "C:\Users\HENNESS_SERVER\MusicBot\musicbot\bot.py", line 473, in safe_send_message
    msg = await self.send_message(dest, content, tts=tts)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\client.py", line 831, in send_message
    data = yield from self.http.send_message(channel_id, content, guild_id=guild_id, tts=tts)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\discord\http.py", line 105, in request
    r = yield from self.session.request(method, url, **kwargs)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\aiohttp\client.py", line 555, in __iter__
    resp = yield from self._coro
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\aiohttp\client.py", line 198, in _request
    conn = yield from self._connector.connect(req)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\aiohttp\connector.py", line 304, in connect
    yield from self._create_connection(req)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\aiohttp\connector.py", line 578, in _create_connection
    transport, proto = yield from self._create_direct_connection(req)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\site-packages\aiohttp\connector.py", line 601, in _create_direct_connection
    local_addr=self._local_addr)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\asyncio\base_events.py", line 663, in create_connection
    sock, protocol_factory, ssl, server_hostname)
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\asyncio\base_events.py", line 686, in _create_connection_transport
    yield from waiter
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\asyncio\futures.py", line 358, in __iter__
    yield self  # This tells Task to wait for completion.
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\asyncio\tasks.py", line 290, in _wakeup
    future.result()
  File "C:\Users\HENNESS_SERVER\AppData\Local\Programs\Python\Python35\lib\asyncio\futures.py", line 266, in result
    raise CancelledError
concurrent.futures._base.CancelledError
Cleaning up... Done.
Restarting in 8 seconds...
Connected!  Musicbot v1.9.5_2

That error is a result of the connection to Discord being wonky. Blame CloudFlare.


refactor(linter): reduce the lookup times of Call Expression in Jest rules

Current dependencies on/for this PR:

main

PR #1184   👈

This stack of pull requests is managed by Graphite.


mmap path bug fix

mmap path was not being passed into map

Codecov Report

Merging #219 (c60eae1) into dev (64fd6ec) will decrease coverage by 0.45%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##              dev     #219      +/-   ##
==========================================
- Coverage   85.44%   84.99%   -0.46%
==========================================
  Files          47       47
  Lines        3127     3018     -109
  Branches      612      612
==========================================
- Hits         2672     2565     -107
+ Misses        340      338       -2
  Partials      115      115

Flag
Coverage Δ

unittests
84.99% <ø> (-0.46%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

meerkat/datapanel.py
93.04% <ø> (-0.40%)
:arrow_down:

meerkat/columns/spacy_column.py
49.01% <0.00%> (-2.84%)
:arrow_down:

meerkat/mixins/collate.py
75.00% <0.00%> (-2.78%)
:arrow_down:

meerkat/columns/list_column.py
57.40% <0.00%> (-1.53%)
:arrow_down:

meerkat/cells/abstract.py
76.47% <0.00%> (-1.31%)
:arrow_down:

meerkat/block/ref.py
75.86% <0.00%> (-0.81%)
:arrow_down:

meerkat/pipelines/entitydatapanel.py
70.83% <0.00%> (-0.79%)
:arrow_down:

meerkat/columns/lambda_column.py
79.43% <0.00%> (-0.75%)
:arrow_down:

meerkat/block/abstract.py
95.65% <0.00%> (-0.72%)
:arrow_down:

meerkat/mixins/materialize.py
91.66% <0.00%> (-0.65%)
:arrow_down:

... and 18 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 64fd6ec...c60eae1. Read the comment docs.


formatting

Browser metadata
Path:      /
Browser:   Chrome 98.0.4758.102 on Windows 10
Viewport:  1424 x 662 @1.350000023841858x
Language:  en-US
Cookies:   Enabled

Open in BrowserStack

Open Deploy Preview · Mark as Resolved


Finalize tree node index format

The indexing of the tree can be done in 2 ways

Smart indexing: Level and sequence aware uint which stores the index. This is fast and doesn't require to read internal node values, but hard to index from the web2 perspective.
Sequential indexing: Incremental indexing; requires read from nodes to do calculations. Easier to implement.

We will be choosing one considering the tree construction and algorithm time complexities.

We will be using sequential index since the indexes won't be unique for smart indexing.
Index data type will be of bytes32 [subject to change according to the maximum number of nodes we set evaluating the datasets]


Fix TLS for ceilometer

Ceilometer was failing to access the CA certificate, which wasn't correctly mounted. This mounts the CA certificate to the expected location if TLS is enabled.
Jira: https://issues.redhat.com/browse/OSPRH-6177

+2


client.pinSkylink(skylink) for repinning skylinks

SDK method for calling POST on /skynet/pin/[skylink] endpoint with account cookie

We may want to limit this to users with accounts on the web portal side, and then figure out how to handle errors for users without accounts in skynet-js.


Proper Makefile

I'm happy to work on this but I don't want to start if you're already on it.

I was going to put it off, it's a bit of voodoo I haven't learned yet so if
you can make one go for it.  Krzysztof
On Dec 27, 2015 7:48 AM, "Allen Riddell"<EMAIL_ADDRESS>wrote:

I'm happy to work on this but I don't want to start if you're already on
it.
—
Reply to this email directly or view it on GitHub
https://github.com/sakrejda/protostan/issues/1.

I pull and ran make test on this branch, it works like a charm.  I'll go ahead and merge it.


Added User Filter

See StartProcessAsUser()

@heri16 are you willing/able to make the changes that I mentioned above?

Yes, give me 24 hours to update the branch.
Also, I have a heavily modified fork on gist that looks very different but
is actually based on Microsoft official .NET source implementation. I
created it because I needed standardOutput and standardError pipe
redirection. Would you be interested in merging this derivative work?
https://gist.github.com/heri16/8f69aa919ee1d87f3bb53255ef78f188
On Monday, 18 July 2016, Justin Murray<EMAIL_ADDRESS>wrote:

@heri16 https://github.com/heri16 are you willing/able to make the
changes that I mentioned above?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/murrayju/CreateProcessAsUser/pull/10#issuecomment-233385971,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAgK_Q-fFLJVUC9MlVaBGogMsFq69xJ0ks5qW61GgaJpZM4JJiJ2
.

@heri16 do you plan to update this, or should I close it? I'd also be interested in your stdio redirect as a separate pull request.

Might be time to close it now, given the lack of progress.

Once again, the version on my gist works really fine for the past few years. If anyone is interested I will either fork the project or create a new PR


modify script to work, cleans out temp/work and webapps app folder

minor change to fix script

ok have split into seperate file


Refactor Pyro MCMC methods

Problem
The current setup for using Pyro MCMC methods is a bit of a mess:

we have a pyro-specific MCMC class in sbi/samples/mcmc/mcmc.py [1]
a pyro-specific implementation of a slice-sampler in sbi/samples/mcmc/slice.py [2]

In mcmc_posterior we offer a MCMC sampling via pyro, e.g., pyro slice sampling via [2], and HMC and NUTS as implemented in pyro.
To me it seems we are never using the class defined [1] but instead use from pyro.infer.mcmc.api import MCMC to specify the MCMC kernel (slice, hmc, nuts).
Solution
Define a common interface for pyro MCMC methods in sbi. It should be possible use our own pyro slice sampler, or plug in pyro-based HMC or NUTS (or other pyro samplers). This could include:

get rid of [1]
rename slice.py to slice_pyro.py and add more documentation
rename the keyword in mcmc_posterior to slice_pyro instead of just slice.

Related / a subissue of #908

solved via #1107


Find a better pattern for topbar buttons

Could you please provide more info? Is this the tabs? Is this styling? Is this just code refactoring?

this is code refactoring. The code is just ugly for the list of buttons at the top. Lots of copy/paste code that should be fixed. It's just an engineering work item.

Whoops...

obsolete with the new navigation.


benchmark: add multiple sphere models.

This commits adds the option to change the default model/scene from the altimeter, to a sphere, with 6 LOD levels. From 16k faces to 16.
To implement this, we could either swap meshes, or whole scenes. The reason to swap scenes is to support complex scenes without adding complexity.
Drawback is the skybox is not configurable at the scene-level, but can be removed by adding a new scene like "sphere_0_no_skybox".
The materials are available in the GLTF files, but the current shaders implementations don't switch to emissive/unlit the the skybox.

note for licensing: the skybox texture was made using krita, and the sphere blender, both allowing all usages from the assets produced.

How do I get the skybox to show up? I'm assuming the skybox texture is mapped to the sphere, right?

Spheres 1-5 seem to have a discontinuity in their UVs at the north pole:

Well, I'm assuming that's UV
Is this expected?

Couple of additional questions:

Would it be easy for others to generate additional spheres? I ask because I suspect the tessellation factors chosen here might not be what we will eventually need. We might want to adjust the tessellation factors for each sphere, but not sure to what yet.
Is it easy at load time to read in each of the attribute streams per sphere and split them and re-arrange them as we see fit? Our knob design calls for re-arranging the vertex streams for all the spheres into one giant vertex buffer in a custom order. I want to make sure direct access to the binary stream data is possible and simple.

Would it be easy for others to re-generate the spheres and/or skybox? I ask because I suspect the tessellation factors chosen here might not be what we will eventually need. We might want to adjust the tessellation factors for each sphere, but not sure to what yet. Same goes with the resolution of the skybox texture.

The sphere is a Blender basic UV sphere. So adding a new specific model means

starting blender
loading one of those GLTF files
removing the existing sphere
adding a sphere with the desired number of subdivisions
exporting the new GLTF file

Is it easy at load time to read in each of the attribute streams per sphere and split them and re-arrange them as we see fit? Our knob design calls for re-arranging the vertex streams for all the spheres into one giant vertex buffer in a custom order. I want to make sure direct access to the binary stream data is possible and simple.

GLTF file format gives the start index for a vertex buffer, count, and stride. Right now, we load each one of those objects as in their own buffer, as it's simpler. But if we have the need to create our own buffers with data ordered in a specific way, that's possible yes.

I don't understand this sentence. Is this trying to say that the skybox doesn't actually show up in the rendering right now?

Yes, that's correct: as is, the sample doesn't apply a specific shader to the skybox. The default one is used:
If you want to show the skybox texture, we can add a new shader after this PR to correctly show the texture in the sphere. Right now this PR only adds the models and the ability to switch the model.

Spheres 1-5 seem to have a discontinuity in their UVs at the north pole:
Well, I'm assuming that's UV. But the red color probably means it isn't. Maybe it's a diffuse color calculation, in which case this might mean an issue with the normals. In any case, something seems to be off here.

This is UV, on R and G channels. So yes the line is expected as we are at the end of the unwraped plane.
But looks like the modifier I used on blender was messing up some normals. Recreated the spheres to have a proper normal. The spike at the pole is expected due to the sphere topology (top vertice will have a (0, 1, 0) normal, also visible on blender).

Yes, the basic-skybox and the other 6 spheres are fine for me. Thank you @Keenuts for adding them.


[<IP_ADDRESS>] Flanking does not work properly with creatures larger than medium

Currently, flanking does not provide advantage properly with creatures larger than medium, only certain squares seems to provide it. It should allow advantage according to the position of the attacker and at least one ally on the entire opposite sides of the creature, or diagonals.
I am still willing to review the code and propose a PR to implement it properly.
See this guide: https://www.dndlounge.com/flanking-5e/
Diagram showing where it applies or not (only medium and large shown, but should apply to Huge, Gargantuan and Colossal too):

It won’t trigger on row 3, col 2 scenario. Which on above scenarios it isn’t working?

Just looking at the Large creatures, and skipping reach weapon tests:
Should grant advantage, but doesn't

Grants advantage but shouldn't

How tall is that monster? You’re flying. Depending on height attack is coming from a diagonal and won’t trigger.

Game is also a bit odd as it uses the height as well to determine sides. Can you test with races like human, elf, etc.?

Test #2, fairy flight dismissed, oddity in the diagonal. Monster is large, by definition it's a cube, so 10ft tall in this case.
Works

Does not work

Does not work

Does not work

Game is also a bit odd as it uses the height as well to determine sides. Can you test with races like human, elf, etc.?

Additional test for medium size opponents, or the attackers should be human or elf?

I’ll add some log messages on next release for debugging. What is flanking does is first determine the attack direction. It uses in game logic to find from which side attack is coming. It looks for friends on opposite sides. My hunch is I cannot leverage this side determination logic because of game oddities on height

Also can you pull and use DEV? Setting for reach added

Also can you pull and use DEV? Setting for reach added

Sure I'll try it out.

Also, your comment about height makes it a n interesting problem, since flanking can occur in 3D: top/bottom and diagonals

Also can you pull and use DEV? Setting for reach added

The reach setting works. For fun, I'll see if I can come up with an algorithm for 3D flanking

Consider enabling DEBUG panel under tools. Once open, there is an option there to render the game in different modes. I believe one of them will simply render the cubes on the scenario. Quite useful instead of monsters. Also added the logging but need to enable on settings.xml.

indeed this is incorrect.

Also, your comment about height makes it an interesting problem, since flanking can occur in 3D: top/bottom and diagonals

reason why I leveraged the in game method to determine sides.

https://math.stackexchange.com/questions/3775806/finding-the-side-of-a-cube-intersecting-a-line-using-the-shortest-computation is a good start but won’t handle diagonals

please pull DEV and check if above fix is sound.

please pull DEV and check if above fix is sound.

On medium targets, was fine in 3D, for Large the following cases failed, did not check top/bottom:

This is a lot harder than I expected 😄
I am looking into two solutions:

Using a better function than CellFlags.InvertSide to determine what is opposite (not that it can have three ORed flag components, e.g. Top | South | East). It's inelegant but explicit
The math approach, LocationBattleBoundingBox could be interesting since it contains all size info

Going to bed, will look at it tomorrow

Also, almost forgot, the Large creature's location is one square even though it occupies two by two squares, so that when you determine the side of the attacker or allies, if you are not next to that "anchor" location, you will get two side components, e.g. South and West, even if you are on the flat side of the creature and not a diagonal, since you are offset from the "anchor" location.

I'm working on a new test considering all cells on all 3 contenders but need to optimize it a bit. tomorrow will push.

I pulled out an old math algorithm which seems to work for all sizes EXCEPT the case of Row3 Col2, it's annoying.
As a second step, there should be consideration for an attacker that is larger than medium, any of its squares on the defender side might be valid for flanking. Currently I am using the center of the location, which may not work in all cases for a large attacker, would probably need to walk the squares on the defender side

Have you checked the latest implementation. It seems to be working on these scenarios. I’m dev only

Have you checked the latest implementation. It seems to be working on these scenarios. In dev only

Fails on these tests, again I think it's because the location for large creatures is one of the four squares it occupies, so determining sides can be unreliable, unless you make sure the side that the attacker and ally are on take this into account (i.e. use the closest square to them)

I am starting to doubt the validity of case Row3 Col2. The rule says:

When in doubt about whether two friendly characters flank an opponent in the middle, trace an imaginary line between the two friendly characters’ centers. If the line passes through opposite borders of the opponent’s space (including corners of those borders), then the opponent is flanked.

I'm doing it with math, center to center, and Row3 Col2 does not and should not work (you can just draw a line from the center from the attacker to ally, and see it doesn't cross opposite sides). So in that regard, the guide I quoted seems to be wrong.
I'll test and clean up my code and post a PR, if you wish to use it. It's not pretty for the moment but it's usable.

Issue is this code executes every time the cursor is on enemy on refresh. It’s to be very optimized or game will slow down on FPS.

Issue is this code executes every time the cursor is on enemy on refresh. It’s to be very optimized or game will slow down on FPS.

Yeah I'll be using your cache code and making sure it breaks out without going through N iterations.


DSpace (Solr) Statistics - Usage Reports

References

REST Contract

Description
This PR adds in the functionality to retrieve the statistics created through the viewevents
Instructions for Reviewers
List of changes in this PR:

Rest representations of Usage Reports in the DSpace statistics, and it's related converter
Endpoints have been added to the StatisticsRestRepository, keeping the open PreAuthorize related PR in mind (using the findOne method for permission checks)

Please refer to the viewevents information on stats creation
Make sure to also have a valid GeoLite configured in usage-statistics.cfg
Sharded Cores
Note that we added in a flag to check if the solr statistics core is sharded or not. We noticed that, if the code assumes that the core is sharded, while it isn't that statistics are counted twice.
This is because the 'default' statistics core is loaded in, and then from the related solr, it tries to find any additional core/shard, resulting in a query being done similar to the following

shards=localhost:8983/solr/statistics,localhost:8983/solr/statistics

Solr autocommit
Please keep in mind that solr's autocommit might not be 100% functional in all cases
The time between autocommits is defined as:

${solr.autoCommit.maxTime:900000}

If a solr.autoCommit.maxtime is found, that is used, otherwise it defaults to 15 minutes.
In some instances, this (A workaround is 'hardcoding' it to 15 minutes manually in solrconfig.xml)
This will need to be followed up separately as well for investigation (Not a technically breaking problem at this point)
Checklist
This checklist provides a reminder of what we are going to look for when reviewing your PR. You need not complete this checklist prior to creating your PR (draft PRs are always welcome). If you are unsure about an item in the checklist, don't hesitate to ask. We're here to help!

[x] My PR is small in size (e.g. less than 1,000 lines of code, not including comments & integration tests). Exceptions may be made if previously agreed upon.
[x] My PR passes Checkstyle validation based on the Code Style Guide.
[x] My PR includes Javadoc for all new (or modified) public methods and classes. It also includes Javadoc for large or complex private methods.
[x] My PR passes all tests and includes new/updated Unit or Integration Tests based on the Code Testing Guide.
[x] If my PR includes new, third-party dependencies (in any pom.xml), I've made sure their licenses align with the DSpace BSD License based on the Licensing of Contributions documentation.
[x] If my PR modifies the REST API, I've linked to the REST Contract page (or open PR) related to this change.

During the last addition of the self links to this PR for the HAL link conventions, we noticed that there is a problem with the self-links that contain uri parameters.

The call to /api/statistics/usagereports/search/object?uri=https://dspace7-internal.atmire.com/server/api/core/items/003c99b4-d4fe-44b0-a945-e12182a7ca89
Contains the incomplete self link /api/statistics/usagereports/search/object

This does not seem to be specific to the usage report, but rather to all 'search' endpoints that provide additional parameters.
For example, when requesting the bySchema search for the metadataFields or the relationships by label:

https://dspace7-demo.atmire.com/server/#/server/api/core/metadatafields/search/bySchema?schema=dc
https://dspace7-demo.atmire.com/server/#/server//api/core/relationships/search/byLabel?label=isPersonOfOrgUnit
The self link is missing their related parameters as well

Since this does not seem to be related to this specific PR, this will need to be handled on a more global scale, by making sure that uri parameters are also taken into consideration when creating the self links
At present I couldn't find a JIRA ticket for this, so if there is one let me know (Otherwise I'll create one to follow up on this)

@jonas-atmire : Sorry for the delayed response on your previous question about where to create a bug ticket.  Somehow I missed that question.
I'd recommend recording that bug in a GitHub Issue & linking back to this PR as the source of the discovery.  We can then add it into our schedule.  For the future, if you cannot find an issue ticket describing the bug you found, just create a new ticket.  If we later find it was a duplicate, it's no big deal to close it out. Thanks!

@tdonohue I've created the following related Issue
https://github.com/DSpace/DSpace/issues/2919
I also notice there is a merge conflict now, I'll get the conflict straightened out

A fifteen minute autocommit interval is enormous.  30-60 seconds would be much more reasonable.

@jonas-atmire Could an autocommit interval of 30-60 seconds as @mwoodiupui suggested work? I agree with @mwoodiupui a shorter autocommit interval would be better. Thank you.

@mwoodiupui , @crosenbeck we should be careful about reducing the auto commit interval. Once a system is in PROD, the solr core can become large. It's known that frequent commits with updates combined with queries to that solr are very resource-intensive. This is why in DSpace the current defaults are:

15 minutes for autocommit
no solr.commit in SolrLoggerServiceImpl.java

For this reason I would suggest to revert the changes to SolrLoggerServiceImpl.java (or make it configurable whether solr.commit happens, disable it by default, and only enable it for the tests), and to keep the default value for autocommit

@mwoodiupui , @crosenbeck we should be careful about reducing the auto commit interval. Once a system is in PROD, the solr core can become large. It's known that frequent commits with updates combined with queries to that solr are very resource-intensive.

It is?  Where is this knowledge?
We need to distinguish several things:  (1) hard commits themselves, which are cheap; (2) segment merges, which can be expensive, but they happen in the background; (3) re-opening searchers, which can be somewhat expensive.
Looking at https://lucidworks.com/post/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/ it seems to me that we are in one of the index-heavy situations, but not batch loading.    (We should also fix our auto-warming configuration, which is leftovers from the sample cores and accomplishes nothing for ours.  Our caches need tuning too.)
I agree wholeheartedly that there is no need to explicitly commit each document to statistics.  Also typical advice from the Solr maintainers:  let autocommit take care of it.

@jonas-atmire @benbosman :  Trying to find a way to help this PR along.  It's a little odd to me why this PR needs to even modify current commit behavior of Solr Statistics, considering it's just attempting to create the Statistics REST Endpoint.  It's unclear (from the description) why you choose to do that.  Could you explain further?
In any case, this discussion that @mwoodiupui brings up regarding hard commit vs soft commit interval should be resolved. But, to me, it doesn't seem like it is required for this current PR.  It looks like both in DSpace 6.x and in DSpace 7 the Solr Statistics configs had a 15min autoCommit (hard commit) and a disabled autoSoftCommit (soft commit).
Therefore, this PR isn't at fault for that behavior. That behavior has been around a long time.  However, per @mwoodiupui's feedback, it sounds like we may want to look closer at whether those are the correct settings for Solr Statistics & perhaps update them (perhaps in a separate PR).
I'd recommend we therefore either:

Revert the code in this PR which seems to be bypassing autoCommit behavior (assuming that this PR will work with those changes reverted)
OR try @mwoodiupui's suggested tweaks to the default autoCommit settings (to see if this fixes the issues you ran into around current autoCommit behavior being set at 15mins).

@tdonohue
I obviously don't know your local setup, but please note the following mentioned in the description:

Make sure to also have a valid GeoLite configured in usage-statistics.cfg

My guess is you logs perhaps mention something like:

ERROR org.dspace.statistics.SolrLoggerServiceImpl @ The required 'dbfile' configuration is missing in solr-statistics.cfg!

If that is the case, please make sure to update this accordingly.
This is 'required' since the viewEvents keep country data as well.
In the future, we might want to change this piece of code to simply log a 'warning', where we create viewEvents without data 🤔
In addition to that, since we have the autocommit set to 15 minutes, make sure to also actually wait ~15 minutes so that the autocommit can be triggered
I've tested this locally, and with the DB file set, the viewEvents are properly created, and after 15 minutes, they are visible when checking the usageReports.
For quicker testing, you can always set the autoCommit to 'false', which would commit the changes immediately.
As for the selfLink, this is created automatically (so no separate HALLinkFactory). Here, data.getTypePlural() = usagereports, but the link is not correct as you mentioned (I'd missed this in my review since I was focused on the previous problems with the tests etc). I'll have this investigated so the self link is correct and the same as the actual initial request

Merging as this is at +2.  Even though the front-end PR (https://github.com/DSpace/dspace-angular/pull/851) is not complete, this PR has no adverse behavior if it's merged immediately (I tested it with the latest angular code).  If we find any later issues they can be resolved in a follow-up PR.
Thanks again @jonas-atmire and @MarieVerdonck !


simple example of model parallelism for tutorial, need assistance

The simple examples in the Guon tutorial are very helpful to those of us who are just getting started with mxnet. As yet, there is not a simple example for model parallelism. I see the model parallelism example code for LSTM, but I am new to mxnet and it would help me (and perhaps others) to have a more streamlined example. So, I have created a model parallelism example by working off the regression example in the gluon tutorial, and by mixing in some code from mxnet.gluon.Trainer.
However, I am clearly getting something wrong. The gradients do not seem to be updated. Can anyone assist by identifying the problem(s)? The goal here is to create a linear regression model that has three layers, each held on a different gpu. The model itself is not useful, except as an example to show how initialization and training can occur for model parallelism, when using a custom block and imperative programming.
As I understand it, Trainer() is written for data parallelism. It will not work for model parallelism in that it requires all parameters to be initialized on all GPUs.
import os
import numpy as np
import mxnet as mx
from mxnet import nd, autograd, gluon
from mxnet.gluon import Block

# make some data
num_inputs = 2
num_outputs = 1
num_examples = 10000

def real_fn(X):
    return 2 * X[:, 0] - 3.4 * X[:, 1] + 4.2

X = np.random.normal(0,1, (num_examples, num_inputs))
noise = 0.001 * np.random.normal(0,1, (num_examples))
y = real_fn(X) + noise
y = y.reshape(-1,1)

# configuration
hidden_layers = 2
num_gpus = hidden_layers + 1
ctxList = [mx.gpu(i) for i in range(num_gpus)]
#ctxList = [mx.gpu() for i in range(num_gpus)]

#os.environ["MXNET_ENGINE_TYPE"] = "NaiveEngine"
print("\n")

# ======================================================================
class myDenseBlock(Block):
    """
    A custom layer
    """
    def __init__(self, layer_number, size_input, size_output, **kwargs):
        super(myDenseBlock, self).__init__(**kwargs)

        self.layer_number = layer_number
        self.size_input = size_input
        self.size_output = size_output

        with self.name_scope():
            # add parameters to the Block's ParameterDict.
            self.w = self.params.get(
                'weight',
                init= mx.init.Xavier(magnitude=2.24),
                shape=(size_input, size_output),
                grad_req = 'write')

            self.b = self.params.get(
                'bias',
                init= mx.init.Constant(0.5),
                shape=(size_output,),
                grad_req = 'write')

    def forward(self, x):
        x = x.as_in_context(ctxList[self.layer_number])
        with x.context:
            linear = nd.dot(x, self.w.data()) + self.b.data()
            return linear

# ======================================================================

# create net
net = gluon.nn.Sequential()
with net.name_scope():
    # initial layer, with X as input
    net.add(myDenseBlock(0,
        size_input = 2,
        size_output = 2))

    for ii in range(hidden_layers-1):
        net.add(myDenseBlock(ii+1,
            size_input = 2,
            size_output = 2))

    # final block, Y is nx1
    net.add(myDenseBlock(ii+2,
        size_input = 2,
        size_output = 1))

# ititialize paramerters for different blocks (layers) on different gpus.
params = net.collect_params()

"""
The parameters are:
sequential0_mydenseblock0_weight
sequential0_mydenseblock0_bias
sequential0_mydenseblock1_weight
sequential0_mydenseblock1_bias
sequential0_mydenseblock2_weight
sequential0_mydenseblock2_bias
"""

print("\ninitializing:")
for i, param in enumerate(params):
    if 'mydenseblock0' in param:
        params[param].initialize(ctx=ctxList[0])
    elif 'mydenseblock1' in param:
        params[param].initialize(ctx=ctxList[1])
    elif 'mydenseblock2' in param:
        params[param].initialize(ctx=ctxList[2])
    print("  ", i, param, "  ", params[param].list_data()[0].context)
print("\n")

def square_loss(yhat, y):
    return nd.mean((yhat - y) ** 2)

def mytrainer(updaters, params, ignore_stale_grad=False):
    #print("\n")
    for i, param in enumerate(params):
        #print(i, param, "  ", len(params[param].list_data()), params[param].list_data()[0].context)
        if params[param].grad_req == 'null':
            continue
        if not ignore_stale_grad:
            for data in params[param].list_data():
                if not data._fresh_grad:
                    print(
                        "`%s` on context %s has not been updated"%(params[param].name, str(data.context)))
                    assert False

        for upd, arr, grad in zip(updaters, params[param].list_data(), params[param].list_grad()):

            if not ignore_stale_grad or arr._fresh_grad:
                upd(i, grad, arr)
                arr._fresh_grad = False
                #print ("grad= ", grad)

batch_size = 100
epochs = 100000
iteration = -1

opt = mx.optimizer.create('adam', learning_rate=0.001, rescale_grad = 1 / batch_size)
updaters = [mx.optimizer.get_updater(opt)]

# the following definition for updaters does not work either
#updaters = [mx.optimizer.get_updater(opt) for _ in ctxList]

results = []
for e in range(epochs):
    train_groups = np.array_split(np.arange(X.shape[0]), X.shape[0]/batch_size)
    for ii, idx in enumerate(train_groups):
        iteration += 1
        xtrain, ytrain = X[idx,:], y[idx]

        xtrain = nd.array(xtrain)
        xtrain = xtrain.as_in_context(ctxList[0])

        ytrain = nd.array(ytrain).reshape((-1, 1))
        ytrain = ytrain.as_in_context(ctxList[0])

        with autograd.record():
            yhat = net(xtrain)
            error = square_loss(yhat, ytrain.as_in_context(ctxList[-1]))
            error.attach_grad()

            # Question: does the call to error.backward() go under the indent
            # for autograd.record() or outside the indent? The gluon examples have
            # it both ways

        error.backward()

        mytrainer(updaters, net.collect_params())

        if iteration%10 == 0:

            results.append([iteration, error.asnumpy().item()])
            print(("epoch= {:5,d}, iter= {:6,d},  error= {:6.3E}").format(
                e, iteration, error.asnumpy().item()))

The code fails at the "if not data._fresh_grad" test in mytrainer(). The output is:
initializing:
   0 sequential0_mydenseblock0_weight    gpu(0)
   1 sequential0_mydenseblock0_bias    gpu(0)
   2 sequential0_mydenseblock1_weight    gpu(1)
   3 sequential0_mydenseblock1_bias    gpu(1)
   4 sequential0_mydenseblock2_weight    gpu(2)
   5 sequential0_mydenseblock2_bias    gpu(2)

`sequential0_mydenseblock0_weight` on context gpu(0) has not been updated

I have posted this question to stackoverflow, as it might be more appropriate there.