Dynamics 365 App for Outlook User security role doesn't exist

Hello,
According to this document, in order to enable the Outlook app to users, they must be assigned the security role "Dynamics 365 App for Outlook User" (which is supposed to be available from <IP_ADDRESS>20). I'm on <IP_ADDRESS>48 and that sec. role is not there.
Is it possible that the role is now called "Sales Enterprise, app access"? I've assigned that security role and the app started working.
Cheers

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

ID: b4bb8dcf-9211-591e-4ddc-a82ba53b2807
Version Independent ID: 4b501c46-bd2e-457d-c891-2ebea3e44967
Content: Deploy Dynamics 365 App for Outlook (Dynamics 365 for Customer Engagement apps)
Content Source: ce/outlook-app/deploy-dynamics-365-app-for-outlook.md
Service: crm-online
GitHub Login: @mduelae
Microsoft Alias: mkaur

Update: assigning "Sales Enterprise, app access" doesn't grant access to the Outlook App. Still not working.

@sriharibs - please help.

@nickbrandl
The security role Dynamics 365 App for Outlook User is available from Build <IP_ADDRESS>06. If a user doesn’t have this security role or its underlying privileges, they’ll receive the following error:
“You haven't been authorized to use this app. Check with your system administrator to update your settings.”
We have updated the our docs to reflect this. The changes will go live by end of day today.
Thank you,
Mints


RFP - notesnook

Checklist

[x] The package I am requesting does not already exist on https://chocolatey.org/packages;
[x] There is no open issue for this package;
[x] The issue title starts with 'RFP - ';
[x] The download URL is public and not locked behind a paywall / login;

Package Details
Software project URL :https://notesnook.com/downloads/#otherplatforms
Direct download URL for the software / installer : https://notesnook.com/releases/windows/notesnook_x64.exe
Software summary / short description:
an encrypted note taking app

Co founder of Notesnook here. @pauby what'll be required to push this further?

Co founder of Notesnook here. @pauby what'll be required to push this further?

Can you explain what you mean by 'push this'?

Hey, what I meant is that I'd like for notesnook to be installable through chocolatey. I read the readme and it seems a maintainer is required to take up the whole process. Can I take up the maintainance officially?
Also, it was not very clear about how & where to actually submit the packages. Can you clarify that a bit?

@thecodrr The package doesn't exist at the moment so from that aspect there is nothing to pick up. If you want to submit a package for this then please check out the documentation in the first instance.
If you let us know you'll be picking this up we can change the labels to indicate that.


Image Grid

