dsh --make-app [PATH_TO_APP_PACKAGE] [REPLACE_EXISTING_APP]

dsh --make-app [PATH_TO_APP_PACKAGE] [REPLACE_EXISTING_APP]
Description:
Makes an App from an AppPackage.
Shorthand:
dsh -m [PATH_TO_APP_PACKAGE]
Example:
dsh -m "${HOME}/path/to/app/package"
DEV NOTES
The following logic will be performed by dsh -m [PATH_TO_APP_PACKAGE]:

If App already exists, and [REPLACE_EXISTING_APP] == 'replace', then remove existing App, otherwise exit with an error.
dsh -n App "${app_name}"
Copy appropriate base directories;
[PATH_TO_APP_PACKAGE]/css
[PATH_TO_APP_PACKAGE]/js
[PATH_TO_APP_PACKAGE]/DynamicOutput
[PATH_TO_APP_PACKAGE]/Media
Run Responses.sh # MUST BE RUN FIRST OR ASSIGNMENTS WILL FAIL
Run Requests.sh
Run OutputComponents.sh

The following script demonstrates the expected logic of dsh -m [PATH_TO_APP_PACKAGE]:

#!/bin/bash
# draftMakeApp.sh [APP_NAME] [PATH_TO_APP_PACKAGE_PARENT_DIRECTORY]

set -o posix

# @todo dsh --get-app-package-config-setting [PATH_TO_APP_PACKAGE] [SETTING_NAME] : Return value of specified setting defined in specified [PATH_TO_APP_PACKAGE]'s config.sh
getConfigValue() {
    local path_to_app_package setting_name
    path_to_app_package="${1}"
    setting_name="${2}"
    printf "%s" "$(cat "${path_to_app_package}/config.sh" | grep "${setting_name}" | sed 's/^.*=//g' | sed 's/"//g')"
}

copyDirectoryContents() {
    local path_to_app_package source_directory_name app_name path_to_ddms target_directory
    path_to_app_package="${1}"
    source_directory_name="${2}"
    app_name="$(getConfigValue "${path_to_app_package}" 'app_name')"
    source_directory="${path_to_app_package}/${source_directory_name}"
    path_to_ddms="$(locateDDMSDirectory)"
    target_directory="${path_to_ddms}/Apps/${app_name}/"
    [[ ! -d "${source_directory}" ]] && printf "\nCannot copy files in \e[0m\e[102m\e[30m%s\e[0m to \e[0m\e[104m\e[30m%s\e[0m because \e[0m\e[102m\e[30m%s\e[0m does not exist\n" "${source_directory}" "${target_directory}" "${source_directory}" && exit 1
    printf "\nCopying files in \e[0m\e[102m\e[30m%s\e[0m to \e[0m\e[104m\e[30m%s\e[0m\n" "${source_directory}" "${target_directory}"
    cp -R "${source_directory}" "${target_directory}"
}

# @todo dsh --locate-ddms-directory : Return path to DDMS installation dsh is acting on
locateDDMSDirectory() {
    printf "%s" "${HOME}/Downloads/DarlingDataManagementSystem"
}

replaceApp() {
    local path_to_app_package path_to_ddms app_name doReplace
    path_to_app_package="${1}"
    path_to_ddms="$(locateDDMSDirectory)"
    app_name="$(getConfigValue "${path_to_app_package}" 'app_name')"
    if [[ -d "${path_to_ddms}/Apps/${app_name}" ]]; then
        # Note: I've decided it's best to determine this via a parameter, [REPLACE_EXISTING_APP], it will force
        # the user to be more intentional when making an App that would replace another App.
        # Though prompting user via read does give them a choice, there is always a chance that a user may make
        # a mistake in response to the prompt that could result in an exiting App mistakenly being replaced.
        # Better to force the user to make this choice explicitly when dsh -m is invoked.
        read -p "An App named ${app_name} already exists, would you like to replace it? (y or n) : " doReplace
        [[ "${doReplace}" != 'y' ]] && printf "\n\e[0m\e[105m\e[30mThe ${app_name} App Package will not be made.\e[0m\n" && exit 1
        [[ "${app_name}" != 'Apps' ]] && rm -R "${path_to_ddms}/Apps/${app_name}" && printf "\e[0m\e[102m\e[30mRemoved original App from ${path_to_ddms}/Apps/${app_name}"
    fi
}

copyBaseFiles() {
    local path_to_app_package
    path_to_app_package="${1}"
    # cp base files...
    [[ -d "${path_to_app_package}/css" ]] && copyDirectoryContents "${path_to_app_package}" css
    [[ -d "${path_to_app_package}/js" ]] && copyDirectoryContents "${path_to_app_package}" js
    [[ -d "${path_to_app_package}/DynamicOutput" ]] && copyDirectoryContents "${path_to_app_package}" DynamicOutput
    # Media is an optional directory, it is not created by dsh -n AppPackage, so the documentation will need to address it, the Media directory will be where the App's images, audio files, etc. are placed.
    # @todo Perhaps dsh -n AppPackage should create the Media directory...
    [[ -d "${path_to_app_package}/Media" ]] && copyDirectoryContents "${path_to_app_package}" Media
}

runDshScripts() {
    local path_to_app_package
    path_to_app_package="${1}"
    # Run dsh scripts
    [[ ! -x "${path_to_app_package}/Responses.sh" ]] && printf "Responses.sh is either does not exist or is not executable." && exit 1
    . "${path_to_app_package}/Responses.sh"
    [[ ! -x "${path_to_app_package}/Requests.sh" ]] && printf "Requests.sh is either does not exist or is not executable." && exit 1
    . "${path_to_app_package}/Requests.sh"
    [[ ! -x "${path_to_app_package}/OutputComponents.sh" ]] && printf "OutputComponents.sh is either does not exist or is not executable." && exit 1
    . "${path_to_app_package}/OutputComponents.sh"
}

makeApp() {
    local path_to_app_package app_name
    path_to_app_package="${1}"
    app_name="$(getConfigValue "${path_to_app_package}" 'app_name')"
    [[ -z "${app_name}" ]] && printf "\n\e[103m\e[30mThe app_name could not be determined. app_name is: %s" "${app_name}" && exit 1
    replaceApp "${app_name}"
    dsh -n App "${app_name}"
    copyBaseFiles "${path_to_app_package}"
    runDshScripts "${path_to_app_package}"
}

[[ -z "${1}" ]] && printf "\n\e[103m\e[0mPlease specify the path to the AppPackage as the first parameter.\e[0m\n" && exit 1
[[ ! -d "${1}" ]] && printf "\n\e[103m\e[30mAn AppPackage does not exist at %s" "${1}" && exit 1
makeApp "${1}"

dsh --make-app [PATH_TO_APP_PACKAGE] [START_DEVELOPMENT_SERVER]
Description:
Makes an App from an AppPackage.
DEV NOTES
The following logic will be performed by dsh -m:

If App already exists, prompt user to see if they want to replace it, if so remove original App, if not, exit.
dsh -n App "${app_name}"
Run Responses.sh # MUST BE RUN FIRST OR ASSIGNMENTS WILL FAIL
Run Requests.sh
Run OutputComponents.sh
dsh -b "${app_name}" "${domain}"
If [START_DEVELOPMENT_SERVER] == 1; dsh -s "${development_port}"

Tests
Note: A test App Package will need to be setup for the tests described bellow via a call to dsh -n AppPackage TestPackage "/path/to/test/package". Also, once the tests are finished the test App Package will need to be removed. To prevent adding an enormous amount of time to the running of the tests, just create this package once before the tests are run, and remove after all tests are finished, instead of for each test.
For step 1:
I cant think of a sensible way to test that read -p is called, not sure it would even be possible, so as a compromise
just make sure an error is logged if the App already exists, and just implement prompting the user via something like:
   logError "An App with the same name already exists!"
   read -p "Would you like to replace it? Enter R to replace, anything else to exit." replaceApp
   [[ "${replaceApp}" != "y" ]] && notifyUser "The ${app_name} app was not made." && exit 0
   # proceed with making App...

instead of usiing logErrorAndExit1 as usual. This test will mostly cover step 1 in the logic laid out above.
testDshMakeAppPackageRunsWithAnErrorIfAnAppWithTheSameNameWasAlreadyMade()
For step 2, 3, 4, 5:

Manually run each dsh script defined in the test App Package and manually copy base files
capture the output of all of the resulting new App's files in a variable such as: capturedOutputFromDshNewApp
delete the App created with dsh -n
create the App again but this time using dsh -m "/path/to/test/app/package"
capture the output of all the new App's files in a new var such as: capturedOutputFromDshMakeApp
assertEquals "${capturedOutputFromDshNewApp}" "${capturedOutputFromDshMakeApp}"
delete the App created with dsh -m
While this would be quite thorough, as long as dsh -n is used in the logic of dsh -m, then it is a bit redundant to implement the alternative testing approach since it also uses dsh -n.

testDshMakeAppMakesTheApp()
Test logic sudo code
# create an app with some components
dsh -n App TestApp "http://localhost:8080"
dsh -n Response TestApp ResponseName 0
dsh -n GlobalResponse TestApp GlobalResponseName 0
dsh -n OutputComponent TestApp OutputComponentName Output 0 "Foo"
dsh -a TestApp ResponseName OutputComponentName Output
dsh -n DynamicOutputComponent TestApp DynamicOutputComponentName Output 0 "Foo.txt"
dsh -a TestApp GlobalResponseName DynamicOutputComponentName Output
dsh -n Request TestApp RequestName "http://localhost:8080/"
dsh -a TestApp ResponseName RequestName Request

dsh --make-app [PATH_TO_APP_PACKAGE] [START_DEVELOPMENT_SERVER]
Description:
Makes an App from an AppPackage.
DEV NOTES
The following logic will be performed by dsh -m:

If App already exists, prompt user to see if they want to replace it, if so remove original App, if not, exit.
dsh -n App "${app_name}"
Run Responses.sh # MUST BE RUN FIRST OR ASSIGNMENTS WILL FAIL
Run Requests.sh
Run OutputComponents.sh
dsh -b "${app_name}" "${domain}"
If [START_DEVELOPMENT_SERVER] == 1; dsh -s "${development_port}"

Tests
Note: A test App Package will need to be setup for the tests described bellow via a call to dsh -n AppPackage TestPackage "/path/to/test/package". Also, once the tests are finished the test App Package will need to be removed. To prevent adding an enormous amount of time to the running of the tests, just create this package once before the tests are run, and remove after all tests are finished, instead of for each test.
For step 1:
I cant think of a sensible way to test that read -p is called, not sure it would even be possible, so as a compromise
just make sure an error is logged if the App already exists, and just implement prompting the user via something like:
   logError "An App with the same name already exists!"
   read -p "Would you like to replace it? Enter R to replace, anything else to exit." replaceApp
   [[ "${replaceApp}" != "y" ]] && notifyUser "The ${app_name} app was not made." && exit 0
   # proceed with making App...

