F# projects don't show Target Framework after upgrading to 15.8.0

After upgrading to 15.8.0 today, none of my F# projects show any available options under Target Framework in the project properties. The value still exits (4.6.1) in the actual project file when viewed in a text editor.
This issue has been moved from https://developercommunity.visualstudio.com/content/problem/311065/f-projects-dont-show-target-framework-after-upgrad.html
VSTS ticketId: 664115
These are the original issue comments:
(no comments)
These are the original issue solutions:
(no solutions)

cc @KevinRansom @brettfo any ideas?
Note that the same issue is mentioned in #5504 but is unrelated to the main problem there.

Bug:  note Target Framework Dropdown.

Fixed:

Fixed by #5516

Just updated to VS 15.8.7 today and it's still not working:

Is it related to referencing F# 3? Not sure it helps, but did you try delete the .vs folder?
Though either way, @cartermp I think this should be reopened. And considering it is a recurring bug, could we protect a fix with a unit test?

The fix for this issue is not available in any 15.8.x release. It's not related to targeting F# 3.0 and it's not a recurring bug.

@abelbraaksma , @nesteruk : this is a bug in Dev 15.8
the fix is in master here:https://github.com/Microsoft/visualfsharp/pull/5516
We are seeing if it makes the bar for dev 15.9.  Although the bar for that is now super high.

Oh tx, I thought since the fix was two months ago, it already made it into the latest release.
I hope it can still be included, this omission can be particularly puzzling for beginners. Others might just open the fsproj file and add it by hand, though it'll raise a lot of eyebrows either way.

What do I need to change in the FSPROJ file to get it working today?
On Thu, 18 Oct 2018 at 09:44, Dmitri Nesteruk<EMAIL_ADDRESS>wrote:

On Wed, 17 Oct 2018 at 20:15, Abel Braaksma<EMAIL_ADDRESS>wrote:

Oh tx, I thought since the fix was two months ago, it already made it
into the latest release.
I hope it can still be included, this omission can be particularly
puzzling for beginners. Others might just open the fsproj file and add it
by hand, though it'll raise a lot of eyebrows either way.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/visualfsharp/issues/5514#issuecomment-430712889,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAcoNuFmxHScCqBU4v-EIBOJFcJ0Ci9aks5ul2W8gaJpZM4V-T5G
.

--
Dmitri Nesteruk
<EMAIL_ADDRESS>skype: dmitri.nesteruk

--
Dmitri Nesteruk
<EMAIL_ADDRESS>skype: dmitri.nesteruk

@nesteruk,
to change the target framework, although I'm not really sure why you would want to do that unless you need some specific apis, you will need to manually edit the project file.
So:
Using your preferred text editor, open the project file,
Locate the line with:
v4.6.1
and change the numbers to the framework you need to target:
v4.6.1
v4.6.2
v4.7.0
v4.7.1
v4.7.2
If you use visual studio, when you open the file use 'open with' and Source Code (Text).
Save the file and then load the project file into vs.
Kevin

The fix was approved, so barring a disaster, it should appear in Dev15.9

@KevinRansom thanks, this compiles. interestingly enough, I get the following warning:
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2110,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "FSharp.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

Here's what I have in the FSPROJ, not sure what went wrong here
<Reference Include="FSharp.Core">
      <HintPath>..\..\packages\FSharp.Core.4.5.2\lib\net45\FSharp.Core.dll</HintPath>
    </Reference>
    <Reference Include="FSharp.Core, Version=$(TargetFSharpCoreVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <Private>True</Private>
    </Reference>


streamlined install plus develop and build pages

Description (required)
Attempts to make a sleeker "getting started" path!
Notably:

trims down the current "install and setup" page to just installation instructions
combines installation instructions for examples/templates in basic CLI wizard instructions
takes the content that was cut to form a "develop and build" page for those who want more guidance on e.g. starting the dev server, building and previewing

For review:

the PackageManagerTabs now show multiple commands, so I've separated out the basic one (for copy paste reasons) from the others that can't be used copy paste anyway. Are we cool with this?

I believe Erika is adding an --add flag for the command to run astro add with integrations upon project creation. Will happily add this to the blocks too!

did not rename install-and-setup.mdx and therefore no redirect at this time. But we could rename to e.g. installation.mdx and therefore would need a redirect.

Note:

did NOT add a nav.ts entry because I expect the new sidebar to be merged before this PR, so we won't need it! Will update sidebar entries after merging.

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

File
Note

en/develop-and-build.mdx
Localization added, will be marked as complete.

en/install-and-setup.mdx
Source changed, localizations will be marked as outdated.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


Certain files are not downloaded in certain Cocoapods.

Describe the bug
It appears that certain Cocoapods and configurations that work on Intel Macs do not pod update on M1 Macs. In both cases, a single file in a specific Cocoapod is not able to be downloaded which prevents the project from compiling. In this case "libxlsxwriter" will not download metadata.h/.m using the 1.1.1 version, but will if dropped to 1.0.9. Additionally if that works,  then GoogleAPIClientForREST/Drive will not download GTLRQuery.h
Podfile
require 'cocoapods-catalyst-support'

# Uncomment the next line to define a global platform for your project
platform :ios, '14.0'

abstract_target 'All' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for OnSong
	pod 'GoogleAPIClientForREST/Drive' #, '~> 1.2.1'
	pod 'MZFormSheetPresentationController'
	pod 'FMDB'
	pod 'NMSSH'
	pod 'GoogleSignIn'
	pod 'MHWDirectoryWatcher'
	pod 'libxlsxwriter'
	pod 'GTMNSStringHTMLAdditions'
	pod 'Purchases' #, '= 3.7.1'
	pod 'XMLDictionary'
	pod 'AirTurnInterface'
	pod 'GCDWebServer'
	pod 'GCDWebServer/WebDAV'
	pod 'MMDrawerController', '~> 0.5.7'
	#pod 'google-cast-sdk'

	target 'OnSong' do
	end

	target 'OnSong Pro' do
	end

	target 'OnSong 2021' do
	end

	target 'OnSong 2021 Beta' do
	end
end

# Configure your macCatalyst dependencies
catalyst_configuration do
	# Uncomment the next line for a verbose output
	verbose!
	ios 'GoogleSignIn' #, '4.0.1'
	ios 'NMSSH'

	# ios '<pod_name>' # This dependency will only be available for iOS
	# macos '<pod_name>' # This dependency will only be available for macOS
end

post_install do |installer|
	installer.configure_catalyst
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '14.0'
        end
    end
end

Environment

cocoapods-catalyst-support => 0.1.3
Ruby version [e.g 2.6.0] => ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]
Cocoapods version [e.g 1.10.0] => 1.10.1
Xcode version [e.g 12.2] => Build version 13A5192j

Additional context
Add any other context about the problem here.

This sounds as an issue on their end, especially libxlsxwriter. If those pods aren't affected by the script I don't see why they'd fail.
I can't reproduce it so I'll close


timeout error followed by unexpected arrival of callback

Realtick exchanges observed where callback timeout occurs followed immediately by unexpected callback data arrival.   Determine cause / correct handling of condition

fixing under downstream project issue


Added minified file to repo through grunt.

This should resolve #3

Thanks!

new version in npm is also available.


About page doesn't work

https://openexchange.intersystems.com/#!/markdown?url=assets/doc/newapp.md

Accessible from https://openexchange.intersystems.com/about

Done


Error presenting challenge - Forbidden

Hi,
I'm getting this error on the Challenge object
Error presenting challenge: hetzner.acme.example.com is forbidden: User "system:serviceaccount:cert-manager:cert-manager" cannot create resource "hetzner" in API group "acme.example.com" at the cluster scope

Am I missing something about permissions?
The configuration is this below:
apiVersion: v1
kind: Secret
metadata:
  name: hetzner-secret-app
type: Opaque
data:
  api-key: XXXXXXXBASE64XXXXX=
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging-app
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email<EMAIL_ADDRESS>    privateKeySecretRef:
      name: letsencrypt-staging-app
    solvers:
      - dns01:
          webhook:
            groupName: acme.example.com
            solverName: hetzner
            config:
              secretName: hetzner-secret-app
              zoneName: example.com.
              apiUrl: https://dns.hetzner.com/api/v1
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: cert-staging
  namespace: cert-manager
spec:
  commonName: example.com
  dnsNames:
    - example.com
  issuerRef:
    name: letsencrypt-staging-app
    kind: ClusterIssuer
  secretName: cert-staging

Hi @fmendez89
You can not use example.com, you need to use a real domain record.

I'm using my current domain, that was just for masquing the real one.
Probably I will try again because I solved a problem I had with the CNI.

same issue here:
  Warning  PresentError  15s (x3 over 20s)  cert-manager-challenges  Error presenting challenge: unable to get secret `cert-manager`; unable to get secret `dns-config/cert-manager`; secrets "dns-config" is forbidden: User "system:serviceaccount:cert-manager:cert-manager-cert-manager-webhook-hetzner" cannot get resource "secrets" in API group "" in the namespace "cert-manager"

can-i test:
$ kubectl auth can-i get secrets --as=system:serviceaccount:cert-manager:cert-manager-cer
t-manager-webhook-hetzner
no

Could there something be wrong with the template rendering?
Are you open for a PR? Then i would investigate more.


Consistent Spark version for test and production

Signed-off-by: Gera Shegalov<EMAIL_ADDRESS>Currently spark version for production and test code are set twice allowing the values to potentially diverge. Some definitions occur more than twice.
This PR ensures a single source of truth for setting Spark versions. It's factored out of the two PR's #1744 #1704 taking more time

build


ci: add OpenAI PR Reviewer

Adds https://github.com/coderabbitai/openai-pr-reviewer as an experiment.

Summary by OpenAI
New Feature: Added GitHub Action workflow for pull request review using an external action. The workflow is triggered on pull request creation and review comment creation events, runs on Ubuntu latest, and requires read access to the repository contents and write access to pull requests. Secrets are used for authentication and certain features can be enabled/disabled.

"A new workflow has arrived,
To review pull requests with pride.
With secrets and options galore,
It'll catch bugs and so much more."

@openai ignore
How meta of you to review the PR where I've added you.


Duplicated ':hover' in some rules of dropdown

Fix duplication of ':hover' selector on some rules of dropdown due to a repetition of a parent selector.
It results in '... li.submenu:hover:hover ...'

And thx again :)


No opencl? So grateful of nvidia crossplatform CUDA

Please see #275 for another comment about OpenCL.. It is not supported right now. I hope this answers your question.


Population of Layers after layer creation

In the example above, the layer is populated with:
var MyElements = new List<MapElement>();
If you add more elements to this collection they are ignored by the layer. To add or remove elements after layer creation replace List<MapElement>() with
IList<MapElement> MyElements = new ObservableCollection<MapElement>();

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