Current implementations to nicely show multiple images or galleries in wave apps involve quite a bit of javascript and/or HTML & CSS usage. It would be helpful to further abstract that functionality to the wave framework and to add common image displays to speed up the app development process. It would also help to prevent speed issues and to align UX across wave apps.
We are looking for either a Carousel/Lightbox style implementation (https://www.joomforest.com/joomla-extensions/jf-responsive-carousel) or an Image Grid (https://www.w3schools.com/howto/howto_js_image_grid.asp)
Requirements:

Customizable in image width/height, number of images per row/column
Should take a list of image paths as input (open for discussion)
Automatic resizing for speed improvement
Responsive to clicks, e.g. trigger a reload and generate an args id or event
Add mouse hover tooltips per image
(lower priority) ability to show samples from image annotator with annotations (with mouse hover tooltips to show the corresponding classes to the boxes)
(optional) pre-caching

Some designs can be found here. Let's discuss the API prior to implementation. cc @lo5

Proposal
Develop two separate components, Carousel Card and Image Grid Card.
Both open a lightbox (modal with image) when an image is clicked. We could also somehow integrate Image Grid with Carousel Card by using a "View All" button that opens a modal with Image Grid.
Proposed API for Carousel Card
export interface State {
  /** An identifying name for this component. */
  name: Id
  /** List of images to be displayed. */
  images: Image[]
  /** True if the current image should be submitted when the image changes. */
  trigger?: B
}

// Similar to Image Card but with description
/** Create an image. */
export interface Image {
  /** The image title, displayed under the image. */
  title: S
  /** The image description, displayed under the title. */
  description: S
  /** The image MIME subtype. One of `apng`, `bmp`, `gif`, `x-icon`, `jpeg`, `png`, `webp`. Required only if `image` is set. */
  type?: S
  /** Image data, base64-encoded. */
  image?: S
  /** The path or URL or data URL of the image, e.g. `/foo.png` or `http://example.com/foo.png` or `data:image/png;base64,???`. */
  path?: S
  /** The width of the image, e.g. '100px'. */
  width?: S
  /** True if the component should be visible. Defaults to true. */
  visible?: B
}

Questions
@mturoci
Should we display multiple images (pages) in a Carousel?

Do we also need to support this variant?

What about having the title displayed between the image and description instead of using a tooltip?

@dott1718 what do you mean exactly by "Automatic resizing for speed improvement"?

related to #1542

After discussing with @dott1718, we decided to go with Image Grid as of now. Resizing should be done on the Python side though.

As for API I would reuse existing ui.image so the API I would start with would be:
export interface State {
  /** An identifying name for this component. */
  name: Id
  /** List of images to be displayed. */
  images: Image[]
}

Implemetation notes: add virtualization and as a stretch goal create a dynamic grid that minimizes gaps between images of different sizes.

Hi, I would like to work on this issue if it is still available.

You can go for it if you feel like, but it's pretty complex. I would suggest having a look at good first issues if you are first-time contributor to this project.

Hello! I'm working alongside @jding712. We're basing our implementation on this PR: https://github.com/h2oai/wave/pull/1112. One question I had, mostly out of curiosity: how does wave know the connection between the Python side components (i.e. TallStatsCard) with the typescript-side cards (i.e. cards.register('tall_stats', View)?

how does wave know the connection between the Python-side components

We have a generator that creates python API off the TS API. See https://github.com/h2oai/wave/blob/master/tools/wavegen/src/wavegen.ts. Then these objects are serialized and sent over (browser => server, server => browser) via a websocket connection.


multithreaded decoding with multiple sliced bitstream

my bitstream is using 4 slices, i was hoping to get better decoding time by default when using the newest 1.5 version.
however there is no noticable difference between 1 sliced encoded video and 4 sliced.
is there some config value i need to use to enable multithreaded decoding?
i am using the openh264 windows dll inside a node native module.

the decoder does not support multi-thread decoding yet.

oh i missread the release notes. thought it was mentioning multithreaded decoding.
any idea when decoding will be multithreaded?

or could you point me in the direction of where multithreaded decoding could be implemented? maybe i could help?

@HaiboZhu for the question.

BTW, @soliton4 thanks a lot for the intention to help!

@HaiboZhu @sijchen i got an agreement from my employer that i could at least try to contribute multithreaded decoding.
i would need a few pointers thou because i am not quite sure how slices are implemented in h264 stream and how much the threads need to depend on each other.
any chance you could help me out here?

Sorry for late reply. We have no plan about multi threads decoding recently. Thanks for your contribution on openh264 project. We can discuss the details by email. My email address is<EMAIL_ADDRESS>

@HaiboZhu  and @soliton4,
We understood that multi-threads decoding wasn't planned to be supported at openh264 library but might you please share us multithreaded decoding implementation?
It would be great help for us in digging to performance matter.
My email is<EMAIL_ADDRESS>Thanks in advanced,
Hung


switch to hex encoding

The base36 links haven't really been used so let's just switch to a pure hex implementation.
cc @karissa @joehand @mafintosh

published as 3.0.0


Change from Google Maps to Leaflet

@Dragonius could you please help me test this and let me know if you have any issues?
Closes #15

i start testing on weekend as i got lot of school on "normal days"

Looks ok, but all map markers disapier as i put mouse on map.

As i got lot of planes , there is same marker and its gets pretty badlly cluttered.
Also
well i have error with DCSUDPMissionDataExport.lua
2024-09-22 13:08:43.244 ERROR   SCRIPTING (Main): Mission script error: [string "C:\Users\kayttaja\Saved Games\DCS.server\Scripts/DCSUDPMissionDataExport.lua"]:127: attempt to call method 'getName' (a nil value)
stack traceback:
[C]: in function 'getName'
[string "C:\Users\kayttaja\Saved Games\DCS.server\Scripts/DCSUDPMissionDataExport.lua"]:127: in function 'onEvent'
[string "Scripts/World/EventHandlers.lua"]:13: in function <[string "Scripts/World/EventHandlers.lua"]:11>
and
2024-09-22 13:36:57.182 ERROR   SCRIPTING (Main): Mission script error: [string "C:\Users\kayttaja\Saved Games\DCS.server\Scripts/DCSUDPMissionDataExport.lua"]:127: attempt to call method 'getName' (a nil value)
stack traceback:
[C]: in function 'getName'
[string "C:\Users\kayttaja\Saved Games\DCS.server\Scripts/DCSUDPMissionDataExport.lua"]:127: in function 'onEvent'
[string "Scripts/World/EventHandlers.lua"]:13: in function <[string "Scripts/World/EventHandlers.lua"]:11>
problem is that DCSUDPMissionDataExport.lua have some nil problems.
Im builting little fork-version that deals thoose problems

and i like when i can click on marker and get data that says


Paginate qa

Please review, but do not merge.
For testing, you'll want to change https://lookup.ld4l.org/authorities in apidoc.json to https://lookup-stg.ld4l.org/authorities.

The necessary QA changes are now live, so this can be tested.


Allow pane-based root elements

Given the config
name: foo
root: ~/src
windows:
  alpha:
    root: ~/src/alpha
    panes:
      - $COMMAND1
      - $COMMAND2

Seems rather handy instead of typing cd every time, i might create this later this weekend

Could you change the directory using cd in the shell e.g.:
name: foo
root: ~/src
windows:
  - alpha:
      root: ~/src/
      panes:
        - $COMMAND1
          - cd ./alpha
        - $COMMAND2
          - cd ./beta

How to make every pane in the same window have its own starting directory?


Comments plugin conflicts with Bob, doesn't show comments button

Installing the comments plugin (the basic one that comes with TiddlyWiki) doesn't work. It works fine on a regular TiddlyWiki installation, so the issue is with Bob.
Both Bob and the comments plugin provide additions to the tiddler view template through $:/tags/ViewTemplate. Most likely, these components conflict in some manner. On Bob's end, the relevant shadow tiddler is $:/plugins/OokTech/Bob/template/ConflictTemplate, while the comments plugin uses $:/plugins/tiddlywiki/comments/header-view-template-segment and $:/plugins/tiddlywiki/comments/footer-view-segment.
I don't fully understand how these files interact, so that's the best I can do right now.

I am running (check any that apply, put an x inside the [ ] to check a box, like this: [x]):

[ ] Windows
[ ] OSX
[x] Linux
[ ] Other

and using

[ ] The nodejs version
[x] The single file executable

Before posting I read issue guidelines and:

[x] I am using the newest version
[x] The answer to my question isn't listed in the documentation or this isn't
a question
[x] This is not a duplicate issue
[x] I have not done anything that required me to set acceptance to
I Will Not Get Tech Support For This

It is working for me - using version 1.6.2r1 - OSX Big Sur

I've got the same on a Windows installation.
At least we can rule out that the OS isn't the issue.
Latest BobExe version.
Brand new wiki.
Tested enabling the Comments plugin through Bob and through the Plugin Browser.
Same thing.
The divider appears in Tiddlers, but nothing beneath it.


var2vcf_paired.pl excludes simultaneous mutations

I tried to downloading the latest version of VarDict. To call, tumor-normal variants, I ran VarDict and testsomatic.R. After running the first two steps, the position I am interested in, which has two different variants, has both variants in the VCF. However, after I run var2vcf_paired.pl, only one of them (the higher frequency one?) is reported.

Never mind, I didn't see the -A flag.


Verify eksarelease exists on mgmt cluster

Issue #, if available:
Description of changes:
Testing (if applicable):
Documentation added/planned (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve


Using performance.eventCounts instead of performance.interactionCount

I couldn't find any reference to performance.interactionCount on web (except one W3 document). Also, both Google Chrome and Firefox don't seem to have it -> both returns undefined.
Suggesting to use the performance.eventCounts property instead of interactionCount to getInteractionCount.

The one w3 document I assume is the Event Timing spec?
Chrome has implemented this feature, but it is still behind a feature flag in Stable (or via experimental web platform features).  We expect to ship it in stable.
eventCounts is not possible to use as a way to estimate interactionCount (and its the reason Event Timing added interactionCount).  (You can also find lots of discussion in the Web Perf WG for this feature).

The single biggest flaw of eventCount is that it does not differentiate when e.g. pointer events actually become a scroll, or how keyboard events might trigger clicks, or how accessibility or IME interfaces might dispatch events in different orders...
You could try to approximate interactionCount but using something like the count of clicks - count of pointerCancel, and an earlier version of web-vitals.js actually tried that (especially since this is supported on Firefox).  Unfortunately it was off and unreliable on all browsers.

that's a very clear explanation, thanks @mmocny!


Managing result targets from within luigi

Hey, I've been using luigi to run some ETL pipelines, and have run into some minor issues with managing deployments. I was wondering how others would handle the situation.
Ok, so the issue is that during development, sometimes the underlying code for each etl step might change. For example, we might add a new column to an intermediate table, or change the data source for an existing column.
Locally, during development, this is pretty trivial to solve as I can just go and delete the offending task results, those jobs will be rerun, and they handle the updates to the rows themselves.
On production however, this becomes a bit tricker. We are using Docker with a EBS backing for persistent task logs, and have a security-first minded policy that no one should ever need to ssh into a running container or have free access to docker exec on the container. So, I'm trying to figure out how to manage the deletion/invalidation of those task logs from within luigi itself. Ideally i would be able to tell a central scheduler running on the container 'hey forget about these particular jobs', but given the separation of execution, my local workers won't be able to see the relevant log files to delete/archive.
Has anyone run into a similar issue? How did you solve it?

When you say "task logs" and "task results". Do you mean "task ouput()s"?
Do you mean you are not allowed to delete files on Amazon EBS?

yes, i do mean the output()s. Sorry for any confusion.
EBS is not intended to be mounted in multiple places simultaneously, so without ssh'ing into the container, or having some secondary system to manage the mount switching for a production level system, accessing it directly is impossible. What I'm trying to do is avoid having to build and manage a second system.

And you mean some way to delete downstream results given some task?
Yeah that sounds pretty useful. Not sure how to build it but definitely would be cool

Yeah, exactly. Something where I could communicate to the central scheduler 'hey, delete or archive that job output'.
The issues I've come up with when thinking about how to get this done are:

how to have a remove worker have access to the job files
authorization. Right now there's no form of auth in luigi, and that's probably fine as there is not much havok a person could cause. If you can start to delete job outputs however, this could become a real concern.

this could work with the "assistant" feature somehow (which has been an experimental feature for a long long time now)

basically the scheduler would tell the assistant to delete the output of some task
this also requires extending the target class with a "delete" method, but should be doable

oh. I hadn't the the assistant feature before!
I'm assuming you are referring to this: http://luigi.readthedocs.org/en/latest/api/luigi.interface.html?highlight=assistant#luigi.interface.core.assistant
does that mean you can have the task executed on the scheduler rather than on a separate worker?

kind of... assistants do not schedule any tasks and they can execute any task. so the schedule doesn't execute anything. it's a step towards an architecture where scheudling and execution is separated, and the scheduler can "farm out" work

ah, so i guess not the same process as the scheduler, but executed on the same box?
I'll play around with it and see what I can come up with.

it can be executed on any box

closing this issue.

[x] It has been inactive for +4 months.
[ ] It's not about luigi core, so not as many users are affected about this.
[ ] The change seems quite big, it's unlikely to be sporadically picked up.
[x] The owner haven't responded or disappeared.
[ ] I don't understand what this issue is about.
[ ] There exists a reasonable workaround for this.
[ ] We need to check if this hasn't been fixed by now (for old issues).
[ ] This is kind of by design and not a bug.
[ ] Resolving this would probably add a lot of complexity.

Every open issue adds some clutter, and we try to make the issues fewer and make it easier for new collaborators to find. Currently we try to close any issue that meets the first checkbox + one other.
Feel free to reopen this issue at any point if you have the intent to continue to work this. :)


Clean up MedusaBackupJobs and propagate MedusaTask labels (#1339)

What this PR does:
Backports the fixes from #1339 into the main branch
Which issue(s) this PR fixes:
Fixes #1334
Checklist

[ ] Changes manually tested
[ ] Automated Tests added/updated
[ ] Documentation added/updated
[ ] CHANGELOG.md updated (not required for documentation PRs)
[ ] CLA Signed:  DataStax CLA

Closing in favor of #1347


[backport] New style copy function

Backport of #3419

I noticed that this PR has not been backported during working on #3974 backport.

LGTM!


Fix URL and changefeed keys

Just a couple fixes to make the example run correctly.

Hey, sorry I completely missed this PR! It also fixes #10. Thanks!


.gitlab-ci.yml for symfony

Where can i find an example of .gitlab-ci.yml for a symfony2 application?
Thank you for your help.

Thanks for your interest in GitLab. We don't use the issue tracker for support requests and configuration questions. Please use the support forum, Stack Overflow, the #gitlab IRC channel on Freenode or the http://about.gitlab.com paid services for this purpose. Have a look at the contribution guidelines for more information.


Homework #7 from Aurora

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 5

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/Lesson7.cs  3
- Src/BootCamp.Chapter/BalanceStats.cs  10
- Src/BootCamp.Chapter/TextTable.cs  8

Clones added
============
- Src/BootCamp.Chapter/BalanceStats.cs  9

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 2

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/Lesson7.cs  3
- Src/BootCamp.Chapter/BalanceStats.cs  9
- Src/BootCamp.Chapter/TextTable.cs  8

Clones added
============
- Src/BootCamp.Chapter/BalanceStats.cs  7

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- Src/BootCamp.Chapter/Lesson7.cs  3
- Src/BootCamp.Chapter/BalanceStats.cs  9
- Src/BootCamp.Chapter/TextTable.cs  8

Clones added
============
- Src/BootCamp.Chapter/BalanceStats.cs  7

See the complete overview on Codacy


Shrinking memory externally with wasmtime_memory_shrink()

Feature
While memory.discard isn't here yet, we could use a way to shrink Wasm module memory without having to reinitialise it. I propose a Wasmtime function to simply shrink the linear memory.
Context
I have a C library with which I can make native host programs that call Wasm reactor module functions sequentially using Wasmtime and the modules have access to one C function to send commands back to the host. Lots of things can be done this way, as it is I could even shrink memory by reinitialising it, but there could be a better way. In many cases I can even see the exact contents of a module's heap from the host so I can see how much free space there is at the end of the heap.
Benefit
In some situations a Wasm module can temporarily need lots of memory. As it is we're not really able to then release that memory without reinitialising the module. If we had a way to simply directly shrink the linear memory buffer to a given number of pages that would go a long way. In my case the host could shrink it either by user input, its own determination (many of my modules use an allocator that allows the host to clearly identify all the allocations on the module's heap) or the module could even send a message to the host requesting for the memory to be shrank either right away or after wasmtime_func_call() is done.
Implementation
I think a simple function (in terms of the C API, I don't know about the Rust side) like wasmtime_error_t *wasmtime_memory_shrink(wasmtime_context_t *store, const wasmtime_memory_t *memory, uint64_t new_size, uint64_t *prev_size) would do nicely, and it would very simply just shrink the linear memory buffer. We have wasmtime_memory_grow() so why not wasmtime_memory_shrink().
Alternatives
Without this I would wait for the module's function to be done executing, copy its memory up to the new size somewhere else, reinitialise the module so it has a new memory, grow it to the desired size and copy the copy back into the module's new linear memory. My proposal would make things smoother. Even better if it's something effectively just like calling realloc() on a buffer so that shrinking regularly by a page or two would happen in no time.

allow the OS to reclaim the physical pages while leaving the virtual memory reservation in place.

This brings to mind an interesting standards-compliant option: we could, in theory, implement memory zeroing operations (memory.fill from the bulk memory opcodes) with madvise, if the specified range covers whole pages and is otherwise large enough for the syscall+TLB maintenance overhead to be worth it. This way, one could have a long-running instance with a large memory but still return physical memory to the OS in a way that has well-defined semantics (memory becomes zeroes).

memory.discard is essentially an always-page-aligned (memory.fill (i32.const 0)) and is intended to be implemented that way. We're starting to get into the weeds a bit here, and more into the standards realm than the implementation realm, but part of the problem was that windows lacks an atomic equivalent to madvise(DONT_NEED) (you need two syscalls) which means that it doesn't compose with threads and shared memories. I guess you could force all Wasm to be interruptible, set a flag or whatever to pause all other threads, and then do the pair of syscalls once they are all paused, but that's a bit of a nightmare...

Sure -- I guess my general point was that we could in theory implement this optimization today (by recognizing an aligned memory.fill of zeroes in our libcall) without depending on a future Wasm proposal coming through the stages. In other words, my point is that it doesn't need to move into the standards realm :-) Though in the fullness of time, encoding the intent more explicitly is better, I would agree.
(And the beauty of having well-defined semantics means that on Windows we could still do a memset, at the cost of performance... I would personally argue for that over trying to do a pause-the-world thing and the complexity that brings.)

The Wasm language semantics dictate that a linear memory cannot shrink. If Wasmtime added a memory-shrinking API, that would violate the Wasm language semantics. As a project, we care deeply about standards compliance and therefore we consider all deviations from the standard language semantics to be bugs and would never intentionally introduce APIs that enable such deviations. The more that Wasm engines deviate from standards the less portable Wasm becomes in practice, toolchains need to know which engine they are targeting and what that engine's nonstandard behavior is, etc...

I understand the logic, however this is a case where seemingly sound logic leads to arguing in favour of the worst option. This is the worst option because it involves dancing around a basic problem in absurd and inefficient ways (recreating the memory but smaller, reinstantiating the module, actually reinitialising the module from the start, not actually shrinking memory but somehow telling different OSes that it's not really needed anymore) when simply we should be able to shrink memories and it shouldn't involve copy operations or anything like that, we should just be able to resize memories externally. If I somehow implemented the suggested function in my library outside of Wasmtime (I don't think I'd know how to do this sadly, I don't suppose I can just realloc() the buffer and change a couple of variables) then me, the people who might want to work with my library and the end users would all be better off for it, so while I understand why you wouldn't want this inside Wasmtime, it would be a good thing if we were able to do this on our own anyway.

The more that Wasm engines deviate from standards the less portable Wasm becomes in practice, toolchains need to know which engine they are targeting and what that engine's nonstandard behavior is, etc...

I mostly disagree with this because what I'm proposing isn't something that affects Wasm modules and how they're made in the sense that it's about the host unilaterally shrinking memory at its own risk. From the point of view of the Wasm module imagine this: your allocator grows the memory with memory.grow, then later it frees some memory which does nothing. Then at some point based on its own determinations the host decides to shrink the memory, and when the allocator uses memory.size again to check if it should (re-)grow the memory it sees the new smaller memory size, and if it's too small for the new buffer it's trying to allocate it uses memory.grow again, all as if the memory was never larger in the first place. I understand why something like this would make people in charge of setting things in stone squeamish, after all a careless module programmer could store the memory size locally without consulting memory.size every time and fail to re-grow memory when needed, which sadly is probably why we won't get a good official way to shrink memory for many years, but this doesn't lead to having to worry about which engine a module will work on while programming the module, you simply shouldn't assume things about memory.size, which unfortunately is hampered in a decidedly not future-proof way by official wording claiming that memories can never shrink (because one day either they will shrink or people will have moved on to something that isn't WebAssembly, so we might as well making modules while understanding right now that memories will probably one day be able to be shrunk without the module directly asking for it).
If you think about it this way as opposed to thinking about an active memory.discard that the module would have to ask for then from the point of view of making Wasm modules it's all a matter of being aware that memory.size can report a smaller size than before, which of course is contrary to what the specification claims, but the current specification will eventually be wrong about this and people should simply understand the potential non-monotonicity of memory.size right now. I think that an important aspect of my proposal is that the function I propose is to be used by the host at its own risk, because there's no general way to guarantee that the memory won't be shrunk too much, but that's okay because it's incumbent upon the users of this function to make sure they do this safely (in my case I can do this safely when my host looks into the module's allocator's CITAlloc table and sees where the last buffer ends and this allocator can deal with the memory being shrunk externally). The alternative to having this function to be used at our own risk is to force us to do absurd slow things that aren't any safer (it's not any safer to reinstantiate the module, grow the memory and copy back the contents of the memory because it doesn't solve the problem of the module potentially not knowing that the memory got smaller, the only way around this would be to truly reinitialise everything which is really absurd because of how slow it could be and how you would have to design everything to make sure that works in your case).

That said, there are some workarounds:

First, I would ask: do you actually need to shrink memory? There will be a large virtual memory reservation up front for the Wasm linear memory, but if you aren't actually touching the whole linear memory, then physical pages are never actually mapped to most of those virtual pages.

The whole linear memory will be touched because it only gets enlarged as a result of allocations on the heap, and we can presume that allocations aren't done for nothing and every page will be touched at some point. Another detail is that my allocator writes 0xC5 bytes to the heap when enlarging for the sake of heap cleanliness and readability (my allocator is geared towards visualisation and providing extra information) so the whole thing is touched right away. However once it's freed it doesn't get touched anymore.

If you are touching most of the memory as part of performing some "task", and then want to reset the memory for the next "task", then I would suggest throwing away the Instance and its Store and simply creating a new Store and Instance for the next "task".

While that's an interesting idea it's only applicable in a subset of situations and it changes how everything works, just to avoid shrinking memory. It wouldn't work so well if using lots of memory is part of the initialisation of the module and not what it does after initialisation, unless you reinstantiate after the actual internal initialisation, but once again it all comes down to a roundabout way of shrinking memory. Generally just imagine you have something like MS Paint as a Wasm module, your image is the last buffer in the heap and you just resized your image from 20,000 x 15,000 pixels to 1000 x 750, you wouldn't want to reinstantiate anything, you'd want the same things in memory but you wouldn't need a bunch of what you used before.

As a refinement to your described alternative: You can have your Wasm import, rather than define, its memory. Implement a MemoryCreator that uses some region of memory that you mmaped yourself. Reinstantiate for each "task" and in between instantiations, madvise(DONT_NEED) the region of memory beyond the initial heap image to zero it out and allow the OS to reclaim the physical pages while leaving the virtual memory reservation in place. Note that this is effectively equivalent to (2) except that it is less portable, requires a bunch of fiddly virtual memory management on your part, and doesn't benefit from temporal safety because not all of the memory is reset between tasks.

My library is meant to be maximally portable because to me the whole point of Wasm is that it can run almost anywhere, even where I didn't think it would run, so whatever I do has to work anywhere Wasmtime can work.

@Photosounder I might encourage you to approach this problem with some more curiosity to different thoughts and opinions about how to solve it. Describing alternatives as "absurd", calling existing modules as "careless", and saying that all existing modules should "simply" do one thing at least gives the impression to me that you're not taking any positions seriously other than your own. Being a maintainer of a project involves balancing concerns all the time, for example neither bug reports nor maintainers are 100% correct all the time, so solutions often require balance and understanding from all parties involved. If you're only interested in solving this problem in one way and are unwilling to engage in design then this is unlikely to see a solution.

@Photosounder I might encourage you to approach this problem with some more curiosity to different thoughts and opinions about how to solve it. Describing alternatives as "absurd", calling existing modules as "careless", and saying that all existing modules should "simply" do one thing at least gives the impression to me that you're not taking any positions seriously other than your own. Being a maintainer of a project involves balancing concerns all the time, for example neither bug reports nor maintainers are 100% correct all the time, so solutions often require balance and understanding from all parties involved. If you're only interested in solving this problem in one way and are unwilling to engage in design then this is unlikely to see a solution.

I apologise for my colourful language, I've always been a bit blunt, mostly by non-French standards (in some countries people only ever say nice-sounding things, so culture shock makes things worse). When I say that something is absurd I don't mean it as an attack, I mean that doing something complicated and slow to avoid doing something simple and fast is absurd because that's what it is.

I mean that doing something complicated and slow to avoid doing something simple and fast is absurd because that's what it is.

Hi @Photosounder -- I can appreciate your frustration here, seeing inefficiency that doesn't seem necessary when considering your use-case, but echoing Alex above, I don't think it's coming off in a particularly productive way. I want to try to help illustrate "the other side" -- what are the constraints we are considering here? (Basically: please assume we're acting rationally, and wouldn't do something "absurd" without reasons forcing us to.)
The main constraint we deal with in this context is standards-compliance. We are working in the context of an umbrella organization that believes in open standards and cross-compatibility. We believe strongly that if we deviate from the standards by enabling other functionality, we could lead the ecosystem down paths that are globally worse than if we held back. This is because of the practical dynamics of how the community, the tools and their users work.
For example: say that we enabled an extension to shrink memory, and it became used and essential by common guest-plugin frameworks. Other Wasm engines might then feel pressure to add this feature too. It might interact in strange ways with other Wasm features that exist now or are under consideration -- multithreading makes this interesting in particular, as alluded to above, because of the possibility of a TOCTOU bug where one thread checks in bounds, another shrinks, then the first accesses (now out of bounds).
The way that such interactions are usually discussed is in the context of the Wasm Community Group (CG), which is part of the standards body that specifies Wasm under W3C. You may think this is absurd or too slow or ... but it's important to give all features their fair discussion to find issues like this. There is a history of late-changing realizations in some features that might not have been caught if things had been baked in and stuck forever too early.
 If we do that, we circumvent the whole process and reduce the number of options available. This could mean that we never get to ship other features because they would be incompatible / cannot be combined with the semantics we're now stuck with. Or it could mean that we have to deprecate the thing and ship a new version of the thing that is compatible, but support the old version "forever" because it's in wide use, which adds to our maintenance and testing costs. Either one is bad.
For all these reasons, when we have a need where the existing Wasm standard doesn't allow for a use-case to be expressed efficiently, we go to the standards group and propose a fix. @fitzgen actually has a great recent example with his custom-page-sizes proposal: it allows systems with tiny memories to express those tiny memories in standard Wasm, without relying on proprietary extensions, and all its interactions with the rest of Wasm were thoroughly discussed. Now that it's a standard proposal, we can integrate it, and we have.
I'd encourage you to see if you can use one of the workarounds we've discussed above; in parallel, please do feel free to engage in the Wasm CG's processes and voice your support for the "memory control" proposal or others as needed. Thanks!

I mean that doing something complicated and slow to avoid doing something simple and fast is absurd because that's what it is.

Hi @Photosounder -- I can appreciate your frustration here, seeing inefficiency that doesn't seem necessary when considering your use-case, but echoing Alex above, I don't think it's coming off in a particularly productive way. I want to try to help illustrate "the other side" -- what are the constraints we are considering here? (Basically: please assume we're acting rationally, and wouldn't do something "absurd" without reasons forcing us to.)
The main constraint we deal with in this context is standards-compliance. We are working in the context of an umbrella organization that believes in open standards and cross-compatibility. We believe strongly that if we deviate from the standards by enabling other functionality, we could lead the ecosystem down paths that are globally worse than if we held back. This is because of the practical dynamics of how the community, the tools and their users work.
For example: say that we enabled an extension to shrink memory, and it became used and essential by common guest-plugin frameworks. Other Wasm engines might then feel pressure to add this feature too. It might interact in strange ways with other Wasm features that exist now or are under consideration -- multithreading makes this interesting in particular, as alluded to above, because of the possibility of a TOCTOU bug where one thread checks in bounds, another shrinks, then the first accesses (now out of bounds).
The way that such interactions are usually discussed is in the context of the Wasm Community Group (CG), which is part of the standards body that specifies Wasm under W3C. You may think this is absurd or too slow or ... but it's important to give all features their fair discussion to find issues like this. There is a history of late-changing realizations in some features that might not have been caught if things had been baked in and stuck forever too early.
 If we do that, we circumvent the whole process and reduce the number of options available. This could mean that we never get to ship other features because they would be incompatible / cannot be combined with the semantics we're now stuck with. Or it could mean that we have to deprecate the thing and ship a new version of the thing that is compatible, but support the old version "forever" because it's in wide use, which adds to our maintenance and testing costs. Either one is bad.
For all these reasons, when we have a need where the existing Wasm standard doesn't allow for a use-case to be expressed efficiently, we go to the standards group and propose a fix. @fitzgen actually has a great recent example with his custom-page-sizes proposal: it allows systems with tiny memories to express those tiny memories in standard Wasm, without relying on proprietary extensions, and all its interactions with the rest of Wasm were thoroughly discussed. Now that it's a standard proposal, we can integrate it, and we have.
I'd encourage you to see if you can use one of the workarounds we've discussed above; in parallel, please do feel free to engage in the Wasm CG's processes and voice your support for the "memory control" proposal or others as needed. Thanks!

Thank you for explaining your point of view. I can see how you're right to reject my proposal. In a way there's a natural conflict. You're right to not create problems by going against the standard, I'm right to ask for what would benefit me, and the people in charge of the standard are right to be cautious about how they're changing their standard. And as you said for me it's annoying that something technically simple that would solve a problem would be denied in favour of something technically much more twisted. In a way my mistake is to focus on the immediate technical aspect. But also it really feels like something that should be directly solved in some way, even intuitively it feels wrong that something can only grow but never shrink.
Which brings me to an idea I just had. Since you guys can't add a function that contradicts the standard, maybe you can add a function that doesn't contradict the standard, yet solves the problem on demand. I've been focusing on actually shrinking the memory because from a technical point of view this is simple and trivial to implement in Wasmtime, but since we can't actually do this for all the reasons outlined we could have a function much like what I suggested but instead of actually shrinking the memory it could mark memory pages as committed (please note that I don't know much about the topic of directly dealing with pages in that kind of way, so not only do I not fully appreciate the technical feasibility of this but also that's why I'd prefer if it was done by Wasmtime so I wouldn't have to write multi-platform code to do this myself) which in practical terms would (I suppose) adequately deal with large amounts of memory becoming unused.

I think adding something like a wasmtime::Memory::discard[^0] host API that is roughly equivalent to the proposed memory.discard instruction (i.e. semantically zeroes, always page aligned, always page multiple, uses the platform version of madvise(DONT_NEED) under the covers) is very doable. We will want to be careful with how we write the docs and all that so that its uses and trade offs are clear for users (including the implication of additional IPIs).
[^0]: Or maybe call it wasmtime::Memory::zero_and_decommit or something. Feel free to bikeshed...
We wouldn't implement this for wasmtime::SharedMemory because of the atomicity issues on Windows.
And probably we would want it to fail for memories that use a custom page size.
Would this address your needs @Photosounder?
(Aside: this is a nice example of how being curious and open can lead to new ideas, potentially better than any initial proposal, that no one was originally considering. Thanks everyone for contributing to this thread!)

I think adding something like a wasmtime::Memory::discard1 host API that is roughly equivalent to the proposed memory.discard instruction (i.e. semantically zeroes, always page aligned, always page multiple, uses the platform version of madvise(DONT_NEED) under the covers) is very doable. We will want to be careful with how we write the docs and all that so that its uses and trade offs are clear for users (including the implication of additional IPIs).
We wouldn't implement this for wasmtime::SharedMemory because of the atomicity issues on Windows.
And probably we would want it to fail for memories that use a custom page size.
Would this address your needs @Photosounder?
(Aside: this is a nice example of how being curious and open can lead to new ideas, potentially better than any initial proposal, that no one was originally considering. Thanks everyone for contributing to this thread!)
Footnotes

Or maybe call it wasmtime::Memory::zero_and_decommit or something. Feel free to bikeshed... ↩

Yes this sounds like my latest suggestion, so this would suit me quite well in the sense that at least this would prevent large unused memories from being a practical problem. This just made me read about memory.discard again and I just realised that it isn't about shrinking the memory at all, which means there's no proposal that involves the possibility of actually shrinking memories.
As for the name, if it follows the same principle as memory.discard it makes sense to call it the same, but "decommit" is more descriptive. I'd leave "zero_and_" out because perhaps more descriptive than it truly needs to be about how it works (I guess it's better to call a function after the general idea of its function rather than strictly what it does, and after all how it does things could change, but the idea behind it doesn't).

I've updated the issue title to reflect the new intentions here.
@Photosounder are you interested in trying your hand at implementing this feature?

I've updated the issue title to reflect the new intentions here.
@Photosounder are you interested in trying your hand at implementing this feature?

Thanks, but I don't know Rust at all and like I said the topic of dealing with OS pages is new to me so it's best left to someone competent 😉


option '-configuration' may only be provided once

New Issue Checklist

[ ] Updated fastlane to the latest version
[ ] I have read the Contribution Guidelines

Issue Description
my lane script for Inhouse is like this,and it works well when I was in fastlane[version 108],when I update to version 110.it breaks.
gym(scheme: "Mogujie4iPhone-WithoutWatch",use_legacy_build_api: true,output_directory:"./build",archive_path:"./build/Mogujie4iPhone.xcarchive",configuration:"CI")

$ set -o pipefail && xcodebuild -workspace ./Mogujie4iPhone.xcworkspace -scheme Mogujie4iPhone-WithoutWatch -configuration CI -configuration 'CI' -destination 'generic/platform=iOS' -archivePath ./build/Mogujie4iPhone.xcarchive archive | tee /Users/mogujie/Library/Logs/gym/Mogujie4iPhone-Mogujie4iPhone-WithoutWatch.log | xcpretty
Environment
[19:39:04]: Generating fastlane environment output, this might take a few seconds...
🚫 fastlane environment 🚫
Stack

Key
Value

OS
10.12

Ruby
2.2.4

Bundler?
false

Git
git version 2.9.3 (Apple Git-75)

Installation Source
/Users/mogujie/.rvm/rubies/ruby-2.2.4/bin/fastlane

Host
Mac OS X 10.12 (16A323)

Ruby Lib Dir
/Users/mogujie/.rvm/rubies/ruby-2.2.4/lib

OpenSSL Version
OpenSSL 1.0.2j  26 Sep 2016

Is contained
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
8.1

System Locale

Variable
Value

LANG
zh_CN.UTF-8
✅

LC_ALL

LANGUAGE

fastlane files:
No Fastfile found
No Appfile found
fastlane gems

Gem
Version
Update-Status

credentials_manager
0.16.2
✅ Up-To-Date

spaceship
0.37.0
🚫 Update availaible

fastlane_core
0.57.1
✅ Up-To-Date

deliver
1.15.1
✅ Up-To-Date

snapshot
1.16.3
🚫 Update availaible

frameit
3.0.0
✅ Up-To-Date

pem
1.4.0
✅ Up-To-Date

cert
1.4.4
✅ Up-To-Date

sigh
1.11.2
✅ Up-To-Date

produce
1.3.0
🚫 Update availaible

gym
1.12.0
🚫 Update availaible

pilot
1.12.1
✅ Up-To-Date

scan
0.14.1
🚫 Update availaible

supply
0.7.1
✅ Up-To-Date

match
0.11.0
✅ Up-To-Date

screengrab
0.5.5
🚫 Update availaible

fastlane
1.110.0
✅ Up-To-Date

Loaded fastlane plugins:
No plugins Loaded
Loaded gems

Gem
Version

executable-hooks
1.3.2

bundler-unload
1.0.2

rubygems-bundler
1.4.4

bundler
1.13.6

highline
1.7.8

commander
4.4.0

terminal-table
1.4.5

json
1.8.1

multipart-post
2.0.0

faraday
0.9.2

faraday_middleware
0.10.0

dotenv
2.1.1

net-ssh
3.2.0

net-sftp
2.1.2

plist
3.1.0

rubyzip
1.1.7

security
0.1.3

krausefx-shenzhen
0.14.11

slack-notifier
1.5.1

CFPropertyList
2.3.3

claide
1.0.1

colored
1.2

nanaimo
0.2.2

xcodeproj
1.4.1

rouge
1.11.1

xcpretty
0.2.4

terminal-notifier
1.7.1

public_suffix
2.0.4

addressable
2.5.0

credentials_manager
0.16.2

multi_xml
0.5.5

unf_ext
<IP_ADDRESS>

unf
0.1.4

domain_name
0.5.20161021

http-cookie
1.0.3

faraday-cookie_jar
0.0.6

fastimage
1.6.8

xcode-install
2.0.8

word_wrap
1.0.0

multi_json
1.12.1

babosa
1.0.2

excon
0.54.0

gh_inspector
1.0.2

fastlane_core
0.57.1

mini_magick
4.5.1

xcpretty-travis-formatter
0.0.4

uber
0.0.15

representable
2.3.0

retriable
2.1.0

mime-types-data
3.2016.0521

mime-types
3.1

hurley
0.2

little-plugger
1.1.4

logging
2.1.0

jwt
1.5.6

memoist
0.15.0

os
0.9.6

signet
0.7.3

googleauth
0.5.1

httpclient
<IP_ADDRESS>

google-api-client
0.9.20

i18n
0.7.0

thread_safe
0.3.5

tzinfo
1.2.2

minitest
5.4.3

activesupport
<IP_ADDRESS>

generated on: 2016-11-26

Using legacy build system - waiting for radar to be fixed: https://openradar.appspot.com/radar?id=4952000420642816
[19:51:57]: $ xcodebuild -list -workspace ./Mogujie4iPhone.xcworkspace -configuration CI
[19:52:00]: $ xcodebuild clean -showBuildSettings -workspace ./Mogujie4iPhone.xcworkspace -scheme Mogujie4iPhone-WithoutWatch -configuration CI
+----------------------+----------------------------------+
|                 Summary for gym 1.12.0                  |
+----------------------+----------------------------------+
| scheme               | Mogujie4iPhone-WithoutWatch      |
| configuration        | CI                               |
| use_legacy_build_api | true                             |
| output_directory     | ./build                          |
| archive_path         | ./build/Mogujie4iPhone.xcarchive |
| workspace            | ./Mogujie4iPhone.xcworkspace     |
| destination          | generic/platform=iOS             |
| output_name          | Mogujie4iPhone                   |
| clean                | false                            |
| silent               | false                            |
| buildlog_path        | ~/Library/Logs/gym               |
| xcode_path           | /Applications/Xcode.app          |
+----------------------+----------------------------------+
[19:52:03]: $ set -o pipefail && xcodebuild -workspace ./Mogujie4iPhone.xcworkspace -scheme Mogujie4iPhone-WithoutWatch -configuration CI -configuration 'CI' -destination 'generic/platform=iOS' -archivePath ./build/Mogujie4iPhone.xcarchive archive | tee /Users/mogujie/Library/Logs/gym/Mogujie4iPhone-Mogujie4iPhone-WithoutWatch.log | xcpretty
[19:52:04]: ▸ xcodebuild: error: option '-configuration' may only be provided once
[19:52:04]: ▸ Usage: xcodebuild [-project ] [[-target ]...|-alltargets] [-configuration ] [-arch ]... [-sdk [|]] [-showBuildSettings] [=]... []...
[19:52:04]: ▸ xcodebuild [-project ] -scheme  [-destination ]... [-configuration ] [-arch ]... [-sdk [|]] [-showBuildSettings] [=]... []...
[19:52:04]: ▸ xcodebuild -workspace  -scheme  [-destination ]... [-configuration ] [-arch ]... [-sdk [|]] [-showBuildSettings] [=]... []...
[19:52:04]: ▸ xcodebuild -version [-sdk [|] [] ]
[19:52:04]: ▸ xcodebuild -list [[-project ]|[-workspace ]] [-json]
[19:52:04]: ▸ xcodebuild -showsdks
[19:52:04]: ▸ xcodebuild -exportArchive -archivePath  -exportPath  -exportOptionsPlist
[19:52:04]: ▸ xcodebuild -exportLocalizations -localizationPath  -project  [-exportLanguage ...]
[19:52:04]: ▸ xcodebuild -importLocalizations -localizationPath  -project
[19:52:04]: ▸ Options:
[19:52:04]: ▸ -usage                              print brief usage
[19:52:04]: ▸ -help                               print complete usage
[19:52:04]: ▸ -verbose                            provide additional status output
[19:52:04]: ▸ -license                            show the Xcode and SDK license agreements
[19:52:04]: ▸ -checkFirstLaunchStatus             Check if any First Launch tasks need to be performed
[19:52:04]: ▸ -project NAME                       build the project NAME
[19:52:04]: ▸ -target NAME                        build the target NAME
[19:52:04]: ▸ -alltargets                         build all targets
[19:52:04]: ▸ -workspace NAME                     build the workspace NAME
[19:52:04]: ▸ -scheme NAME                        build the scheme NAME
[19:52:04]: ▸ -configuration NAME                 use the build configuration NAME for building each target
[19:52:04]: ▸ -xcconfig PATH                      apply the build settings defined in the file at PATH as overrides
[19:52:04]: ▸ -arch ARCH                          build each target for the architecture ARCH; this will override architectures defined in the project
[19:52:04]: ▸ -sdk SDK                            use SDK as the name or path of the base SDK when building the project
[19:52:04]: ▸ -toolchain NAME                     use the toolchain with identifier or name NAME
[19:52:04]: ▸ -destination DESTINATIONSPECIFIER   use the destination described by DESTINATIONSPECIFIER (a comma-separated set of key=value pairs describing the destination to use)
[19:52:04]: ▸ -destination-timeout TIMEOUT        wait for TIMEOUT seconds while searching for the destination device
[19:52:04]: ▸ -parallelizeTargets                 build independent targets in parallel
[19:52:04]: ▸ -jobs NUMBER                        specify the maximum number of concurrent build operations
[19:52:04]: ▸ -dry-run                            do everything except actually running the commands
[19:52:04]: ▸ -quiet                              do not print any output except for warnings and errors
[19:52:04]: ▸ -hideShellScriptEnvironment         don't show shell script environment variables in build log
[19:52:04]: ▸ -showsdks                           display a compact list of the installed SDKs
[19:52:04]: ▸ -showBuildSettings                  display a list of build settings and values
[19:52:04]: ▸ -list                               lists the targets and configurations in a project, or the schemes in a workspace
[19:52:04]: ▸ -find-executable NAME               display the full path to executable NAME in the provided SDK and toolchain
[19:52:04]: ▸ -find-library NAME                  display the full path to library NAME in the provided SDK and toolchain
[19:52:04]: ▸ -version                            display the version of Xcode; with -sdk will display info about one or all installed SDKs
[19:52:04]: ▸ -enableAddressSanitizer YES|NO      turn the address sanitizer on or off
[19:52:04]: ▸ -enableThreadSanitizer YES|NO       turn the thread sanitizer on or off
[19:52:04]: ▸ -resultBundlePath PATH              specifies the directory where a result bundle describing what occurred will be placed
[19:52:04]: ▸ -derivedDataPath PATH               specifies the directory where build products and other derived data will go
[19:52:04]: ▸ -archivePath PATH                   specifies the directory where any created archives will be placed, or the archive that should be exported
[19:52:04]: ▸ -exportArchive                      specifies that an archive should be exported
[19:52:04]: ▸ -exportOptionsPlist PATH            specifies a path to a plist file that configures archive exporting
[19:52:04]: ▸ -enableCodeCoverage YES|NO          turn code coverage on or off when testing
[19:52:04]: ▸ -exportPath PATH                    specifies the destination for the product exported from an archive
[19:52:04]: ▸ -skipUnavailableActions             specifies that scheme actions that cannot be performed should be skipped instead of causing a failure
[19:52:04]: ▸ -exportLocalizations                exports completed and outstanding project localizations
[19:52:04]: ▸ -importLocalizations                imports localizations for a project, assuming any necessary localized resources have been created in Xcode
[19:52:04]: ▸ -localizationPath                   specifies a path to XLIFF localization files
[19:52:04]: ▸ -exportLanguage                     specifies multiple optional ISO 639-1 languages included in a localization export
[19:52:04]: ▸ -xctestrun                          specifies a path to a test run specification
[19:52:04]: ▸ -only-testing:TEST-IDENTIFIER       constrains testing by specifying tests to include, and excluding other tests
[19:52:04]: ▸ -skip-testing:TEST-IDENTIFIER       constrains testing by specifying tests to exclude, but including other tests
[19:52:04]: ▸ -json                               output as JSON (note: -json implies -quiet)
xcodebuild: error: option '-configuration' may only be provided once

why the xcodebuild -list action add -configuration CI，I have two server，one add configuration automatic，another do not add it。without the configuration，it success

@suihan please try to upgrade all fastlane gems, this issue should have been fixed with: https://github.com/fastlane/fastlane/pull/7108
and released with gym 1.12.1 https://github.com/fastlane/fastlane/releases/tag/gym%2F1.12.1

it works,thx


Feature Suggestion: Client-Side SDK for .NET

Is your feature request related to a problem? Please describe.
There's currently no SDK for client-side thick applications, eg. WPF or WinForms. Currently I have to use the REST API, as there's only the server-side SDK.
Describe the solution you'd like
A Client-Side SDK for .NET.
Describe alternatives you've considered
FeatBit's REST API.
Additional context
Discussed in issue #14 Client-Side SDK in the server-side SDK repo.
Is this feature something you're interested in working on?
I can at the very least help test, as I have a WPF application in which I'm planning on using it. I don't have too much spare time, but if there are specific tickets I can assist with I don't mind writing a few PRs.

Status Changed: In Progress
https://github.com/orgs/featbit/projects/6

+1 to this.  I'm writing a Blazor WebAssembly app that would benefit from a .NET Client SDK.

+1 to this. I'm writing a Blazor WebAssembly app that would benefit from a .NET Client SDK.

I have played with Blazor WebAssembly for a side project, but I am not very familiar with it. Hope you can share your experience about it. I'm making a very simple client SDK now, I'm testing in .NET Maui project, it's similar to WPF.

I am working on a .NET Client SDK, which I hope will be compatible with .NET MAUI, Console Apps, Blazor WebAssembly, WPF, and so on. Here's a video that I just tested with Blazor. Fingers crossed
https://github.com/featbit/featbit/assets/68597908/0a7006f4-2dad-4fe8-a617-abdb448864b5

Awesome work @cosmic-flood, looking good :)

https://github.com/featbit/featbit/assets/68597908/ee68cd0f-cb5b-4714-9dc4-a5a462eec3cb
First Impressions of Love with FeatBit's .NET Client SDK on .NET MAUI. (Polling Mode)
P.S.: : Successfully tested on Console, WPF and Blazor WebAssembly.

Hi @SamKr @wss-alubic, we've released FeatBit.ClientSdk v1.0.0! You can visit the repo and follow the README to get started.

Looks perfect, and a very thorough readme as well. Thanks so much for this ❤

Looks perfect, and a very thorough readme as well. Thanks so much for this ❤

Hi @SamKr
We're currently gathering user feedback to help improve our product and secure additional funding. If it's not too much trouble, could you please share a short story about your experiences—both good and bad—with FeatBit? If you could also mention your team, product, or company, that would be perfect.
Please send your stories to our email at<EMAIL_ADDRESS>

Of course, glad I can help. Will send a mail from my work email in the coming days.


Too Many Arguments

Running Sponge 1.10.2 with PEX b147 from Jenkins.
Whenever I type /pex (regardless what I type after, even /pex group or whatever), it only responds "Too Many Arguments"

I have the same issue, @zml2008 Can you help please?

Unfortunately PermissionsEx is currently unmaintained and no further updates are planned. Because of this, all pull requests are being closed. If you are looking for an actively maintained permissions plugin, take a look at LuckPerms. It is compatible with major server platforms and can import data from PEX.


JensonSnapPourPoints Failed to Fill Whole Buffer and ShapeType error in Python and CMD

Using Python:
wbt.jenson_snap_pour_points
(r"D:\Exclude\Fire_Severity\WatershedNHD\XXXX_XXXXWQ40A.shp",
r"D:\Exclude\Fire_Severity\WatershedNHD\NHD_StreamNet.tif",
r"D:\Exclude\Fire_Severity\WatershedNHD\XXXX_XXXXWQ40A_PourPoint.shp", 100)
and am receiving the following error:
thread 'main' panicked at 'failed to fill whole buffer', whitebox-tools-app\src\main.rs:72:21
I also receive the same 'failed to fill whole buffer' error when running the Watershed tool on a set of data built entirely in Whitebox, the above error is from clipped data from the National Hydrologic Dataset.
I have tried different snap distances and I have tried to run it in the command line. I have also tried with a shapefile of multiple pour point, I have 23 total, and receive an error of:
thread 'main' panicked at 'Unrecognized ShapeType: 33554432', whitebox-vector\src\
Shapefiles were created in ArcGIS Pro 2.8.3 and a second set were created in ArcMap 10.8 as a test.  The stream raster covers approximately 50 square miles.
I am new to Whitebox tools and I am sure I am just missing something obvious.  Any help would be great.

"'main' panicked at 'failed to fill whole buffer" sounds like an out-of-memory error. How large is that NHD_StreamNet.tif file and how much memory does your computer have?

NHD tif is 63 MB on a Win 10 Enterprise, 64 gb of ram, I9 laptop. Second test was with a 257 MB tif on a Win 10 Pro, 32 gb of ram, I7 desktop. NHD data is from clipped from National Hydrology Dataset and projected to NAD83 2011 UTM.
Second test, all rasters were in same coordinate system, but everything was built in Whitebox from a DEM from USGS 3DEP. Whitebox stream network is 32 bit floating point (257mb), NHD is 8 bit unsigned char(63mb).
I will try clipping my rasters down and see if that makes a difference.

That doesn't sound particularly large actually. It sounds like something else may be going on. Would you mind sharing your data with me?

HydroTest.zip
HydroTest2.zip
HydroTest is clipped NHD data, HydroTest2 was built in Whitebox. HydroTest from enterprise license ArcGIS Pro 2.8.3, HydroTest2 from home use license ArGIS Pro 2.9.
Thanks for the help with this.

Thank you for sending the data along. With this data in hand, I was able to diagnose the issue, which was related to a bug in my Shapefile reader, specifically within the code for reading files of the PointZ ShapeType. I have committed the fix to the repository. It will be part of the next public release of WBT, but if you cannot wait until then, I would suggest either compiling from source or changing your pour points vector file to a plain Point ShapeType rather than a PointZ. Thanks for reporting the error and providing enough information to help me find the bug. I'm closing this now, but if you continue to experience the issue, please feel free to re-open.


chore: Use JS for script instead of shell

Changes

:broom:  Use JS for script instead of shell for Quarkus update.
:gift: Now querying GH API whether the PR already exists.

/hold

TBH I am not a big fan of adding dependency to node in our setup, I know this serves a specific usecase, but still.

Added a hold so we can discuss - don't want to just ignore your concern. Honestly, this was my first thought when I saw the PR. But on further consideration it seems OK to me. This is only part of a github action and does not affect the func developer's local experience or requirements at all. And in fact, when we were using release-please, we had the same Node.js dependency doing similar things (creating/checking pull requests based on some given condition). So, IMO this is fine.

TBH I am not a big fan of adding dependency to node in our setup, I know this serves a specific usecase, but still.

@zroubalik @lance
I don't like additional deps too, but I really dislike bash for anyting longer that 10 lines.
Also sometimes even bash, xmllint or jq are not installed (or not installed in latest version, like on mac).
I've chosen JS since it has official GitHub API lib and there is at least one more person who knows JS.
Actually I did first iteration of this in Clojure (and just latter rewritten it to bash).
It requires only one additional binary installable via curl.
 Still better than the Closure implementation 😄


To fix

hover effect on cards
different heights for cards

hover effect preview. presents as a green dot when not hoevered, or a line when hovered.

Fixed with #741 & #753. Thanks, B.B & Y.Y! ❤


Certain requests fail with a 400 Bad Request

It appears that certain requests generated by the ask() method trigger a 400 - Bad request on the side of ollama.
Trying the same request manually works though (i.e. copying the JSON generated by ollamaRequestModel.toString() and posting it manually).

Are you still seeing the issue after updating the writeBytes code?

No, with the change from https://github.com/amithkoujalgi/ollama4j/pull/3, all requests I send return 200 and a proper response.

The issue may persist in other methods though - e.g. you should probably also update askAsync()  and maybe check other methods if they make the same call.

Thanks! I've updated the askAsync method too: https://github.com/amithkoujalgi/ollama4j/commit/df9b9af0635a983b55411bb904cda5f33b42b292


Improve headings for the export mode in the Export dialog

Follow-up to https://github.com/godotengine/godot-docs/pull/7701.

"Export as dedicated server" now uses a less confusing heading.

Previously, this would have said "Resources to export", which is misleading if you refer to the checkboxes alone.

This closes https://github.com/godotengine/godot/issues/79684.

Should close #79684

Thanks!

Cherry-picked for 4.1.4.


Not Allowing the html2canvas screenshot to appear in the visual force page

Hi

The picture of my vf page is given above, first one is the original vf fields and second one is the screenshot of the page generated using html2Canvas. I donot want the screenshot to appear in the vf page though the screenshot of the  vf page should be taken in background.
Please help me with this.
I am generating screenshot using this below-
window.onload=function(){
html2canvas(document.body,
{
useCORS: true,
onrendered: function(canvas)
{
//           document.getElementById("mapDiv").style.display = 'none';
document.body.appendChild(canvas);
            }
        });
    }

I'm not sure what is vf page and what is your problem. but, you mean, you want to exclude specific element in screenshot of your page? If my guess is right, set to hide before capturing your page.

Here is a better solution.
#464


Remove unnecessary working state on c-ares event driver

The working variable on the c-ares event driver object is used to decide whether or not a particular call to grpc_ares_ev_driver_start_locked should make a pass through the c-ares channel file descriptors in grpc_ares_notify_on_event_locked. This seems unnecessary, because it's safe to make multiple calls through grpc_ares_notify_on_event_locked. Also, it seems slightly risky, because if we make a c-ares "start query" call that somehow happens to open up new FD's that are not currently being worked on, then those new FD's won't ever start being worked on until the ones which are being worked on have a notification (such a situation does seem difficult to imagine in practice, because all queries on a channel will generally go to the same DNS server on the same FD).
Overall this looks like it can be removed/simplified.

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

libgrpc.so

     VM SIZE                                                                                FILE SIZE
 ++++++++++++++ GROWING                                                                        ++++++++++++++

 -------------- SHRINKING                                                                      --------------
  -0.0%     -22 [None]                                                                            -270  -0.0%
  -1.0%     -26 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc     -26  -1.0%
      [DEL] -1.03Ki grpc_ares_notify_on_event_locked                                               -1.03Ki  [DEL]
      [DEL]     -25 grpc_ares_ev_driver_start_locked                                                   -25  [DEL]

  -0.0%     -48 TOTAL                                                                             -296  -0.0%

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

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

Objective-C binary sizes
*****************STATIC******************
  New size                      Old size
 1,960,910      Total (=)      1,960,910

 No significant differences in binary sizes

***************FRAMEWORKS****************
  New size                      Old size
10,881,732      Total (>)     10,881,731

 No significant differences in binary sizes

[microbenchmarks] No significant performance differences


Add bgcolor to webpage

It will enhance the  interaction with webpage and also make it more inline format
additional I can align the login div for this webpage

Theme of the Website will be changed if you can do something with purple and white colour then go for it

ok thank you

You are Assigned.

can you pl add hacktoberfest tag also

Done


Update to v2.6.0

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Camera: Reset using screenspace

The only change that looks strange is : testing/baselines/TestInteractionFocalPointPickingPoints.png , but I checked it and it is fine, focal point picking happens on another point.


Fatal Error:   Failed to parse farmer public key

just compiled latest mast without error and set about running the same as before but for this error:
Fatal Error:
Failed to parse farmer public key
Running with -c  and -f as before.
Has the format changed for the key? I am taking straight from chia keys show

Aaaargh nvm, bash history truncated the key..  :open_mouth:


Bumping configs for eBPF and Graviton2 support

Like to get some eyeballs on a builder to catch any mistakes. Ruby on Rails server - but could easily be .Net/JVM/Node/Django/RustRocket.

On the fence over the 5.4.20 kernel for awslinux2 or switch distros to Centos 8.  Even the EKS AMI is broken on a lot of kubernetes tools from an old kernel.

Going with Graviton 2. Travis' benchmarks and my own M1 experience are overwhelming that x86 is toast.

Custom compile of the Ruby stack with FDO - source traceability on all gems as a build artifact.

Nginx, RDS compatible mysql 5.7 for local testing, SAM local for testing.

Task workers in a cgroup to limit blast radius of lurking media processing 0-days.

Source RPMs cached as artifacts cached to S3.

Anything that isn't production critical compressed with zstd to save space.

Deployment as EC2 batch for running tests - or giving devs a production parity instance they can ssh/vscode into from their laptop (especially with Docker hosed on M1, and this being ARM which would hose x86 WSL2).

Hey Chad - I'm not sure I got the ask, could you expand on the issue a bit on the problem and suggested solution?
Quickly glancing to the repo you mention I see two changes - Packer minor version bump and readme.
Perhaps this was created in error?

Livecoding :) Once I get yaks shaved for ARM and bumping the kernel I'll send a PR.

haha I know the feeling hence I thought I'd ask :)
On Wed, 25 Nov 2020 at 09:14, Chad Brewbaker<EMAIL_ADDRESS>wrote:

Livecoding :) Once I get yaks shaved for ARM and bumping the kernel I'll
send a PR.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/awslabs/ami-builder-packer/issues/16#issuecomment-733541966,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZPQBFQV3IQY6OTPFNYA5LSRS4HRANCNFSM4UCAJZUA
.


