.Clear() mechanism - Support MemoryCacheEntryOptions.ExpirationTokens

First off, the library looks great, especially with the introduction of the backplane!
This may be an extension to the ongoing cache region discussion, but I think deems it's own topic.
I am working on a PoC utilising this library and came across a gap compared to our current implementation on top of  LazyCache.
It is the equivalent of a Clear mechanism affecting all or part of the cache.
MemoryCacheEntryOptions of IMemoryCache supports entries with attached ExpiryTokens. Each entry can have multiple tokens assigned to it and when the token is cancelled, all associated cache values are expired.
Currently we track the issued tokens in a ConcurrentDictionary keyed on a string.
This allows for us to do 2 things

Apply a shared token to all entries, providing a .Clear() equivalent
Apply a token to groups of related entries, providing a .Clear("CacheGroup")

The primary reason for this approach was to solve cache invalidation across services.
ServiceA caches

ServiceA data - CacheGroup = ServiceA
ServiceB data (retrieved via API call) - CacheGroup = ServiceB

ServiceB caches

ServiceB data - CacheGroup = ServiceB

Now if I update data in ServiceB, I raise an event (Rest API, or Message Queue) that ServiceA listens to and thus calls  .Clear("ServiceB"). (note only one listener responds on ServiceA due to load balancing).
The second part of this implementation is segmentation/relations inside of ServiceA
Where CacheKey2 & CacheKey3 data is built on top of CacheKey1 data.  (I understand this may not be the 'right' way but it addresses our situation, where cacheKey1 is computationally intensive as is CacheKey2 & CaheKey3)
cacheKey1 = "baseCacheData" eg "template"
cacheKey2 = "UserID:baseCacheData+UserSpecificEnhancements" eg "123:template:nhanced"
cacheKey3 = "UserID:baseCacheData+UserSpecificEnhancements" eg "234:templateEnhanced"
Now if I change cacheKey1 it should invalidate cacheKey2 and cacheKey3.
Currently I would use a cacheGroup token to relate these cache entries together, and expire cacheKey1 before setting a new value for it.
This approach also supports nested relations like
"{GroupID}:{UserID}:Data"
Each entry has 2 change tokens, 1 for the group and 1 for the user.
With this I can invalidate a variety of data subsets, either on user change to invalidate across all groups, or on group change to invalidate across all users.
I am not sure of the side effects of this in FusionCache, especially with Background and Backplane support.
I would happily keep the the .Clear() functionality and tracking of ExpiryTokens outside of FuctionCache, but would be great if I could easily add the token when creating an entry.
Would be great to discuss this possibility.

Hi @jodydonetti,
I did some thinking and trials and create a small plugin which illustrates a possible solution using a ConcurrentDictionary to track currently cached values and KeyGroups to track the relations.
I think this approach simulates the same process as the Token based expiry and allows for both of my above situations.
My approach below requires calling .Remove on each related key, rather than expiring a single token for each CacheGroup.
I am not sure if the expiry token option is viable within a plugin as I would need to intercept the Set of a cache value received by the backplane and inject in the relevant expiry token.

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using ZiggyCreatures.Caching.Fusion;
using ZiggyCreatures.Caching.Fusion.Events;
using ZiggyCreatures.Caching.Fusion.Plugins;

namespace Core.Caching
{

    public class KeyGroup
    {
        public string GroupName { get; }

        /// <summary>
        /// List of known static keys that do not require pattern matching
        /// </summary>
        public List<string> StaticKeysNames { get; }

        /// <summary>
        /// List of patterns to match dynamic keys
        /// </summary>
        public List<string> KeyPatterns { get; }

        private List<Regex> _regexList { get; } = new List<Regex>();

        public KeyGroup(string groupName, List<string> staticKeysNames, List<string> keyPatterns)
        {
            GroupName = groupName;
            StaticKeysNames = staticKeysNames;
            KeyPatterns = keyPatterns;

            foreach (string keyPattern in keyPatterns)
            {
                _regexList.Add(new Regex(keyPattern,
                   RegexOptions.Singleline | RegexOptions.Compiled));
            }
        }

        /// <summary>
        /// Check the supplied key against the StaticKeys or KeyPatterns
        /// </summary>
        /// <param name="key">key to check</param>
        /// <returns>true: key matches one of the StaticKeys or KeyPatterns, false: key does not match any StaticKeys or KeyPatterns</returns>
        public bool IsMatch(string key)
        {
            if (StaticKeysNames.Contains(key))
            {
                return true;
            }
            else
            {
                foreach (Regex regex in _regexList)
                {
                    if (regex.IsMatch(key))
                    {
                        return true;
                    }
                }
            }
            return false;
        }

    }

    public class CacheGroupPlugin : IFusionCachePlugin
    {
        /// <summary>
        ///  List of Key Groups to support local tracking operations.
        /// </summary>
        private readonly List<KeyGroup> _keyGroups;

        /// <summary>
        /// List of keys that are locally tracked in the FusionCache.
        /// </summary>
        private readonly ConcurrentDictionary<string, int> _cachedKeys = new ConcurrentDictionary<string, int>(10,100);

        private int OneSetCounter = 0;
        private int OneRemoveCounter = 0;
        private int OnBackplaneMessageReceivedCounter = 0;
        private int OnBackplaneMessageReceivedSetCounter = 0;
        private int OnBackplaneMessageReceivedRemoveCounter = 0;

        public CacheGroupPlugin(List<KeyGroup> keyGroups)
        {
            _keyGroups = keyGroups;
        }

        public void Start(IFusionCache cache)
        {
            IsStarted = true;

            cache.Events.Set += OnSet;
            cache.Events.Remove += OnRemove;
            cache.Events.Backplane.MessageReceived += OnBackplaneMessageReceived;
        }

        public void Stop(IFusionCache cache)
        {
            IsStopped = true;

            cache.Events.Set -= OnSet;
            cache.Events.Remove -= OnRemove;
            cache.Events.Backplane.MessageReceived -= OnBackplaneMessageReceived;
        }

        /// <summary>
        /// Every time a cache value is set, keep track of the key.
        /// </summary>
        /// <param name="sender">FusionCache instance handling the event</param>
        /// <param name="e"></param>
        private void OnSet(object? sender, FusionCacheEntryEventArgs e)
        {
            OneSetCounter++;
            if (sender is IFusionCache cache)
            {
                _cachedKeys.TryAdd(e.Key, 0);
            }
        }

        /// <summary>
        /// On Cache.Remove, check for related keys in the group and also remove them
        /// </summary>
        /// <param name="sender">FusionCache instance handling the event</param>
        /// <param name="e"></param>
        private void OnRemove(object? sender, FusionCacheEntryEventArgs e)
        {
            OneRemoveCounter++;
            if (sender is IFusionCache cache)
            {
                RemoveCacheEntry(cache, e.Key, true);
            }
        }

        /// <summary>
        /// On Backplane message recieve. Set: Add the new cache key to the local tracked keys, Remove: Remove self and related Keys without triggering backplane notification.
        /// </summary>
        /// <param name="sender">FusionCache instance handling the event</param>
        /// <param name="e"></param>
        private void OnBackplaneMessageReceived(object? sender, FusionCacheBackplaneMessageEventArgs e)
        {
            OnBackplaneMessageReceivedCounter++;
            if (sender is IFusionCache cache)
            {
                if (e.Message.Action == ZiggyCreatures.Caching.Fusion.Backplane.BackplaneMessageAction.EntrySet)
                {
                    OnBackplaneMessageReceivedSetCounter++;
                    // When new cache entry is created, add to local tracking dictionary
                    _cachedKeys.TryAdd(e.Message.CacheKey, 0);
                }
                else if (e.Message.Action == ZiggyCreatures.Caching.Fusion.Backplane.BackplaneMessageAction.EntryRemove)
                {
                    OnBackplaneMessageReceivedRemoveCounter++;
                    RemoveCacheEntry(cache, e.Message.CacheKey, false);
                }
            }
        }

        private void RemoveCacheEntry(IFusionCache cache,string key, bool triggerBackplaneNotification)
        {
            if (_cachedKeys.TryRemove(key, out _))
            {
                // Remove the current key from the cache
                cache.Remove(key, new FusionCacheEntryOptions() { EnableBackplaneNotifications = triggerBackplaneNotification });

                // Find all related keys, across all groups
                var relatedKeys = GetRelatedKeys(key);

                foreach (var relatedKey in relatedKeys)
                {
                    // Remove the key from the local tracking dictionary as to avoid recursive events
                    if (_cachedKeys.TryRemove(relatedKey, out _))
                    {
                        // Remove the cache value, this triggers backplane notifications
                        cache.Remove(relatedKey, new FusionCacheEntryOptions() { EnableBackplaneNotifications = triggerBackplaneNotification });
                    }
                }
            }
        }