instead of usiing logErrorAndExit1 as usual. This test will mostly cover step 1 in the logic laid out above.
testDshMakeAppPackageRunsWithAnErrorIfAnAppWithTheSameNameWasAlreadyMade()
For step 2, 3, 4, 5:

Manually run each dsh script defined in the test App Package and manually copy base files
capture the output of all of the resulting new App's files in a variable such as: capturedOutputFromDshNewApp
delete the App created with dsh -n
create the App again but this time using dsh -m "/path/to/test/app/package"
capture the output of all the new App's files in a new var such as: capturedOutputFromDshMakeApp
assertEquals "${capturedOutputFromDshNewApp}" "${capturedOutputFromDshMakeApp}"
delete the App created with dsh -m
While this would be quite thorough, as long as dsh -n is used in the logic of dsh -m, then it is a bit redundant to implement the alternative testing approach since it also uses dsh -n.

testDshMakeAppMakesTheApp()
Test logic sudo code
# create an app with some components
dsh -n App TestApp "http://localhost:8080"
dsh -n Response TestApp ResponseName 0
dsh -n GlobalResponse TestApp GlobalResponseName 0
dsh -n OutputComponent TestApp OutputComponentName Output 0 "Foo"
dsh -a TestApp ResponseName OutputComponentName Output
dsh -n DynamicOutputComponent TestApp DynamicOutputComponentName Output 0 "Foo.txt"
dsh -a TestApp GlobalResponseName DynamicOutputComponentName Output
dsh -n Request TestApp RequestName "http://localhost:8080/"
dsh -a TestApp ResponseName RequestName Request

From issue #82
"NOTE for App Packages: Make sure dsh -m [PATH_TO_APP_PACKAGE] copies base dirs before running dsh scripts, or else calls to dsh -n DynamicOutputComponent will fail since the files wont exits in DDMS/Apps/APP_NAME/DynamicOutput/'

From issue #82
"NOTE for App Packages: Make sure dsh -m [PATH_TO_APP_PACKAGE] copies base dirs before running dsh scripts, or else calls to dsh -n DynamicOutputComponent will fail since the files wont exits in DDMS/Apps/APP_NAME/DynamicOutput/'

Tests
testDshMakeAppRunsWithErrorIfAnAppPackageDoesNotExistAtPATH_TO_APP_PACKAGE()
testDshMakeAppRunsWithErrorIfAnAppAlreadyExistsWhoseNameMatchesTheNameOfTheAppToBeMade()
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAcssDirectory
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAjsDirectory
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainADynamicOutputDirectory
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAResponsesSHScript
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainARequestsSHScript
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAOutputComponentsSHScript
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAConfigSHScript
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAapp_nameSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAbug_contactSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAconfig_lockedSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdependenciesSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdescriptionSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdevelopersSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdevelopment_portSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdocumentationSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdomainSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAlicenseSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAversionSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAversion_dateSetting

Tests
testDshMakeAppRunsWithErrorIfAnAppPackageDoesNotExistAtPATH_TO_APP_PACKAGE()
testDshMakeAppRunsWithErrorIfAnAppAlreadyExistsWhoseNameMatchesTheNameOfTheAppToBeMade()
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAcssDirectory
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAjsDirectory
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainADynamicOutputDirectory
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAResponsesSHScript
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainARequestsSHScript
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAOutputComponentsSHScript
testDshMakeAppRunsWithErrorIfTheAppPackageDoesNotContainAConfigSHScript
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAapp_nameSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAbug_contactSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAconfig_lockedSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdependenciesSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdescriptionSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdevelopersSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdevelopment_portSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdocumentationSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAdomainSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAlicenseSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAversionSetting
testDshMakeAppRunsWithErrorIfTheAppPackagesConfigSHDoesNotDefineAversion_dateSetting

testDshMakeAppRemovesOriginalAppIfREPLACE_EXISTING_APPIsSpecifiedAndAnAppWhoseNameMatchesTheNameOfTheAppToBeMadeAlreadyExists()

testDshMakeAppRemovesOriginalAppIfREPLACE_EXISTING_APPIsSpecifiedAndAnAppWhoseNameMatchesTheNameOfTheAppToBeMadeAlreadyExists()

This issue is almost resolved, dsh --make-app is working with the exception of the implementation of the [REPLACE_EXISTING_APP] parameter. This will be addressed shortly.


Docs.MS Release Updates for Azure.Storage.Files.Shares

Update docs metadata and targeting for release of Azure.Storage.Files.Shares

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

File
Status
Preview URL
Details

api/overview/azure/storage.files.shares-readme-pre.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Is there EAN14 support? Trouble with EAN14

Just simple question: is it possible to use it to generate EAN14? PyPi says it is possible to use it for EAN14 (https://pypi.org/project/python-barcode/), but doc says just EAN13.
Thanks for the answer.

Yes, it's ean14 or barcode.ean.EuropeanArticleNumber14 (e.g.: all the docs for EAN13 apply, just replace 13 with 14).
It's documented in the latest master, but not in the last stable release. Those docs will be published with the next release.

Yes, it's ean14 or barcode.ean.EuropeanArticleNumber14 (e.g.: all the docs for EAN13 apply, just replace 13 with 14).
It's documented in the latest master, but not in the last stable release. Those docs will be published with the next release.

Thanks for fast replay, but i have problem reading EAN14 barcodes. No problem with EAN13, but EAN14 is "somehow" wrong?
I tried to generate EAN14 form product IDs:
`
for product in products:
code = produkt.ID.get_text().strip()
length = len(code)

produkt_id_10 = (10 - length) * '0' + str(code)

ean14_bez = '104' + produkt_id_10 # EAN14 without last digit

ean14 = barcode.get('ean14', ean14_bez) # EAN14 with last digit

ean14_barcode = ean14.save(ean14)

`
This will generate EAN14 barcodes named as EAN14 number. But it's impossible to read them. Please, try:
EAN14 barcode generated, but unreadable: https://svgshare.com/s/TC_
EAN14 barcode generated, but read as EAN13 with my reader: https://svgshare.com/s/TDk
Do you know what's wrong?

Thanks for fast replay, but i have problem reading EAN14 barcodes. No problem with EAN13, but EAN14 is "somehow" wrong?
I tried to generate EAN14 form product IDs:
`
for product in products:
code = produkt.ID.get_text().strip()
length = len(code)

produkt_id_10 = (10 - length) * '0' + str(code)

ean14_bez = '104' + produkt_id_10 # EAN14 without last digit

ean14 = barcode.get('ean14', ean14_bez) # EAN14 with last digit

ean14_barcode = ean14.save(ean14)

`
This will generate EAN14 barcodes named as EAN14 number. But it's impossible to read them. Please, try:
EAN14 barcode generated, but unreadable: https://svgshare.com/s/TC_
EAN14 barcode generated, but read as EAN13 with my reader: https://svgshare.com/s/TDk
Do you know what's wrong?

I tried to find what's wrong and triend another solutions. It generates same last digit, but all EAN14 generators i tried added (01) at the beginning of the barcode. I found this info: "the first two numbers are the Application Identifier of the EAN-128: (01). You cannot change them. They are part of the code.". Maybe it should be added to generator?

I tried to find what's wrong and triend another solutions. It generates same last digit, but all EAN14 generators i tried added (01) at the beginning of the barcode. I found this info: "the first two numbers are the Application Identifier of the EAN-128: (01). You cannot change them. They are part of the code.". Maybe it should be added to generator?

Sorry, missed this comment.
So there should be in total of 16 digits, with the leading 01?


May23 updates

Overall Review of Changes:
A general description of the changes made that are being requested for merge

Ensure EOL is handled correctly by git.
Typos fixed and auid changed to unset (fixes 4 issues!)
Command improvement
Updated comment

Issue Fixes:
#289
#290
#291
#292
Enhancements:
Please list any enhancements/features that are not open issue tickets
How has this been tested?:
Please give an overview of how these changes were tested. If they were not please use N/A.
Clean install with a run of this branch created by @uk-bolly. Audited by @bbaassssiiee with CIS-CAT Pro.


MAINT: Drop Python 3.5

Codecov Report

Merging #77 into master will increase coverage by 0.05%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #77      +/-   ##
==========================================
+ Coverage   98.63%   98.68%   +0.05%
==========================================
  Files          11       11
  Lines         951      992      +41
  Branches      129      129
==========================================
+ Hits          938      979      +41
  Misses          7        7
  Partials        6        6

Flag
Coverage Δ

#unittests
98.68% <ø> (+0.05%)
:arrow_up:

Impacted Files
Coverage Δ

nitransforms/io/itk.py
100.00% <0.00%> (ø)

nitransforms/io/base.py
100.00% <0.00%> (ø)

nitransforms/io/lta.py
99.34% <0.00%> (+0.01%)
:arrow_up:

nitransforms/linear.py
96.10% <0.00%> (+0.02%)
:arrow_up:

nitransforms/base.py
99.46% <0.00%> (+0.04%)
:arrow_up:

nitransforms/io/afni.py
98.75% <0.00%> (+0.04%)
:arrow_up:

nitransforms/io/fsl.py
94.93% <0.00%> (+0.19%)
: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 7a99841...f7f216d. Read the comment docs.

Are we still planning on merging this with nibabel? This pushes ahead of it

I've thought about that. By the time this can be merged into nibabel, I bet the support will be for +3.6 only. Otherwise, I think it is worth making the development more agile and figure out when the time comes to join both projects.


Refactor options page

The current architecture of the options page isn't that great. I refactored it to Preact, which feels much cleaner and modern now.
@josephfrazier I already did a quick QA check on this and will do another one tomorrow evening. Would be great if you could also verify that nothing breaks.

I was referencing the wrong field for the "New Tab" options. It's fixed now and I did another QA round and I didn't noticed any issues.

Appveyor's branch status is pending since yesterday. A restart didn't fixed it. I'll merge it and let's hope the best


download gif image file

I have downloaded a gif image file and cached in disk,but it become a image which is the first frame;Will you give me some suggestions?

i think imageLoader just change the suffix of the file，try rename it ok?


HotChocolate Server silent fails and does not respect ConfigureKestrel options

Is there an existing issue for this?

[X] I have searched the existing issues

Product
Hot Chocolate
Describe the bug
When you use ConfigureKestrel to configure the underlying webhost, HotChocolate does not configure according to it
Steps to reproduce
Configure your Kestrel webhost somewhere and run with GraphQL:
var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel(options =>
  {
    options.Listen(IPAddress.Any, 8080, listenOptions =>
    {
      listenOptions.Protocols = HttpProtocols.Http1AndHttp2;
    });
  });

// Abbreviated
builder.Services.AddGraphQLServer()...

var app = builder.Build();

app.MapGraphQL();
app.Run();

Standard stuff; I configured Kestrel to follow the gRPC guide.
When you run, Kestrel should announce it's using a separate endpoint (shown in log output), and HotChocolate will not use it. No error messages will come up regarding HotChocolate.
Relevant log output
Microsoft.AspNetCore.Server.Kestrel: Warning: Overriding address(es) 'http://localhost:5129, https://localhost:7186'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead.
warn: Microsoft.AspNetCore.Server.Kestrel[0]
      Overriding address(es) 'http://localhost:5129, https://localhost:7186'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://<IP_ADDRESS>:5001
Microsoft.Hosting.Lifetime: Information: Now listening on: http://<IP_ADDRESS>:5001
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.

Additional Context?
No response
Version
12.16.0

We do nothing special here ... internally we are just an ASP.NET middleware.

OK, tested it now and it works all fine.

builder.WebHost.ConfigureKestrel(options =>
  {
      options.ListenAnyIP(8080, listenOptions =>
      {
          listenOptions.Protocols = HttpProtocols.Http1AndHttp2;
      });
  });


Change some fields to use fuzzy values

This makes it easier to have tests generate multiple surveys and
answers without hitting integrity issues.

Travis is happy with this and it's really benign and only affects tests. I'm going to self-r+ it and land it.


[ru] cs-230-recurrent-neural-networks

1. Split the current pull request into the following ones ...
done ✓
2. Invite anyone you would know to review your work in these each of these pull requests.
Now the winter session begins, maybe the teachers of the @esokolov level will be able to find time.
Please make articles in the form in which people can read them - pdf or html.

Thank you @AlexandrParkhomenko for all your time in submitting these PRs! This looks great. Thanks for inviting other people you know for the reviews. Looking forward to it!
Once these changes are reviewed and approved, we'll take care of the conversion to the appropriate web/PDF format.

web format: Recurrent Neural Networks


ECS Docker Containers

Not to hijack your repo, which is clearly about EC2 autoscaling :), but I thought this might (or might not) be an ok place to also discuss this potential approach in the context of ECS and containerization, namely container scaling as opposed to instance scaling.
I am envisioning an abstracted fleet of ECS hosts, across which fleets of containers are scaled. In this context, containers with different app-ids (ie: different intended Vault roles) might sit side by side on the same ECS host instance.
Still formulating ideas on this, at at the moment, I still have more questions than answers.
One major difference is that IAM Instance Profiles probably aren't useful in this scenario. Might each container's user-id need to be fully derived by the container internally? In this scenario, would Lambda still be best place for the out-of-band Vault mapping logic to live? Would it be best for this logic (wherever it resides) to push a secret to the container? (Probably not. In many scenarios, containers wouldn't be SSH-able at all.)
As I look deeper into this, I'll post more here. (Unless you'd like to keep the scope strictly focused on the original problem, which is completely understandable.)