Errors with non-square videos

Thanks for the great toolbox! Has this been tested with non-square images? I'm getting error messages at various points in the pipeline when using 404x396 sized videos (both dimensions divisible by 4). For example, when training I get the following:

Created folder: C:\Users\rick\Desktop\github\leap\models\fast_train\180606_104331-n=11
Epoch 1/15
Traceback (most recent call last):
File "C:\Users\rick\Anaconda3\lib\site-packages\keras\utils\data_utils.py", line 564, in get
inputs = self.queue.get(block=True).get()
File "C:\Users\rick\Anaconda3\lib\multiprocessing\pool.py", line 644, in get
raise self._value
File "C:\Users\rick\Anaconda3\lib\multiprocessing\pool.py", line 119, in worker
result = (True, func(*args, **kwds))
File "C:\Users\rick\Anaconda3\lib\site-packages\keras\utils\data_utils.py", line 390, in get_index
return _SHARED_SEQUENCES[uid][i]
File "C:\Users\rick\Desktop\github\leap\leap\image_augmentation.py", line 71, in getitem
X[i], Y[i] = transform_imgs((X[i],Y[i]), theta=self.theta, scale=self.scale)
File "C:\Users\rick\Desktop\github\leap\leap\image_augmentation.py", line 38, in transform_imgs
X[i][...,c] = cv2.warpAffine(X[i][...,c], T, img_size)
ValueError: could not broadcast input array from shape (396,404) into shape (404,396)