        public bool IsStarted { get; private set; }
        public bool IsStopped { get; private set; }

        /// <summary>
        /// Locate keys related to the current supplied value.
        /// </summary>
        /// <param name="key">key name</param>
        /// <returns>IEnumerable<string> containing keys in the same group</returns>
        private IEnumerable<string> GetRelatedKeys(string key)
        {
            List<string> keyList = new List<string>();

            // Find groups this key belongs to
            var keyGroups = _keyGroups.Where(x => x.IsMatch(key));

            // find all keys in the groups
            foreach (var group in keyGroups)
            {
                keyList.AddRange(_cachedKeys.Keys.Where(x => group.IsMatch(x)));
            }

            return keyList.Distinct();
        }
    }
}

I'm moving this to the recently opened Discussions board.
In case this will be approved to become a feature a separate issue for the design & development will be created.


Add Dispenser TNT tracking.

Dispensed TNT is tracked using a HashMap of placed dispensers.

The source of the TNT is set to be the same owner as the dispenser.

:+1:

merged


Cricket

The Cricket Part doesn't show any accurate info for some reason
Please fix

This should be fixed now. Run pip install sports.py --upgrade to get the lastest version.


Create posthog dashboards and add more tracking

Things that we want to track:

(average) time spent on dapp

need to add pageleave event tracking

(average) active users at any given time
Realm opens

already tracked

Visitors device (desktop/mobile)

already tracked

Let's create charts for each.

Pageleave is going to be very hard/maybe impossible due to browser limitations, fwiw.
Thinking some more here, we might be able to do a little bit more in PostHog by measuring anything that has >15 minutes (or whatever) between actions as a new “session” for our purposes. We can fiddle with the constant a bit.
Note that realm opens already have a chart, but we don't have the realm id with them right now.

I was thinking we can use before unload event 🤔

realm opens already have a chart, but we don't have the realm id

I think it was fixed a couple days ago? Will check

I've just added the following charts to Posthog: https://app.posthog.com/insights?createdBy=61067. @Shadowfiend could you confirm if it is enough, do we need an additional dashboard for this analytics?

Unique users device type - would be good to add labels to the data so we know from looking at the chart what color refers to what device
Realms opened by realm name - looks good
Number of unique users - looks good I think
Average time spent on the dapp - seems highly improbable that the average time is larger than a few minutes, are we calculating that correctly?


ADR: Slots reserved React property key

You may have components that you would like the users to have control over some underline components.
Why slots?
VueJS uses slots, Web Components use the concept of slot, Svelve uses slots .... no point in using another word when other ecosystems that did align in such topic use such name.

Do you know why React currently does not use slots? Just playing devil's advocate. I really like the idea to be honest.

Do you know why React currently does not use slots?

That is quite simple to answer, they don't care.
Which I think is a good thing, such spec has nothing to do with React internals. Where other frameworks do have slots because their internals does care about such concerns, it is an actual thing.

Although React doesn't care at all about how you accomplish the task, the intention is the same: "define a slot" (using the term from other frameworks).
Hint, why having some alignment is good.


Update integration-tests.md

Fixes #23543
@jvandertil the .NET 7 version should work with .NET 6. The monikers for .NET 6 used the .NET 5 version.
Internal review URL
Public review  of the doc build:

download the HTML files
unzip
view HTML file in a browser.
For links outside the doc, remove the review. from URL.

@jvandertil when you get a chance can you take a quick look at https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests ?


Correct command to create new plugins in create-app readme

Hey, I just made a Pull Request!
Correct command to create a new plugin in plugins/readme.md created by create-app.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

Nice thanks!


Controlling modules

This is a question. We have a big application. Eventhough we have module-specific loaders it only helps to modularize the code. We have no control over the module loader flow. We don't know how many modules are loaded when we view a screen. How do I have that type of control over the modules ? Can I unload modules if I don't need them ? Otherwise the browser will have all the code of the application which is not desired. Am I making sense ? Is there a script that looks at the queue and prints how many modules are loaded or unloaded ?

Hi.
First of all, it is impossible to unload a module with Angular.
With ocLazyLoad you can use events to monitor what modules are loaded, and you have functions to get the list of loaded modules.

I probably wouldn't want to store any state within a module directly so they really shouldn't use up many resources. There is also listening for $destroy which cleans up module scopes.

On Mar 22, 2015, at 7:56 AM, Olivier Combe<EMAIL_ADDRESS>wrote:
Hi.
First of all, it is impossible to unload a module with Angular.
With ocLazyLoad you can use events to monitor what modules are loaded, and you have functions to get the list of loaded modules.
—
Reply to this email directly or view it on GitHub.

Thanks. I meant that the module also loads related code. So too much code
is loaded. So I can monitor $destroy and track what is eligible for GC ? I
compare this with the JVM GC. I also use Chrome tools.
On Sun, Mar 22, 2015 at 8:52 PM, Jon Stevens<EMAIL_ADDRESS>wrote:

I probably wouldn't want to store any state within a module directly so
they really shouldn't use up many resources. There is also listening for
$destroy which cleans up module scopes.

On Mar 22, 2015, at 7:56 AM, Olivier Combe<EMAIL_ADDRESS>wrote:
Hi.
First of all, it is impossible to unload a module with Angular.
With ocLazyLoad you can use events to monitor what modules are loaded,
and you have functions to get the list of loaded modules.
—
Reply to this email directly or view it on GitHub.

—
Reply to this email directly or view it on GitHub
https://github.com/ocombe/ocLazyLoad/issues/151#issuecomment-84630214.

If you're really worried about it you can also just load another url so the page refreshes and resets things. It is another network hit though.

On Mar 22, 2015, at 8:38 AM, Mohan Radhakrishnan<EMAIL_ADDRESS>wrote:
Thanks. I meant that the module also loads related code. So too much code
is loaded. So I can monitor $destroy and track what is eligible for GC ? I
compare this with the JVM GC. I also use Chrome tools.
On Sun, Mar 22, 2015 at 8:52 PM, Jon Stevens<EMAIL_ADDRESS>wrote:

I probably wouldn't want to store any state within a module directly so
they really shouldn't use up many resources. There is also listening for
$destroy which cleans up module scopes.

On Mar 22, 2015, at 7:56 AM, Olivier Combe<EMAIL_ADDRESS>wrote:
Hi.
First of all, it is impossible to unload a module with Angular.
With ocLazyLoad you can use events to monitor what modules are loaded,
and you have functions to get the list of loaded modules.
—
Reply to this email directly or view it on GitHub.

—
Reply to this email directly or view it on GitHub
https://github.com/ocombe/ocLazyLoad/issues/151#issuecomment-84630214.

—
Reply to this email directly or view it on GitHub.

Which part of ocLazyLoad should I use to print the queue of modules?

From the docs:
getModules(): Returns the list of loaded modules
---> $ocLazyLoad.getModules()


upgrade dependencies