Were you ever able to formulate any concrete ideas? I too have more questions than answers - I feel like I'm trying to build a bomb that nobody (including myself) can defuse. But because I'm building it I know how to defuse it.


Channel support?

WebSockets should support sending data on channels, no?

Ah, it seems I'm confusing WebSockets with Socket.io. Would be nice to have support for that.

I'm sure what you mean by "channels", but if I understand what you are asking correctly, the WebSockets RFC spec does not include anything about channels in the sense like Socket.io supported channels. That being said, it is doablel to build channels on top of the WebSocket protocol.

The goal of Starscream is just to provide a RFC 6455 complaint WebSocket library. You could use it to build a Socket.IO library or channel based system off. Here is a library that uses Starscream to create a Socket.IO library.
https://github.com/shuoli84/SocketIOCocoa

Thanks!


Fix #426, new composer.lock

see https://github.com/DesignPatternsPHP/DesignPatternsPHP/issues/426

Merged, thanks for the fix!


Sourcemaps not updated - package from url

Do you want to request a feature or report a bug?
It's a bug
What is the current behavior?
Sourcemaps are not updated when using a direct url+branch in package.json
If the current behavior is a bug, please provide the steps to reproduce.
Here's how I define the library in package.json:
{
  dependencies: {
    ...
    "react-click-outside": "git://github.com/soomla/react-click-outside.git#master"
  }
}

My source maps are set as:
config.devtool = 'eval';

I make changes to the repo and commit+push.
I pull the changes using npm install.
Make sure the changes are updated in node_modules.
Restart and refresh the browser. The file with the previous changes is in the source maps.

What is the expected behavior?
The source maps file will be updated with the changes in master
Please mention other relevant information such as the browser version, Node.js version, webpack version and Operating System.
Node: 7.1.0
Browser: Chrome 55.0.2883.95
Webpack: 2.2.1
OS: osx 10.12

@refaelos I thought the key was devTool (camelcase)

A lot has changed since then ... Closing.


Small bug with 3CX Build 314 version

First of all, I sincerely thank you for sharing this, I find it amazing!!!
Too bad you abandoned the continue of your project :-( !
For the issue, here are the details:
Several bugs on my side.
First .:
When the call is "live" the information is displayed correctly, I see it very well.
But when the call is completed, all values for same call are Unknown.
Second.:
Following installation, yesterday's calls are displayed on the page. Happy !
But the information does not match.
When I look at some called in 3CX Tools (your tool), they are actually callers (in 3CX CallLogs).
It would be really great if you could adjust one last time. I love your tools.
3CX Version :  18.0.314

The code is open. Feel free to download/fork and adjust to your needs.
Regarding your mentioned bugs, just by reading your description, I don’t understand what went wrong. Screenshots (real names/numbers removed) or an example with how it is displayed vs what do you expect could be helpful. Maybe this is just a timing issue…
If you are like me and you use the free version of 3CX with proper IP Phones, it‘s definitely worth taking a look at FreePBX. The interface is a bit ugly but it’s far more powerful and versatile. I recently migrated every PBX I manage.

Hi,
thank you for your reply
Thanks for the advice, I'll think about it.
We use a paid version of 3CX, for all its advantages such as WebMeeting, WebClient, Softphone, Mobile Application, connection to Teams, etc. But I will still study FreePBX because the limitations of 3CX annoy me, I confirm.
In the meantime, here are some screenshots.
First point .:
Here is the result of an incoming call.

Second point .:

@adroste  Do you have any idea what could be causing this?
Or just somewhere I can search for traces to see precisely what the script sees
Thank you for your help :-)

I'll look into it, I just did not have time do to it yet.


DOC: Initial setup for sphinx-build

Resolves: #58.

Codecov Report

Merging #114 (7ddd735) into master (7370457) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master     #114   +/-   ##
=======================================
  Coverage   98.89%   98.89%
=======================================
  Files          12       12
  Lines        1082     1084    +2
  Branches      138      138
=======================================
+ Hits         1070     1072    +2
  Misses          6        6
  Partials        6        6

Flag
Coverage Δ

travis
98.89% <100.00%> (+<0.01%)
:arrow_up:

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

Impacted Files
Coverage Δ

nitransforms/__init__.py
100.00% <100.00%> (ø)

nitransforms/io/__init__.py
100.00% <100.00%> (ø)

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 7370457...7ddd735. Read the comment docs.


Authentication fails due to refresh_token expected to be in JWT format

https://github.com/peering-manager/pyixapi/blob/3b434d747ce8f2566066788feebb8c4858a54931/pyixapi/core/api.py#L138
For LINX, we return refresh_token as a string so when this line tries to parse it as a JWT, it fails with: pyixapi.core.token.TokenException: Not enough segments
Is there anyway to make this more flexible as the schema doesn't enforce this value being in JWT format?
If I change it locally to self.refresh_token = r["refresh_token"], this works fine.

I thought it was always supposed to be JWT hence no fallback existing right now.
Maybe there is a way to inspect if the format is JWT before trying to set value. As a quick workaround, we could also catch the raised exception like so:
try:
    self.refresh_token = Token.from_jwt(r["refresh_token"])
except TokenException:
    self.refresh_token = r["refresh_token"]

@dant89 do you have a capture or an idea how LINX perform auth for their IX-API instance?

This was an implementation issue on our side, the ix-api schema states the JWT authentication responses should always be in JWT format.


IC0515: Certified state is not available yet. Please try again...

Describe the bug
This error keeps showing in production (real IC network) 1 out of 300 requests.
"IC0515: Certified state is not available yet. Please try again..."
When you retry after a sec the request works.
Expected behavior
It feels like agent-js should retry requests internally.

This should only happen while a replica node is starting up and joining the subnet, right? I'm surprised it comes up so often.
Maybe the boundary node could even be smarter here?

I just added sentry.io to our frontend. Will update you late with the exact count. So far it happened once to 3 different users for 1 hour.

I will just post a screenshot of the two most prominent errors. You can see users, events, and when they happened on a 24h chart. Anyway, this issue is probably misplaced.

Hopefully, this issue should be resolved by the new retry logic. I'll close for now


How to manually refresh the KRPullLoadView

I have the table view, and we have the button in the navigation bar. So when ever user will click on that button I have to call the KRPullLoadView manually so that loader view will be visible to the user and am able to call the service function.
How can I achieve this functionality, please lemme know if you understand my point.
Thanks

@MandeepSingh1
I understand your point.
But This lib doesn't have its function now.
When tap the button, I assumed that progressHUD is indicated.
However, there are some people who think like you.
So, I implement its function  in the near future.

I added this method to simulate a manual refresh 😊
// 模拟手动刷新
func manualStartLoading() -> Void {
    guard let scrollView = self.scrollView
        else { return }

     if case .loading = self.state { return }

    // 找到阈值
    let threshold = (scrollDirection == .vertical) ? bounds.height : bounds.width

    // 模拟设置滑动距离
    switch type {
    case .refresh:
        switch scrollDirection {
        case .vertical:
            scrollView.distanceOffset.y = -threshold - 1
        case .horizontal:
            scrollView.distanceOffset.x = -threshold - 1
        }
    case .loadMore:
        switch scrollDirection {
        case .vertical:
            scrollView.distanceEndOffset.y = -threshold - 1
        case .horizontal:
            scrollView.distanceEndOffset.x = -threshold - 1
        }
    }

    // 模拟更改载入状态
    state = .loading(completionHandler: {[weak self] in
        self?.endLoading()
    })

    startLoading()
}

}
I hope to help you❤.

@MandeepSingh1  @LightNightCode
Sorry I'm late.
Please try 1.3.0. ( tableView.pullToRefresh )


Remove orta :cry:

Noticed a left over reference to Orta when trying to schedule a lunch and learn.

I think we could have still let him live for several years. I still find references to Craig sometimes -:)


Reviewed for Accuracy and Fixed Incorrect Brackets

Brackets were included around Application Deployment as if someone was eventually going to create a markdown link but didn't.  Also reviewed for accuracy and updated article date.
#MMS2019Docathon submission

@ChrisKibble : Thanks for your contribution! The author, @aczechowski, has been notified to review your proposed change.

Verified correction.

The fix is apparently correct. Should the date be changed as marked?

Thanks @ChrisKibble for the contribution!
#sign-off
Once merged, this should be live with the next daily publishing process. Right now that could be today (Wednesday, 8 May) around 11:00 Pacific time. No further action needed from you.


interactionSource.collectIsPressedAsState() does not work

Describe the bug
Trying to handle isPressed interaction with composable slider i encountered a problem thats its never returns true, it seems to
me, thats it's because isDragged fireing first and my click recognaized like very fast drag -> release
i'm not sure if this behavior is intended, but for it's more like a bug
Affected platforms
Tested on Desktop
### Versions