ID: a64118ca-f5a1-1172-8eb4-85938f2a8bed
Version Independent ID: 105d3b3d-2e83-cae9-6977-0fe28925b03c
Content: Display points of interest (POI) on a map - Windows UWP applications
Content Source: windows-apps-src/maps-and-location/display-poi.md
Product: uwp
GitHub Login: @hickeys
Microsoft Alias: hickeys

The list of landmarks in this example is static, so the use of a simple List is correct. Your observation that for dynamic updates, an ObservableCollection is appropriate. This is also demonstrated in the example for the LandmarkLayer collection, which is an ObservableCollection object.


[$500] Login – Login mode is broken when open public room as anon user, start sign in and reload page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.50-2
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4412979
Issue reported by: Applause - Internal Team
Action Performed:

Go to https://staging.new.expensify.com/
Log out
Navigate via link as public room anon user (room link https://staging.new.expensify.com/r/8661824749067368
)
Click on Signin
Enter an email and Continue
Reload page some times

Expected Result:
Login page refreshes/loads normally
Actual Result:
Login page doesn't fully load and is broken

Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/c13ca964-7b71-4abe-a65f-f018b5f2ea7b
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01a1d4033f00182021
Upwork Job ID:<PHONE_NUMBER>828492288
Last Price Increase: 2024-03-19
Automatic offers:

situchan | Reviewer | 0
tienifr | Contributor | 0

@Christinadobrzyn  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

I believe this can be external - we'll have an engineer check and I think this can be part of wave-collect (to alleviate all of the BZ GHs in vip-vsb).

Title: Visual Breakage of Login Modal Upon Multiple Reloads
Issue Summary:
Our React application features a login modal that breaks visually when reloaded multiple times.
Steps to Reproduce:
Navigate to the login page.
Reload the login page modal multiple times.
Observe the visual glitches or breakage in the modal's appearance.
Expected Behavior:
The login modal should maintain its visual integrity and functionality regardless of the number of reloads.
Actual Behavior:
Upon multiple reloads, the login page modal exhibits visual glitches or breakage, rendering it unusable.
Proposed Solution:

Conduct a thorough code review to identify any potential issues or patterns related to

[ ] State management,
[ ] Component lifecycle methods,
[ ] CSS styling,
[ ] event handling,
[ ] memory leaks,
[ ] third-party library integration.

Implement fixes or optimizations as needed to address the root cause of the visual breakage in the login modal.
Test the proposed solution rigorously across different browsers and environments to ensure its effectiveness and compatibility.
Document the changes made and update relevant documentation or comments in the codebase for future reference.

Additional Information:

We have observed this issue consistently across different browsers and environments, indicating that it is not specific to a particular setup.
We have observed the number of reloads before breakage is variable.
We have observed the breakage doesn't occur on mobile screens.

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~016d739b03ec228c37

Proposal
Please re-state the problem that we are trying to solve in this issue.
Login – Login mode is broken when open public room as anon user, start sign in and reload page
What is the root cause of that problem?
The izIModal will be incorrect every time this code is run before the navigation is ready.  And for this reason shouldUseNarrowLayout will sometimes be incorrect which causes the UI to break.
What changes do you think we should make in order to solve the problem?

Add new function in Navigation.ts which receive current route name and check if this name exists in here or here

function isInModal (routeName: string){
    function findRoute(obj, keyToCheck: string) {
        if (obj && typeof obj === 'object') {
            if (keyToCheck in obj) {
                return true;
            }

            for (const prop in obj) {
                if (obj.hasOwnProperty(prop) && findRoute(obj[prop], keyToCheck)) {
                    return true;
                }
            }
        }

        return false;
    }

    const isInLeftModal = findRoute(config?.screens[NAVIGATORS.LEFT_MODAL_NAVIGATOR], routeName)
    const isInRightModal = findRoute(config?.screens[NAVIGATORS.RIGHT_MODAL_NAVIGATOR], routeName)

    return isInLeftModal || isInRightModal
}

Replace these lines with the code below.

const routeName = useRoute().name
const isInModal = Navigation.isInModal(routeName)

What alternative solutions did you explore? (Optional)

and I think this can be part of wave-collect (to alleviate all of the BZ GHs in vip-vsb).

@Christinadobrzyn public rooms isn't a focus of #wave-collect, so please add this one to vip-vsb!

Ah thanks for the review @trjExpensify  - moved to vip-vsb.
@situchan we have some proposals if you have a chance to review!

Reviewing proposals

Not overdue

Thanks @situchan!

Let us know if any of the proposals look good @situchan!

@tienifr @shahinyan11 thanks for the proposals.
The root cause is correct.
While both proposed working solution, I prefer @tienifr's proposal (main solution) since it fixes the root cause.
🎀 👀 🎀 C+ reviewed

I am also open to thoughts from navigation experts.
cc: @adamgrzybowski

@situchan @tienifr's proposal makes sense to me

Waiting on @tienifr's PR

Awesome! Thank you @tienifr! cc @situchan https://github.com/Expensify/App/issues/38059#issuecomment-2018303942

Payouts due:

[ ] Contributor: $500 @tienifr (Upwork offer here - https://www.upwork.com/nx/wm/workroom/36752604/overview)
[ ] Contributor+: $X @situchan (Upwork offer here - https://www.upwork.com/nx/wm/workroom/36830224/overview)

Upwork job is here
@tienifr / @situchan Do we need a regression test?

nudged @tienifr in slack about the regression test

Sorry the regression test needs to come from @situchan since they are the C+. Reaching out to them! Sorry @tienifr!

waiting on a regression test - gonna move this to weekly since @situchan is ooo at the moment.

holding for @situchan

DMs @situchan to see if they are back.

I'm just going to create a regression test based on the steps in the PR so we can close this.
regression test -https://github.com/Expensify/Expensify/issues/394191
Closing!


Setup slack alerts in my workspace to trigger playbook execution

I want to run my playbooks as an action to a slack alert (which I can select based on the channel and alert source) and get the investigation steps output as a reply to that alert

We have added workflow entry points which can be slack alerts or api calls for workflow executions.


Allow write to accept file-like objects and HDF5 File or Group

I'd like to store the created files a bit more dynamically than just in a file on the filesystem, to enable various use cases, and because it is conventional in Python, can the write function also accept file-like objects (anything with a write function) to write the morphology to?
Additionally, when storing HDF5, can we pass the handle to a h5py.File or h5py.Group so that we may store morphologies inside the hierarchy of existing HDF5 files.

Both ideas are interesting; the python side of the library is largely exposing the C++ code, so it's not trivial to add the glue that would allow this functionality.  However, we will look into it to see what is required.
Thanks for the suggestions.

@mgeplf any progress on this? I'd really like to leverage MorphIO in a framework we're developing. We take morphologies from several sources, including straight from NeuroMorpho and other online databases, and having to buffer everything in a temporary file on disk is something I'd like to avoid :)

We're using BlueBrain/HighFive to wrap access to the HDF5 files. To be able to pass groups into writing (and reading), we would have to first see about how h5py and HighFive can interface best without creating any potential memory issues. We will discuss this more internally.
(FWIW, what you are describing sounds similar to some of our envisioned morphology storage concepts)

Wow, this fell off the radar; sorry about that.
I remember looking it at a bit, and h5py exposes an id, but I wasn't sure if it was the hdf5 id.  It was mainly the glue from h5py that would be a challenge, but I'm forgetting why.

FWIW, what you are describing sounds similar to some of our envisioned morphology storage concepts

Is a good point; if you can, @Helveg, can you describe what you're envisining?  Perhaps some special API can be added instead of generic h5py handling.

I see that my original request was for the write function, but also the Morphology constructor strictly takes a file path, in both the read and write cases I'd already have the file contents, but they're not supposed to go to, or come from, the filesystem.
In Python it is conventional for I/O functions to check 2 things:

Can this thing I've been handed be resolved to a filesystem path? (Using os.fspath, so that things like strings and Paths from pathlib can all be handled)
Is this thing that I've been handed a file-like object? This is usually checked merely by the presence of a .read and/or .write attribute. (Python likes duck-typing)
Additionally, since you're using h5py, which is a hierarchical data format, it's also needlessly restrictive that I can only hand it the path, and thereby implicitly only being able to point to the root of the hierarchy, and not put it / read it from an existing hierarchy.

I'm not sure if I'm in a great position to recommend any particular design solutions or APIs for this, being so unfamiliar with your code :)

I looked into it more, and with some quick hacking around, I'm not sure it's possible.
On linux, it seems that h5py bundles their own hdf5 libraries, and they are loaded into the process separately from the hdf5 libraries that morphio uses:
Mapped address spaces:

          Start Addr           End Addr       Size     Offset objfile
[snip]
      0x7fffd81a1000     0x7fffd81a7000     0x6000   0x374000 /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.103.0.0
[snip]
      0x7ffff6ed1000     0x7ffff6ef1000    0x20000        0x0 /home/gevaert/src/MorphIO/build/venv/lib/python3.8/site-packages/h5py.libs/libhdf5_hl-eb6dc72f.so.200.0.0

Since the way that hdf5 manages resource access is through handles, and each of these instances is managing its own resources, one can't just pass the handle that's used by h5py to the libhdf5 used by morphio.
The next best thing that I can think of is to be able to pass both a path to an h5file and a path to a group within it, when reading or writing morphologies:
m = Morphology.from_h5(path to h5, path within h5)
# and
Morphology.write_h5(path to h5, path within h5)

But I'm a little reluctant to go down this road, mainly because how h5 handles file locking.
@Helveg would that API work for you?  I'd have to ponder adding it, some more.

Yea, those would solve the HDF5 related read/writes!
What about Python's file-like objects? I think I have a proposal there: In the C++ library, factor out the file reading code from the content processing code, with the current implementation remaining backwards compatible. The Python bindings can then contain a bit of glue to determine the file path (using os.fspath), and call the outermost file reading function with the string file path; or should os.fspath yield a TypeError, you use the .read/.write attribute to obtain the content, and call the inner newly factored out content processing function :)

Yea, those would solve the HDF5 related read/writes!

Ok, I will consider that, and we'll have to see when we can find time to add it.

The Python bindings can then contain a bit of glue to determine the file path (using os.fspath), [...]

I don't think it's as simple as that; for instance; not all python file like objects have paths, and presumably one of the reason that one would want to be able to use a file like object would be to control the position within the file that one reads/writes too (ie: seek()).
The text based parsers already accept content, so factoring things out shouldn't be a problem
https://github.com/BlueBrain/MorphIO/blob/d4931369266bc24c5f283c7d04d779d02e3ae4a7/src/morphology.cpp#L77

I don't think it's as simple as that; for instance; not all python file like objects have paths

This would pertain strictly to the user inputting paths: not just strings are PathLike in Python; being a duck typed language where the implementation is often the specification, anything that doesn't TypeError when you call os.fspath on it, is a valid path. So anything that can be fspath'ed should be considered to be a path, and anything that does not, should be tried as a file-like object. Using .read and .write would already respect the fpos/seek position.

It's possible that we can disambiguate the ctor based on whether an extension is passed, as well as if there is a .read() or .write() method.  This all happens on the c++ side, so it's a bit cumbersome to manage, but I will give it a shot.

If two distinct HDF5 libraries are being used, I'm not sure what happens in code such as:
# create_morphlogies.py
import morphio
import h5py

with h5py.File(filename, "w") as h5:
    group_path = "some/thing"
    h5.create_group(group_path)

    morphology = load_morphology()
    morphology.write_h5(filename, group_path)

Are we guaranteed that the group is created and visible before reopening the file/group from the C++ HDF5 library? Metadata is often aggregated an written in bulk, e.g. when closing the file. If we anyway need to make sure that we're using the same HDF5 library, then it might be nicer to accept h5py.File and h5py.Group via bindings we need to implement in HighFive.

We appear to be having 2 discussions in parallel:

handling h5py file handles with MorphIO

@1uc > Are we guaranteed that the group is created and visible before reopening the file/group from the C++ HDF5 library?
Good point; I'm starting to shy away from wanting to pass around potentially live h5 objects in the interface, especially because of the split hdf5 library, but not only for that reason: it opens up a can of worms with file locking, flushing, etc, etc, and I don't think we have enough control to do it reliably on the C++ side since python's refcounted objects may or may not be closed at any particular point.
Perhaps the more fruitful information will be born from the discussions @matz-e mentioned.

Handling file-like objects for the text-like formats (SWC, ASC):
@Helveg > while anything that does not, should be file-like object and should be .read or .write. Using .read and .write would already respect the fpos/seek position.

For the case that one wants to pass a descriptor in, that has a name (ie: os.fspath works), I don't think we need to change the API for that; the user can themselves call os.fpath and use the objects as per normal.
I played w/ a way of handling .read and .write, and I'm not sure how well it would work:  For the .read case, we already allow loading ascii-like files with Morphology(contents, extension='swc'), so reading works.  With a file-like object, one can't signal what the end of the contents that needs to be read is: ie: if you're putting multiple ascii-like morphs in a file, the parser would just read past one into the next.
For the write side, I think we could add a .to_string("extenstion") function, which would allow one to: fd.write(morph.to_string("asc"), which would allow one to manipulate non-filesystem based morphologies.  What do you think?


What is the difference between baseline and baseline_modelfree?

Hi, I have a question about your directory structure.
What is the difference between baseline and baseline_modelfree?
I think that they look the same.
Would you teach me the difference?

Hi! I'sorry to replay you so late.
The difference between the two is whether the renderer can conduct gradients. In other words, the model-free version requires the critic to model this painting task according to reward.


ival computation error on 32bit systems

In this line https://github.com/vivkin/gason/blob/master/src/gason.h#L33
on 32 bit systems If payload's highest bit is set eg ( 0x8015b678 ) then (uint64_t)payload == 0xffffffff8015b678 so the payload bits overwrites the tags and nan_mask.
masking the result of ((uint64_t)payload) solves the issue.
ival = JSON_VALUE_NAN_MASK | ((uint64_t)tag << JSON_VALUE_TAG_SHIFT) | (((uint64_t)payload)&JSON_VALUE_PAYLOAD_MASK)
I tested this on win32 and android (32bit).

https://github.com/vivkin/gason/commit/23a1ebd37266dd8aa12d3bb920b0b7c75418defc casting payload to uintptr_t fix the issue, without additional operations.

thanks for the fix


Detect conflict on update to reject the later post

When using lokka in a group like a wiki, conflicting can be a big damage.
Detect conflict by comparing the post's updated_at in DB and sent param's one.

omg! Thanks.


Remove unused flag for stats collection

The log_stats_frequency_seconds flag was defined in all 3 servers and I can't see any references to it elsewhere.

LGTM

That was quick work!

It was a small, distinct PR. :smiley:

Let it finish on Travis first, of course, that should tell us if there was some obscure reference to it (but I expect it'll be fine).


Component/Directive for v-if="now < start_at"

I made an issue in this repo, but the author might consider it outside the scope of the library: https://github.com/brockpetrie/vue-moment/issues/24 I'm not requesting "technically how to do it", I'm requesting a clean interface for it.

It would be awesome if we had something for this, except at the moment of inflection (when moment().isBefore(otherTime)'s status changes from true to false) Vue is able to detect it as a change and react accordingly.
Here is a similar discussion, but did not provide a clean API for accomplishing this. https://github.com/vuejs/Discussion/issues/214
Another possible implementation:

 otherTime" v-recalculate-at="otherTime">

where v-reset-now-at="otherTime" might translate to:
resetNowAtDirective:function(){
    this.now = Date.now();
    setTimeout(()=>{
        // triggers mutation observation
        this.now = Date.now();
    },calculate_ms_delay_until(this.otherTime));
},

I would rather use a component for this:
https://jsfiddle.net/Linusborg/x0vaosfs/

I'm not picky about the component vs directive distinction. I'll see if I can come up with something.

Why not using a mixin that adds a now computed property that updates each second?
Something like:
import Vue from 'vue';
import moment from 'moment';

const component = new Vue({
    data: {
        now: moment(),
    },
    created() {
        setInterval(() => {
            this.now = moment();
        }, 1000);
    },
});

export default {
    computed: {
        now() {
            return component.now;
        },
    },
};

In fact, I just created a mixin... https://github.com/skyrpex/now

I'm not happy with that solution, I'll attempt to send a PR if I get something I'm happy with.

I have a Mixin that offers countdowns, intervals, task and the requested feature
https://github.com/reinerBa/Vue-Interval
as you can see in the demo


[Compute] az disk/snapshot: Revert new params

Related command

Description

Testing Guide

History Notes

[Compute] az disk create: Revert new parameter --optimized-for-frequent-attach
[Compute] az disk/snapshot create: Revert new parameter --elastic-san-resource-id

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

Compute


Unable to Pickle Array of Message Objects

Package Name: azure-servicebus
Package Version: <IP_ADDRESS>b4
Operating System: Red Hat 4.8.5-39
Python Version: 3.6.8

Describe the bug
When attempting to pickle.dump() an array of Message objects a TypeError is raised.
To Reproduce
Steps to reproduce the behavior:

Attempt to pickle a Message object

Expected behavior
The object is pickled correctly
Screenshots
import pickle
from azure.servicebus import Message

msgs = [Message(body={"test"})]
pickle.dump(msgs, open("./dump", "wb"))

File "stringsource", line 2, in uamqp.c_uamqp.StringValue.__reduce_cython__
TypeError: no default __reduce__ due to non-trivial __cinit__

Hey @dgokeeffe
Thanks for bringing this up.  From a brief read of the error I have an inkling what's causing this (the core of this library is a C-based AMQP library) and why it might not play well with Pickle.  I've put this on our backlog as a feature req and we'll need to look into what would be required to address this.
I will say, without making too many promises, that there is a long-term plan to address the AMQP library situation, but we can see if there is any potential workaround in the interim.

Thanks for your patience @dgokeeffe! Fix  will be out in the next uamqp release.


Chore: Remove !wsl and /wsl?

Checks

[X] I have thoroughly read and understand The Odin Project Contributing Guide
[X] The title of this issue follows the command name: brief description of request format, e.g. /help: add optional @user parameter

Do you want to be assigned to this issue?

[X] I would like to be assigned this issue to work on it

Description of the Feature Request
!wsl and /wsl were useful when WSL support was first introduced. It's now been long enough that a dedicated command just to direct people to #wsl-help isn't necessary anymore, and it hasn't been used for a long time outside of people discovering it in #bot-spam-playground.
Can these be removed?
Acceptance Criteria
- [ ] `!wsl` and `/wsl`-related code is removed from the repo

Additional information
No response

Side note, I haven't noticed or found much if any use of !google nor !searchtop for a long time. Their slash equivalents /search google and /search top do see good. I wonder if one or both of them may also be considered for pruning? The other legacy ! commands still see good inline use.


bombs when helmfile.yaml is missing

2018/03/02 14:34:33 warn: charts.yaml is loaded: charts.yaml is deprecated in favor of helmfile.yaml. See https://github.com/roboll/helmfile/issues/25 for more information
2018/03/02 14:34:33 err: open helmfile.yaml: no such file or directory

@mumoshu

@sstarcher Thx! #43 should fix this, but its completely untested because I wrote it from my iPhone 😆


bot channel?

Hello & thank you for this simple explanation..
it worked just fine.. now my question is : How can I make a channel using a bot? & not letting anyone add comments..
Subscribers will receive only not being able to post.

Bot cannot make a channel.


Use .gitkeep to keep empty data directory

Thought I could let you know about what I thought was the default way of keeping an empty directory in git.
Looking for some documentation on it, I had my own little TIL, though: a .gitkeep file isn't actually the officially blessed way of doing that, it's just some file which will make git keep the directory - interesting!
I'm still putting this PR up as I think a .gitkeep is a neat and self-explanatory method of achieving the purpose, maybe you like it, too.
Here's a StackOverflow on the topic: https://stackoverflow.com/a/7229996

Thanks for the template btw, I'm starting with my AoC in Zig with it right now. I love that you put some explanations in the README, this sort of thing teaches not the language itself but how things are being done in an ecosystem which is often quite difficult to figure out in the beginning 🙏 !


Error on all components with useOverlay

When try to open an overlay - the error occures
react-dom.production.min.js:120 Uncaught TypeError: Cannot read property 'current' of undefined
    at useDialog.ts:36
    at Gi (VM95 client.f11ff4f5.js:31)
    at uu (VM95 client.f11ff4f5.js:31)
    at r.unstable_runWithPriority (VM95 client.f11ff4f5.js:40)
    at Da (VM95 client.f11ff4f5.js:31)
    at lu (VM95 client.f11ff4f5.js:31)
    at Hl (VM95 client.f11ff4f5.js:31)
    at gr (VM95 client.f11ff4f5.js:31)

Yeah I think we updated the API and haven't fixed the docs yet. Will address soon.

Fixed in #591.


Fixed issue with compat/client with applying empty structures to api server

Added downconvert for cronjobs

@jortel This should be a smaller scoped PR, only addressing the issue with resource name being empty.
{"level":"info","ts":1584511208.2217383,"logger":"migration|j8589","msg":"[RUN]","migration":"mssql-app-mig-1584510245","stage":false,"phase":"QuiesceApplications"}
{"level":"error","ts":1584511209.0168467,"logger":"migration|j8589","msg":"","migration":"mssql-app-mig-1584510245","error":"resource name may not be empty","stacktrace":"github.com/konveyor/mig-controller/vendor/github.com/go-logr/zapr.(*zapLogger).Error\n\t/go/src/github.com/konveyor/mig-controller/vendor/github.com/go-logr/zapr/zapr.go:128\ngithub.com/konveyor/mig-controller/pkg/logging.Logger.Error\n\t/go/src/github.com/konveyor/mig-controller/pkg/logging/logger.go:75\ngithub.com/konveyor/mig-controller/pkg/logging.Logger.Trace\n\t/go/src/github.com/konveyor/mig-controller/pkg/logging/logger.go:81\ngithub.com/konveyor/mig-controller/pkg/controller/migmigration.(*Task).scaleDownDeployments\n\t/go/src/github.com/konveyor/mig-controller/pkg/controller/migmigration/quiesce.go:110\ngithub.com/konveyor/mig-controller/pkg/controller/migmigration.(*Task).quiesceApplications\n\t/go/src/github.com/konveyor/mig-controller/pkg/controller/migmigration/quiesce.go:31\ngithub.com/konveyor/mig-controller/pkg/controller/migmigration.(*Task).Run\n\t/go/src/github.com/konveyor/mig-controller/pkg/controller/migmigration/task.go:283\ngithub.com/konveyor/mig-controller/pkg/controller/migmigration.(*ReconcileMigMigration).migrate\n\t/go/src/github.com/konveyor/mig-controller/pkg/controller/migmigration/migrate.go:78\ngithub.com/konveyor/mig-controller/pkg/controller/migmigration.(*ReconcileMigMigration).Reconcile\n\t/go/src/github.com/konveyor/mig-controller/pkg/controller/migmigration/migmigration_controller.go:195\ngithub.com/konveyor/mig-controller/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/src/github.com/konveyor/mig-controller/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:215\ngithub.com/konveyor/mig-controller/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1\n\t/go/src/github.com/konveyor/mig-controller/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:158\ngithub.com/konveyor/mig-controller/vendor/k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1\n\t/go/src/github.com/konveyor/mig-controller/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133\ngithub.com/konveyor/mig-controller/vendor/k8s.io/apimachinery/pkg/util/wait.JitterUntil\n\t/go/src/github.com/konveyor/mig-controller/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:134\ngithub.com/konveyor/mig-controller/vendor/k8s.io/apimachinery/pkg/util/wait.Until\n\t/go/src/github.com/konveyor/mig-controller/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:88"}

@Danil-Grigorev These changes look good but no longer include a few changes I recall seeing in earlier versions of the PR.  Mainly files related to generating the conversions.  Earlier you added the conversion-gen to our Makefile but no longer see that diff.  Also, IIRC you added a subpackage to our compat package with generated conversions that I no longer see in the diff.
Are the additions to /vendor still needed?

@Danil-Grigorev These changes look really good but no longer include a few changes I recall seeing in earlier versions of the PR. Mainly files related to generating the conversions. Earlier you added the conversion-gen to our Makefile but no longer see that diff. Also, IIRC you added a subpackage to our compat package with generated conversions that I no longer see in the diff.
Look into PR #460, those two PRs are addressing different issues.

Are the additions to /vendor still needed?
Yes, they are needed for BoolPtr methods.

@jortel Tested this in a full setup, everything works.


The state machine dependency has breaking changes

As stated here in https://github.com/steelbreeze/state/blob/master/RELEASES.md#v800 steelbreeze/state has breaking changes in its 8.0.0 version.
Someone confident with ThingML should probably run the unit tests with this version.

Do you mean the package.json we generate uses by default this new 8.0.0 version? If so, I would first correct that, so as it use a version we know works (in principle, the latest 7.x.y).
Then, we can talk about migrating to 8.x.y :-)

No it does not. We should discuss about the migration.
Le jeu. 4 avr. 2019 à 21:15, Brice Morin<EMAIL_ADDRESS>a
écrit :

Do you mean the package.json we generate uses by default this new 8.0.0
version? If so, I would first correct that, so as it use a version we know
works (in principle, the latest 7.x.y).
Then, we can talk about migrating to 8.x.y :-)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/TelluIoT/ThingML/issues/283#issuecomment-480027611,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AACyrP7nYtHTcZOVou98nUx_hppt8FDgks5vdk9QgaJpZM4ccvrw
.

That was what I feared :-)

OK, work in progress :-)
Quite a big refactoring in the end, but so far I like the new generated code (though it does not work at this very moment, but I am getting closer)