First known issue we need to work on:
It seems pinning Bokeh (at 1.0.4) is catching up to us.
It's trying to import Markup from 'jinja2`, but that has deprecated this way of importing it. See https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-0

Closing, as we'll rather open a clean new one


Problem with Average_F

Hello, it seems the Average_F is not F1 score, for example

1 ROUGE-1 Average_R: 0.28242 (95%-conf.int. 0.25721 - 0.30877)
1 ROUGE-1 Average_P: 0.30157 (95%-conf.int. 0.27114 - 0.33506)
1 ROUGE-1 Average_F: 0.28196 (95%-conf.int. 0.25704 - 0.30722)

R=0.282, P=0.302, and F1 should be 2*P*R/(P+R)=0.292, is this know's issue or I made some wrong?
Thanks!

The results you see are averages. F = 2*P*R/(P+R) (for each evaluation) does not mean that avg(F)=2*avg(P)*avg(R)/(avg(P)+avg(R))


feat(react): adding ability to support theming of datahub, with two themes included OOB

Light theme:

Dark theme:

Instructions on how to use in the readme
Checklist

[ ] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[ ] Links to related issues (if applicable)
[ ] Tests for the changes have been added/updated (if applicable)
[ ] Docs related to the changes have been added/updated (if applicable)

@gabe-lyons : looks like there is a build issue


getting install errors with all deps.

pictoprime_install_err.txt
on win 10 pro x64. using x64 versions of node and the rest. have not tried downgrade to x32.
as far as I know all deps are installed correctly. not sure about openssl though. I installed via >choco install openssl
which seemed to work fine.

Hm, from your logs, it doesn't seem to think GraphicsMagick is present in your path,

1046 error Installing lwip. If this fails, just install GraphicsMagick (http://www.graphicsmagick.org/).
1046 error It seems like lwip failed to be intalled. Please check the errors.

Could you try typing where gm and see what it produces?
Thanks!

INFO: Could not find files for the given pattern(s).
about to check PATH env var.

c:\program files\graphicsmagick-1.3.36-q8 in system PATH. maybe reboot??? ran into that before. about to reboot now.

that fixed it. maybe you could mention requiring a reboot after all deps so others will know.


ApiClient - InterceptRequest/InterceptResponse are not accessible from the nuget package

The partial methods InterceptRequest and InterceptResponse in the ApiClient are not implementable when you bring in the package through a nuget package. According to this
Microsoft Documentation:

All partial-type definitions meant to be parts of the same type must be defined in the same assembly and the same module (.exe or .dll file). Partial definitions cannot span multiple modules.

At compile time of the package, partial classes are combined into one class. Since InterceptRequest and InterceptResponse are not implemented anywhere, they do not end up in the compiled class at all and are effectively removed from the class. You can see this using ReSharper and looking at the definition of CallApi. The Intercept methods are not there since they are never implemented.
public object CallApi(
      string path,
      Method method,
      Dictionary<string, string> queryParams,
      object postBody,
      Dictionary<string, string> headerParams,
      Dictionary<string, string> formParams,
      Dictionary<string, FileParameter> fileParams,
      Dictionary<string, string> pathParams,
      string contentType)
    {
      RestRequest restRequest = this.PrepareRequest(path, method, queryParams, postBody, headerParams, formParams, fileParams, pathParams, contentType);
      this.RestClient.Timeout = this.Configuration.Timeout;
      this.RestClient.UserAgent = this.Configuration.UserAgent;
      return (object) this.RestClient.Execute((IRestRequest) restRequest);
    }

I would like to use the InterceptResponse method to include these request/responses in my telemetry. This is also the only method that would easily expose the RateLimit headers for all requests. The only way I can think to currently access these methods would be to clone this repository and include the source in my project, which negates the ease of a nuget package.

Hi @bgrew Good point, I will update these methods to virtual, these come from swagger-codegen so this is a nice enhancement for the community too for instance: https://github.com/swagger-api/swagger-codegen/blob/master/samples/client/petstore/csharp/SwaggerClient/src/IO.Swagger/Client/ApiClient.cs#L40


The text inside the box is not properly visible when user hover mouse on “?” question mark symbol

SEVERITY:  Major
MODULE:  Bubble chart
Platform:

Windows 7 / Firefox 45.0
Windows 7 / Chrome 49.0

RELEASE: V0.13.4
STEPS TO REPRODUCE:

Navigate to the URL : http://tools-stage.gapminderdev.org/
Bubble Chart will be loaded.
Hover mouse on “?” sign adjacent to population and region

ACTUAL RESULTS:
The text inside the box is not properly visible while visible when user clicks the icon instead of hover
EXPECTED RESULTS:
The text should be clear and visible
SCREENSHOT:

fixed by 0bc5b1e5aedc9d2e1a1f08ace517bea21d3642a3, together with #1558


Upgrade ActiveAdmin to 1.2.x

@boie0025 I can help with that as well if you want.

@boie0025 I've started working on it and updated to 1.2. The first error I get is related to filters and method that isn't present in mongoid:
undefined method `association_primary_key' for #<Mongoid::Relations::Metadata:0x0000000002742aa0>

association_primary_key was added to filters after release of activeadmin 1.1 in this commit and it comes from activerecord: https://github.com/activeadmin/activeadmin/commit/78028761adffd6fe25a91b8b4c61c8c07d9e1a1d#diff-4d08d3c1322dabe608c2079b868d13fd
I don't know how I should go about fixing this issue. Do you maybe have any suggestions or tips for me?

Hi @grzegorz-jakubiak, Sorry, I missed this earlier.  Can you push up a branch to your copy with this issue?  I'll poke around and see if I can come up with something.  It may just have something to do with the specific filters used in the test.  May have to patch something.. but this whole project is full of patches, so that's probably fine.

@boie0025 I pushed my branch: https://github.com/activeadmin/activeadmin-mongoid/tree/activeadmin-1.2


Add plan review for MP 6.0

@jclingan you fixed my first comment. The following is still not rendered well.

You can either accept my suggestion or do another commit to fix all of the lines.

@Emily-Jiang, @jclingan (and @ederks85), I found a few issues:
We will have a microprofile-parent major update, that will include a major release migration for Jakarta EE (9.1 to 10) including the CDI Lite 4 major release (and other things too).
We should not use patch or service releases to reflect this!
Besides issues with semver, if we woud do it like that and we need to fix one of the existing MP component specs, we would have to add another digit to the version, i.e. MP Config <IP_ADDRESS> - I think this is not a good idea at all...
Additionally, some MP component specs are not named correctly:

Open API -> OpenAPI
JWT RBAC -> JWT ?

Sometimes this is a difficult task, as component specs themself do not use consistent naming (i.e. microprofile-jwt-auth issue 303 or MP OpenAPI has an inconsistent naming regarding the GitHub repository name with eclipse/microprofile-open-api and on the website too).
If we do not fix these issues, we keep the technical debt and have to pay the interest rate again and again...
Being short in the naming can be a good strategy to prevent issues like this, i.e. MicroProfile Telemetry covers MicroProfile Telemetry Tracing (and that will be included) ;-)
To be exact, it might be useful in the future to use the official full name of the component spec to prevent confusion i.e. when there is a component spec of the same name in Jakarta like Config - using MicroProfile Config and Jakarta Config would help to separate them.
Some of this findings are old or repeated ones (from my MP 5.0 Release Review), that are not addessed yet. I think we should do that and in case this Plan Review passes (formally it looks like now), we can still do a new iteration to address my concerns without delaying the work on the release in general, I think.
As conclusion, I have to vote -1 now, but hoping to get this fixed soon! :-)

Sorry for being a dunderhead, where is this page intended to display -- at microprofile.io, somewhere?

@edbratt  This will be displayed in the release record without the asciidoc formatting. It is unclear how it will be referred to from microprofile.io. We are still discussing individual spec pages. In the meantime, it is in asciidoc format here.
@JanWesterkamp-iJUG We should figure out the proper name. We've called it JWT Auth for a long time. However, the spec text says Interoperable JWT RBAC. You are correct that this needs to be addressed. I'll fix Open API -> OpenAPI


test: integration test

Generic note: Integration test implies covering real scenarios. I think there should be a case checking that a scheduled job is really executed.
Am I right?

@df67450 Yes, I agree with your point.
@athakor I think runJobTest() executes a job right? Would be possible to check it's status once it is finished?

@df67450 Yes, I agree with your point.
@athakor I think runJobTest() executes a job right? Would be possible to check it's status once it is finished?

Besides job status check I would suggest the job is done. I mean to schedule sending a message every second and then check in 3 seconds for 3 messages are successfully received.

Generic note: Integration test implies covering real scenarios. I think there should be a case checking that a scheduled job is really executed.
Am I right?

Yes right

@df67450 Yes, I agree with your point.
@athakor I think runJobTest() executes a job right? Would be possible to check it's status once it is finished?

Besides job status check I would suggest the job is done. I mean to schedule sending a message every second and then check in 3 seconds for 3 messages are successfully received.

correct but here i would prefer to go with runJob status check

@df67450 Yes, I agree with your point.
@athakor I think runJobTest() executes a job right? Would be possible to check it's status once it is finished?

Besides job status check I would suggest the job is done. I mean to schedule sending a message every second and then check in 3 seconds for 3 messages are successfully received.

correct but here i would prefer to go with runJob status check

runJob status check is absolutely necessary check, but it's not enough for comprehensive testing.
What if by mistake a mock implementation becomes the main one, the status will be reported as completed, but no message will be sent out. The test will not catch that bug.