Kotlin version*: 1.9.0
Compose Multiplatform version*: 1.4.3
OS version(s)* (required for Desktop and iOS issues): Ubuntu 23.04
OS architecture (x86 or arm64): x86_64
JDK Amazon corretto-17.0.7

To Reproduce

create slider with default implementation
init interaction source with  interactionSource = remember { MutableInteractionSource() }
init isPressed with val isPressed by interactionSource.collectIsPressedAsState()
init isDragged with  val isDragged by interactionSource.collectIsDraggedAsState()
create text to debug changing isPressed and isDraggeed values
bind interactionSource to slider

Expected behavior
I expecteed isPressed to return true when tap on it's line/ point,
and expected isDragged to return true when slider's thumb is dragged  and false when dragged ends

Can you please provide a reproducible sample project o GitHub?
Or just a block of code here in comments

Sorry to keep you waiting for an answer,  simple version of code will look like that
@Composable
fun slider() {
 val interactionSource = remember { MutableInteractionSource() }
 val isPressed by interactionSource.collectIsPressedAsState()
 val isDragged by interactionSource.collectIsDraggedAsState()
 val sliderValue by remeber { mutableStateOf(0f) }

Column{
  Slider(
      enabled = true,
      value = sliderValue,
      onValueChange = { newValue ->
      sliderValueRaw = newValue},
      valueRange = 0F..100f,
      interactionSource = interactionSource
   )
  Text(
      text = Text("isPressed: ${isPressed} || isDragged: ${isDragged}"
   )
 }
}

in this example isPressed never becomes true, but isDragged works correctly
I'm not sure if isDragged is supposed to work on Slider, however for me it was the expected behavior

I guess I have similar issue but slightly different use case.
I have a OutlinedTextField acting as DropDown but instead opens a ModalBottomSheet when clicked. So, I'm listening for interactions from MutableInteractionSource trying to invoke onClick when the ineraction is PressInteraction.Release.
This code is working well with Android and iOS but not on Desktop (tested in Mac).
Use the following composable as a reproducer:
https://gist.github.com/sdzshn3/4f14132222df30151b4bec6ab84d4e79

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


uv remove summary is not intutive

e.g.
❯ uv remove anyio
Resolved 16 packages in 5ms
   Built example @ file:///Users/zb/workspace/example
Prepared 1 package in 165ms
Uninstalled 1 package in 0.41ms
Installed 1 package in 1ms
 - example==0.1.0 (from file:///Users/zb/workspace/example)
 + example==0.1.0 (from file:///Users/zb/workspace/example)

I want to see that anyio was removed but it's hidden in a summary.

Are you sure anyio was removed?

I don't think it was.

Oh... weird. Not sure how I got in that state?
❯ uv init
Initialized project `example`
❯ uv add anyio -q
❯ uv remove anyio
warning: `uv remove` is experimental and may change without warning
Resolved 1 package in 3ms
   Built example @ file:///Users/zb/workspace/example
Prepared 1 package in 155ms
Uninstalled 4 packages in 4ms
Installed 1 package in 0.82ms
 - anyio==4.4.0
 - example==0.1.0 (from file:///Users/zb/workspace/example)
 + example==0.1.0 (from file:///Users/zb/workspace/example)
 - idna==3.7
 - sniffio==1.3.1

Maybe you ran with --no-sync...? So it was present in your lockfile but not your env?


Add a mode which attempts to reverse the mapping.

From obfuscated back into ASCII space. This would be really helpful :)

As I think you've already noticed, this feature is present via "reverse".


Cant run after rebuilding using apktool v 2.0 shows  "unfortunately,****has stopped"

Apktool v2.0 was able to successfully decode the apk without any error. But after recompiling and signing, I installed the apk but the app was not running it showed the message"unfortunately******has stopped".PLEASE NOTE THAT APKTOOL DIDN'T THROW ANY ERROR WHILE RECOMPILING. here is the link to apk--https://www.dropbox.com/s/uw382fa47x9spu2/il351.apk?dl=0  Greetings and thanks in advance,Peace.

This is a generic error when an APK fails to install. Do you happen to have a logcat of the failure? When this client side message occurs, the real error is printed into the logs.
You may watch the logcat via adb logcat, trigger the app install. Then provide the lines that show the real error here.

Apk installation didn't fail .installation completed without any error .I will send you the logact as soon as I can figure out which portion of the logact represents my error

Here is the logcat of the app,package id is net.suckga.ilauncher2----
734  >>> net.suckga.ilauncher2 <<<
06-02 22:15:18.163   188   188 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAP
ERR), fault addr 0x0
06-02 22:15:18.222   188   188 F DEBUG   :     r0 b3b2a87c  r1 000000b6  r2 af11
8780  r3 00000000
06-02 22:15:18.222   188   188 F DEBUG   :     r4 00000041  r5 000000d6  r6 0020
0029  r7 ffffffff
06-02 22:15:18.222   188   188 F DEBUG   :     r8 00000025  r9 00000000  sl 0000
0800  fp b6ddbf38
06-02 22:15:18.222   188   188 F DEBUG   :     ip 00430000  sp b3b2a810  lr b50c
e293  pc b50ccc28  cpsr 400d0030
06-02 22:15:18.226   188   188 F DEBUG   :
06-02 22:15:18.226   188   188 F DEBUG   : backtrace:
06-02 22:15:18.227   188   188 F DEBUG   :     #00 pc 00003c28  /data/app/net.su
ckga.ilauncher2-1/lib/arm/libl.so
06-02 22:15:18.227   188   188 F DEBUG   :     #01 pc 0003f14f  /system/lib/libc
.so (__pthread_start(void*)+30)
06-02 22:15:18.227   188   188 F DEBUG   :     #02 pc 00019967  /system/lib/libc
.so (__start_thread+6)
06-02 22:15:18.253   188   188 W libbacktrace: bool PtraceRead(pid_t, uintptr_t,
word_t*): invalid pointer 0x9f740000 reading from tid 27903, ptrace() strerror(
errno)=I/O error
06-02 22:15:18.444   188   188 W libbacktrace: bool PtraceRead(pid_t, uintptr_t,
word_t*): invalid pointer 0xaf199000 reading from tid 27903, ptrace() strerror(
errno)=I/O error
06-02 22:15:18.467   188   188 W libbacktrace: bool PtraceRead(pid_t, uintptr_t,
word_t*): invalid pointer 0xb5d70000 reading from tid 27903, ptrace() strerror(
errno)=I/O error
06-02 22:15:18.750   188   188 F DEBUG   :
06-02 22:15:18.750   188   188 F DEBUG   : Tombstone written to: /data/tombstone
s/tombstone_01
06-02 22:15:18.750   188   188 E DEBUG   : AM write failed: Broken pipe
06-02 22:15:18.757   760   776 I BootReceiver: Copying /data/tombstones/tombston
e_01 to DropBox (SYSTEM_TOMBSTONE)
06-02 22:15:18.767   760 27921 W ActivityManager:   Force finishing activity net
.suckga.ilauncher2/.LauncherActivity
06-02 22:15:18.778   760  3316 D GraphicsStats: Buffer count: 15
06-02 22:15:18.778   760  3316 I WindowState: WIN DEATH: Window{726b4d3 u0 net.s
uckga.ilauncher2/net.suckga.ilauncher2.LauncherActivity}
06-02 22:15:18.795   207   207 I Zygote  : Process 27876 exited due to signal (1
1)
06-02 22:15:18.880   760 27921 W ActivityManager: Exception thrown during pause
06-02 22:15:18.880   760 27921 W ActivityManager: android.os.DeadObjectException
06-02 22:15:18.880   760 27921 W ActivityManager:       at android.os.BinderProx
y.transactNative(Native Method)
06-02 22:15:18.880   760 27921 W ActivityManager:       at android.os.BinderProx
y.transact(Binder.java:503)
06-02 22:15:18.880   760 27921 W ActivityManager:       at android.app.Applicati
onThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:724)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.ActivityStack.startPausingLocked(ActivityStack.java:868)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.ActivityStack.finishActivityLocked(ActivityStack.java:2883)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2739)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.
java:2599)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:11609)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:11505)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.ActivityManagerService.crashApplication(ActivityManagerService.java:12194)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:
11701)
06-02 22:15:18.880   760 27921 W ActivityManager:       at com.android.server.am
.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86)
06-02 22:15:18.885   760  5073 I ActivityManager: Process net.suckga.ilauncher2

May be its irrelevant but previous version of the apk works fine with apktool 2.0

Hi I have provided the logcat you asked for please see the above post.Why It still says waiting for the issuer

Gave this a try. Apk installed fine. Tried to open it and got this error.
E/Finsky  (27226): [1] LicensingService.notifyListener: Unable to send license information

So checked out the package name of this package="net.suckga.ilauncher2"
Corresponds to this: https://play.google.com/store/apps/details?id=net.suckga.ilauncher2
Which costs money. Do not upload paid apks here. The error is from license protection on my end. I will not investigate this.


Update request: hardinfo 0.x -> 2.x (new upstream)

I got this message from (new) upstream:
We have rebooted the hardinfo program (System information and benchmark) that has not had any releases for >10 years as community edition hardinfo2.

Please update hardinfo to hardinfo2.

Project www - https://hardinfo2.org/

GitHub - https://github.com/hardinfo2/hardinfo2
See README.md for nix configuration.

Release 2.1.11: (Base for all distros)
https://github.com/hardinfo2/hardinfo2/releases/tag/release-2.1.11
PS: It needs lots of nix updates, as you had a very old version from before Berlios was shut down, the last 15 years it was hosted here https://github.com/lpereira/hardinfo and is now moved to the above community github as you can read in the README.md (Top warning - moving to hardinfo2/hardinfo2).