Fixed a typo in imageset_id used by _get_imageset_id method

Thanks. I notice the Annotation class defines an _imageset_id property that does have an underscore. Perhaps they should be consistent?
I think I also see another instance in the same file in show_sources

Thanks, changed it there as well

Feel free to merge this in despite the failing lint checks.


Fix glyph offset in Core Text loader

Currently, the glyph gets translated completely off the canvas.

This fails CI. Can you explain why you think it's correct?

I got a blank canvas when following the example in the README and the front page of the docs, and this change fixed it. I realize now that the examples are just incorrect. Closing this and opening #80.


Optional attributes in labels

My actions before raising this issue

[x] Read/searched the docs
[x] Searched past issues

I would like to draw shapes using a label that may use a different combination of its attributes depending on what is annotated. I had been using an old version of cvat before that made it possible to make select attribute optional instead of having a default value so that they did not appear automatically.
I searched though the docs and the other issues but it possible I missed something about the way to do this, maybe by editing the advanced label config? (trying to remove the default values adds it back in again though).
If this feature was removed on purpose, is there another way of accomplishing this? I know I could split everything in several labels, but then I would have to duplicate the shapes, which I don't think is ideal.
Thanks in advance for your help.

Here is an example:

I would like to have the ability to remove the blurry attribute if I don't need it in the instance, or better: having to specifically add it when I need it. This not the best example since I know I could use a tag for storing the blurry attribute but this is not the point.

Hi, @titarch
I do not think we have removed something related with attributes annotation.
There is special value __undefined__ which marks an attribute as not annotated. Maybe not really well documented..
Is it what you need?

Hi @bsekachev, thanks a lot for your reply, this is nice maybe I can use this, this is definitely better than nothing.
It just lacks a few properties and logic I wish it would have, I have been trying to implement my own field called "optional" that is a checkbox like "mutable", and make it not appear on new shapes by default and have an interface just like this:

I have been struggling on implementing the frontend logic though, I need to extend the state to manage the possibility that any optional attribute may be added or not and make sure it has the right consequences in all different annotation modes and dataset exports, if you have any tips on that please feel free to share. If that is a feature you are interested in I can submit a PR.

I was able to easily adapt the code to prevent attributes with __undefined__ value to not dump in the (image) XML.
I am happy with that for now, hiding the optional attributes in the ui is lower priority.
Here is my patch if anyone is interested:
diff --git a/cvat/apps/dataset_manager/formats/cvat.py b/cvat/apps/dataset_manager/formats/cvat.py
index f46078f5..072bf696 100644
--- a/cvat/apps/dataset_manager/formats/cvat.py
+++ b/cvat/apps/dataset_manager/formats/cvat.py
@@ -719,6 +719,8 @@ def dump_as_cvat_annotation(dumper, annotations):
                     raise NotImplementedError("unknown shape type")

                 for attr in shape.attributes:
+                    if attr.value == "__undefined__":
+                        continue
                     dumper.add_attribute(OrderedDict([
                         ("name", attr.name),
                         ("value", attr.value)

@titarch , thanks for your feedback. It looks like we are not going to fix that in the nearest future. I will close it for now. I'm glad that you have found a workaround for your use case.


Drop up attach commands from README.md

Description of your changes

Drops the removed up attach commands from README.md.
Signed-off-by: hasheddan<EMAIL_ADDRESS>I have:

[x] Read and followed Upbound's contribution process.
[x] Run make reviewable to ensure this PR is ready for review.
[ ] Added backport release-x.y labels to auto-backport this PR, as appropriate.

How has this code been tested

Verified the remaining commands still work correctly.

@hasheddan If you'd like to, you can remove Push Validation job as well that tests this functionality.


Apply Coding Standard

Building on #29 this PR applies the coding standard to the codebase.

Expect the same test failures here but otherwise should be good.


How to use oneAPI to implement regular matching on FPGA？

How to use oneAPI to implement regular matching on FPGA？Can you provide demo for this.

We would like to implement regex matching (such as /[a-zA-Z0-9_-]+/) on FPGA using oneAPI for our IDS system. However, we do not have FPGA engineers in our company and intend to use oneAPI for implementation. Do you provide any demos related to this in the oneAPI-samples?

You can have a look at the /DirectProgramming/C++SYCL_FPGA/ samples, but I can't think of anything related to regex matching


Change the background every month

With the current implementation the timer for the wallpaper change is reset at each startup.
Are there any plans to solve this problem?
For example by saving the time of the last wallpaper change and see how long ago it was.

I've never considered this scenario. Actually the tool changes the wallpaper immidiately as it's started (when the PC is started). The fact is that this tool weights around ~150MB on your RAM, and if you want it to change the wallpaper once every month it becomes quite "heavy" considering how little it would be used.
Anyway I think I'm gonna implement this feature anyway, and the way you suggested it looks optimal

Thank you for your informative answer. I will let you close the issue if you wish.

I don't know what is taking up the RAM but if it is the GUI. You can do a services on windows ( services.msc ), a daemon on linux and I don't know about mac but there must be something similar. I think it's hard to do and cross-platform must be harder to maintain but it's just an idea like that.

With the last commit the issue was fixed, it will be included in the next release. The thing about windows services is really interesting, I will look further into it

In fact, there is still one modification missing in the GUI to make it possible to change every month: the GUI does not allow a number beyond 10,000 minutes or 6 days 22 hours and 40 minutes. A little oversight I think 😉.

I can't believe I forgot even this one, next commit should fix this


molecule_vagrant/modules/vagrant.py: Modify the Vagrant{file,.yml} only at creation

The current code is rewriting at every stage the Vagrantfile and
vagrant.yml files. At VM creation stage, it's fine but when destroying,
since the platform_box parameter is optional, this will result in invalid
vagrant.yml: the config.vm.box option will be empty.
Instead of making the platform_box mandatory in creation and halt/destroy
cases, make it mandatory for the VM creation and create/modify only
at this step.
This will possibly fix bug 19 and superseed PR 25 but this has to be
confirmed by the submitter.
The side effects of this commit are:

it will break the setup of multi node. Multi node support gives the feeling that it's working,
but it reality, it is not. What's happening is that the configuration file is overwritten when
creating/destroying the different nodes (instead of having one Vagrantfile for every
node).
it will probably conflict with PR 31.

Signed-off-by: Arnaud Patard<EMAIL_ADDRESS>

recheck

I will be revisited in one form or an other, so close it


New Task Idea - Task which turns username and password into PSCredential object for later use.

Someone asked about passing in credentials into tasks and it doesn't look like the normal task variable types support that.  Having a task which takes a username, password and output variable name and turns them into a credential object for later use might be useful to have.
Need to investigate if it actually works when passing it around however.

@ChrisLGardner will address this one in his own GitHub Account


add Leptos

I don't think it's necessarily a good idea to add other languages, but I had put together a local implementation for comparison and @DylanPiercey asked to take a look. I do see #23 adding Dioxus as well, so I thought I'd just open this. Feel free to close if you want to keep it JS-specific.
There's no difference in the HTML rendered for this example for our with-hydration vs no-hydration versions except for very small script tag, so I just did no-hydration for the sake of simplicity in building/running it.
If you have a Rust toolchain installed this is just cargo run --release. I have it running on nightly Rust, it should work with stable if you just remove the nightly feature in Cargo.toml.
local autocannon results:
Running 10s test @ http://localhost:3000
10 connections

┌─────────┬──────┬──────┬───────┬──────┬─────────┬─────────┬───────┐
│ Stat    │ 2.5% │ 50%  │ 97.5% │ 99%  │ Avg     │ Stdev   │ Max   │
├─────────┼──────┼──────┼───────┼──────┼─────────┼─────────┼───────┤
│ Latency │ 1 ms │ 1 ms │ 3 ms  │ 5 ms │ 1.49 ms │ 0.87 ms │ 26 ms │
└─────────┴──────┴──────┴───────┴──────┴─────────┴─────────┴───────┘
┌───────────┬────────┬────────┬────────┬────────┬─────────┬─────────┬────────┐
│ Stat      │ 1%     │ 2.5%   │ 50%    │ 97.5%  │ Avg     │ Stdev   │ Min    │
├───────────┼────────┼────────┼────────┼────────┼─────────┼─────────┼────────┤
│ Req/Sec   │ 4,923  │ 4,923  │ 5,083  │ 5,175  │ 5,086.8 │ 72.97   │ 4,920  │
├───────────┼────────┼────────┼────────┼────────┼─────────┼─────────┼────────┤
│ Bytes/Sec │ 748 MB │ 748 MB │ 772 MB │ 786 MB │ 773 MB  │ 11.1 MB │ 748 MB │
└───────────┴────────┴────────┴────────┴────────┴─────────┴─────────┴────────┘

Req/Bytes counts sampled once per second.
# of samples: 10

51k requests in 10.01s, 7.73 GB read

(For the truly curious, I have a local version with a non-allocating version for the style that went up to 6k rps, but I thought it was a bit cheesy. This is the idiomatic version.)

Thanks for sharing @gbj!
One interesting thing I noticed is that (like most sync server rendering benchmarks) the bottle neck here is actually in a pretty silly place.
It seems Rust is much faster at printing a float with two precision than using toFixed(2) on a javascript number (or really casting a float to a string in javascript at all). Simply changing the javascript implementations to use int's (I just threw a Math.trunc in there) ended up making the Marko example over 3x faster. I'm sure using int's on Rust side would also improve things, I'm kinda curious how much.

Sure; I just toggled the formatting from 2-precision f32s to casting them to i32s and rendering the integers and went from ~5k to ~6.5k rps, so like a 30% increase?
Of course in part this is because floats in the HTML are an extra 3 characters per number, so 6 characters per row, which means that the HTML files are 152kb vs 137kb (for me), which is itself an 11% increase.
The issue with .toFixed() in particular might also be that it returns a string, which is then being inserted into another format string. I assume this is not optimized away but is in fact allocating 2 additional strings per row in JS. Whereas in Rust doing it in a format string is writing them directly into the same string buffer.

@gbj you're probably right. Probably the worst part about JS in general is these kind of performance foot guns (especially when they change over time due to internal engine/impl chabges).
Sometimes I envy the control given in, eg, Rust.
Thanks again for sharing!


fix up GHA workflows

Summary
Fix up Github Actions workflows by

generate an SBOM
auto publish on releases
remove dart 2.18 from matrix

Security Insights
No security relevant content was detected by automated scans.
Action Items

Review PR for security impact; comment "security review required" if needed or unsure
Verify aviary.yaml coverage of security relevant code

Questions or Comments? Reach out on Slack: #support-infosec.

QA+1 CI passes, SBOM generated and attached

@Workiva/release-management-p


⚠ sandbox-api.piste.gouv.fr healthcheck has degraded performance

In a467991, sandbox-api.piste.gouv.fr healthcheck (https://sandbox-api.piste.gouv.fr/minju/judilibre/v1.0/healthcheck) experienced degraded performance:

HTTP code: 200
Response time: 2973 ms

Resolved: sandbox-api.piste.gouv.fr healthcheck performance has improved in da7562e.


Incorrect dispose of flutter blue, maybe missing dispose method ?

Hi I've been playing with flutter_blue and instantiate it at onInitState to auto connect to an specific device, its working everything fine until the user hits the back button, after that I start to get the follow message logged in the console:
D/FlutterNativeView( 2516): FlutterView.send called on a detached view, channel=plugins.pauldemarco.com/flutter_blue/methods
First I noted that my disconnect method wasn't being called for the dispose, then I found this huge thread about it https://github.com/flutter/flutter/issues/28134
Some recommendations is to implement it a method at the plugin to handle it nicely when the view is disposed, others recommend to handle it in the view implementing the WidgetsBindingObserver and intercept the state changes.
What do you guys think about it ?
Regards,
Diego Garcia

@diegomgarcia Did you get any further traction with this issue? I'm running into what I think is a similar problem and I'm not sure how to deal with it.

Hi @alexsullivan114 to overcome this problem I've add the follow method:
void disconnectBLEDevice() {
    print("Disconnecting");

    deviceStateSubscription.cancel();

    if (bleDevice != null)
      bleDevice.disconnect();
  }

on initstate I check if it exists and disconnect if needed. using this code:
@override
  void initState() {
    super.initState();

    LocalPrefs.hasDeviceSaved().then((r) {
      setState(() {
        _hasDeviceSaved = r;
      });

      if (_hasDeviceSaved) {

        if (bleDevice != null)
          disconnectBLEDevice();

        connectBLEDevice();
      }
    });
  }

to finish just disconnect on dispose as the follow:
@override
  void dispose() {
    print("disposing");

    disconnectBLEDevice();

    super.dispose();
  }

Let me know if this help you.

@diegomgarcia So you're basically saving off whether you previously connected to the device in shared preferences, then disconnecting on init if you discover that you had connected? Makes sense!


Fix non '\0' terminated labels for InputText

I extended the byte arrays for the labels of the InputText functions by one byte to ensure that there is always a 0 at the end. Previously only the length of the label was allocated. As .net is initializing arrays with 0 and (at least for this stackalloc here) this happens in 4-byte chunks only strings with a length multiple of 4 were affected as in this case the allocated size exactly matched the length of the string and so no 0 was left to be used for string end. Now the array is generated always one byte larger than the label length, so there will always be a 0 at the end.
Before when using an InputText where the label had a length multiple of 4 this happened (here the label was "ABCD"):

This looks like a good fix, thanks for submitting. I will take a closer look once I am at my computer and can pull down the changes. Other parts of the code are already making space for the null terminator, but not here. I should do a pass to make sure there aren’t similar issues elsewhere.

Thanks for the fix, merging now.


Screenshot zoom button shows a smaller screenshot

On an application page, if you click on the zoom button (magnifier icon with a plus), the view switches to a fullscreen image viewer only to show a smaller screenshot:

I expect a native resolution image in the fullscreen viewer.

This is unfortunatly not possible, until flathub uses libappstream as a backend. https://github.com/flathub/website/issues/37

It will be probably better to remove the zoom buttons until then.

Closing in favor of #37


Add an example of calling rust code from the jit

For example, write a simple print function which can be called from compiled code to print a value.

I created some examples here #71.


Problems when compiling Chamfer Distance

When I use this script ./compile.sh also appears this warning
/home/lab528/anaconda3/envs/folding/lib/python3.6/site-packages/tensorflow_core/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(261): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/bin/ld: cannot find -ltensorflow_framework
collect2: error: ld returned 1 exit status

So I used the following script : ./compile.sh --expt-relaxed-constexpr -D_GLIBCXX_USE_CXX11_ABI=0
But still get the same warning.
When I check echo $LD_LIBRARY_PATH
I got
/usr/local/cuda/lib64
My environment version is the same as yours.
Can you help me?  Thank you.

Thank you for your help.
I solved the problem that the compiler could not find the tensorflow_framework library.
But when I use the script ./compile.sh --expt-relaxed-constexpr -D_GLIBCXX_USE_CXX11_ABI=0, I still get the following warning:
/home/lab528/anaconda3/envs/folding/lib/python3.6/site-packages/tensorflow_core/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(261): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.
How can I solve this problem?

Hi @FuuChenn,
Note that the flags should be added inside ./compile.sh instead of as arguments.
The warning is probably not an issue and I think it will disappear if you add the --expt-relaxed-constexpr flag to the nvcc call in ./compile.sh.
Here is a similar issue that details how to remove the warning:
https://github.com/smallcorgi/Faster-RCNN_TF/issues/21

There will be no error warning when compiling, thank you for your help.


Issue installing packages on a Mac

Hello,
I'm getting the following error when I try to install a package on a Mac.  Any thoughts?:
Restarting Claude desktop app...
Failed to restart Claude desktop app: Error: Command failed: killall "Claude" && open -a "Claude"
_LSOpenURLsWithCompletionHandler() failed for the application /Applications/Claude.app with error -600.
at genericNodeError (node:internal/errors:983:15)
at wrappedFn (node:internal/errors:537:14)
at ChildProcess.exithandler (node:child_process:421:12)
at ChildProcess.emit (node:events:519:28)
at maybeClose (node:internal/child_process:1104:16)
at ChildProcess._handle.onexit (node:internal/child_process:304:5) {

code: 1,
killed: false,
signal: null,
cmd: 'killall "Claude" && open -a "Claude"',
stdout: '',
stderr: '_LSOpenURLsWithCompletionHandler() failed for the application /Applications/Claude.app with error -600.\n'
}
Mac OS: 15.1.1 (24B91)

Hello, did you have Claude closed at the time? It probably still installed correctly for you, even though this error occurred. But if Claude is closed, it will fail to relaunch.

Just tried it and made sure claude was open, and it worked correctly. Maybe you can add a check in at some point.  Thanks again!

Fixed! Thanks!

Verified works! Thank you!


[Question/Feedback]: What is the supported method to update the Action Group Email property?

Check for previous/existing GitHub issues

[x] I have checked for previous/existing GitHub issues

Issue Type?
Question
Description
When we originally deployed the AMBA Landing Zone initiatives, we included an individual email within the ALZMonitorActionGroupEmail property.

Now, when testing changes to that value, although we've modified it (ie. removed it, so ALZMonitorActionGroupEmail is an empty array), although the deployment completes successfully (and we executed the Remediation process), none of the Azure Groups are actually updated.

Is this "by design" and expected behaviour? To make an update like this (or even to add another email in the list), do we actually have to destroy and re-deploy the entire AMBA? What is the recommended approach for making updates to the Action Groups deployed?

Hello @AErmie ,
thanks for your feedback. Action group settings like Emails Logic App, Azure Function, Arm Roles, Event Hubs, Webhooks are not part of the policy compliance since it is not really possible to control the entire list. Should you need to update, you need to remove the action group and/or the alert processing rule, deploy amba-alz again with the updated template file and run the remediation for the notification assets. No need to remove the entire amba-alz deployment.
Thanks,
Bruno.

Thanks for that confirmation @Brunoga-MS, however, when I attempt to run the Start-AMBA-ALZ-Maintenance.ps script (with a targeted -cleanItems NotificationAssets), it doesn't seem to actually do anything. All it does is return the number of Management Groups that are childs of the $pseudoRootManagementGroup.
Am I executing it incorrectly?
Output
PS C:\Users\adine\Documents\GitHub\BC-Gov-Repos\azure-monitor-baseline-alerts\patterns\alz\scripts> Get-ExecutionPolicy
Unrestricted
PS C:\Users\adine\Documents\GitHub\BC-Gov-Repos\azure-monitor-baseline-alerts\patterns\alz\scripts> $pseudoRootManagementGroup = "bcgov-managed-lz-forge"
PS C:\Users\adine\Documents\GitHub\BC-Gov-Repos\azure-monitor-baseline-alerts\patterns\alz\scripts> ./Start-AMBA-ALZ-Maintenance.ps1 -pseudoRootManagementGroup $pseudoRootManagementGroup -cleanItems "NotificationAssets"

Found '13' management group(s) (including the parent one) which are part of the 'bcgov-managed-lz-forge' management group hierarchy, to be queried for AMBA-ALZ resources.

CleanItems Options
For anyone else that might encounter this question, and wonder what the -cleanItems options are, here is the output from running Get-help ./Start-AMBA-ALZ-Maintenance.ps1.
-cleanItems <String>
        Required. The item type we want the script to clean up. The options are:
            - Amba-Alz
            - Deployments
            - NotificationAssets
            - Alerts
            - PolicyAssignments
            - PolicyDefinitions
            - OrphanedAlerts

Looking at the Start-AMBA-ALZ-Maintenance.ps1 more closely, I see the first command called within the NotificationAssets switch is Get-ALZ-ActionGroups.
Switch ($cleanItems)
{
    "NotificationAssets"
    {
        # Invoking function to retrieve action groups
        $agToBeDeleted = Get-ALZ-ActionGroups
...

When I look at that Function in the PowerShell script, we see this:
Function Get-ALZ-ActionGroups {
    # get action groups to delete
    $query = "resources | where type =~ 'Microsoft.Insights/actionGroups' | where tags['_deployed_by_amba'] =~ 'True' | project id"
    $actionGroupIds = Search-AzGraphRecursive -Query $query -ManagementGroupNames $managementGroups | Select-Object -ExpandProperty Id | Sort-Object | Get-Unique
    Write-Host "- Found '$($actionGroupIds.Count)' action group(s) with tag '_deployed_by_amba=True' to be deleted." -ForegroundColor Cyan

    # Returning items
    $actionGroupIds
}

When I attempt to manually run each command individually, the $query command completes successfully, whereas the $actionGroupIds command throws this error:
PS > $query = "resources | where type =~ 'Microsoft.Insights/actionGroups' | where tags['_deployed_by_amba'] =~ 'True' | project id"
PS > $actionGroupIds = Search-AzGraphRecursive -Query $query -ManagementGroupNames $managementGroups | Select-Object -ExpandProperty Id | Sort-Object | Get-Unique
Search-AzGraphRecursive: The term 'Search-AzGraphRecursive' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Hi @AErmie ,
looking at the syntax you shared it seems the command was correctly entered. I have a couple of questions:

Was the $pseudoRootManagementGroup variable populated with the correct name?
Which version are you using? something newer than or equal to 2024-04-12?

That aside, you should expect an output similar to the one below (only reporting the last two items: alert processing rules an action groups)

Let me know if (and how) I can reach out to you for a troubleshooting session.
Thanks,
Bruno.

Hi @Brunoga-MS, thanks for confirming the command. Everything seems to be correct. I even downloaded a fresh clone of the AMBA repo this morning, but encountered the same results.
The Management Group value doesn't seem to be the issue, since the script does correctly identify 13 other Management Groups that are a part of the hierarch.
Here's the details from all the commands I ran.

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.4.6
PSEdition                      Core
GitCommitId                    7.4.6
OS                             Microsoft Windows 10.0.22631
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0
...

$pseudoRootManagementGroup = "bcgov-managed-lz-forge"

$pseudoRootManagementGroup
bcgov-managed-lz-forge
...

Connect-AzAccount
Please select the account you want to login with.

Retrieving subscriptions for the selection...

Subscription name             Tenant
-----------------             ------
bcgov-mgd-lz-forge-management Government of BC
...

Get-ExecutionPolicy
Unrestricted

PS C:\Users\adine\Documents\GitHub\BC-Gov-Repos\azure-monitor-baseline-alerts\patterns\alz\scripts> ./Start-AMBA-ALZ-Maintenance.ps1 -pseudoRootManagementGroup $pseudoRootManagementGroup -cleanItems NotificationAssets -WhatIf

Found '13' management group(s) (including the parent one) which are part of the 'bcgov-managed-lz-forge' management group hierarchy, to be queried for AMBA-ALZ resources.

If you have time to connect, that would be great! Please email me at<EMAIL_ADDRESS>and<EMAIL_ADDRESS>

@AErmie as long as the account you are using now has the required permissions, it does not matter if it is different. The message you see calling Amba-ALZ is because we are referring to the ALZ pattern of AMBA.
None of the parameters have default values, since we do want customer make their choice. and it is just by coincidence that it matches one of the parameter' value. As far as the output goes, what is shown depends on the cleanItems param choice. For notifications it only show the following items:

I suspect something with multiple module version. In may case I am running the following versions and only have 1 module per version:

Az.Account == 4.0.0
Az.Resources == 7.6.0
Az.ResourceGraph == 1.0.1

Could you please try to remove older version?

@AErmie  don't have a resolution for this, but "Search-AzGraphRecursive" not being found is due to it being a custom function defined in the start-ambacleanup.ps1 script - line 51
Just leaving it here as others might run into the same.
Ran into the same issue myself and was equally confused for a bit :)

Thanks @Henrik-Bernhard. Are you experiencing the same bahviour with the Start-AMBA-ALZ-Maintenance.ps1 script as I am? If not, can you please share your system details (ie. PowerShell, modules, etc.).


Error when updating this node

I get the following error when trying to update the node:
2024-01-11T17:01:36.486Z Install : @ralphwetzel/node-red-context-monitor 1.2.1

2024-01-11T17:01:36.361Z npm install --no-audit --no-update-notifier --no-fund --save --save-prefix=~ --production --engine-strict<EMAIL_ADDRESS>2024-01-11T17:01:37.405Z [err] npm
2024-01-11T17:01:37.406Z [err]  WARN
2024-01-11T17:01:37.406Z [err]  config production Use `--omit=dev` instead.
2024-01-11T17:01:43.595Z [err] npm
2024-01-11T17:01:43.595Z [err]  ERR! code EBADENGINE
2024-01-11T17:01:43.601Z [err] npm
2024-01-11T17:01:43.601Z [err]  ERR! engine
2024-01-11T17:01:43.602Z [err]  Unsupported engine
2024-01-11T17:01:43.603Z [err] npm
2024-01-11T17:01:43.603Z [err] ERR! engine
2024-01-11T17:01:43.603Z [err]  Not compatible with your version of node/npm<EMAIL_ADDRESS>2024-01-11T17:01:43.603Z [err] npm
2024-01-11T17:01:43.604Z [err] ERR! notsup Not compatible with your version of node/npm<EMAIL_ADDRESS>2024-01-11T17:01:43.604Z [err] npm
2024-01-11T17:01:43.604Z [err] ERR! notsup Required: {"node":"10 || 12 || 14 || 16"}
2024-01-11T17:01:43.604Z [err] npm ERR!
2024-01-11T17:01:43.604Z [err] notsup Actual:   {"npm":"9.6.7","node":"v18.17.1"}
2024-01-11T17:01:43.610Z [err]
2024-01-11T17:01:43.610Z [err] npm
2024-01-11T17:01:43.610Z [err] ERR! A complete log of this run can be found in: /home/pi/.npm/_logs/2024-01-11T17_01_37_321Z-debug-0.log
2024-01-11T17:01:43.638Z rc=1

Which is odd because I looked over your package.json and see
  "engines": {
    "node": ">=14.0.0"
  },

But I'm running "npm":"9.6.7","node":"v18.17.1"
any idea how to fix?

Scratch that, it happens when updating any node for me, so it must be something on my end.


Extend Datagrid  #263

Extended the datagrid component as described in #263

There are a lot of great things in this! Like I said in #263, I'm not sure if we want to take in all of it. Would it make sense to isolate changes and create some smaller PRs?
Some remarks on the current state::

We do not work with #regions in source files in this repo. Please remove them
We do not use Nullable<...>, Just use ...? please
Please pull in the latest changes from main
Can you look at the conflicts that are there now. I made some modifications to the grid already.
Like the idea of the column types. Think prefixing them with DataGrid is a bit overkill. Also, please use the names of the corresponding Fluent components (Textbox->TextField)
Is a Combobox really what you would use in a grid? I would think in most cases you want the user to pick a predefined value from a set list and not let them type one themselves (i.e. use a FluentSelect)(or offer both)
The commit history looks a bit like a mess. Any way you can clean that up a bit?

I will create 4 PR
1- generate headers, by Display attr
2- new sorting ability
3- embedded filters
4- Inline datagrid editor
is it ok?

Sounds good!
One other thing I thought of (sorry, don't want to sound too critical. Just want to make sure we do the 'right things'). For the enums I am using the System.ComponentModel.Description attribute. Can you use that as well for the Display? So we can keep it consistent.

np. feel free to give tips


Fixed Express version

Wildcards are bad.

Wait, you never merged this? I guess I had deployed my own fork then.

Fixed via complete rewrite.


Address clippy issues

Do we have anything pending here @neithanmo ?

Do we have anything pending here @neithanmo ?

No, We don't.. we can close this.


Python Compatibility

pycodestyle provides support for 2.7, 3.4 and PyPy. Was this intentionally left off for this package? It would be beneficial to provide the support so other packages can move off the legacy pytest-pep8 package and use supported pycodestyle.

https://github.com/henry0312/pytest-codestyle/pull/36#issuecomment-411013218


Online survey and poll creator

Hi @Sulagna-Dutta-Roy ,
I hope you're doing well. I've addressed the issue  #1591  and created a pull request to resolve it.
Could you please review the PR and let me know if any adjustments are needed?
Best regards,
Tanisha Garg

@Sulagna-Dutta-Roy Please check the level labels once again before merging.


[WIP] CI update for R interpreter

Adding pre-requests for CI to pass over the -P r

[ ] figure out why unit-tests are failing

from https://s3.amazonaws.com/archive.travis-ci.org/jobs/111961332/log.txt
09:47:56,280  INFO org.apache.zeppelin.rest.NotebookRestApi:322 - move paragraph 2BEJWMVH7 20160226-094756_336283760 10
09:47:56,280 ERROR org.apache.zeppelin.rest.NotebookRestApi:341 - Exception in NotebookRestApi while moveParagraph
java.lang.IndexOutOfBoundsException: paragraph size is 2 , index is 10
  at org.apache.zeppelin.notebook.Note.moveParagraph(Note.java:271)
  at org.apache.zeppelin.rest.NotebookRestApi.moveParagraph(NotebookRestApi.java:335)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)

[ ] clean-up install scripts
[ ] update it, after profile r is added

This will allow apache/incubator-zeppelin#208 to pass

@bzz Pls let me know when I should pull this in.  Is this actually working on CI?  It doesn't pull-in the R dependencies that are involved in handling certain plots, and I'm pretty sure I have unit tests for those routines, so I'd think it would fail those tests.

@elbamos sure, let's merge this as soon as all todo items here are completed.
Regarding the R dependencies - I just add what you have identified as "required" in comments of ZEPPELIN-700. Or did I miss something else?

Knitr - Not required
Repr - not required
Evaluate - Required
Base64enc - not required

By required, it usually means things, that are needed to build and pass all tests.
Please let me know (better in comments to the issue above) if something else is required.

Those are optional runtime dependencies. But they are test time dependencies. For example, we need the dependencies used to display images so we can test the code for handling images.

On Mar 2, 2016, at 10:42 PM, Alexander<EMAIL_ADDRESS>wrote:
@elbamos sure, let's merge this as soon as all todo items here are completed.
Regarding the R dependencies - I just add what you have identified as "required" in comments of ZEPPELIN-700. Or did I miss something else?
Knitr - Not required
Repr - not required
Evaluate - Required
Base64enc - not required
By required, it usually means things, that are needed to build and pass all tests.
Please let me know (better in comments to the issue above) if something else is required.
—
Reply to this email directly or view it on GitHub.

Well, I guess what I'm talking about is a list of all the dependencies, that are not part of the automated build process (except maven and java) that are needed to be present on the machine in order to build and pass test for your contribution.
Can you please add such list either in original PR or in comments to the ZEPPELIN-700 (so we keep community in the loop)?
Thanks!

I think the list you made should do it. I think the list is in the PR, and the jira discussion as well.
Note that the easiest way to install repr is with the devtools package. So ordinarily I'd say to add that.

On Mar 2, 2016, at 10:59 PM, Alexander<EMAIL_ADDRESS>wrote:
Well, I guess what I'm talking about is a list of all the dependencies, that are not part of the automated build process (except maven and java) that are needed to be present on the machine in order to build and pass test for your contribution.
Can you please add such list either in original PR or in comments to the ZEPPELIN-700 (so we keep community in the loop)?
Thanks!
—
Reply to this email directly or view it on GitHub.

Sorry, I'm confused and not sure I understand you.
Could you please post such list, where things that needed to build and pass tests over your contribution are listed explicitly?
Thanks.

Build-Time Dependencies:

R
Test-Time Dependencies:
R
Evaluate
base64enc
repr
knitr
Run-Time Dependencies:
R
Evaluate

Or, if you look in the 0.5.6 branch here, I'm pretty sure the travis script does a fine job at getting the dependencies loaded.  The CI problems with the PR have never been with the R dependencies.

Triggering CI

First CI failure https://travis-ci.org/bzz/incubator-zeppelin/builds/118443123 is
2 Unknown Licenses

*******************************

Unapproved licenses:

  r/src/main/scala/scala/Console.scala
  r/src/main/scala/org/apache/zeppelin/rinterpreter/rscala/Package.scala

*******************************

@bzz
The CI errors there clearly doesn't relate to any code touched by this PR.
In now I think 8 weeks, you've asked me four times to list the PR's dependencies (which was part of CI I already had working), and pasted a CI error caused by another part of zeppelin.
Do we need to go back to the community to clarify the current consensus?

Using it as a testbed for ZEPPELIN-776

Build is failing due to SUDO usage

devtools::install_github('IRkernel/repr') is very un-relieable way to install the packages - it fails our build if GH API rate-limit is maxed out by TravisCI
@elbamos is there another way to do it?
devtools::install_github('IRkernel/repr')
Downloading GitHub repo IRkernel/repr@master
from URL https://api.github.com/repos/IRkernel/repr/zipball/master
Error in download(dest, src, auth) : Forbidden (HTTP 403).

{
  "message": "API rate limit exceeded for ***.***.***.***. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)",
  "documentation_url": "https://developer.github.com/v3/#rate-limiting"
}


Merge release back into dev

The title of this pull request is kinda weird, but :+1:

Yeah, sorry about the weird title


docs(readme): update badges

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Compiling error

When I try compiling with gcc it gives bunch of errors
gcc -I.\include .\src\cli.c .\src\error.c .\src\parser.c .\src\platform.c .\src\tokenizer.c .\src\u8string.c

.\src\cli.c: In function 'main':
.\src\cli.c:57:30: warning: passing argument 2 of 'swprintf' makes pointer from integer without a cast [-Wint-conversion]
                 swprintf(ws, 500, L"%hs", argv[2]);
                              ^~~
In file included from .\src\cli.c:11:0:
c:\mingw\include\stdio.h:975:39: note: expected 'const wchar_t * {aka const short unsigned int *}' but argument is of type 'int'
 _CRTIMP __cdecl __MINGW_NOTHROW  int  swprintf (wchar_t *, const wchar_t *, ...);
                                       ^~~~~~~~
.\src\cli.c:74:30: warning: passing argument 2 of 'swprintf' makes pointer from integer without a cast [-Wint-conversion]
                 swprintf(ws, 500, L"%hs", argv[2]);
                              ^~~
In file included from .\src\cli.c:11:0:
c:\mingw\include\stdio.h:975:39: note: expected 'const wchar_t * {aka const short unsigned int *}' but argument is of type 'int'
 _CRTIMP __cdecl __MINGW_NOTHROW  int  swprintf (wchar_t *, const wchar_t *, ...);
                                       ^~~~~~~~
.\src\parser.c: In function 'Node_repr':
.\src\parser.c:485:30: warning: passing argument 2 of 'swprintf' makes pointer from integer without a cast [-Wint-conversion]
             swprintf(numstr, 50, L"%ld", node->integer);
                              ^~
In file included from .\src\parser.c:11:0:
c:\mingw\include\stdio.h:975:39: note: expected 'const wchar_t * {aka const short unsigned int *}' but argument is of type 'int'
 _CRTIMP __cdecl __MINGW_NOTHROW  int  swprintf (wchar_t *, const wchar_t *, ...);
                                       ^~~~~~~~
.\src\parser.c:490:30: warning: passing argument 2 of 'swprintf' makes pointer from integer without a cast [-Wint-conversion]
             swprintf(numstr, 50, L"%f", node->floating);
                              ^~
In file included from .\src\parser.c:11:0:
c:\mingw\include\stdio.h:975:39: note: expected 'const wchar_t * {aka const short unsigned int *}' but argument is of type 'int'
 _CRTIMP __cdecl __MINGW_NOTHROW  int  swprintf (wchar_t *, const wchar_t *, ...);
                                       ^~~~~~~~
.\src\platform.c: In function 'get_gcc_version':
.\src\platform.c:26:35: warning: passing argument 2 of 'swprintf' makes pointer from integer without a cast [-Wint-conversion]
     swprintf(_GCC_VERSION_STRING, 8, L"%d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
                                   ^
In file included from .\src\platform.c:11:0:
c:\mingw\include\stdio.h:975:39: note: expected 'const wchar_t * {aka const short unsigned int *}' but argument is of type 'int'
 _CRTIMP __cdecl __MINGW_NOTHROW  int  swprintf (wchar_t *, const wchar_t *, ...);
                                       ^~~~~~~~
.\src\platform.c: In function 'get_platform':
.\src\platform.c:80:5: warning: implicit declaration of function 'NTSTATUS' [-Wimplicit-function-declaration]
     NTSTATUS(WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW);
     ^~~~~~~~
.\src\platform.c:80:14: error: expected expression before '__attribute__'
     NTSTATUS(WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW);
              ^
.\src\platform.c:80:37: error: expected expression before 'LPOSVERSIONINFOEXW'
     NTSTATUS(WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW);
                                     ^~~~~~~~~~~~~~~~~~
.\src\platform.c:82:18: error: 'RtlGetVersion' undeclared (first use in this function)
     *(FARPROC *)&RtlGetVersion = GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion");
                  ^~~~~~~~~~~~~
.\src\platform.c:82:18: note: each undeclared identifier is reported only once for each function it appears in
.\src\platform.c:86:9: warning: implicit declaration of function 'RtlGetVersion' [-Wimplicit-function-declaration]
         RtlGetVersion(&osinfo);
         ^~~~~~~~~~~~~
.\src\platform.c:120:25: warning: passing argument 2 of 'swprintf' makes pointer from integer without a cast [-Wint-conversion]
     swprintf(uhostname, u8size(uhostname), L"%hs", hostname);
                         ^~~~~~
In file included from .\src\platform.c:11:0:
c:\mingw\include\stdio.h:975:39: note: expected 'const wchar_t * {aka const short unsigned int *}' but argument is of type 'size_t {aka unsigned int}'
 _CRTIMP __cdecl __MINGW_NOTHROW  int  swprintf (wchar_t *, const wchar_t *, ...);
                                       ^~~~~~~~
.\src\u8string.c: In function 'u8winterminal':
.\src\u8string.c:26:30: error: '_O_U8TEXT' undeclared (first use in this function)
     setmode(_fileno(stdout), _O_U8TEXT);
                              ^~~~~~~~~
.\src\u8string.c:26:30: note: each undeclared identifier is reported only once for each function it appears in

Is there a specific reason you didn't use build.py?
Also can you provide some more information such as your OS, system specifications, GCC version, Dust version, etc..?

After trying to compile on several different platforms with different GCC versions (>9) and having no failure, I believe the issue is caused because you are using GCC 6.3.
You can try to build using GCC >9 with the current Dust version (0.0.18) and see if the issue is still ongoin, you can reopen the issue if so.


Publish TryTLS to PyPi?

https://pypi.python.org/pypi

Let's close this when the automated publishing flow has been verified to work and there's an auto-published release in PyPI.

With the v0.1.1 release the publishing flow has been verified to work, and we can close this issue 🎉


Layer re-ordering

Feature description
Controls that allows moving blocks backwards and forwards (e.g. behind another block or bring on top of another block). Implemented in sidebar and dedicated layer panel.

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance criteria

Implementation brief

QA testing instructions

Demo

Changelog entry

@barklund this seems done except for the keyboard shortcuts, right?

@barklund this seems done except for the keyboard shortcuts, right?

Yes, and keyboard shortcuts were actually added in #320, also merged.


Have InstallerUrl point at the latest version instead of a specific version

Description of the new feature/enhancement

I browsed through the manifests, and it seems like it's mandatory to submit each package version separately. As a result, some are lagging behind. To avoid waiting for someone to submit a manifest for every update, why not permalink to the latest one instead? I think it's called a stable URL?
For example, instead of linking
https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/78.9.1/win64/en-US/Thunderbird Setup 78.9.1.msi
then
https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/91.0.3/win64/en-US/Thunderbird Setup 91.0.3.msi
etc, link https://download.mozilla.org/?product=thunderbird-latest&os=win&lang=en-US.
Proposed technical implementation details (optional)

To keep the ability to select the installed version, it might make sense to just add a latest directory to the existing ones.

Based on this comment I think this would be both a CLI feature and a pkgs feature, unless the 1.1 manifest schema resolves this issue

It will cause some issue when updating packages, as only the latest version is kepped in the manifest list. So, unless you can't find a link directly point to the certain version, i don't suggest using latest link. However, i believe wingetbot can use a latest link to check if there is an update, and email the author who last changed the manifest. That is, an optional latest link key can be added to schema, it will not be used when users run winget upgrade, but a bot (I call it checklatestbot) can use it to check whether there is update.

It can only do it if it detects a SHA256 change, and it usually takes at least a day, maybe two for it to open the PR. (I do Chrome/Spotify manually a lot since they are very popular and almost always broken due to their evergreen installers).
It seems like it used to be better at following up, but since the repo has grown so much it's slower on the uptake.

There isn't a standard, no. The automation isn't that smart, it downloads the file at the existing link in the existing manifest, if the SHA256 hash doesn't match then it opens a PR to fix it (and bump the PackageVersion if the file has a newer ProductVersion attribute).
If you want to help us by automatically creating new manifests when you have new links, consider running [wingetcreate update](https://github.com/microsoft/winget-create) as part of your release process.


Testing for existence of the GTE

The PSX had a Geometry Transformation Engine as COP2 for basic linear algebra calculations. It would be interesting to know if it still exists on the PS2's IOP, or is potentually emulated in software.
To enable the GTE, you first need to set bit 30 of COP0.r12.
Here is some sample code for using it, which calculates the weighted average of two color vectors: http://pastebin.com/0S3wGed9
The signature for the function there is void LoadAverageCol(unsigned char in1[3], unsigned char in2[3], long weight1, long weight2, unsigned char out[3]);
Note that the last parameter is passed on the stack.

Came up with a very quick test case using the function you've provided (slightly modified to set bit 30 of COP0.r12):
#include <common-iop.h>
#include <stdio.h>
#include <tamtypes.h>

extern void LoadAverageCol(unsigned char*, unsigned char*, int, int, unsigned char*);

int _start(int argc, char **argv) {
	printf("-- TEST BEGIN\n");

	unsigned char inColor1[3] = { 0x00, 0xCC, 0x00 };
	unsigned char inColor2[3] = { 0xAA, 0x00, 0xAA };
	unsigned char outColor[3];

	LoadAverageCol(inColor1, inColor2, 0x1000, 0x1000, outColor);
	printf("outColor: %x, %x, %x\n",
		outColor[0], outColor[1], outColor[2]);

	LoadAverageCol(inColor1, inColor2, 0x800, 0x800, outColor);
	printf("outColor: %x, %x, %x\n",
		outColor[0], outColor[1], outColor[2]);

	printf("-- TEST END\n");

	return 0;
}

And this yields the following result:
-- TEST BEGIN
outColor: aa, cc, aa
outColor: 55, 66, 55
-- TEST END

Which seems to indicate that the IOP has the GTE. I will push a branch with the code later.

Very nice! Can you maybe test what happens if you don't set the COP0 bit, too?

Well, that's interesting.  I guess that means we need a set of tests for all the GTE ops.
Do you know if there's any architecture docs for the GTE instructions?  I'd probably want to create an "assembler" like with the VU.
-[Unknown]

@Kingcom If the bit is not set, the CPU throws a coprocessor unusable exception.

Here's the code for reference purposes: https://github.com/jpd002/ps2autotests/tree/gte_test/tests/cpu/gte.
For GTE instructions, there's this documentation that I know of, but I'm not sure about it's completeness: http://psx.rules.org/gte.txt

Thanks a lot you guys :)
There's also confusion about the MDEC unit, which is physically in the CPU and talks to the GPU via DMA. I don't know much more but I wonder if that's also still in IOP. Chances are, it is.
But this GTE finding helps a lot :)

@unknownbrackets I don't expect the IOP GTE to differ from a regular PSX. They use it in PSX mode, after all. People in the PSX dev scene would surely like it though. They're saying GTE isn't very well documented: http://www.psxdev.net/forum/viewtopic.php?f=70&t=551&start=40

Regarding the MDEC, it's prolly the upper left here: https://i.imgur.com/gsxPq5i.jpg :)

Thank you for finding this out guys :) I was pretty sure this was the case, had no proof of it though and subsequently got my addition of it in PCSX2, now I have no reason not to put it back in again for the long quest of PSX emulation :)

@jpd002 These GTE documentations are better
@refractionpcsx2
http://problemkaputt.de/psx-spx.htm#geometrytransformationenginegte
https://github.com/simias/psx-guide
https://github.com/simias/pops-gte
http://www.romhacking.net/documents/124/
https://github.com/ogamespec/psxdev
https://sourceforge.net/projects/mednafen/

By the way is it already known if PS2 has MDEC or not?

Yeh MDEC would be interesting to know or if that is fused to another unit in some way.

https://github.com/simias/psx-hardware-tests/tree/master/tests
https://github.com/simias/rustation/commit/f3f2aff7c8d5aeea52c4dadb88cd705198191087
@jpd002 @unknownbrackets

Reading from 0x1F801824 (which is the MDEC1 register from what I can gather) after writing 0x80000000 (which should reset the MDEC) at that address gives 0x80040000 which appears to be the "initial" value for that register according to the documentation I've read.
I'm not quite familiar with the MDEC, but I'll see if I can come up with a better test.

Thanks for the docs, @ADormant !

I messed with sending some data to the MDEC control register and MDEC data register, and aside from reset, garbage also affects it.
The results are repeatable.  For example, writing 0x01230001 to MDEC command/data changes control to 0x80040001.  This is exactly how Martin describes NOP operating.  I'm not sure if it actually decodes macroblocks, etc., but there appears to be something there indeed.  I'd guess it does function, but could be wrong.
-[Unknown]

The GTE test works in PCSX2 now :)
There's total confusion how to handle hardware reads and writes though.
https://github.com/PCSX2/pcsx2/blob/master/pcsx2/ps2/Iop/IopHwRead.cpp#L310
https://github.com/PCSX2/pcsx2/blob/master/pcsx2/ps2/Iop/IopHwWrite.cpp#L513
DMAs are going to be for SIF2 to handle. You can invoke it with WriteFifoSingleWord() / ReadFifoSingleWord();
Unfortunately, nothing in SIF2 is tested. Total lack of documentation and tests..

Some more PS1 hardware tests
http://psx.amidog.se/doku.php?id=psx:download:cpu
http://psx.amidog.se/doku.php?id=psx:download:gpu
http://psx.amidog.se/doku.php?id=psx:download:gte
http://psx.amidog.se/doku.php?id=psx:download:misc
I don't know how feasible it is to run all them on a PS2. But these tests have been used to compare PS1 emulators http://emulation.gametechwiki.com/index.php/PS1_Tests

Probably possible now on PCSX2, gregory has recently implemented IRX running support https://github.com/PCSX2/pcsx2/commit/c00b427efa9ec22c03e6ad1b6e3f0fe158616c94
this puts the EE idle and runs the IRX directly, we don't make the COP2 bit of the control registers mandatory for GTE support, so it will probably just work lol

The tests I linked are pre-compiled PSX EXEs, which have a different header to IRX files.
PCSX2 crashes when trying to load them.

oh yeh, they're exe's, forgot about that, damn, nevermind, they would probably need to be put on a psx format cd and executed that way for pcsx2, invoking the ps1 emulation, but that's the only way they would execute currently :(


Start at the last image in the browser widget.

This uses new browser widget features and works with virtual folders.
This also gets all users and root items, rather than an arbitrary number.  When there are more users or root items than the arbitrary limit, there was no indication that not all items were loaded.  Here, an excessive number of users or collections could break the UI, but this is unlikely to happen and would at least be an obvious problem instead of appearing to have missing data.

@BryonLewis This works in local testing.  The existing tests cover using the open dialog, but not opening a virtual folder.


Sector Probe counts on F7

Add info to expanded F7 screen displaying the number of friendly and enemy probes in a sector.  This would follow in the same theme currently used to show the helium and tech rocks.  If there's not enough room in the current display for the different probe icons, will need to enlarge the F7 screen to hold them.
Imported from trac ticket #129,  created by Adaven on 07-09-2010 at 04:39, last modified: 08-09-2010 at 04:34

r780
Trac comment by Xynth on 07-21-2010 at 04:29

Just as addition:
Probe count includes Towers (AC Towers, TF Plasma Gens, Rix Pods).
Technically it's correct, but it may confuses other people and my call it more or less a bug.
Trac comment by pkk on 07-23-2010 at 18:27

re-opened to fix the "bug" pkk mentions above and also to draw :  in the team's color instead of  "Probes:"
Trac comment by Imago on 08-09-2010 at 02:51

r926
Trac comment by Imago on 08-09-2010 at 04:34