such test could be provided later.


Cardano GraphQL API Local Deployment Issues - Failure in Applying Hasura Metadata

Ask a question
I am currently facing an issue while deploying the Cardano GraphQL API locally on the preprod testnet, without Docker. The issue arises during the application of Hasura metadata by the cardano-graphql-background server.
My environment variable METADATA_SERVER_URI is set to https://tokens.cardano.org, which is presumably the intended metadata server. However, this URI appears to just lead to an Nginx server with no clear metadata path that the cardano-graphql-background process could use.
Despite these issues, health checks seem to return positive results, suggesting that the server is operational to some extent.
This problem is particularly impacting the functionality of cardano-ql and cardano-ql-background, given their interdependencies.
One part of this situation that confuses me is the exact role of https://tokens.cardano.org. The current documentation does not appear to explain the purpose of this resource in this context.
Is there any workaround or alternative approach that would allow me to bypass these issues and successfully deploy the Cardano GraphQL API locally? Any guidance or clarification would be greatly appreciated.

@PardusEidolon For preprod testnet, can try setting the METADATA_SERVER_URI to -  http://metadata.world.dev.cardano.org and if its able to pick the asset metadata.


"The name 'Host' does not exist in the current context"

Issue moved from MicrosoftDocs/feedback#3594

Please respond to @OddEyesMage.

From @OddEyesMage on Sunday, April 4, 2021 1:48:08 AM
When I tried to follow the tutorial and right when I get to where I need to setup the add scaffold I see that in my Program.cs I have an error saying that 'the name "Host" does not exist in the current context'. I do not understand what I am doing wrong, I have retried this numerous times, I have followed the tutorial, yet I keep getting this error the only difference is that I am using NET Core 2.2 instead of 5.0. If anyone can tell me why this issue is happening it would be much appreciated. For context im referring to this https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro?view=aspnetcore-2.1

Issue moved from MicrosoftDocs/feedback#3594

Please respond to @welcome[bot].

From @welcome[bot] on Sunday, April 4, 2021 1:48:09 AM
Thank you for creating the issue! One of our team members will get back to you shortly with additional information. If this is a product issue, please close this and contact the particular product's support instead (see https://support.microsoft.com/allproducts for the list of support websites).

I am using NET Core 2.2 instead of 5.0

.NET Core 2.2 is out of support.


.NET core 2

Are u planning a upgrade to .NET Core 2 ?
Regards.

We use https://www.nuget.org/packages/EntityFramework.DbContextScope/ without any issues (so far) on .net core 2.

I´m facing some problems with IObjectContextAdapter not being in EFCore. Should i use EF on this project? i was migrating all references to Core.
thx for help.

I'm going to make a point of updating the compatibility as soon as possible... obviously a bit late for this issue!


Deprecate IFluidTokenProvider

It doesn't seem that we need to prescribe any particular token provider pattern, and this interface seems generally unused at this point.  To be removed in next.
Also, there should be no built-in expectation that ContainerRuntime is an IFluidTokenProvider - dependencies like this are better injected through other means.  Also to be removed in next.

How does a customer know how to write a token provider? Do we really not have requirements around them? Nearly everyone who uses AFR needs to have one.

How does a customer know how to write a token provider? Do we really not have requirements around them? Nearly everyone who uses AFR needs to have one.

Looked closer, and this isn't what I thought it was. Our names need improvement. 😂


feat: zookeeper k8s charm feature match to vm (almost)

Changes Made

feat: feature match with DPE VM charm - New features include:

Scale up/down support with dynamic updates to ZK quorum and server
Server-Server auth handled using SASL, with super and sync user management
Client-Server auth handled using SASL, with username+password adding/deleting managed through the relation
Added ZooKeeper client lib using Kazoo for handling common cluster commands

feat: add opinionated set of config options
temp: remove existing CI and COS integration - These will be added back at a later stage while the charm is worked on

TODO

Scale-down cannot be properly tested in K8s due to an ongoing bug. It appears that this implementation of scale-down 'works', however when the cluster loses quorum (e.g scale down from 6 units to 3), it will fail, as the leader did not receive any cluster_relation_departed events in time. It is not possible to get around this.

We could increase the ZooKeeper config option syncLimit (how long in time before a unit is flagged as 'out-of-sync' with the current quorum leader, i.e dead) to be long enough (current set-up suggests ~60s), but it's a hack on-top of a hack and a 60s timeout is not production safe.
It seems that different version of Juju/K8s majorly change how fast these departed events fire on scale-down, so it's hard to optimize for now
As such, currently any test that requires a scale-down is @pytest.mark.skip'd, and will be updated when scale down in Juju on K8s stabilizes.

Review Notes
This is a huge diff and will be a pain to review, as it's essentially replacing an entire charm, with an entire charm. Below are linked the specific lines that need review, as the rest has been reviewed in the VM charm:

K8s specific properties in src/charm.py - link
Pebble Ready in src/charm.py - link
RollingRestart method in src/charm.py - link
Getting host for K8s in src/cluster.py:L215 - link
All of src/config.py - link
All of CONTRIBUTING.md - link
All of README.md - link
All of config.yaml - link
All of metadata.yaml - link

awesome work here 🤩 zookeeper is coming along very nicely! Mind breaking it up into 3-6 separate PRs?

Will give it a go tomorrow, have to gather some energy for this one!


Unable to create resource in grouped route

This code works great
let users = UserController(droplet: drop)
drop.resource("users", users)

but this won't compile
let users = UserController(droplet: drop)
drop.grouped("v1") { v1 in
    v1.resource("users", users)
}

compiler error saying there is an extra argument in the resource method call.  I personally feel they should both work but I'm not sure if this was intentional?

This should definitely work. We're updating Droplet route groups in 0.15 and we'll make sure this works.
We want to support syntax like this:
let middlewareBoundGroup = drop.grouped(myMiddleware)
middlewareBoundGroup.add(users)
let test = middlewareBoundGroup.grouped("test")
test.resource("utilities", utilities)

drop.group(myMiddleware) { middlewareBoundGroup in
    middlewareBoundGroup.add(users)

    middlewareBoundGroup.group("test") { test in
        test.resource("utilities", utilities)
    }
}