Notify maintainers
(I'm the only listed maintainer. Help wanted.)

Note for maintainers: Please tag this issue in your PR.

Add a :+1: reaction to issues you find important.

No sure why I get a segfault while trying to use hardinfo2

Changed the following:
removed the patch for distro /etc/os-release and added new patch that disables binreloc:
diff --git a/config.h.cmake b/config.h.cmake
index 08ae529..0a5d812 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -39,6 +39,6 @@
   #endif
 #endif	/* HARDINFO2_DEBUG */

 #define HAS_LINUX_WE 1

 #cmakedefine01 HAS_LIBSENSORS

build & run
running on ubuntu 20.04.4 LTS as root:
nix-build -E 'with import  {}; callPackage ./default.nix {}'
./result/bin/hardinfo2
themes are not working - but started:

How do I add QT5 build requirements:  libqt5opengl5-dev qtbase5-dev, that are needed for next stable (rev="refs/heads/master")?

Just installed Nixos for the first time - works great!
Don't know why the /etc/os-release from nix is not made available to build - It should be...
Patch for no /etc/os-release when nix building on nixos (Will be submitted to master later)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d529473..50fb49d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,20 +68,26 @@ set(PACKAGE_LIBSOUP2_MINVERSION 2.42)
 set(PACKAGE_LIBGLIB2_MINVERSION 2.24)

 #########################CPack PACKAGING SETUP###############################
+if(EXISTS "/etc/os-release")
+  file(STRINGS /etc/os-release distro REGEX "^NAME=")
+  file(STRINGS /etc/os-release disversion REGEX "^VERSION_ID=")
+  file(STRINGS /etc/os-release disversioncode REGEX "^VERSION_CODENAME=")
+else()
+  set(distro "Linux")
+  set(disversion "99")
+  set(disversioncode "Linux")
+endif()
 set(RPM 0)
-file(STRINGS /etc/os-release distro REGEX "^NAME=")
 string(REGEX REPLACE "NAME=" "" distro "${distro}")
 string(REGEX REPLACE "\"" "" distro "${distro}")
 string(REGEX REPLACE "/" "" distro "${distro}")
 string(REGEX REPLACE " " "" distro "${distro}")
-file(STRINGS /etc/os-release disversion REGEX "^VERSION_ID=")
 string(REGEX REPLACE "VERSION_ID=" "" disversion "${disversion}")
 string(COMPARE EQUAL "${disversion}" "" result)
 if(result)
   #sid/rawhide with no version - use project name
   message("-- Found no distro version - Using codename")
-  file(STRINGS /etc/os-release disversion REGEX "^VERSION_CODENAME=")
-  string(REGEX REPLACE "VERSION_CODENAME=" "" disversion "99_${disversion}")
+  string(REGEX REPLACE "VERSION_CODENAME=" "" disversion "99_${disversioncode}")
 endif()
 string(REGEX REPLACE "\"" "" disversion "${disversion}")
 string(REGEX REPLACE "/" "" disversion "${disversion}")

Don't know why the /etc/os-release from nix is not made available to build - It should be...

It's due to the Nix build sandbox which is intentionally isolating build processes from the host OS, to help with reproducible/reliable builds.

Yes, that part is so great - super system.
But how to add the /etc/os-release to the sandbox?

Patch to detect NixOS distribution
diff --git a/modules/computer/os.c b/modules/computer/os.c
index c8bee8d..849a68a 100644
--- a/modules/computer/os.c
+++ b/modules/computer/os.c
@@ -457,6 +457,7 @@ detect_distro(void)
         { DB_PREFIX "distro-release", "fl" },
         { DB_PREFIX "vine-release", "vine" },
         { DB_PREFIX "PartedMagic-version", "pmag" },
+        { DB_PREFIX "NIXOS", "nixos", "NixOS Linux" },
          /*
          * RedHat must be the *last* one to be checked, since
          * some distros (like Mandrake) includes a redhat-relase

Patch for missing theme:
diff --git a/shell/callbacks.c b/shell/callbacks.c
index 07900e9..0d8a7af 100644
--- a/shell/callbacks.c
+++ b/shell/callbacks.c
@@ -145,7 +145,7 @@ void cb_disable_theme()
 {
     Shell *shell = shell_get_main_shell();
     // *shelltree=shell->tree;
-    char theme_st[200];
+    char theme_st[400];
     GKeyFile *key_file = g_key_file_new();
 #if GTK_CHECK_VERSION(3, 0, 0)
     GtkCssProvider *provider;
@@ -185,9 +185,9 @@ void cb_disable_theme()
 #if GTK_CHECK_VERSION(3, 0, 0)
     if(params.theme>0){//enable
        if(params.darkmode){
-          sprintf(theme_st,"window.background {background-image: url(\"/usr/share/hardinfo2/pixmaps/bg%d_dark.jpg\"); background-repeat: no-repeat; background-size:100%% 100%%; }",params.theme);
+          sprintf(theme_st,"window.background {background-image: url(\"%s/pixmaps/bg%d_dark.jpg\"); background-repeat: no-repeat; background-size:100%% 100%%; }",params.path_data,params.theme);
        }else{
-           sprintf(theme_st,"window.background {background-image: url(\"/usr/share/hardinfo2/pixmaps/bg%d_light.jpg\"); background-repeat: no-repeat; background-size:100%% 100%%; }",params.theme);
+          sprintf(theme_st,"window.background {background-image: url(\"%s/pixmaps/bg%d_light.jpg\"); background-repeat: no-repeat; background-size:100%% 100%%; }",params.path_data,params.theme);
        }
        gtk_css_provider_load_from_data(provider, theme_st, -1, NULL);
        if(shell->window) gtk_style_context_add_provider(gtk_widget_get_style_context(shell->window), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

SUCCESS
The following patches are added to hardinfo2 master/Next Release:

PACKAGING fix for distros without /etc/os-release
https://github.com/hardinfo2/hardinfo2/commit/bd5ef6c6eca0a8ff5b53987a765d331c46a5b84e

FIX Disabled binreloc for all distros
https://github.com/hardinfo2/hardinfo2/commit/cf3bda721086b1d865d9874cff26da408e0e67d0

FIX Added NixOS distro detection
https://github.com/hardinfo2/hardinfo2/commit/93795c46b3dee6218d3ddeec3312dc768c57ac41

FIX hardcoded theme datadirs fixed
https://github.com/hardinfo2/hardinfo2/commit/96d27e70fa410408a0740bde1172dc15668e8c13

Seams working fine now
@bjornfor @Sigmanificient

Please continue work on submitting the nix file for 2.1.11 thanx
Note 4 patches for 2.1.11 are in the previous messages.

Please if you could also help getting nix ready for next release with service and QT5 OpenGL.
How do I add QT5 build requirements to nix file: libqt5opengl5-dev qtbase5-dev, that are needed for next stable/master repo (rev="refs/heads/master")?

/hwspeedy

@hwspeedy: Nice progress!

How do I add QT5 build requirements to nix file: libqt5opengl5-dev qtbase5-dev, that are needed for next stable/master repo (rev="refs/heads/master")?

grepping nixpkgs? I couldn't find libqt5opengl5-dev equivalent, but I think qtbase5-dev is made available by adding qt5.qtbase to buildInputs. Or if you want the exact dev output: lib.getDev qt5.qtbase.

@hwspeedy: I tested the nix_hardinfo2.tgz expression and it results in mostly empty GUI. I'm running Wayland. Are you on X11?

@hwspeedy: I tested your nix_hardinfo2.tgz expression and it results in mostly empty GUI. I'm running Wayland. Are you on X11?

Sorry, I didn't test exactly that expression (I pointed src to a local source repo). When I run it exactly as it it works.

Updated Nix expression that fetches hardinfo2 from the master branch, applies a one-line patch, and enables opengl benchmark:
{
  lib,
  stdenv,
  fetchFromGitHub,
  cmake,
  pkg-config,
  gtk3,
  json-glib,
  lerc,
  libdatrie,
  libepoxy,
  libnghttp2,
  libpsl,
  libselinux,
  libsepol,
  libsoup_3,
  libsysprof-capture,
  libthai,
  libxkbcommon,
  pcre2,
  sqlite,
  util-linux,
  wrapGAppsHook,
  xorg,
  libsForQt5,
}:

stdenv.mkDerivation rec {
  pname = "hardinfo2";
  version = "2.1.11+dev";

  src = fetchFromGitHub {
    owner = "hardinfo2";
    repo = "hardinfo2";
    rev = "96d27e70fa410408a0740bde1172dc15668e8c13";  # master @ Fri Aug 23 13:26:19 2024 +0200
    hash = "sha256-pi+OtaQqAcFhr/I2yhtp8xVdM+8kGfc/M4RelBgNW08=";
  };
  #src = ~/inbox/hardinfo2;

  patches = [
    (builtins.toFile "hardinfo2.patch" ''
      diff --git a/CMakeLists.txt b/CMakeLists.txt
      index 9f55890..b419c77 100644
      --- a/CMakeLists.txt
      +++ b/CMakeLists.txt
      @@ -550,7 +550,7 @@ configure_file(hardinfo2.desktop.cmake ''${CMAKE_BINARY_DIR}/hardinfo2.desktop @ON

       if(HARDINFO2_SERVICE)
           #cannot use CMAKE_INSTALL_LIBDIR due to distros with dual lib (arch)-gnu-linux,lib64
      -    set(CMAKE_INSTALL_SERVICEDIR "/usr/lib")
      +    set(CMAKE_INSTALL_SERVICEDIR "/usr/lib" CACHE PATH "Path where the systemd service file gets installed")
           message("ServiceDir=" ''${CMAKE_INSTALL_SERVICEDIR})

           if(''${HARDINFO2_SYSTEMV})

    '')
  ];

  nativeBuildInputs = [
    cmake
    libsForQt5.wrapQtAppsHook
    pkg-config
    #wrapGAppsHook  # TODO: unneeded? remove?
  ];

  buildInputs = [
    gtk3
    json-glib
    #lerc  # TODO: unneeded?
    libdatrie
    libepoxy
    libnghttp2  # TODO: still not found -- cmake warns
    libpsl
    libselinux
    libsepol
    libsoup_3  # TODO: still not found -- cmake warns
    libsysprof-capture
    libthai
    #libxkbcommon  # TODO: unneeded?
    #pcre2  # TODO: unneeded?
    #sqlite  # TODO: unneeded?
    util-linux
    xorg.libXdmcp
    xorg.libXtst
    libsForQt5.qtbase
  ];

  hardeningDisable = [ "fortify" ];

  cmakeFlags = [
    (lib.cmakeFeature "CMAKE_INSTALL_DATAROOTDIR" "${placeholder "out"}/share")
    (lib.cmakeFeature "CMAKE_INSTALL_SERVICEDIR" "${placeholder "out"}/lib")
  ];

  meta = {
    description = "System Information and Benchmark for Linux Systems ";
    homepage = "http://www.hardinfo2.org";
    license = with lib.licenses; [
      gpl2Plus
      gpl3Plus
      lgpl2Plus
    ];
    maintainers = with lib.maintainers; [ ];
    platforms = lib.platforms.unix;
    mainProgram = "hardinfo2";
  };
}

Okay, I used single user mode, so thats why, no sandbox... thanx for info.
Great, I will try masterbuild, thanx.
Recommended packages are probably missing. See README.md for info.

Building from master finishes and can be installed - YES, Good job!
TODO for next release

as we know from above the recommended packages are not installed. (IMPORTANT TO 2.1.11)

OpenGL testbench is compiled, but opengl plugins are not installed
test the compiled app:
./result/lib/hardinfo2/modules/qgears2
./result/lib/hardinfo2/modules/qgears2 -gl
result:
qt.qpa.plugin: Cloud not find the Qt platform plugin "xcb" in ""

Service is not enabled and started

Service does not work correctly - it should modprobe 3 SPD modules (Does not happen). Should put a read of iomem and ioports into /tmp/ - they are empty - size=0.

Okay, NixOS is something new for me - with sandboxing apps. Really demanding for my poor brain after 1 days use of NixOS :)
"GPU OpenGL Drawing" test in hardinfo2 program is working! (Bottom)
But you cannot call the program directly in store - not working - and fine...
So 2 is closed.

Service is not enabled and started

Service does not work correctly - it should modprobe 3 SPD modules (Does not happen). Should put a read of /proc/iomem and /proc/ioports into /tmp/ - they are empty - size=0.

I looked at the service and I'm not sure that's something I'd like to run on a multi-user system, without first learning more about the info it exposes. (I guess the files are only readable by root for a reason?)
Anyway, fixing (and enabling) the service happens at the NixOS level, not at the package level, so I don't think it's a blocker for packaging hardinfo2.

I am not sure about that - They use potential harmfull functions in kernel to gain the io/mem ranges that needs uid=0 - so it's probably more a question of not putting too much code into the kernel or lack of time to make a read only version - interrupts, dma are readonly. Device trees shows io/mem ranges readonly.
The SPD modules are going towards autoloading and uses auto probe for now. The old eeprom is not loaded as that is deprecated way.
The DMI tables are to read number of dimm memory modules, no secret in DMI as far as I can see.
Let me know what you find out, thanx.

@bjornfor  I see that you are using libsForQt5.wrapQtAppsHook, but using it instead of the wrapGAppsHook, I get  No GSettings schemas are installed on the system

Without wrapGAppsHook, I get No GSettings schemas are installed on the system at startup.

Thanks for testing. I switched from gtk to qt hook because I assumed the app was being rewritten in qt, due to a comment above. If the qt/opengl stuff works with the gtk hook alone then great! (Otherwise we can use both hooks too, but avoid double wrapping.)

Version 2.1.14 released with patches for Nix/NixOs + more: https://github.com/hardinfo2/hardinfo2/releases/tag/release-2.1.14

What is the status of updating hardinfo (remove) to hardinfo2 2.1.14 in NixPkgs/NixOS?

I haven't had time/energy to look at it, but I can probably review PRs.

Hi @bjornfor,
Hardinfo2 - Released 2.1.17 today.
Can be build on NixOS with -DHARDINFO_SERVICE=0 and -DHARDINFO_LIBSOUP3=0
Choice libsoup 2.4 or 3 does not matter - it is all for support of the distro's choice. And Nix seams to like libsoup2.4.
build.sh.txt
default.nix.txt
PS: Remove .txt from files and run ./build.sh
Note: That I am installing the package dependencies in the build.sh batch file: (PLEASE FIXME)
sysbench: is needed to run standard sysbench benchmarks.
udisks2: is needed to provide NVME++ informations.
dmi-decode: is needed to provide DMI informations.
mesa-utils: is needed to provide opengl and run standard sysbench benchmarks.
lsscsi: gives information about hard drives.
lm-sensors: is needed to provide sensors values.
xdg-utils: xdg_open is used to open your browser for bugs, homepage & links.
iperf3: iperf3 is used to benchmark internal network speed.
fwupd: fwupd is used to read and display information about firmware in system.
Service: Service loads SPD modules (at24/ee1004/spd5118) to display SPD info for your DIMMs memory. Show addresses for iomem+ioports.
xrandr/x11-xserver-utils: xrandr is used to read monitor setup
vulkan-tools: vulkaninfo is used to display vulcan information.
NOTE: in nix, iperf3 is packaged with binary name iperf3d - hence "internal network benchmark" does not work!

iperf3 fix:
install package iperf instead of iperf3d.

Im getting the following error when I add the package to my config:
error: undefined variable 'hardinfo2'

@boustanihani: The package is available in nixos-24.11 and later. If you get that error you are probably using a too old nixpkgs, or have some kind of configuration issue (e.g. forgetting with pkgs;?).

I am using nixos-24.11

Now it worked, seems it needs time to get recognized :)


Add fine-grained tree-structure tracking in xilem

This is based on top of #159 (which is a requirement for this PR, and the reason why this is a draft PR)
This implements fine-grained tree-structure tracking described in #54 using a TreeTrackerSplice (which implements the ElementsSplice introduced in #159).
Currently it's only replacing the bloom filter which is only used for accessibility. But I expect this to be more useful later.
It's inspired by the lasagna branch in druid.

I kinda hate VecSplice and I think it's a very confusing abstraction
...
So, given that how VecSplice is supposed to work is undocumented, I'm guessing that whether it actually works can only be known by those who can peer into the thoughts of Raph Levien.

I still think it's mostly because it's not really documented that well (and it's not the easiest to digest code code admittedly, but with good documentation it should probably not be necessary to dive that deep into the details). The general idea how it's supposed to work can be extracted from the code though?
I don't want to defend it as I also generally like a more mutation-log based approach as discussed on zulip.
But I think it makes sense in the way the architecture is currently built (every view/view sequence manages their corresponding element(s) and recursively traverses their children). I don't see currently how it could be done significantly better otherwise.
Well I can write some tests as this could also well serve as documentation (but I don't like to do unnecessary work when you think the VecSplice or generally this approach should go away any time soon).
Anyway, should #159 be just merged with/as this PR or does it make sense to do these separately?

Anyway, should https://github.com/linebender/xilem/pull/159 be just merged with/as this PR or does it make sense to do these separately?

I think we can close #159, so the discussion is centralized in this PR.

Well I can write some tests as this could also well serve as documentation (but I don't like to do unnecessary work when you think the VecSplice or generally this approach should go away any time soon).

Fair enough. It's far outside my current priorities that I don't expect this code to go away for at least 6 months, but I do want to eventually refactor it, so I get your reluctance. I think tests would be better, but Xilem current has virtually none, so it would be unfair to hold your PR to a higher standard. Consider tests optional for getting this PR accepted.

I think I remember why I put the code of the tree-structure changes into the widget part of the codebase. I think I once had it within the views, until I recognized that the type of the ids were different between view/widget...
This makes stuff more complicated because of the Pod (which holds the widget id) that is currently only constructed by the view sequences (more specifically by impl ViewSequence for impl View) (and the root pod within app.rs). I need the id of the element/pod though, and I can't access that within View::rebuild as it's done by the parent context.
I'm currently brainstorming how to get around that without shuffling a lot of code (or ugly hacks).

So one idea I have, is extending the ElementsSplice methods with a parameter cx: &mut Cx to record the changes (or apply them directly in the view context).
So taking the content of the ViewSequence::build() for the view:
let (id, state, element) = <V as View<T, A>>::build(self, cx);
elements.push(Pod::new(element), cx); // applys children tree-structure changes to the newly created Pod
(state, id)

Does that sound feasible?

I've done that, I'm not extremely happy about it, it introduces some kind of accidental complexity I think, and may be slightly brittle (as it requires a clean 1:1 relation of Widget <-> Pod, which is planned anyway I think).
At this point I'm also considering rethinking the way the View(Sequence) architecture/traits (towards less inplace mutations). But i think this requires quite a bit of thought to be an actual improvement.
Anyway how I have "solved" this for now is by having a Cx::mark_children_tree_structure_mutations(&mut self, mutations: Vec<SpliceMutation>)
which is called by the view that owns the children elements. And then register them with the above function.
TreeTrackerSplice::push(&mut self, element: Pod, cx: &mut Cx) looks like this then:
self.mutations.push(SpliceMutation::Add(element.id()));
cx.apply_children_tree_structure_mutations(element.id());
self.splice.push(element);

Maybe there's a better way (open for suggestions)

Can you push the commits where you implemented that? I think I don't see them.

Anyway how I have "solved" this for now is by having a Cx::mark_children_tree_structure_mutations(&mut self, mutations: Vec<SpliceMutation>)
which is called by the view that owns the children elements. And then register them with the above function. TreeTrackerSplice::push(&mut self, element: Pod, cx: &mut Cx) looks like this then:
self.mutations.push(SpliceMutation::Add(element.id()));
cx.apply_children_tree_structure_mutations(element.id());
self.splice.push(element);

Maybe I'm missing something obvious, but is SpliceMutation even necessary a this point? The TreeStructureTrackingSplice::push() method takes a Cx and a WidgetPod; TreeStructure::append_child() takes a parent id and a child id. It seems like you could easily call one from the other and skip all lot of intermediary steps.
Right now, it looks like you're using Cx::mark_children_tree_structure_mutations and Cx::apply_children_tree_structure_mutations as a workaround to the fact that Cx doesn't have the parent id. I think your code could get a lot simpler if you just added
struct Cx {
    // ...
    current_parent: Option<Id>,
}

or something in that vein.
(Also, quick question, have you tried running some Xilem apps, eg the Taffy example, and checked that the child tracking actually worked?)

I'm going a bit in more detail over the review later (when I got more time), thanks so far for the detailed review.
One thing though:

Actually, no, you can get it from the id path.

That's unfortunately not the case, as it's the ViewId (we should really rename it (see also #168), I forgot about it when I did the changes again). While we need the WidgetId.
This is why it's pretty tricky currently to do this cleanly I think (without reshuffling the whole code-base).

That's unfortunately not the case, as it's the ViewId

Ah, right, I forgot. Okay, so what I suggest is:

Add a parent_widget: Option<widget::Id> field to Cx, with a getter method.
Add a parent_widget: widget::id argument to Cx::with_id() and Cx::with_new_id

This adds some cruft to the codebase (we're basically tracking the same thing twice, if I understand correctly), but we'll deal with that later.

(we should really rename it (see also #168)

Two renames (Id -> ViewId, Id -> WidgetId) would be welcome, though probably not in this PR.

Ok, I've updated this and applied all the review comments.

Maybe I'm missing something obvious, but is SpliceMutation even necessary a this point?
...
Anyway, if think your code would get a lot more robust if you skipped the mutation list and applied the mutations directly as they come.

Yeah you're right, having access to Cx in the splice methods makes all of this quite a bit simpler indeed.
The idea to use something like with_id is certainly cleaner, made the code more compact.
I've implemented that though similarly as the id_path in Cx (via a stack). Just having an option is not enough, as children setting this, overwrite it for other children. So I've added new context methods named with_pod and with_new_pod so that access to the element id is always valid within the views (via Cx::element_id). This is also necessary (as described below) since there's no direct ViewId <-> WidgetId relation (there are more ViewIds than WidgetIds).

Also, quick question, have you tried running some Xilem apps, eg the Taffy example, and checked that the child tracking actually worked?

Sure, I don't don't want to merge untested code (did it via the good ol' println debugging).

Two renames (Id -> ViewId, Id -> WidgetId) would be welcome, though probably not in this PR.

Yeah agree, we should keep PRs small and focused.

we're basically tracking the same thing twice, if I understand correctly

No that's not necessarily the case. Views can e.g. have ids while having the same View::Element of its child view. xilem_web has this e.g. for events. Generally this is true for views that take events/messages, without extra widget implementation.


[stable/unifi] Invalid link in chart sources

What this PR does / why we need it:
There was a invalid link in sources, this commit fixes the link.
Checklist

[x] DCO signed
[x] Version bumped

Maintainers
@billimek
Signed-off-by: Jonathan Herlin<EMAIL_ADDRESS>

/lgtm

I think the bot that handles this is broken right now with the github outage - will need to wait to make any progress on this PR until GitHub is healthy again.

/ok-to-test

/retest

Yeah you need to bump the chart version with even a documentation change like this.  Just a bump to 0.1.11 should work.

I realised 😞
It's in https://github.com/helm/charts/pull/8639/commits/f8474df84e934d4966d4ac0e16c3c9b3866706b9 so it should pass the tests now unless I missed something else.

/lgtm

/lgtm


Issue with /docs/tutorials/stateless-application/expose-external-ip-address/

This is a...

[X] Feature Request
[ ] Bug Report

Problem:
type=LoadBalancer is only supported on some platforms.
A lot of people will try out Kubernetes on their own systems, like us. When trying to get traffic into the system, or using services from outside the cluster - pain.
Proposed Solution:
Create tutorial similar to the one I created this issue on, and make it about ingress controllers.
I will be happy to provide or write, since I think I got something running :-D
Page to Update:
http://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/
not really, since I want a new page expose-external-ip-using-ingress-controller - something like that

Outline idea
kubectl create -f 00-namespace
create deplyoment using

image: gcr.io/google_containers/nginx-ingress-controller:0.8.3

create default backend default-deployment.yaml and default-service using
image: gcr.io/google_containers/defaultbackend
then create Nginx service with ingress rules, and test using
curl node_ip -H 'host: my-nginx.domain.tld'

@kramshoej, This sounds like a good idea to me.
@pwittrock, What do you think?

Same here, I have a cluster up and running and backing from the SA and the network guys.  However, getting the loadbalancer working on bare metal without ANY external providers like GC or AWS is a real pain.  Wish it was described a lot better.  I can use the ingress IP all day but that of course won't help when the users call us because the IP on the ingress changes.  Asking them to wait while the network admin tech sets the IP in DNS would be ridiculous.  The best option at the moment is:  https://github.com/kubernetes/contrib/tree/master/service-loadbalancer, however documentation is very poor.

/remove-lifecycle stale


Showing the interface in the example code

Simple PR just to show the interface in one of the examples so that copy & pasting the contract will make the program compile & work

Yes, I was about to tell you, there are few more examples, I'll go through them!


removing inapropriate 32-bit specifications

CListBox::GetItemData()/SetItemData works also with 64bit values, which is tested at least in SDK 10.0.16299.0 in 64bit app.
So one can safely pass in a 64bit pointer.
Moreover functions' signatures actually imply this fact as _PTR-sized types are used.

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

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


Correctly looking for parent data, using .closest instead of parent()......

Fix buggy workaround to find the wanted parent data, fixed #1085 at least for me.
I'm really not sure if it's a good idea to have this selector ( .dropdown-menu ) hardcoded here because we didn't spend time with anything other than solving this bug on our specific application.
Please fix the selector if needed.
Thanks for the library.

Calling click on an option element inside a select doesn't update the model in bootstrap select
can u help me?

Calling click on an option element inside a select doesn't update the model in bootstrap select.
@silviomoreto

Is it relatted to this PR?
If not, @TamizhJayapal please open an issue regarding that.


[Bug]: Git connected apps in v1.9.27 or older versions containing datasources, shows uncommitted changes with all datasource modified

Is there an existing issue for this?

[X] I have searched the existing issues

Description
We have an app in automation which is created in v1.9.24, we are importing the app in latest version & observed that it is showing uncommitted changes for all the data sources although we didn't make any changes

Steps To Reproduce

Import any git connected app (created in 1.9.27 or older version) with datasource and queries on release.
Click on the commit button & it shows uncommitted changes in git sync modal with all datasources modified.

Public Sample App
No response
Environment
Release
Issue video log
No response
Version
Release

E.g commit: https://github.com/Parthvi12/testmigration101/commit/7ccdf8369e17250a6d786de0f6f7b24d90c90c30

Not treating it as blocker, refer here: https://theappsmith.slack.com/archives/CTHN8GX5Y/p1690373931042059

This one isn't a bug in itself, closing the issue for this reason. We'll create another issue for removing the messages field in datasources from persistence on version control.


ICoreWebView2EnvironmentOptions4::SetCustomSchemeRegistrations is wrong

ICoreWebView2EnvironmentOptions4::SetCustomSchemeRegistrations has the following (wrong) signature:
    pub unsafe fn SetCustomSchemeRegistrations(
        &self,
        count: u32,
    ) -> ::windows::core::Result<ICoreWebView2CustomSchemeRegistration>

The following signature is correct:
    pub unsafe fn SetCustomSchemeRegistrations(
        &self,
        count: u32,
        schemeregistrations: *mut ICoreWebView2CustomSchemeRegistration
    ) -> ::windows::core::Result<()>

This is the same for ICoreWebView2EnvironmentOptions4_Impl.

Yes, I noticed that too in #19. I am not sure if this can be fixed without a change to the WebView2 header to add out-param annotations to the method. For now, I worked around it by re-declaring the interface with the same GUID and correct signature using the windows-interface crate/macro, and that's the version of the interface I implemented.
I also added Rust APIs to these objects, so callers from Rust should not need to use the COM interfaces directly anymore. The re-declared interface is public, so they could use it, but they shouldn't need to.

Thanks!


The virtual cluster still exists after the Azure SQL Managed Instance management and subnet are fully removed

Per  the following details in this doc  (in our case , there is only one SQL Managed instance and one virtual clusters in one subnet), my understanding is that if the SQL  instance and subnet have been fully deleted, it means that the virtual cluster has also been fully removed, correct? If yes, in the automated test,  we encountered a situation where the instance and subnet were deleted but the virtual cluster still existed (90% repro rate) issue. Is that means the response is not waiting long enough for the virtual cluster to be removed? Looking forward to this issue being investigated and resolved quickly, thanks in advance.

@sinbai I had a discussion with the Product owners and they are requesting a Support ticket to be created with Microsoft Support to look into this further. Please open the support ticket and share the support ticket # here.

@sinbai I wanted to do quick follow-up to check if you had a chance to look at my above comment. Please let us know the support ticket # once you create it.. Awaiting your reply.

@navba-MSFT thanks for your assistance. I would create a ticket  when I am done with the high priority work at hand. And I would let you know once the ticket is created.

@sinbai Thanks for the update.

@sinbai I wanted to do quick follow-up to check if you had a chance to create the support ticket for this issue ? Awaiting your reply.

@sinbai The action is pending on you to create a support ticket. Please update the support ticket # in this thread once you get a chance. Our Microsoft support professional will reach out to you and troubleshoot this issue further.

@navba-MSFT thanks for following up on this issue. After further automated testing, I found out this is a resource.list-by-resource-group API  issue. The reason our test cases are failing is that the resourceClient.ListByResourceGroup API returns that virtualCluster still exists (does not actually exist). So I think the support ticket is unnecessary, thank you very much for your assistance.


Setup a Row component with nested Col components of equal height.

I have a Row component with two Col components. I want them to be the same height, i.e. I want the col with the smallest height to match the other col's height. How to do this in react strap, without reverting to css.
<Row>
      <Col sm={10}>
            <Button color="primary" >A </Button>
            <Button color="primary" >B</Button>
      </Col>
      <Col sm={2} />
</Row>

Cols in one row are always the same height. Your example does exactly what you describe. Why do you thing it doesn't work? Try adding border to cols and see what happens.

Ok then my question is different. In my real code I use cards inside the Cols. However they do not expand to the bottom of the Col. How to fix this?

I see. In that case don't use Row and Col but use CardGroup or CardDeck. Both will make cards in one group / deck same height. Only difference is that CardGroup will stack the cards next to each other and CardDeck will create a gutter between them.
<CardDeck>
    <Card>...</Card>
    <Card>...</Card>
</CardDeck>

You can set the card's dimensions using Bootstrap size utilities.

Thanks!


Handle Errors with Sponsor Threshold and New Offering

Entering:

Results in:

Is it okay to use numbers in the Stake Tokens symbol?

I think the intention here is that these are validated on each field before pushing submit

Looks like there is field level validation on many of these.
Issue I am still seeing an issue when entering a letter in Sponsore threshold and New offering

It's running the unit conversion modifier on non-number values.


Support for ServerSide Encryption Flag

For security purposes, use of the server side encryption flag would be very handy as another option to pass in.  Wasn't sure on preferred mode of injection, but seems like a simple change.
http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
[--sse ]
[--sse-c ]
[--sse-c-key ]
[--sse-kms-key-id ]
[--sse-c-copy-source ]
[--sse-c-copy-source-key ]

@dodgemich, I would like to see a PR for that.

I believe the S3_SYNC_FLAGS environment variable would be able to accomplish this (inline reference).


Plugin does not enable pullup/pulldown on GPIO pin.

It took me a little while to get this working on my Pi 4B and the issue turned out to be the plugin does not appear to enable the pullup (or pulldown depending on how the 'Sensor is connected to:' field is set) for the selected GPIO pin.  In the end I had to use a GPIO that happens to have a physical pullup resistor fitted.
Am I missing something here?
Thanks,
Chris

Did you find out when using the test button or when printing?

This was when using the test button.  I assumed the pullup/pulldown for the GPIO pin would be enabled and then left unchanged.

Could you please provide octoprint.log file?

Could you please provide octoprint.log file?

@cgarry : https://community.octoprint.org/t/where-can-i-find-octoprints-and-octopis-log-files/299

Closing due to inactivity.


add How-to-use-github lecture from computation thinking

Adding a link to to a lecture from our course:
https://computationalthinking.mit.edu/Spring21/how_to_collaborate_on_software/
The goal is:

what is git, why don’t we use Google Drive for software?
how to make a simple documentation PR to a julia package on github.com (on the website, without cloning)
how to use github (github desktop, so without the terminal)

I gave the lecture because I felt like the world is missing a “modern” guide to git that does not use a terminal, and that compares it to google drive. This should make it more accessible to students who only recently started using computers and programming.

Looks good, thanks for adding this :)


Persist gateway configurations

We need a way to persist Gateway configuration beyond restarts.
In particular, #714 proposes a way to register federations on a running gateway. The gateway needs to store any such registrations such that it can restart and resume service to previously registered Federations

I think the way to do this for now is to assume that the lightningd or LND HTLC interceptor CLI arguments include all this information.
For example, --fedimint-cfgs=<federation 1 config dir>,<federation 2 config dir> or --fedimint-cfg=<federation 1 config dir> --fedimint-cfg=<federation 2 config dir>.
Maybe in the future this could live in the database, but I would just keep it simple for now.

Why the separate config dirs instead of a base dir and sub directories for each federation? The name could be a counter or the hash of e.g. all the pub keys of the members.


Update geany.rb to actual version

Update Geany to version 1.26

Thank you for the contribution. It was merged directly as d337358d8066958d0f9e5ac286fdfb60025b1734 to keep commit history cleaner. Your contribution is still credited to you.


topaz cli remote

Enable topaz CLI to connect to remote topaz instance

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 26 (0.0%)  changed or added relevant lines in 5 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.1%) to 35.857%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/cli/cmd/backup.go
0
2
0.0%

pkg/cli/cmd/importer.go
0
2
0.0%

pkg/cli/cmd/load.go
0
2
0.0%

pkg/cli/cmd/restore.go
0
2
0.0%

pkg/cli/clients/directory_client.go
0
18
0.0%

Files with Coverage Reduction
New Missed Lines
%

pkg/cli/clients/directory_client.go
1
0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.1%

Covered Lines:
1042

Relevant Lines:
2906

💛  - Coveralls


Can the server push the result to web ui using websocket rather than frequently request from frontend

What would you like to be added:
push the result to web ui using websocket
Why is this needed:
frontend need not frequently request data from server and the information update/refresh in time
Without this feature, how does current nni work：
current nni  request data from server frequently even the data not updated
Components that may involve changes:
server and frontend
Brief description of your proposal if any:
server and frontend add websocket pub/sub

By default NNI web UI only raises two requests per 10 seconds. So I think HTTP protocol overhead is not the bottleneck.
I do agree that incremental loading can potentially improve the performance, but it may need some huge refactor and is therefore unlikely to happen in near releases.

What would you like to be added:
push the result to web ui using websocket
Why is this needed:
frontend need not frequently request data from server and the information update/refresh in time
Without this feature, how does current nni work：
current nni request data from server frequently even the data not updated
Components that may involve changes:
server and frontend
Brief description of your proposal if any:
server and frontend add websocket pub/sub

Would you like to con

By default NNI web UI only raises two requests per 10 seconds. So I think HTTP protocol overhead is not the bottleneck.
I do agree that incremental loading can potentially improve the performance, but it may need some huge refactor and is therefore unlikely to happen in near releases.

@joshua-xia would you like to submit PR and contribute to this change?


fix: support more types for JSON serialization

Fixes https://github.com/langfuse/langfuse/issues/948
For my case, it was a dataclass which I was returning as a chain output, and python default JSON serializer does not support dataclasses dumping.. See StackOverflow Thread.
So, I have fixed that as per answer in the thread.
But, there are many more cases where it might fail later also.. So, I checked how LangSmith folks have done.. Here is the source.. Maybe we can take some more inspirations from there, and make the serializer more robust here...

@SinghCoder thanks a lot for the contribution. I will test this and get this live as soon as possible.


DuplicateDLLError in jupyter notebook

Describe the bug
If the first run of dace program fails in jupyter notebook, the second run will complain that the shared library is already loaded.
To Reproduce
Steps to reproduce the behavior (see screenshot):

In cell 3 make some mistake: for example, forget arguments K and M
Try to execute cell 4

Expected behavior
Cell 4 should be executed without any problems.
Screenshots

Probably related: #10

Fixed


Run pywhatkit in background

Is there a way to send messages without invoking the whatsapp front end? I want my messages to be scheduled and sent to a particular group in the background,

Hey @BismeetSingh.  This library automates the GUI to send messages which is not possible without opening the Web App. There are several other libraries which use selenium to automate it in a headless way.

Okay, I got it to work using https://whatsmate.github.io/


Genome annotation with Maker

Hi all,
Finally opening a pull request with a first draft of tutorial for genome annotation with Maker.
The skeleton was generated with planemo training_init from the workflow. And it worked quite well, except a few details (I'll tell you which ones @bebatut)
There is still a lot to do, but it's better here than on my hdd

Nice!!!

Let me know when it's ready and I'll review it @abretaud :)

Ok I think it's finally ready for a first review, all comments are welcome!
ping @erasche @bebatut @whoeverwantstohavealook

Je t'en prie, c'est avec plaisir !

Its wonderful @abretaud! See you in November!


about augmentation

I find a error in your code of data augmentation.

As is shown in the picture,when you use the self._flip, you didn't get the return value, so the data augmentation is valid.
By comparing the images before and after data augmentation, it is found that the same number of voxels is always equal to the total number of elements. When the code is item=self._flip(item, prob) , the image before and after the data augmentation changes.
Does this mean that all the experiments in your paper, including your own, were the result of no data augmentation?

Hi, you are right, thanks for pointing out this bug. All the results could be further improved with this bug fixed. Sorry for the negligence.

Hi, you are right, thanks for pointing out this bug. All the results could be further improved with this bug fixed. Sorry for the negligence.
It's incomprehensible when I completely removed the previous faulty data augmentation code, the effect dropped a bit. When I corrected the code, the effect dropped dramatically.

Hi, you are right, thanks for pointing out this bug. All the results could be further improved with this bug fixed. Sorry for the negligence.
It's incomprehensible when I completely removed the previous faulty data augmentation code, the effect dropped a bit. When I corrected the code, the effect dropped dramatically.

When only use np.flip(image,dim=2),the model performance decreased significantly. When only use no.flip(image,dim=1),the model performance increased. When only use np.flip(image,dim=2), but don't get the return value, the model performance also increased. I don't understand why this happens.

Hi, thanks for the updating. Actually, the role of augmentation may not be that significant. The differences in the results could be primarily attributed to the unstable training process caused by the limited amount of data.  It is worth noting that even when applying the same augmentations, the results still have large std (Real LR Fake UD).


feat: LEAP-1351: LSF customization for bulk annotation

This PR adds

"bulk:annotation" interface that allows to hide all panels and elements that can't be set equally to group of annotaions
ability to customize control buttons
fix the way we deliver config in cypress tests

PR fulfills these requirements

[x] Commit message(s) and PR title follows the format [fix|feat|ci|chore|doc]: TICKET-ID: Short description of change made ex. fix: DEV-XXXX: Removed inconsistent code usage causing intermittent errors
[x] Tests for the changes have been added/updated (for bug fixes/features)
[ ] Docs have been added/updated (for bug fixes/features)
[x] Best efforts were made to ensure docs/code are concise and coherent (checked for spelling/grammatical errors, commented out code, debug logs etc.)
[x] Self-reviewed and ran all changes on a local instance (for bug fixes/features)

Change has impacts in these area(s)

[ ] Product design
[ ] Backend (Database)
[ ] Backend (API)
[x] Frontend

What feature flags were used to cover this change?
fflag_feat_all_leap_1181_bulk_annotation_short
Does this PR introduce a breaking change?

[ ] Yes, and covered entirely by feature flag(s)
[ ] Yes, and covered partially by feature flag(s)
[x] No
[ ] Not sure (briefly explain the situation below)

What level of testing was included in the change?
(check all that apply)

[ ] e2e
[x] integration
[ ] unit

Which logical domain(s) does this change affect?
Editor, BottomBar

Would not it be better to name interface "annotation:bulk"? That will keep it in a shape of namespace:detail like for lot of other interfaces. I know they are a mess but that's a really lowcost change on an early stage with small benefit

/git merge develop

/git merge develop

/git merge develop

/git merge develop

/git merge develop

/git merge develop


Set kops version in only one place

Description of changes:

Changed kops version to be set in only one place

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve


Please add Katonic.ai.

Hey @premnaraindas ,
You're welcome to add it yourself. If you're having any issues you can contact me directly.
Here's an example of such PRs: #1 , #17

Hey @SnirShechter .
https://github.com/aporia-ai/mlops.toys/pull/21
This is PR regarding this issue. Awaiting for your response.
Thanks.

Closed because issue author is inactive.


connect() returns an object

I'm using these libraries:
react: 16.8.6
redux: 4.0.1
react-redux: 7.0.3

I have a simple component (Typescript):
class ExampleComponent extends React.PureComponent<IProps, {}> {
    constructor(props: any) {
        super(props);
    }

    public render() {
        return (

                {this.props.name}

        );
    }
}

interface IProps{
    name: string;
}

const mapStateToProps = (state) => {
    return {
        name: state.name
    };
}

export default connect(mapStateToProps)(ExampleComponent);

And I have a parent component:
import ExampleComponent from './ExampleComponent';

export default class App extends React.PureComponent<{}, {}> {
    constructor(props: any) {
        super(props);
    }

    public render() {
        return (

                <ExampleComponent />

        );
    }
}

For some reason the connect(mapStateToProps)(ExampleComponent) returns an object instead of React component.
I am getting an error:

Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object

Also when I trying to do console.info(typeof connect(mapStateToProps)(ExampleComponent)) it prints object to the console.
How can I solve this issue?

Yes, as of React-Redux v7, connect() uses React.memo(), which actually returns a special object as a component type rather than a function.
Also, please make sure that you don't have duplicate copies of React in your tree, and that React truly is on React 16.8.x.

Thanks for the rapid assistance!
How can confirm that?

Should be, yes.
If you can create a sample project that reproduces the issue (preferably as a CodeSandbox), I can maybe take a quick look.

Thanks to CodeSandbox I found that the problem is with react-dom library. It was set to 16.4.xx by mistake so it didn't know how to handle those objects. Upgrading to 16.8.xx solved the problem.
Thanks!

@markerikson is there any way to turn it off? I use the old react-router and it warns "Invalid prop component supplied to Route.".

@finom : no.  connect() in React-Redux v7 uses React.memo(), and that's not changing.  In addition, any code that assumes components are only functions has been wrong since React 16.6 came out.
If you're using an older version of React-Router, you need to either upgrade the router version, or stick with an older version of React-Redux.

Yes. I found this today. And it is a pretty big issue unfortunately. withStyles() from material-ui also uses this memo, breaking some of my code. Upgrading react-router is the way to go.

Hello guys, I've found a solution to make it work with the old react-router and I suppose this should also work other outdated libraries. The solution is just to wrap the returned memorized component with a stateless component which isn't enhanced by memo:
const NonMemorizedNotFoundErrorPage = props => <NotFoundErrorPage {...props} />;
...
<Route path="/*" component={NonMemorizedNotFoundErrorPage} />


skeleton mage projectiles pass through certain objects

Describe the bug
Skeleton mage projectiles pass through certain objects/structures, producing errors.
To Reproduce (if applicable)
I've had this happen with mages in dungeons, but it is most easily reproduced at fuling villages.  spawn some mages, go to a village, and they will be unable to hit fulings up in towers.
Expected behavior (if applicable)
in this case, explosions are desireable
Screenshots (if applicable)
video of the bug in action:  https://youtu.be/TbruH68egXk
pastebin of errors being thrown as this happens: https://pastebin.com/raw/QYnF68KT
the errors are flying past a mile a minute, seemingly with every attack made by the skeletons; this is just one out of hundreds from the log.
Desktop

OS: Windows 10
Mod version:  2.5.8
Game version:  0.214.2

Thanks for the detailed report with video & log. Yeah the reason why the projectiles aren't working properly is the error in the log.
Are you running other mods?

Ahh, ok I figured it out. So, I have code that checks structures for a Piece script that attempts to determine whether a structure was placed by the player or not. If it is placed by the player, then the damage is cancelled out so that minions don't demolish your base.
However, these basic NPC structures like fuling bases (and probably stuff in the dungeons) don't have a Piece script at all - something I failed to consider - and so it tries to check something that's not there and you get the error, which throws a spanner in the works and derails the whole train.
Thank you, it will be fixed in the next version.

@subsanity I fixed that and more in version 2.5.9. You can test it here, if you want. In any case, it fixes some of the issues you recently reported so you'll have a nicer playthrough on this verison.
Thanks again for all the bug reports and your time testing. I will also test it on my own and see how I go before I release