Please advise, and thanks again for your work on this.

Hi Rick,
Good catch on that bug! I had a parameter for OpenCV's warpAffine function in reverse order. It should be fixed now, but feel free to re-open the issue if you're still experiencing problems.
Cheers!
Talmo

Thanks for the quick turn-around! I appreciate your help.

I am still getting this error unfortunately. I think line 18 of pts2confmaps should be changed from:

[XX,YY] = meshgrid(1:sz(1),1:sz(2));
to:
[XX,YY] = meshgrid(1:sz(2),1:sz(1));

This appeared to fix it for me.

Thanks again Rick! I always get my meshgrid/ndgrid syntax mixed up. I won't get a chance to test out the whole pipeline with a rectangle dataset for a few days but don't hesitate to open the issue up again if you run into other non-square dimensions problems!

Sure thing! I'm running now on rectangle data and getting no overt bugs.
Thanks for quick turn-around.
On Fri, Jun 8, 2018 at 3:35 PM, Talmo Pereira<EMAIL_ADDRESS>wrote:

Thanks again Rick! I always get my meshgrid
https://www.mathworks.com/help/matlab/ref/meshgrid.html/ndgrid
https://www.mathworks.com/help/matlab/ref/ndgrid.html syntax mixed up.
I won't get a chance to test out the whole pipeline with a rectangle
dataset for a few days but don't hesitate to open the issue up again if you
run into other non-square dimensions problems!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/talmo/leap/issues/2#issuecomment-395866678, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AdxmwRq9vSMzzYTHnSg6Q_nWzA0s1DFvks5t6tIRgaJpZM4Ucz-W
.