Torch support [DON'T MERGE]

Thanks very much to @Sravan2j for his hard work on this! This is going to be a somewhat long-lived feature branch.

Please open pull requests for torch-related changes against this branch, not against master.
Since this is now a public branch, don't do any rebasing. Just merge in changes from master to torch periodically. There may be a big rebase at the last minute before merging into master.
Where possible, try to open pull requests against master for changes that are generic across frameworks, like task.framework_name(). Let's try to break some of this up a bit.

Comments/critiques welcome!

@Alexis-Jacob, any comments on this? How does this line up with the work you guys have been doing at @Deepomatic?

First of all, everything that you've made is great and covers most of what we did and were planning to do at @deepomatic
However I have some questions/suggestions:

Is there a way to launch digits without caffe ? I believe that digits should be framework independent
During the creation of the dataset:

if torch is installed maybe we should use torch instead of caffe to generate the db (in order to use specific torch features such as the color space conversions for instance)

Adds, It should be framework independent .It should be launch without caffe or any other thrid party framework

@Alexis-Jacob and @dzhwinter,  yes, that makes sense to launch digits without caffe. I will check what all changes are required to implement that. Also regarding the usage of torch specific feature (i.e., the color space conversions), there is a resize function "DIGITS/tools/torch/utils.lua" module, probably we may extend that. What are your suggestions? Please let me know

I tried pulling this code and ran into several issues immediately.
Error messages on job submission
I just tried running MNIST, and DIGITS gave me this error:
useMeanPixel parameter is not considered as subtractMean value is provided as "yes"
Loading Model: /raid/jobs/dev/20150518-164856-686f/model

Is supplying both useMeanPixel and subtractMean an error? Sounds like it should be a warning at most. And why did DIGITS try to use both flags anyway?
Why is torch attempting to "load a model"? I didn't use a pretrained model.

Checking for unmet dependencies
Here is the torch_output.log from that job. It looks like I'm missing some dependencies.
2015-05-18 16:49:00 [INFO ] useMeanPixel parameter is not considered as subtractMean value is provided as "yes"
2015-05-18 16:49:00 [INFO ] Loading Model: /raid/jobs/dev/20150518-164856-686f/model
/home/lyeager/torch/install/bin/luajit: /home/lyeager/torch/install/share/lua/5.1/trepl/init.lua:319: /home/lyeager/torch/install/share/lua/5.1/trepl/init.lua:319: module 'inn' not found:No LuaRocks module found for inn
no field package.preload['inn']
no file '/raid/jobs/dev/20150518-164856-686f/inn.lua'
no file '/home/lyeager/digits/tools/torch/inn.lua'
no file '/home/lyeager/.luarocks/share/lua/5.1/inn.lua'
no file '/home/lyeager/.luarocks/share/lua/5.1/inn/init.lua'
no file '/home/lyeager/torch/install/share/lua/5.1/inn.lua'
no file '/home/lyeager/torch/install/share/lua/5.1/inn/init.lua'
no file './inn.lua'
no file '/home/lyeager/torch/install/share/luajit-2.1.0-alpha/inn.lua'
no file '/usr/local/share/lua/5.1/inn.lua'
no file '/usr/local/share/lua/5.1/inn/init.lua'
no file '/home/lyeager/.luarocks/lib/lua/5.1/inn.so'
no file '/home/lyeager/torch/install/lib/lua/5.1/inn.so'
no file './inn.so'
no file '/usr/local/lib/lua/5.1/inn.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
[C]: in function 'error'
/home/lyeager/torch/install/share/lua/5.1/trepl/init.lua:319: in function 'require'
/home/lyeager/digits/tools/torch/main.lua:156: in main chunk
[C]: in function 'dofile'
...ager/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:131: in main chunk
[C]: at 0x00406170

That's probably my fault for not following the Torch install instructions. But is there any way to detect whether the user has installed all the necessary requirements? I do this for caffe in the apply() function in the config module.
Viewing caffe jobs
When I try to view the page for a job that was created with caffe, I get this error:
BuildError
('serve_file', {}, None)

By running DIGITS with the --debug switch, I see that the problem is on this line. I think the problem is that task.log_file isn't set. What'd you do there?

Ok, now I think I've installed all the requirements (following your instructions), and I get this:
2015-05-18 18:29:08 [INFO ] useMeanPixel parameter is not considered as subtractMean value is provided as "yes"
2015-05-18 18:29:08 [INFO ] Loading Model: /raid/jobs/dev/20150518-182845-834a/model
/home/lyeager/torch/install/bin/luajit: /home/lyeager/torch/install/share/lua/5.1/trepl/init.lua:363: /home/lyeager/torch/install/share/lua/5.1/trepl/init.lua:363: /home/lyeager/torch/install/share/lua/5.1/pb.lua:212:
no file '/raid/jobs/dev/20150518-182845-834a/lightningmdb.proto'
no file '/home/lyeager/digits/tools/torch/lightningmdb.proto'
no file '/home/lyeager/.luarocks/share/lua/5.1/lightningmdb.proto'
no file '/home/lyeager/torch/install/share/lua/5.1/lightningmdb.proto'
no file './lightningmdb.proto'
no file '/home/lyeager/torch/install/share/luajit-2.1.0-alpha/lightningmdb.proto'
no file '/usr/local/share/lua/5.1/lightningmdb.proto'
stack traceback:
[C]: in function 'error'
/home/lyeager/torch/install/share/lua/5.1/trepl/init.lua:363: in function 'require'
/home/lyeager/digits/tools/torch/main.lua:169: in main chunk
[C]: in function 'dofile'
...ager/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:131: in main chunk
[C]: at 0x00406670

I can't grok what's gone wrong here. Did I miss some package I needed?

Why doesn't the torch MNIST network work on color images? Is that something that can be fixed?
2015-05-27 10:14:17 [INFO ] started training the model
/home/lyeager/torch/install/bin/luajit: ...er/torch/install/share/lua/5.1/nn/SpatialConvolution.lua:88: bad argument #2 to 'SpatialConvolutionMM_updateOutput' (input channels and nInputPlane dont match)
stack traceback:
[C]: in function 'SpatialConvolutionMM_updateOutput'
...er/torch/install/share/lua/5.1/nn/SpatialConvolution.lua:88: in function 'updateOutput'
/home/lyeager/torch/install/share/lua/5.1/nn/Sequential.lua:29: in function 'forward'
/home/lyeager/digits/tools/torch/main.lua:526: in function 'Test'
/home/lyeager/digits/tools/torch/main.lua:665: in main chunk
[C]: in function 'dofile'
...ager/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:131: in main chunk
[C]: at 0x00406670

Closing in favor of #324.


[k8s 1.13][bsc#1122783] update critical pod configuration

https://kubernetes.io/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/
bsc#1122783
Signed-off-by: Maximilian Meister<EMAIL_ADDRESS>

now that we are on 1.13 we need to consider this

@MaximilianMeister kube-flannel pods would also require this annotation

kube-flannel pods would also require this annotation

@lcavajani thanks for the hint. updated


Issue on hentai related tags

If searching using hentai's related tags is only possible to return to homepage rebooting the application, in this state the phone's back button seems not working: seems like the app is refreshing the page but the wrong one (this only happens with related tags and doesn't occur if the tag is inserted using the keyboard)

Fixed on 1.9.0


[Feature Request]: Allow having/changing highlights for the icons of groups

I am talking something like:
	highlights = {
		disable_for_group_name = true,
		["class-name"] = { fg = "blue"},      -- Classes and class-like objects
		["function-name"] ={fg = "orange"},   -- Functions
		["method-name"] = {fg = "red"},     -- Methods (functions inside class-like objects)
	},

I know it is probably possible with gps.get_data() but it will probably be a hassle to achieve.

Hey @MordechaiHadad ! Could you try out my new plugin nvim-navic. It improves on nvim-gps and used Lsp instead of treesitter. Also added colored icons support to it.

@SmiteshP ayo this is awesome, what exactly made you move development to the new plugin?

@SmiteshP how about merging two plugins together with both methods of retrieving position available? Could have a LSP enabled by default with fallback to treesitter if no LSP functionality is available. Or is it too much of a maintenance burden?

@gegoune sounds like a pretty cool idea!

@SmiteshP what do you think of this?

@SmiteshP how about merging two plugins together with both methods of retrieving position available? Could have a LSP enabled by default with fallback to treesitter if no LSP functionality is available. Or is it too much of a maintenance burden?

Hey @MordechaiHadad @gegoune
I answered this question in https://github.com/SmiteshP/nvim-navic/issues/6

@SmiteshP thank you for your work!


iPhone X Support

Splash Screen doesn't fill notch area.

Bottom Tab Bar Items are under the Home Navigation on iOS.

Yup, when this app was released there was no iphone X :)
PRs welcome, but since the conference happened in 2017 we'll be unlikely to keep this app up to date with new phones.

Absolutely, maybe on the next years conference app


SUMO without GUI on Docker

Could you dockerize the SUMO service, without GUI. Instead, send the logs, warnings and errors to the admin tool (it should be configurable, so it should be easy to switch it to error messages only. Perhaps we can add this to the SUMO config message.

@erikvullings Which schema do I use for sending log messages?


file_io.get_matching_files indefinitely hangs

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): GCP cloud shell
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: N/A
TensorFlow installed from (source or binary): Comes pre-installed in  GCP cloud shell
TensorFlow version (use command below): TF 2.1
Python version: 3.7.3
Bazel version (if compiling from source): N/A
GCC/Compiler version (if compiling from source): N/A
CUDA/cuDNN version: N/A
GPU model and memory: N/A

Describe the current behavior
file_io.get_matching_files indefinitely hangs
Describe the expected behavior
file_io.get_matching_files should not hang!
Code to reproduce the issue
Note the // in the first command
gsutil cp README-cloudshell.txt gs://<some_bucket>/test//bug.txt
gsutil cp README-cloudshell.txt gs://<some_bucket>/test/bug.txt

This creates a weird / folder under the test folder
Now open python
from tensorflow.python.lib.io import file_io
file_io.get_matching_files('gs://<some_bucket>/test/bug.txt')

This will hang.
Delete the / folder and this would work fine.
One of our training jobs hung because TF somehow created a / folder in model output directory!

Apologies for the long delay. This should be fixed in the next nightly and the next release.


Fix the tests on Rust nightly.

A recent change in Rust caused minor formatting changes when displaying fully qualified enum variants. Namely:

The spaces around the :: which were previously present were removed.
The space between vec! and the vector content was removed. This breaks tests which assert descriptions, match explanations, and failure messages. These rely on the Debug representation of actual and expected values.

This fixes the tests so that they pass again in nightly while continuing to pass in the other versions. It removes text from the assertion where it is not crucial to what is being tested. In cases where it is crucial, the test now uses contains_regex with some operators so that the test passes whether or not the spaces are present.

How about duplicating the tests with #[rustversion::any(nightly, since(1.76)] and #[rustversion::all(not(nightly), before(1.76))]? It will keep the test assertion "tight". Once we are removing the support for 1.75 (in quite a while, but it will eventually happen), it will be obvious that we can remove the previous test.

How about duplicating the tests with #[rustversion::any(nightly, since(1.76)] and #[rustversion::all(not(nightly), before(1.76))]? It will keep the test assertion "tight". Once we are removing the support for 1.75 (in quite a while, but it will eventually happen), it will be obvious that we can remove the previous test.

That's a lot of duplicated code, especially since nearly all the affected points deal with just one string.
I've tried making that a constant which is set depending on the rustc version and using format! in the assertions. When and if the MSRV is updated to 1.76, it can be inlined. In one case I duplicated the test itself because the text only appeared once and it isn't possible to use the format! macro there.

Yep, duplicating the tests was a bit too messy, but I prefer the new solution over using non-obvious fix like contains_regex!
Thanks!


Binaries with DWARF5 debug info fail at decoding time

It seems that magic-trace struggles with DWARF5 which gcc11 now uses by default. Testing a simple program compiled with DWARF5 info gives:
[Attaching to 4199088]
[Snapshot taken!]
...
[ perf record: Woken up 2 times to write data ]
[Finished recording!]
[ perf record: Captured and wrote 4.012 MB /tmp/magic_trace.tmp.848576/perf.data ]
[Decoding, this may take 30s or so...]
(monitor.ml.Error
 ("Owee_buf.Invalid_format(\"unknown .debug_line version\")")
 ("Raised at Owee_buf.invalid_format in file \"src/owee_buf.ml\", line 22, characters 25-51"
  "Called from Owee_buf.assert_format in file \"src/owee_buf.ml\" (inlined), line 26, characters 4-22"
  "Called from Owee_debug_line.read_header in file \"src/owee_debug_line.ml\", line 54, characters 2-80"
  "Called from Owee_debug_line.read_chunk in file \"src/owee_debug_line.ml\", line 82, characters 12-27"
  "Called from Magic_trace_core__Elf.addr_table.(fun).load_table_next in file \"core/elf.ml\", line 103, characters 12-45"
  "Called from Base__Option.iter in file \"src/option.ml\" (inlined), line 68, characters 14-17"
  "Called from Magic_trace_core__Elf.addr_table in file \"core/elf.ml\", line 90, characters 2-1023"
  "Called from Magic_trace_lib__Trace.Make_commands.decode_to_trace.(fun) in file \"src/trace.ml\", line 70, characters 25-43"
  "Called from Tracing__Tool_output.write_and_view in file \"src/tool_output.ml\", line 32, characters 16-19"
  "Called from Async_kernel__Deferred0.bind.(fun) in file \"src/deferred0.ml\", line 54, characters 64-69"
  "Called from Async_kernel__Job_queue.run_jobs in file \"src/job_queue.ml\", line 167, characters 6-47"
  "Caught by monitor Monitor.protect"))

Passing -gdwarf-4 to gcc makes the issue go away.

Thanks for the bug report!
This is a limitation of Owee, the library we're using to decode dwarf information.
We've got no plans to support -dwarf-5 in the near future so for now you'll have to continue passing -gdwarf-4 to gcc.

I think that debug info is optional and nice when viewing the traces, but it should be easy to detect the mismatch and skip, with a warning, so that magic trace can be used without rebuilding the tracee with special options.

We need to support dwarf-v5 soon if gcc and clang are producing it by default. I don't have a great story for how we're going to do that just yet, but we'll come up with something.

let-def/owee#14 is why this doesn't work today. Still unsure if fixing owee or switching to something with dwarf 5 support is the right way forward.

I've made some forward progress on this, it should be fixed soon. see https://github.com/let-def/owee/pull/18 for more details.


Thalassium rail recipe is bugged

Thalassium rail recipe is bugged and only gives 1 rail from the recipe, it also overrides the vanilla iron rail recipe to give 1 rail per recipe too

Iron tag recipes were moved to BCLib and fixed

Fixed in 0.9.7


Website? ⚡

There is of course https://hyperapp.gomix.me, but that's just a bunch of examples I put together for people to get started with HyperApp more quickly.

Should we have a website?
What information should be on the website?
What should be the goal of the website?
Thoughts?

If we have a website I can host it easily. Got a dedicated root server with lots of free resources.
We should get a domain then though.

https://github.com/dodekeract/deploy looks nice with yellow, magenta and lime, but what is it?

If we have a website I can host it easily. Got a dedicated root server with lots of free resources.

Awesome! I'd suggest we use something more substainable like plain ole GitHub Pages tho. The scope of the website is mostly promotional and HyperApp is not a product, but why not, I'm basically cool with that, just want to know what people think and whether this is a good idea or what.

@jbucaran It's a small service that runs on my server to automatically pull GitHub repos when a web hook arrives. That way a push to master automatically updates the associated website. Right now it's only used by https://dinc.hacker.digital, which I host for a friend.

Somewhat related to this, it's too bad the /r/HyperApp/ is taken but neglected. Reddit is a pretty good platform for discussion and questions.

I think this is a good idea (mainly because I can see it looking awesome) but content is a great question. What should be covered that isn't in the repo/wiki?

I think it's a great idea. Having a slick website never hurts.

Again @jbucaran as I stated on #165, have a look what I have done here: https://github.com/grantcarthew/site-auto-tech
Very easy to do and hosted by GitHub.

@jbucaran @dodekeract
Regarding the desire for a domain, you might consider js.org. I think hyperapp.js.org would be pretty cool. Getting a domain from js.org is free, easy to setup, and seems to be available.

Hyperapp do well to "animate" a small part of a webpage. Thanks to the root param.
So, it could be great to have an interactive documentation.

Here's the design. Please leave some feedback. If everything is ok, I can start codding it.

I personally love it! Nitpick: the two buttons at the bottom have weird alignment.
Will codes be live-editable?

Alright -- I'm not the one who signs off on this, but here are my thoughts:
On the whole, I like it! A lot! Very clever with the HYPERapp({...}) in the header! Also super sweet with code examples -- esp if its live editable.
Some things I might polish a bit:

The purple-ish tone of the header. I think I'd prefer something warmer to make the blue of the logo pop a little more.

The colored bubbles in the header are a little... I don't know. Kids birthday party or something. I like the hexagons in the darker part -- maybe we could do something with hexagons in the header also?

Also the blurb about "custom tags" might need to change (just had a chat with @jbucaran about the terminology) -- but that's easy to fix later, so don't let that hold you back.

I love this. I do. I think @Idered is doing a terrific job and I really appreciate the time you are putting in on this. At the risk of sounding boring, I'd push for a more plain look. Using the same design and ideas you have now, would it be possible to make it look less flamboyant?
While I see where you are coming from with this, but I also see this getting old very quickly.

Also, wile yarn is popular and all, perhaps we should go with "npm install --save hyperapp"? I mean, npm is after all the default, and we don't want to give the impression that yarn is required.
And yarn users will for sure know that they can just "yarn add" whatever others "npm install"

@zaceno

note: npm v5 made --saves the default, so the syntax for npm would be npm install hyperapp

@Idered Very nice design!

I am on the @jbucaran the design is great, but hyperapp need something more pure and elegant.
And I insist, I want an interactive guide for the getting started guide o/

I love that stateless components are a "selling" point 😂
We should keep it that way 😛

Also, I've designed enough sites to know that a mobile first approach is not just something they say to do because it is cool 😎 but because it is a useful exercise in content distillation and prioritisation. It is much easier to take something pure and pad it out with swag when the screen gets larger than vice vera.
How about we also try derive some established common ground in the following:

Logo
Wordmark
Colors
Fonts
Icons
Shapes
Textures
Patterns

Rather than building a specific product.. lets try create a style; a guide that can be used as reference to make anything look and feel HyperApp.
Then we need to think about content..
Personally I have never tried to orchestrate the creation of a style guide in a truly distributed open source context before, so this could be fun or futile. Only one way to find out!
Any and all suggestions welcomed 🙏

@lukejacksonn - I think it's easier to derive a style from a design than the opposite. What @Idered has done could be a good way to start.

Some details.

Logo: What do people think about the current logo? Is it a keeper?
Color: #00CCFF
Fonts: LHF Brianna Slant / Helvetica Neue?

I'm not saying don't take inspiration from what @Idered has done! You could use this as a basis to fill in the blanks like @jbucaran has done above..
I am trying to encourage a more distributed approach (where we don't rely solely on the designer @Idered to create assets). A real design system is one that allows for anyone to build something with that hyperapp feel.. for that we need to establish some common language/assets.
Ambitious I know but this approach has been proven by some of the biggest in tech. It is already a half solved problem.. for inspiration check out:

https://airbnb.design/the-way-we-build/
https://material.io/guidelines/

@jbucaran -- I feel like the logo is good! At least, I don't see any reason to change it, and since it's probably starting to be a little recognized (after our couple of trending-peaks recently) it's maybe best to leave it.

@lukejacksonn I think it's a good idea, but very ambitious. And also, atm, we don't really need the design system for anything more than the website. (Ok maybe the docs, if we intend to publish them somewhere other than the github repo)
So I think, rather than starting with a design system, the approriate order of business is:

Get a website that's nice. (We're in a good direction with @Idered 's work)
Iterate that design a little. Let it mature (nothings is its best the first time)
When there is some other work that needs to be designed to harmonize / show a relationship with hyperapp, then lets do our best to take elements from the established website design.
Let the lessons learned from (3) be the starting point of a design system
Iterate the design system as needed.

Not trying to be funny or anything, but I would patch (1) as follows:

Get a website. 😅

Thank you all for feedback. I'll now adjust the design. I'll try to change style from flamboyant :P to premium and by that, I mean total minimalism. A few days break and gave me a fresh view on what I've done.

Reflecting on @Idered's awesome design and @lukejacksonn's point about developing "that hyperapp feel", I was thinking @Idered might want to keep @hyperappjs's twitter banner in mind (either as inspiration for his design or as something to include in his design)

Hyperapp is simple but magic ; we need a website simple but magic :smile:
But I definitly love (want to keep) the

hyperapp({...})

@Swizz Unless magic is an inherent characteristic of Virtual-DOM based frameworks, I don't (hope there isn't) see any magic in HyperApp.
TBH I am a bit susceptible to this word (magic), used in the context of programming and wouldn't want HyperApp to be considered as such.
Can you share what you thought was "magic" about HyperApp? 🙏

Oh. I meant awesome. I straightly translate from my thoughts, and in my culture we said magic for something that raise a "Waouh effect" : When I saw it, my thought was "I want to use it, I want to take part of this project" :fireworks:

Sure! Just leaving it there for the record. 🌟:+1:

Guys, I just can't...

Now that https://hyperapp.js.org is live, we should track the future of the home page here, so we let's close. 🤘
Thank you @lukejacksonn for working on this and to @Idered for all the great inspiration. Please feel free to open an issue on the repo linked above to continue the discussion. 🙇


NIFI-5846: Redirect URL is incorrect after logout

Thank you for submitting a contribution to Apache NiFi.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[X] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[X] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[X] Has your PR been rebased against the latest commit within the target branch (typically master)?

[X] Is your initial contribution a single, squashed commit?

For code changes:

[X] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[ ] Have you written or updated unit tests to verify your changes?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.

Building and Testing. I only have a Kerberos test environment, but I think it will work the same for all of the user/pass logins.

+1 LG.

Thank you for reviewing and merging it!


Add support for locales in number inputs?

https://www.ctrl.blog/entry/html5-input-number-localization

I don't really want to move away from <input type="number"> to <input type="text"/> but may be the mask can be tweaked depending on the decimal separator used and supported in native number inputs.
It looks like thousand separators aren't really supported.

Although it is actually possible to show the numeric keyboard on mobile devices for text input.... (same as appearance="numbers")

As mentioned in #792, I think this should be pretty simple to address now, using Intl.NumberFormat.


Maurits/fair checklist

Checklist to improve the FAIR principles for research software. Preferably, I would like to have this available before we send out all review summaries so we can include the link.
This is a first attempt, any suggestions are welcome.

One thing would add though is a brief paragraph introducing when and what for to use the checklist.
That is not yet there at the moment ;)


tests/kernel/fatal: test_fatal rv equal to TC_FAIL

Describe the bug
A clear and concise description of what the bug is.
What have you tried to diagnose or workaround this issue?
To Reproduce
Steps to reproduce the behavior:

mkdir build; cd build
cmake -DBOARD=quark_se_c1000_ss_devboard -DARCH=arc
make
See run

Screenshots or console output

***** delaying boot 1000ms (per build configuration) *****
***** Booting Zephyr OS v1.14.0-rc1-60-g9072d34f30 (delayed boot 1000ms) *****
Running test suite fatal
===================================================================
starting test - test_fatal
test alt thread 1: generic CPU exception
Exception vector: 0x8, cause code: 0x0, parameter 0x0
Address 0x40000550
Current thread ID = 0xa8000400
Faulting instruction address = 0x40000550
Caught system error -- reason 0
test alt thread 2: initiate kernel oops
***** Kernel OOPS! *****
Current thread ID = 0xa8000400
Caught system error -- reason 4
test alt thread 3: initiate kernel panic
***** Kernel Panic! *****
Current thread ID = 0xa8000400
Caught system error -- reason 5
test stack overflow - timer irq
posting 1024 bytes of junk to stack...
busy waiting...
FAIL - stack_thread1@132. should never see this
***** Stack Check Fail! *****
Current thread ID = 0xa8000400
Caught system error -- reason 2

 Assertion failed at zephyr.git/tests/kernel/fatal/src/main.c:236: test_fatal: (rv equal to TC_FAIL)

thread was not aborted
FAIL - test_fatal
===================================================================
Test suite fatal failed.
===================================================================
RunID: ci-190212-1245-422:uuur
PROJECT EXECUTION FAILED

Environment (please complete the following information):

OS: fedora29
Toolchain: zephyr
Commit SHA or Version used: 9072d34f30

If I understand this bug report properly, this is a test with CONFIG_STACK_SENTINEL enabled that is not working on ARC. The result ought to be reproducible with the nsimdrv emulator using the nsim_em target.

I checked the latest code, and running fail code should not be compiled with ARC board configured. please retest this case with latest zephyr version.  And the version(9072d34) you use is dated on Feb 9, after that there is changes for this case.
Thanks

Passed for 6368ed4edf5c5ffbccf9f904efe836ef5ca5d84a. Closing case.


all: use go-run to run chapters code

Instead of painfully modifying the root main.go file, put a main.go
file under each chapterXX directory, automatically go-generated from
the root main.go one.

this is a different take than #1 and is probably easier at the cost of a very limited code duplication (that is manageable as done via go generate


Update doc page

Description
Update doc style, add space between line, add space inside inline code block, add space between li element.
Update toml documentation page for replacing the docker labels list by a tables.

Some Screenshot to see the difference should be cool :)

Before / After space

Before / After table

I will make the change for using em/rem and not pixel.
And I see I miss a save before commit and the space was on body and not on .main... I will include the fix with the rem/em change.
What do you think for removing the fixed width? We could have more space for long line if we use all the width available.

@ldez No problem, I made only one PR because it's all related to readability.

Done!


Not saving correctly

See attached video
https://user-images.githubusercontent.com/45933242/126736823-b9473d0e-ed0b-4bb5-86cc-a8e5ec93a2d7.mp4

Heya, interesting issue you're running into here! THanks for the detailed explanation in the video.
Please note that we concentrate our support efforts on the WordPress.org support forums. Whenever you're facing some roadblocks or have some questions, our support representatives can help you there. We only move over to GitHub for confirmed & reproducible bugs.
That said, since you are already here, please try a few things:

Temporarily deactivate all other plugins and see whether this still happens.
You can use the Health Check & Troubleshooting plugin to enter troubleshooting mode where other plugins are only deactivated for your own user account, but not anyone else. This is a super easy & safe way for debugging.
If it works in troubleshooting mode, that means there's a conflict with one of your plugins. You can activate plugins one by one to find the culprit.
Send us your Site Health information via this form.
This way we can check for any potential plugin conflicts as well.
Analyze the REST API network requests in the browser's dev tools to find anomalies.