Update ESLint config to lint all project files

This adds an .eslintignore and cleans up the existing eslintrc to ensure all files in the project are linted appropriately. Here's a basic summary of what's changed:

lint script now attempts to lint everything in the project (eslint .)

The samples and conformance test folders are excluded for the time being
Most of the changes in this diff are from applying formatting to the website folder

applies the @typescript-eslint/indent rule to typescript files
prevents files under src/ from using node global variables
installs a pre-commit hook to lint and auto-fix staged files

nice work, thanks for contributing


Some questions on your conv. n.n. architecture and blend network

Dear Mathis,
I have implemented the conv. net. according to your documentation in (https://www.kaggle.com/blobs/download/forum-message-attachment-files/2797/report.pdf) as follows, albeit with some modifications to make it good (I think) for an small dataset of 1000 elements of training set (the distribution of all 5 classes are approximately equal).
1- In your convolutional network, the output of your network is a 512 element vector, the maxout layer. As far as I know from the NN, we need a label for every input to the network. So, what is the label here?
2- The number of inputs to your blend network is 8193. How did you come with this number?
My code is as follow:
import sys
import os
import time

import numpy as np
import theano
import theano.tensor as T

import lasagne

import pandas as pd
from PIL import Image

input_var = T.tensor4('inputs')
target_var = T.ivector('targets')

network = lasagne.layers.InputLayer(shape=(np.newaxis, 3, 512, 512),
                                        input_var=input_var)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=8, filter_size=(5, 5),
            nonlinearity=lasagne.nonlinearities.rectify,
            W=lasagne.init.GlorotUniform(),
            stride=(2, 2))#, pad=1)#, partial_sum=2)