Open the dev tools (press F12)
Clear any items in the list
Filter by web-stories
Save the story
For the entry saying /wp-json/web-stories..`, analyze the response status, headers and the response body.
Share a video or screenshots here.

For (4), here's a quick demo of what I mean:
https://user-images.githubusercontent.com/841956/126783582-b9baf2c5-7ce3-4c30-af48-91ccd0bcf54f.mov

@DanielCryptoK Hi there! Checking in here – are you still having trouble?


Feat/hybrid cloud

This PR implements static node pools for Claudie. It works under three assumptions:

Claudie can access nodes on specified endpoints
Static nodes can access each other
Claudie can ssh into them with root privileges with the specified key referenced from the secret.

The testing of the static nodes included

replacement of cloud nodepools with static nodepools (for both, control plane and compute plane)
addition and removal of static nodepools (for both, control plane and compute plane)
resizing of static nodepools (for both, control plane and compute plane)

Hey guys, could you please check the docs? Once thats done, I would like to merge this PR :).
cc @Despire @cloudziu @MarioUhrik

I was wondering whether the renaming of frontend is compatible with this PR? I still see some residue of the frontend name sprinkled. Otherwise LGTM 👍 nice work


URL encode parenthesis in playground

The Share button in the TypeScript Playground emits URLs like this:
http://www.typescriptlang.org/play/index.html#src=export type Point2D %3D {
  x%3A number%2C
  y%3A number%2C
}%3B

type Plucker<T%2C K extends keyof T> %3D (value%3A T) %3D> Pick<T%2C K>%3B
function createPlucker<T%2C K extends keyof T>(path%3A string)%3A Plucker<T%2C K> {
  const pathSegments %3D path.split('.') as Array<K>%3B

  return function plucker(value%3A T)%3A Pick<T%2C K> {
    let result%3A any %3D value%3B

    for (const pathSegment of pathSegments) {
      result %3D result[pathSegment]%3B
    }

    return result as Pick<T%2C K>%3B
  }%3B
}

const pluckX %3D createPlucker('x')%3B
const point%3A Point2D %3D {
  x%3A 100%2C
  y%3A 100%2C
}%3B

const test %3D pluckX(point)%3B
test.toFixed()%3B
which are incompatible with Markdown because the () characters are not serialized.  Please replace them with %28 and %29 so they can be used with Markdown.

This is fixed in the new playground 👍


Does not work on Ubuntu 16.04 64bit

I want enroll ipad 2 and ipad air, IOS 9.3.5 and 10.2
When I run ios-cert-enrollment on Ubuntu 14.04 64bit all work, but on 16.04 doesn't work
Teminal:

[2017-01-27 15:31:15] INFO  WEBrick 1.3.1
[2017-01-27 15:31:15] INFO  ruby 2.3.1 (2016-04-26) [x86_64-linux-gnu]
[2017-01-27 15:31:15] INFO

[2017-01-27 15:33:15] DEBUG accept: 10...*:51184
[2017-01-27 15:33:15] DEBUG Rack::Handler::WEBrick is invoked.
<IP_ADDRESS> - - [27/Jan/2017:15:33:15 EET] "GET /?operation=GetCACert HTTP/1.1" 200 944

-> /?operation=GetCACert
[2017-01-27 15:33:15] DEBUG Rack::Handler::WEBrick is invoked.
<IP_ADDRESS> - - [27/Jan/2017:15:33:15 EET] "POST /?operation=PKIOperation HTTP/1.1" 200 2798
-> /?operation=PKIOperation
[2017-01-27 15:33:45] DEBUG close: 10...*:51184

IOS Console:

1/27/17, 3:33:18 PM profiled[388]: (Error) MC: Installation failed. Error: NSError:
Desc   : Profile Installation Failed
Sugg   : The SCEP server returned an invalid response.
US Desc: Profile Installation Failed
US Sugg: The SCEP server returned an invalid response.
Domain : MCInstallationErrorDomain
Code   : 4001
Type   : MCFatalError
...Underlying error:
NSError:
Desc   : The SCEP server returned an invalid response.
US Desc: The SCEP server returned an invalid response.
Domain : MCSCEPErrorDomain
Code   : 22013
Type   : MCFatalError
Extra info:
{
isPrimary = 1;
}

Hey,
Did you manage to solve this?
Thanks

Hello
I used  https://github.com/micromdm/scep


Getting unminified js

Hi, I am trying to use this theme to style my site and it looks great. I have form though that when submit gets pressed I get Uncaught TypeError: Cannot read property 'toLowerCase' of undefined at scripts.min.js:1. I would like to try to debug this but I cannot read the minified JS. Is there a way to get the unminified versions? I thought it has something to do with the Grunt file but I don't have much experience using it and I don't want to break anything.
Thanks

I think I found out why
 $(document).on("submit", $searchForm, function(a) {
    a.preventDefault(), q = $searchInput.val(), execSearch(q)
  })
}

This is triggering the event listener that should only be for the search form on any submit, it seems that any form triggers this and not just forms
I change $searchForm to .simple-search and everything looks like it still works, without affecting other forms on the site.

All of the unminified scripts are in the js folder. Grunt is used to take all of them, combine them, and then minify into scripts.min.js.

Maybe I do have a similar problem. I'm trying to run a simple form action. However, when I click on the button nothing happens. I tried my form action without jekyll & theme in a plain html page and it works smoothly.
Once I remove search.js and minify everything again with grunt, submit works as expected. Actually it is not enough to simply set search: false in _config.yml.
@edgenard  I do not understand what you did with $searchForm. Could you explain how exactly you changed the javascript so submit does not work only for the search? I do have no experience with js, so thanks for your input.

The way search.js is written it listens for submit event on any form on the whole site. So it triggers the function(a):
 $(document).on("submit", $searchForm, function(a) {
    a.preventDefault(), q = $searchInput.val(), execSearch(q)
  })
}

So what I did is I changed what $searchForm  refers to. It used to refer to in search.js You'll find
$searchForm = $("[data-search-form]") I changed it to  $searchForm = $(".simple-search"). This narrows it down to just the search form, not every form on the site.

Now got it working as @edgenard suggested. I changed the registration of the event handler for submit from $searchForm to ".simple-search". Not sure whether search still works, but finally at least my form is working.
@mmistakes  Would it be possible to get this fixed in the theme? It took me quite some time to figure out. Unfortunately I'm not experienced in javascript, so I do not have any idea about the impact of the change. Otherwise I could make a pull request. Any input?
@edgenard Thanks! and sorry, I should improve my javascript knowledge! Additionally some thinking before posting would be good as well.

@suchja I'm far from a Javascript expert myself. If you want to submit a pull request with the fix I'd be happy to look at it and merge.

I have submitted a PR to fix this.


provide proxy origin information in headers

When a proxy route is called, should we pass along an origin route in headers?
Example
Site: https://now-node-prints-headers.support-team.now.sh prints out the headers it receives.
Proxy Site: https://now-proxy-test.support-team.now.sh is proxying node-node-prints-header as its /.
Right now there is no way for now-node-prints-headers to know the traffic originated from now-proxy-test.
Can we add a proxy related header?

This would be extremely helpful for my use case. I'm attempting to use a Now deployment to act as a reverse-proxy. We white-label our product and have multiple different domains at the top but reroute the traffic to the same backend servers.


Added Google Fonts to ##More Information

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Thanks for the PR @LadyTano, but this has been added from a previous merge. Thanks and happy coding!


Intergrate Cmder + Windows 10 Terminal = strange background color bug

Windows Terminal version (or Windows build number)
1.7.1033.0
Other Software
Cmder-Console Emulator
Steps to reproduce
Well . I'm using default settings both app . And change background in Cmder Profile. Both are latest
Expected Behavior
No response
Actual Behavior
I get this strange color background

I think this is #9693

Thanks for helping guys. I'm fixed it. For anyone looking for resolutions. do it exactly in this link. It working. https://github.com/cmderdev/cmder/issues/2516#issuecomment-813459040

Thanks for helping guys. I'm fixed it. For anyone looking for resolutions. do it exactly in this link. It working. https://github.com/cmderdev/cmder/issues/2516#issuecomment-813459040 . I will close it


Nuget Package Manager URLs in Description

Two of the Urls contain 33, looks like it should be 3.
License:  https://github.com/IdentityServer/IdentityServer33.EntityFramework/blob/master/LICENSE
and
Project URL:  https://github.com/IdentityServer/IdentityServer33.EntityFramework

Fixed, thanks.