# network = lasagne.layers.MaxPool2DLayer(network, pool_size=(2, 2))
network = lasagne.layers.Conv2DLayer(
            network, num_filters=8, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.MaxPool2DLayer(network, pool_size=(3,3), stride=2)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=16, filter_size=(5, 5),
            nonlinearity=lasagne.nonlinearities.rectify,
            W=lasagne.init.GlorotUniform(),
            stride=(2, 2))#, pad=1)#, partial_sum=2)
# network = lasagne.layers.MaxPool2DLayer(network, pool_size=(2, 2))
network = lasagne.layers.Conv2DLayer(
            network, num_filters=16, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=16, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.MaxPool2DLayer(network, pool_size=(3,3), stride=2)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=32, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=32, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=32, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.MaxPool2DLayer(network, pool_size=(3,3), stride=2)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=64, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=64, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=64, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.MaxPool2DLayer(network, pool_size=(3,3), stride=2)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=128, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=128, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.MaxPool2DLayer(network, pool_size=(3,3), stride=2)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=128, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=128, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.MaxPool2DLayer(network, pool_size=(3,3), stride=2)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=128, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=128, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.MaxPool2DLayer(network, pool_size=(3,3), stride=2)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=128, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.Conv2DLayer(
            network, num_filters=128, filter_size=(3, 3),
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.MaxPool2DLayer(network, pool_size=(3,3), stride=2)
network = lasagne.layers.DenseLayer(
            lasagne.layers.dropout(network, p=.5),
            num_units=128,
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.FeaturePoolLayer(network, pool_size=2)

network = lasagne.layers.DenseLayer(
            lasagne.layers.dropout(network, p=.5),
            num_units=128,
            nonlinearity=lasagne.nonlinearities.rectify)
network = lasagne.layers.FeaturePoolLayer(network, pool_size=2)

network = lasagne.layers.DenseLayer(
            lasagne.layers.dropout(network, p=.5),
            num_units=5,
            nonlinearity=lasagne.nonlinearities.softmax)
prediction = lasagne.layers.get_output(network)
loss = lasagne.objectives.categorical_crossentropy(prediction, target_var)
loss = loss.mean()
params = lasagne.layers.get_all_params(network, trainable=True)
updates = lasagne.updates.nesterov_momentum(
        loss, params, learning_rate=0.01, momentum=0.9)
test_prediction = lasagne.layers.get_output(network, deterministic=True)
test_loss = lasagne.objectives.categorical_crossentropy(test_prediction,
      target_var)
test_loss = test_loss.mean()
# As a bonus, also create an expression for the classification accuracy:
test_acc = T.mean(T.eq(T.argmax(test_prediction, axis=1), target_var),
      dtype=theano.config.floatX)

# Compile a function performing a training step on a mini-batch (by giving
# the updates dictionary) and returning the corresponding training loss:
train_fn = theano.function([input_var, target_var], loss, updates=updates)

# Compile a second function computing the validation loss and accuracy:
val_fn = theano.function([input_var, target_var], [test_loss, test_acc])
params = lasagne.layers.get_all_params(network, trainable=True)
updates = lasagne.updates.nesterov_momentum(
        loss, params, learning_rate=0.001, momentum=0.9)
test_prediction = lasagne.layers.get_output(network, deterministic=True)
test_loss = lasagne.objectives.categorical_crossentropy(test_prediction,
      target_var)
test_loss = test_loss.mean()
# As a bonus, also create an expression for the classification accuracy:
test_acc = T.mean(T.eq(T.argmax(test_prediction, axis=1), target_var),
      dtype=theano.config.floatX)

# Compile a function performing a training step on a mini-batch (by giving
# the updates dictionary) and returning the corresponding training loss:
train_fn = theano.function([input_var, target_var], loss, updates=updates)

# Compile a second function computing the validation loss and accuracy:
val_fn = theano.function([input_var, target_var], [test_loss, test_acc])
def iterate_minibatches(inputs, targets, batchsize, shuffle=False):
    # assert len(inputs) == len(targets)
    if shuffle:
        indices = np.arange(len(inputs))
        np.random.shuffle(indices)
    for start_idx in range(0, len(inputs) - batchsize + 1, batchsize):
        if shuffle:
            excerpt = indices[start_idx:start_idx + batchsize]
        else:
            excerpt = slice(start_idx, start_idx + batchsize)
        # yield inputs[excerpt,:,:,:], targets[excerpt,:,:,:]
        yield inputs[excerpt,:,:,:], targets[excerpt]
BASE_TRAIN_DIR = r'/home/ali/DiabeticRethinopathy/diabeticrethinopathy/data/train/'
train_labels = pd.read_csv(r'/home/ali/DiabeticRethinopathy/diabeticrethinopathy/data/train.csv', sep=',')
train_data = []
tc = 0
for id in train_labels['image']:
    tc += 1
    train_data.append(np.array(Image.open(os.path.join(BASE_TRAIN_DIR, id + '.tiff'))).T)
train_data = np.array(train_data).astype("float32") / 255.0
trainLABELS = np.zeros((tc,5))
i = 0
for lbl in train_labels['level'].values:
    trainLABELS[i][lbl] = 1
    i += 1

BASE_TEST_DIR = r'/home/ali/DiabeticRethinopathy/diabeticrethinopathy/data/test/'
test_labels = pd.read_csv(r'/home/ali/DiabeticRethinopathy/diabeticrethinopathy/data/test.csv', sep=',')
test_data = []
tc = 0
for id in test_labels['image']:
    tc += 1
    test_data.append(np.array(Image.open(os.path.join(BASE_TEST_DIR, id + '.tiff'))).T)
test_data = np.array(test_data).astype("float32") / 255.0
testLABELS = np.zeros((tc,5))
i = 0
for lbl in test_labels['level'].values:
    testLABELS[i][lbl] = 1
    i += 1
num_epochs = 10
X_train = train_data[:960,:,:,:]
y_train = train_labels['level'].values.astype("uint8")[:960]
X_val = test_data[:960,:,:,:]
y_val = test_labels['level'].values.astype("uint8")[:960]
X_test = test_data[:960,:,:,:]
y_test = test_labels['level'].values.astype("uint8")[:960]
for epoch in range(num_epochs):
    # In each epoch, we do a full pass over the training data:
    train_err = 0
    train_batches = 0
    start_time = time.time()
    for batch in iterate_minibatches(X_train, y_train, 32, shuffle=True):
        print '*',
        inputs, targets = batch
        train_err += train_fn(inputs, targets)
        train_batches += 1
    print '$'
    # And a full pass over the validation data:
    val_err = 0
    val_acc = 0
    val_batches = 0
    for batch in iterate_minibatches(X_val, y_val, 32, shuffle=True):
        inputs, targets = batch
        err, acc = val_fn(inputs, targets)
        val_err += err
        val_acc += acc
        val_batches += 1
        print '+',
        if val_batches > 1:
            break
    print '$'

    # Then we print the results for this epoch:
    print("Epoch {} of {} took {:.3f}s".format(
        epoch + 1, num_epochs, time.time() - start_time))
    if train_batches == 0:
        train_batches = -1
    if val_batches == 0:
        val_batches = -1
    print("  training loss:\t\t{:.6f}".format(train_err / train_batches))
    print("  validation loss:\t\t{:.6f}".format(val_err / val_batches))
    print("  validation accuracy:\t\t{:.2f} %".format(
        val_acc / val_batches * 100))

# After training, we compute and print the test error:
test_err = 0
test_acc = 0
test_batches = 0
for batch in iterate_minibatches(X_test, y_test, 32, shuffle=False):
    inputs, targets = batch
    err, acc = val_fn(inputs, targets)
    test_err += err
    test_acc += acc
    test_batches += 1
print("Final results:")
if test_batches == 0:
    test_batches = -1
print("  test loss:\t\t\t{:.6f}".format(test_err / test_batches))
print("  test accuracy:\t\t{:.2f} %".format(
    test_acc / test_batches * 100))

The last layer is a DenseLayer with 1 unit. So the output is a single number. The target values are [0, 1, 2, 3, 4], the stage of the disease. We were doing regression with mean square error loss and thresholding at [0.5, 1.5, 2.5, 3.5] but not classification.

We used the output of the rms pool layer (averaged over different test time augmentations) as well as the standard deviation for both patients eyes plus an indicator variable for the left eye. The rms pool layer outputs 512 "images" with 2x2 pixels, so that's 2048 features for mean and standard deviation per eye. So in total there are 2048 * 2 * 2 + 1 = 8193 features for blending.


All the work i've done in my fork, view commits for more (transform image-field-name for image in admin panel, change app name easily, add more custom menu links, force field for foreign-key mapping).

http://screencast.com/t/VCFScrBMaO

+1


set default of permission flag as yes

Thank you for your contribution.
Could you add new item about your change to CHANGELOG.md file.


[empty commit] pull request for Adding RSS support

⚠⚠⚠ Since we do not accept all types of pull requests and do not want to waste your time. Please be sure that you have read pull request rules:
https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md#can-i-create-a-pull-request-for-uptime-kuma
Tick the checkbox if you understand [x]:

[X] I have read and understand the pull request rules.

Description
This PR would introduce support for RSS rendering of Status Pages.
As pointed out in the discussion on https://github.com/louislam/uptime-kuma/issues/1673, the Uptime Kuma notification system operates on a strictly push logic, whereas RSS is meant to be a programmatic representation of the same data on a given Status Page, with clients being responsible for periodically pulling its content.
Therefore, I would propose adding a toggle option on the Status Page configuration UI, labeled Support RSS or something of the like, in the highlighted region:

Ideally, if the option is enabled, an RSS feed generated via https://www.npmjs.com/package/feed or any other similar package would be served either on the same URL but with a GET query parameter (e.g. http://localhost:3001/status/sample?rss) or on a URI that forks from the status page one (e.g. http://localhost:3001/status/sample/rss)
Type of change
Please delete any options that are not relevant.

New feature (non-breaking change which adds functionality)
This change requires a documentation update

Checklist

[ ] My code follows the style guidelines of this project
[ ] I ran ESLint and other linters for modified files
[ ] I have performed a self-review of my own code and tested it
[ ] I have commented my code, particularly in hard-to-understand areas
(including JSDoc for methods)
[ ] My changes generate no new warnings
[ ] My code needed automated testing. I have added them (this is optional task)

Screenshots (if any)
Please do not use any external image service. Instead, just paste in or drag and drop the image here, and it will be uploaded automatically.

I think the difficulty of this pr would be what to show in the rss feed, because notification error messages could be detailed that you don't want to show them to the public.

I think the difficulty of this pr would be what to show in the rss feed, because notification error messages could be detailed that you don't want to show them to the public.

I think that status.github.com could be something to look at in terms of what to include. I note that the rss feed does include stuff like details on incident response, something we don't have yet. But if we regard RSS as a notification system for end users, not system administrators then we should only use the data exposed to the public status page anyway.

I do agree that a full representation of the incident dynamics via RSS would be optimal, as would the ability to show what data should be displayed over RSS, but I do believe that a 1:1 mapping of the content displayed via HTML would be a good starting point, as RSS is by its very nature a format intended for secondary parsing by the consuming clients - if people just want to get every published uptime percentage they're free to do so, discarding all nodes superfluous to the task!
Of course @louislam I'll defer to your vision for the project - if you do believe an additional layer of configurability would be appropriate, by all means, feel free to indicate which parts should be tunable and I'll do my best to update the screens to provide a general outline of the implementation!

Hi @Computroniks ! Sorry, no progress, I was waiting for @louislam's reply - but do feel free to take over!

@Rhaal
I am going to close this PR due to being stale for ~1y.
As long as an RSS feed does show the currently public information, this would be fine by us, as stated above.
We can reopen this PR if you'd like to continue this work.


Telegram Local Server shutting down when Ubuntu restart

I use Telegram Local Server. Per day i start telegram local server manually. Because, when ubuntu restart, telegram local server shutting down.  Is there a solution to this?

I found solution for this. I added crontab to Ubuntu.

Write to console => crontab -e
Add this code at end of file => @reboot /path/to/telegram-bot-api/bin/telegram --options

This solution working incorrectly...

Create a .service file

Create a .service file

can you explain more?

Create a .service file

can you explain more?

Search on Google how to create .service file on Ubuntu

Example for nginx.service
https://www.nginx.com/resources/wiki/start/topics/examples/systemd/
Should be similar for telegram bot api


porting to dsl

This PR ports some lin tests to the DSL as mentioned in #54
This is complementary to #91

porting stack/lin_test to dsl
porting queue lin tests to DSL
porting neg_tests to DSL

Thanks!
Nit: In #90 I tried to stream line the file names. Following its convention, the dsl-test files should be called lin_tests_dsl.ml :man_shrugging:

The CI complains about missing rules: https://github.com/jmid/multicoretests/runs/7182714053?check_suite_focus=true (at the top). Looks like a few more places needs updating with the new file names.
In #91 I've gone for keeping the old lin_tests.ml for a start. I guess it is just to be extra careful, so that it makes it easy to switch back. As a bonus, that makes it easier to compare the two approaches to each other :man_shrugging:

I can see the CI is still failing. This is caused by some of the negative tests not failing as expected.
I realized that I misunderstood you yesterday: A count of 10 may be sufficient to trigger an negative test in a couple of local runs, but other machines (and operating systems, e.g., MacOS) may require a higher count to consistently trigger the negative test. The consequence is visible in the CI: All checks have failed.
For a negative test, I thus prefer to keep a high count, so that we consistently fail where we are expected to fail and avoid too many "false alarms" in the CI tests.
This should not be costly, as a QCheck test stops generating additional test input when the first counterexample is found. Locally on Linux ~count:1000 will thus be no more expensive than ~count:10 when the test fails on one of the first 10 tested inputs...

rebased on latest main with  QCheck 0.19

Thanks - now merged!


Error on PKHeX.Web: PKM Format needs to be PKHeX.Core.PK3 when setting to this Save File.

That has to do with the fact that it still doesn't support conversion between different generations.
I may work on it in the bear future, just need to find some spare time:)


Warnings for 'undefined attributes' when using Phoenix 1.7.0.rc-1

In my project there are many warnings concerning "undefined attribute" in components like

Dropdown.dropdown_menu_item
Table.th
Button.button

Warning examples :
`warning: undefined attribute "data" for component PetalComponents.Dropdown.dropdown_menu_item/1
warning: undefined attribute "phx_click" for component PetalComponents.Dropdown.dropdown_menu_item/1
warning: undefined attribute "phx_value_id" for component PetalComponents.Dropdown.dropdown_menu_item/1
warning: undefined attribute "phx_value_user_id" for component PetalComponents.Dropdown.dropdown_menu_item/1
warning: undefined attribute "colspan" for component PetalComponents.Table.th/1
warning: undefined attribute "phx_disable_with" for component PetalComponents.Button.button/1
warning: undefined attribute "data" for component PetalComponents.Button.button/1`
I'm using Phoenix 1.7.0.rc-1.
I don't know if has the same behaviour on Phoenix 1.6

Thanks for this. The phx_* ones just need to be changed to dashes - eg. phx-click.
What do you use the data prop for?
colspan seems to be an issue.

Oh, luckily @paynegreen just fixed the colspan issue!

Fixed in v0.19.9

Hey!
Thanks for this.
I've changed phx_* bindings to phx-* bindings.
Also I had the data={[confirm: "Are you sure"]} and changed it to data-confirm="Are you sure?".
Along with the colspan fix, No more warnings !!


Service Topology

Please answer these questions before submitting your issue.

Why do you submit this issue?
[ ] Question or discussion
[ ] Bug
[ ] Requirement
[ ] Feature or performance improvement

Question

What do you want to know?
How to find the interface call between services from a large amount of data to prove the call relationship between services shown in the topology diagram

Bug

Which version of SkyWalking, OS, and JRE?

Which company or project?

What happened?
If possible, provide a way to reproduce the error. e.g. demo application, component version.

Requirement or improvement

Please describe your requirements or improvement suggestions.

How to find the interface call between services from a large amount of data to prove the call relationship between services shown in the topology diagram

I am not sure about your question. We don't have endpoint->service topology. Why need that?
We provide endpoint->endpoint dependency map.

How to find the interface call between services from a large amount of data to prove the call relationship between services shown in the topology diagram

I am not sure about your question. We don't have endpoint->service topology. Why need that?
We provide endpoint->endpoint dependency map.

I mean, for the service topology diagram, how to prove that there are call relationships between these services, because we found some uncertain call relationships

I mean, for the service topology diagram, how to prove that there are call relationships between these services, because we found some uncertain call relationships

Prove? We don't have that. APM seems not designing for proving something.