[FLINK-6422] [core] Unreachable code in FileInputFormat#createInputSp…

Fix Unreachable code in FileInputFormat#createInputSplits.

Thanks  @tedyu for reporting this. cc  @StephanEwen @tedyu Could both you take a look ? I checked the first version you designed.

Can you take a look at the error in CI ?

Seems I could not get any useful information from CI, except for this kinda stuff following and it seems  not relevant to this issue.
Running org.apache.flink.test.recovery.JobManagerHACheckpointRecoveryITCase
java.lang.RuntimeException: org.apache.zookeeper.server.ZooKeeperServer class is frozen
	at javassist.CtClassType.checkModify(CtClassType.java:288)
	at javassist.CtBehavior.setBody(CtBehavior.java:432)
	at javassist.CtBehavior.setBody(CtBehavior.java:412)
	at org.apache.curator.test.ByteCodeRewrite.fixMethods(ByteCodeRewrite.java:91)
	at org.apache.curator.test.ByteCodeRewrite.<clinit>(ByteCodeRewrite.java:50)
	at org.apache.curator.test.TestingServer.<clinit>(TestingServer.java:33)
	at org.apache.flink.test.recovery.JobManagerHACheckpointRecoveryITCase.testCheckpointedStreamingProgram(JobManagerHACheckpointRecoveryITCase.java:345)
	at org.apache.flink.test.recovery.JobManagerHACheckpointRecoveryITCase.testCheckpointedStreamingProgramIncrementalRocksDB(JobManagerHACheckpointRecoveryITCase.java:331)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

LGTM, merging ..

Thanks @tzulitai for review! And thanks @tedyu for reporting this!


Add error propagation from child thread to main thread

A try/except block is added in the enqueue_updates method to catch any exceptions during the subscription process. These exceptions are stored in a new attribute self.error, making them accessible in the main thread.
As a result of this change, the caller should check self.error after each operation to handle any potential exceptions raised in the child thread.

Trying to solve this: https://github.com/akarneliuk/pygnmi/issues/104

@brunoonovais Can you please check this.

Looks ok @AscendedEntity , let's see how tests will work out.


Peek

https://github.com/phw/peek

Peek is already being installed :man_facepalming:
https://github.com/mskrajnowski/dev-setup/blob/master/tasks/utils.yml#L23


Add documentation for manufacturing device registration

Signed-off-by: Andy Doan<EMAIL_ADDRESS>

@angolini - you may want to read this as well while you work through rolling out waves.
I fear this might be too terse and I've become too close to this problem to describe it adequately.

Docs for 54a12fb325cb27341ea27b8861b8bd7fd14d6e5b are browesable at: https://ci.foundries.io/projects/fio-docs/builds/816/docs/artifacts/html/index.html

Docs for b3949ab7db5a6bb61b3e2767304701f3ca90cb60 are browesable at: https://ci.foundries.io/projects/fio-docs/builds/823/docs/artifacts/html/index.html

Docs for b3949ab7db5a6bb61b3e2767304701f3ca90cb60 are browesable at: https://ci.foundries.io/projects/fio-docs/builds/824/docs/artifacts/html/index.html

squashed and rebased on master

Docs for a0253ce1389fab3a742d01546792b379911a1441 are browesable at: https://ci.foundries.io/projects/fio-docs/builds/838/docs/artifacts/html/index.html


Scope verification is not correct

Found this issue on the latest 1.7.1 version, and zf-mvc-auth's latest of 1.1.3. Problem is in false approving access for authorized users but with smaller scope access. I have an ACL roles called e.g. 'test' and 'live'. I have some resource called A_Resource, and allowed 'live' users access to it. This issue allows 'test' users to be accessed to A_Resource. I debugged a bit and this strange behaviour starts at:
public function authenticate(Request $request, Response $response, MvcAuthEvent $mvcAuthEvent)
    {
        $content       = $request->getContent();
        $oauth2request = new OAuth2Request(
            $_GET,
            $_POST,
            array(),
            $_COOKIE,
            $_FILES,
            $_SERVER,
            $content,
            $request->getHeaders()->toArray()
        );
        if (! $this->oauth2Server->verifyResourceRequest($oauth2request)) {//here
            return false;
        }
        $token    = $this->oauth2Server->getAccessTokenData($oauth2request);
        $identity = new Identity\AuthenticatedIdentity($token);
        $identity->setName($token['user_id']);
        return $identity;
    }

the method's signature is
public function verifyResourceRequest(RequestInterface $request, ResponseInterface $response = null, $scope = null)

As a result, here:
public function verifyResourceRequest(RequestInterface $request, ResponseInterface $response, $scope = null)
    {
        $token = $this->getAccessTokenData($request, $response);
        // Check if we have token data
        if (is_null($token)) {
            return false;
        }
        /**
         * Check scope, if provided
         * If token doesn't have a scope, it's null/empty, or it's insufficient, then throw 403
         * @see http://tools.ietf.org/html/rfc6750#section-3.1
         */
        //problem in $scope
        if ($scope && (!isset($token["scope"]) || !$token["scope"] || !$this->scopeUtil->checkScope($scope, $token["scope"]))) {
            $response->setError(403, 'insufficient_scope', 'The request requires higher privileges than provided by the access token');
            $response->addHttpHeaders(array(
                'WWW-Authenticate' => sprintf('%s realm="%s", scope="%s", error="%s", error_description="%s"',
                    $this->tokenType->getTokenType(),
                    $this->config['www_realm'],
                    $scope,
                    $response->getParameter('error'),
                    $response->getParameter('error_description')
                )
            ));
            return false;
        }
        // allow retrieval of the token
        $this->token = $token;
        return (bool) $token;
    }

we got problem with $scope variable, because it's isn't false, it is null, and this breaks the statement and not sending 403 error. The rest of checks in that if statement are fine. But seems that scope should be provided, and appropriate logic for default values also need to be implemented... Probably the problem is in authenticate method, passing role, all works great, but didn't find way to get requested scope there...
Looking forward for your response

We have the same Problem here. I would like to suggest to pull request a feature to accomplish the scope verification. This feature should provide a new authentication sub-key named scopes. With respect to the already implemented ACL based authorization, this configuration could have the following layout.
As an example:
'authentication' => array(
    'scopes' => array(
        'default' => 'read_default write_default',
        'Controller\Service\Name' => array(
            'actions' => array(
                'action' => array(
                    'default' => 'read_anything',
                    'GET' => 'get_anything',
                    'POST' => 'post_anything',
                    // etc.
                ),
            ),
            'collection' => array(
                'default' => 'read_anything',
                'GET' => 'get_anything',
                'POST' => 'post_anything',
                // etc.
            ),
            'entity' => array(
                'default' => 'read_anything',
                'GET' => 'get_anything',
                'POST' => 'post_anything',
                // etc.
            ),
        ),
    ),
)

Then the authenticate Method should locate the requested resource and related scope to call the verifyResourceRequest with the scope parameter filled in.
This should solve this problem. What do you think?

we got problem with $scope variable, because it's isn't false, it is null

This is irrelevant; null evaluates as a falsy value in PHP, so the conditional evaluates the same as if a false were provided; in other words, the conditional is not executed in this case.
The only way it could be executed is if we provided scopes to the verification method. We do not currently have plans to do that, as it duplicates the authorization system already present in zf-mvc-auth, providing more than one authorization mechanism to learn (right now, you learn one authorization mechanism, and it applies regardless of the authentication mechanism used).
If you want to accomplish the above, you can create an alternative ZF\MvcAuth\Authentication\OAuth2Adapter extension for it; we do not plan to do so at this time.


fez hangs during upload

During upload operation fez hangs. Full log including fez version and other details here - https://ci.sparrowhub.io/report/2843
HTH

Can you point me to the repo this is happening with?  (Or supply your handmade tarball?)

https://github.com/melezhik/SparrowCI

And … I install fez from  https://github.com/tony-o/raku-fez.git , maybe not very good idea …

@melezhik which version does it report from fez -v ?

20:13:55 :: ===> Installing: fez:ver<40>:authzef:tony-o:api<0>
20:14:04 ::
20:14:04 :: 1 bin/ script [fez] installed to:
20:14:04 :: /home/worker/.raku/bin
20:14:05 :: cleaning /var/.sparrowdo/env/test/.sparrowdo/source/.tom/.cache ...
20:14:05 :: >>= fez version: 40
20:14:06 :: >>= Looking in "sdist/WsmUK7ED.tar.gz" for META6.json
20:14:08 :: >>= meta looks OK
20:14:08 :: >>= meta looks OK
20:14:08 :: >>= SparrowCI:ver<0.0.11>:authzef:melezhik looks OK

@melezhik is this running in the busybox container?

No, this is Debian
On Sun, Feb 5, 2023 at 3:20 PM tony-o @.***> wrote:

@melezhik https://github.com/melezhik is this running in the busybox
container?
—
Reply to this email directly, view it on GitHub
https://github.com/tony-o/raku-fez/issues/83#issuecomment-1418268089,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHRHSJMJZZU4HQG5DQ43LTWWAKSVANCNFSM6AAAAAAUPXAGJQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Ok, this is not a tar issue, I've run command manually from container, and it seems that  --unattended flag is not honored:
worker@ca60ead8977c:/var/.sparrowdo/env/test/.sparrowdo/source$ cat ~/.fez-config.json
 {
    "groups":[],"un":"melezhik","key":"**********",
    "bundlers": ["Fez::Util::Pax"]
 }
worker@ca60ead8977c:/var/.sparrowdo/env/test/.sparrowdo/source$ fez upload --u^C
worker@ca60ead8977c:/var/.sparrowdo/env/test/.sparrowdo/source$ fez upload --unattended
>>= Looking in "sdist/Yq0ijUw3.tar.gz" for META6.json
>>= meta<provides> looks OK
>>= meta<resources> looks OK
>>= SparrowCI:ver<0.0.11>:auth<zef:melezhik> looks OK
=<< Key is expired, please login:
>>= Username: ^C

@melezhik ahhh okay, i'm working on this issue - this is more difficult and I need a new pattern to remove universal flags in MAIN

@tony-o sure, no rush

IIU this issue correctly, it's the server that rejected the request because the "Key is expired". There isn't much an --unattended flag could do about that. Right?

@patrickbkr if the key expired then fez will prompt for a username and password
This is fixed in the dist branch -


use bindings for native lib require

This PR just use bindings to load the native lib. Also renames the native lib.
It's useful for people trying to use webpack.
Used by a lot of libs right now

May this project be transfered to @abandonware team ?
Relate-to: https://abandonware.github.io/


Feature: update tx failed message

Codecov Report

Merging #140 (e13b939) into master (b7572ab) will increase coverage by 0.00%.
The diff coverage is 0.00%.

@@          Coverage Diff           @@
##           master    #140   +/-   ##
======================================
  Coverage    2.84%   2.84%
======================================
  Files         499     499
  Lines        9840    9838    -2
  Branches     2746    2746
======================================
  Hits          280     280
+ Misses       9560    9558    -2

Impacted Files
Coverage Δ

...mponents/TxResultRenderer/renderTxFailedReason.tsx
0.00% <0.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b7572ab...e13b939. Read the comment docs.


Entries starting with numbers followed by a period render under the checkbox

Describe the bug
See title and screenshot.
To Reproduce
Simply create a todo matching the description, or use test todo.txt.
Do you see any error entries in sleeks developer tools?
No
Expected behavior
I expect the second entry to render with the same offset as the first, though it's possible I'm colliding with some todo.txt syntax I'm not aware of.
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Version of sleek: 1.3.1
Source: Github

@thecnoNSMB could you please check if this still occurs in this pre release? https://github.com/ransome1/sleek/releases/tag/v1.3.2-rc.1

The issue appears to be fixed, thanks!


switch to using the tanzunet API to download product files

Currently, we are using pivnet CLI to download product files.
This cli is not officially supported by VMware.
Todo:

switch to using the Tanzunet API
add checksum validation for the downloaded file.

Label: Backlog
Assignee: Satya
Priority: P3

We decided to switch out the pivnet CLI for the om CLI, which gives us similar outcomes and is supported/patched/maintained. No need to implement TanzuNet interactions ourselves. This came in recently with #149 and thus this issue can be closed.
@tlindsay42


Xray-action 2.4.2 release generates warning for usage of deprecated "set-output" command

Requesting to have deprecated "set-output" command changed to environment files GITHUB_STATE and GITHUB_OUTPUT in this action.
set-output command is set to be depreciated by May 31st 2023 (end of this month).
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
I also checked latest version (2.4.5) and set-output is also being used with this version.
Please have this replaced else the action will likely fail.

Since release 2.4.4 the core dependency was updated to no longer show the deprecation: https://github.com/mikepenz/xray-action/issues/609#issuecomment-1310294844
(Using the action myself and not seeing the deprecation for the new versions either)
Do you have the log output with the warning from 2.4.5 so I may have a closer look?

I actually tried v2.4.5 and no longer see the deprecation warning messages. Apologies for not doing this first and initially misdiagnosing the issue in v2.4.5.
Thanks for the assistance. This issue can be closed (resolved).


⚠ Bofrost.lu has degraded performance

In fcd695f, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2942 ms

Resolved: Bofrost.lu performance has improved in d6a5aff after 10 minutes.


vbump playwright to vs code latest

This PR fixes #18003.
The issue was found with the latest VS code merge.
Issue from Playwright: #18003
Fix from Playwright: https://github.com/microsoft/playwright/commit/3c7d2aae6a0596df717239d24b60ba3702f5fdb8
in v1.17.1

Looks like installer path changed with newer versions.
https://github.com/microsoft/vscode/blob/main/build/azure-pipelines/common/installPlaywright.ts

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 48.175%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
14516

Relevant Lines:
28627

💛  - Coveralls


chore(Data): reduce use of autoImplicit

This is not exhaustive: there are about ten remaining files in this directory.
Data/Vector may come in a follow-up PR (this is harder).

Thank you for the fast review!
bors r+


Set Cluster Configuration to operate in memory by default

Issue link

RHOAIENG-4525
What changes have been made

By default the SDK now handles appwrapper/individual-resource creation in memory.
Yaml files are not generated while write_to_file=False in cluster configuration
Verification steps

Setup
Notebook server ODH/RHOAI/Local

Clone this repository with git clone https://github.com/project-codeflare/codeflare-sdk.git
Checkout this PR's branch
Run poetry build - install if needed (pip install poetry)
Run pip install --force-reinstall dist/codeflare_sdk-0.0.0.dev0-py3-none-any.whl
Restart your notebook kernel

Testing
This is very tedious to test as there are 4 possible ways of creating a cluster config with this change. i.e. (mcad=False, write_to_file=False), (mcad=True, write_to_file=False), ...
I recommend to start by testing mcad=True/False with write_to_file=False

Delete your ~/.codeflare folder - Not necessary but easier to catch things working incorrectly.
Follow a demo notebook of your choosing
Run ClusterConfiguration and a yaml/appwrapper file will not be written you should receive a message like this Yaml resources loaded for <cluster-name>
Continue to run through the demo notebook
Repeat with an alternate mix of the variables.

Checks

[x] I've made sure the tests are passing.
Testing Strategy

[x] Unit tests
[x] Manual tests
[ ] Testing is not required for this change

@VanillaSpoon
Thanks Eoin!

One thing though, should an explanation be added within docs/cluster-configuration.md?
I plan to make an addition to the cluster config docs after a new release :+1:

Successfully ran through all 4 scenarios. All works as expected. Love this addition, great work Mark!
/approve


Migrate the Lumberjack schematics to the NxDev kit and migrate it to the Nx Monorepo

Descoped for Lumberjack v14.0.


[BUG]: fetching website with 4 letters extension

How are you running AnythingLLM?
Docker (local)
What happened?
error when i try to fetch website with 4 letters extension like .tech
Are there known steps to reproduce?
No response

You can fetch any website that is available as its just about DNS resolution. There is no limitation for the TLD used. What is more likely is the website is blocking the scraper for any number of reasons. Some websites dont allow any kind of autonomous loading tools, like puppeteer - which we use.
Closing as wontfix for now. If you have any test websites you can post here I'm happy to debug or test on my end but that is likely the issue's root cause.

would you try https://komasterai.tech ?

Worked for me, was able to get website text


Replacement can't happen at end of block without causing repeated replacements

Problem
The example configuration in this project is as follows:
(PROJ-[0-9]*)\s::::[$1](http://cloud-jira-whatever.com/id/$1)

There is implied whitespace at the end of the match. This means that you cannot replace text at the end of the ~line~ block, because Logseq trims trailing whitespace when you leave a block.
I tried removing the \s, but when I do so, it matches on the link text (for example PROJ-123) from both of the $1 replacements, resulting in multiple cascading replacements, which are repeated each time I leave and re-enter the block.
Proposed Solution
To fix this, you could do the following:

Imagine a configuration with a single regex map with no whitespace at the end of the match:(PROJ-[0-9]*)::::[$1](http://cloud-jira-whatever.com/id/$1)

For each regex map in the configuration, do the following:

Get all unique matches for the regex. Imagine the following block:TODO Follow up on both [PROJ-123](http://cloud-jira-whatever.com/id/PROJ-123) and [PROJ-456](http://cloud-jira-whatever.com/id/PROJ-456)

For this block, the unique regex matches would be PROJ-123 and PROJ-456
For each unique match, do the following:

Generate the replacement for this match. For example, when processing PROJ-123 the replacement would be [PROJ-123](http://cloud-jira-whatever.com/id/PROJ-123).
Split the block text on the replacement. I'm not great at JavaScript but the equivalent Python would be something like:sub_blocks = block.split(replacement)

sub_blocks would be an array of substrings not containing the replacement text. For each substring, replace each occurrence of the unique match with the replacement. Note that this should be done with substring replacement, not regex replacement.
Join sub_blocks by the replacement. Again, I'm not great at JavaScript but the equivalent Python would be:block = replacement.join(sub_blocks)

Using this method, you can avoid making cascading replacements. It also allows the plugin to react to new cases of a match found when a block is edited. Imagine this example block:
[PROJ-123](http://cloud-jira-whatever.com/id/PROJ-123) needs review

This is an contrived example, but suppose you wanted to add more text to this block, including another reference to the Jira ticket ID. Your edited block would then contain something like:
[PROJ-123](http://cloud-jira-whatever.com/id/PROJ-123) needs review something something PROJ-123

Using the above method, we would avoid making cascading replacements on the markdown hyperlink at the beginning of the block, and would only replace the new PROJ-123 reference, resulting in:
[PROJ-123](http://cloud-jira-whatever.com/id/PROJ-123) needs review something something [PROJ-123](http://cloud-jira-whatever.com/id/PROJ-123)

Hi,
I noticed this issue aswell and i have a workaround for you

Using this method, you can avoid making cascading replacements. It also allows the plugin to react to new cases of a match found when a block is edited.

The overall issue is that once you touch a line again, the replacement is running again. So you need to make sure that the original value is different to whatever it is getting replaced with (that is why you have the whitespace in the regex, as the url in the end doesnt have the whitspace).
Your proposed solution will sadly not work as the cascading replacement is happening whenever you retouch a line (as this will trigger the plugin)
Workaround: Simple add a short description to the end of the line after the jiraticket, so the whitespace is not getting removed.

"PROJ-1234 delete table column abc"

Or you make the regex match "PROJ_" as a marker.
Or maybe a bit crazy but you can make a regex which matches PROJ-1234**NOT [ or )** then it wouldnt act on itself
Did you try to match on linebreaks? Maybe that is also a solution.
Overall i dont really see how i can fix this issue as this would require state (storing in a file or DB) to understand where the replacement happened and where it didnt. That is quite tricky

The overall issue is that once you touch a line again, the replacement is running again. So you need to make sure that the original value is different to whatever it is getting replaced with (that is why you have the whitespace in the regex, as the url in the end doesnt have the whitspace).

No. Not with my solution.

Your proposed solution will sadly not work as the cascading replacement is happening whenever you retouch a line (as this will trigger the plugin)

Yes, it will work. My solution accounts for this by splitting on the expected replacement, thus ignoring already-applied regex replacements and focusing on the areas of the block that aren't part of an already-implemented replacement.

Overall i dont really see how i can fix this issue as this would require state (storing in a file or DB) to understand where the replacement happened and where it didnt. That is quite tricky

I don't know where you're getting the idea that state would need to be saved. Perhaps you didn't read my solution closely enough?
I don't know JavaScript well enough but here it is in Python:
#!/usr/bin/env python3

import re

# Note: Python regex replacement uses "\1" instead of "$1"
regex_maps: list = [
    r"(PROJ-[0-9]*)::::http://cloud-jira-whatever.com/id/\1"
]

def do_replacement(block: str) -> str:

    print(f"OLD: {block}")

    for regex_map in regex_maps:
        match_pat: str
        replace_pat: str
        try:
            match_pat, replace_pat = regex_map.split("::::")
        except ValueError:
            continue

        for unique_match in frozenset(re.findall(match_pat, block)):
            replacement: str = re.sub(match_pat, replace_pat, unique_match)
            sub_blocks: list = block.split(replacement)

            index: int
            sub_block: str
            for index, sub_block in enumerate(sub_blocks):
                sub_blocks[index] = sub_blocks[index].replace(unique_match, replacement)
            block = replacement.join(sub_blocks)

    print(f"NEW: {block}")
    print("----------------------------------------")

    return block

if __name__ == "__main__":

    contents: str = "TODO Follow up on both PROJ-123 and PROJ-456"

    # Run replacement once
    contents = do_replacement(contents)
    # Run it again....
    contents = do_replacement(contents)
    # And again....
    contents = do_replacement(contents)
    # And again....
    contents = do_replacement(contents)

    # Add some separator lines before proceeding
    print("")
    print("========================================")
    print("========================================")
    print("========================================")
    print("")

    # Now let's add another "PROJ-123" to the block's contents
    contents += " and assign PROJ-123 to Jonas"

    # Run the replacement again
    contents = do_replacement(contents)
    # And again....
    contents = do_replacement(contents)
    # And again....
    contents = do_replacement(contents)

And here is what you get when you run that code:
OLD: TODO Follow up on both PROJ-123 and PROJ-456
NEW: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456
----------------------------------------
OLD: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456
NEW: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456
----------------------------------------
OLD: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456
NEW: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456
----------------------------------------
OLD: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456
NEW: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456
----------------------------------------

========================================
========================================
========================================

OLD: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456 and assign PROJ-123 to Jonas
NEW: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456 and assign http://cloud-jira-whatever.com/id/PROJ-123 to Jonas
----------------------------------------
OLD: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456 and assign http://cloud-jira-whatever.com/id/PROJ-123 to Jonas
NEW: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456 and assign http://cloud-jira-whatever.com/id/PROJ-123 to Jonas
----------------------------------------
OLD: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456 and assign http://cloud-jira-whatever.com/id/PROJ-123 to Jonas
NEW: TODO Follow up on both http://cloud-jira-whatever.com/id/PROJ-123 and http://cloud-jira-whatever.com/id/PROJ-456 and assign http://cloud-jira-whatever.com/id/PROJ-123 to Jonas
----------------------------------------

You could run that code a million times and it would not perform cascading replacements. This solution prevents the need for all of the odd workarounds you suggested.
Please let me know if you decide not to implement this fix. This plugin is useful enough to me that I will gladly fork and learn enough JavaScript to implement it myself, if that is what must be done.

Hi,
indeed i wasnt understanding your solution 👍  I implemented your solution and pushed v2.0.0, you should be able to update the plugin now and try it out :)
There is one edgecase i found and that is when the line contains only the matching string, then splitting the line will result in an empty result set, but i fixed that by introducing whitespaces at the beginning and end of the line to make sure that whenever we split we get an array with entries. Logseq afterwards will remove the trim automatically so this is just an implementation detail.

Hi,
indeed i wasnt understanding your solution 👍 I implemented your solution and pushed v2.0.0, you should be able to update the plugin now and try it out :)

:raised_hands:

There is one edgecase i found and that is when the line contains only the matching string, then splitting the line will result in an empty result set, but i fixed that by introducing whitespaces at the beginning and end of the line to make sure that whenever we split we get an array with entries. Logseq afterwards will remove the trim automatically so this is just an implementation detail.

Do you mean if the block's contents contain only PROJ-123? Or only the replacement text?


Incremented AzCopy version to 10.8.0 in AzureFileCopyV4

Task name: AzureFileCopyV4
Description: Incremented AzCopy version to 10.8.0 in AzureFileCopyV4. This was done as there are multiple improvements done from 10.3.3 to this version including the issue raised with us that the previous version is not able to recognise the correct filetype for js files.
Documentation changes required: N
Added unit tests: N
Attached related issue: N
Checklist:

[x] Task version was bumped - please check instruction how to do it
[x] Checked that applied changes work as expected

@amit-avit Please mention in the description , the scenarios that you have tested with this change


Shared state cannot be derived solely from blocks

We cannot have the full shared-state of the chain derived solely from blocks with the current model. The initial shared state must be known and agreed upon by the network.
We could aim to remedy this with some special case transactions that only get used at the beginning, such as a %claim transaction for stars to claim their airdrop one time. Or we could instate a rule that the first time a star %joins the network as a validator, it receives its token allocation.
Another thing would be to simply attest to the (relatively simple) Hoon code for the airdrop in the text field of the genesis block:
++  bootstrap-state
 ^-  shared-state  :+
 ::  ledger: initial airdrop to stars
 ^-  (map @p @udtoken)
 %-  molt
 %+  turn  (gulf ~marzod ~fipfes)
   |=  p=@
   ^-  [@p @udtoken]
   [p (mul (bex 16) token-scale)]
 ::  validators: genesis block author
 ^-  (set @p)
 (silt ~[~woldeg])
 ::  blacklist: stars in time-out (initially empty)
 ^-  (map @p @ud)  ~

This requires some human understanding to attest to the initial shared state, but it is verifiable, and could be treated as a part of the protocol. For computer verification, we could hash this value and include it as the prev hash of the Genesis block.
The ugliness is that shared-state is never solely derived from the chain. Rather than:
f(chain) -> shared-state
Which is more typical in blockchains, you would have something more like:
f(shared-state, chain) -> new-shared-state
Whether or not to attempt to remedy this is a design decision and should be discussed at least a little.

$TOKEN rewards now fit this model as of new design plan described in https://tiller-tolbus.redhorizon.com/blog/tokenomics


[Sprint: 41] Added synchronized code blocks in shell processor

https://jira.spring.io/browse/XD-2637

The start & stop methods in this class are not thread safe; if the receive & send methods are marked as synchronized then start & stop can be too.
As an alternative - if possible you could also indicate that instances of this object are not thread safe and thus should be externally protected by synchronization (similar to java.util.HashMap).

@pperalta - Good comments. WDYT about making the Process and related state ThreadLocal instead?

I don't see David's comment here, but did in the github email notification, WDYT about making the Process and related state ThreadLocal instead?
This type of approach overlaps a bit with what was done with Reactor/RxJava.  The easiest out of the box experience is for all incoming messages on the message bus to go through the same processor, so that any aggregate state is accumulated for all the data.   To do a mapping of incoming message to specific process, instead of hard-coding threadId, I used a SpEL expression so it is more flexible, this way for example you could have a python process per Kafka partition, and get some more concurrency going.  It is probably a good option to have, but a post 1.1 feature at this point.

@markpollack I chatted with @dturanski this morning about this.  We agreed that using the ThreadLocal concept wouldn't work because it prevents a user from creating a stateful processor (which the connected car python processor is).  I agree that partitioning/multiple instances via regular module management means is a better option.  I'm going to be applying the updates that @pperalta mentioned and merging it this morning.

Rebased, squashed, and merged.  Thanks!


Parent widget is not getting an updated value of controller, but child widget does

I have 2 screens in my app that leverage the same controller.
Screen 2 (MyTalentDetail) updates the controller value and Screen 1 (MyTalentProfileScreen  - which consists of a parent and child widgets ) receives the updated value;
The issue is that the child widget on Screen 1 receives the updated value inside Obx, but for some reason the Parent does not. It seems to have something to do with the scaffold, as the child is simply a view and the parent contains scaffold.
STEPS to Reproduce:
user navigates to MyTalentDetail screen, edits data, and clicks on the save button which triggers _myTalentController.talentDataChanged.value to be set to true. User is taken back to MyTalentProfileScreen . where the child widget(MyTalentScreenBody) has the updated value of talentDataChanged, but the parent does not
Expected behaviour is that both parent and child widgets on screen 1 receive the updated talentDataChanged value
Code:
class MyTalentProfileScreen extends StatelessWidget {

  final MyTalentsController talentController = Get.put(MyTalentsController());

  final LanguagesController langCtrlr = Get.put(LanguagesController());
  final ContactInfoController contactCtrlr = Get.put(ContactInfoController());

  @override
  Widget build(BuildContext context) {

    return Scaffold(
        appBar: AppBar(
          automaticallyImplyLeading: false,
          backgroundColor: kAppBGColour,
          title: Center(
            child: Text(
              'My Talent Profile',
              style: kGreyTextStyle18,
            ),
          ),
        ),
        body: SingleChildScrollView(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: Column(
              children: [
                MyTalentScreenBody(),
              ],
            ),
          ),
        ),
        bottomNavigationBar:

            Obx(() {
          print('MyTalentProfileScreen Obx talentController.talentDataChanged.value: ${talentController.talentDataChanged.value}');
          return talentController.showSpinner.value
              ? CircularProgressIndicator()
              : SaveCancelNavBar( ... );
        })

        );
  }
}

class MyTalentScreenBody extends StatelessWidget {
  final MyTalentsController controller = Get.find<MyTalentsController>();
  final LanguagesController langCtrlr = Get.put(LanguagesController());
  final ContactInfoController contactCtrlr = Get.put(ContactInfoController());

  final StoredUserData storedUserData = StoredUserData();

  List<Widget> getCategoryTiles() {... }

  List<Widget> getTalentTiles(String selectedCategory) {...}

  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context).copyWith(dividerColor: Colors.white);
    return Obx(() {
      print('MyTalentProfileBody Obx talentController.talentDataChanged.value: ${controller.talentDataChanged.value}');
      return controller.showSpinner.value
          ? CircularProgressIndicator()
          : Column(...);
    });
  }
}

class MyTalentDetail extends StatelessWidget {
  final MyTalentsController _myTalentController = Get.put(MyTalentsController());

  final _formKey = GlobalKey<FormState>();

  final FocusNode summaryFocusNode = FocusNode();

  @override
  Widget build(BuildContext context) {

    return Scaffold(
        appBar: AppBar(
          automaticallyImplyLeading: false,
          backgroundColor: kAppBGColour,
          title: Center(
            child: Text(
              _myTalentController.talentName.value,
              style: kDarkPurple1TextStyle18,
            ),
          ),
        ),
        body:
            SingleChildScrollView(...),
        bottomNavigationBar:
          AddDeleteCancelNavBar(
          saveButtonText: 'Add Talent',
          onPressedSave: () {

            if (this._formKey.currentState.validate()) {
              _myTalentController.talentDataChanged.value = true;

              Get.back();
            }
          },
          onPressedDelete: () {
            _myTalentController.talent.value = Talent(offerings: []);
            _myTalentController.talentSummaryController.value.clear();
            _myTalentController.offeringFieldsController.value.clear();
            _myTalentController.rateFieldsController.value.clear();
            _myTalentController.offeringDescriptionController.value.clear();
            _myTalentController.talentDataChanged.value = true;

            _myTalentController.talent.value = Talent(offerings: []);
            Get.back();

          },
        )

        );
  }
}

class MyTalentsController extends GetxController {
...
 var talentDataChanged = false.obs;
...
}

I am on Getx 3.16.2
Flutter 1.22.4 • channel stable
Dart 2.10.4

Why are you using Put from the same controller in two locations?
class MyTalentProfileScreen extends StatelessWidget {
  final MyTalentsController talentController = Get.put(MyTalentsController());

class MyTalentDetail extends StatelessWidget {
  final MyTalentsController _myTalentController = Get.put(MyTalentsController());

is that a problem?

The correct location for Get.put is within the build method. For example:
class MyTalentProfileScreen extends StatelessWidget {
  // Not here
  @override
  Widget build(BuildContext context) {
    final MyTalentsController talentController = Get.put(MyTalentsController());

    final LanguagesController langCtrlr = Get.put(LanguagesController());
    final ContactInfoController contactCtrlr = Get.put(ContactInfoController());

    return Scaffold(...

ah, thank you! that solved the issue! to confirm is it still a problem using Get.put for the same controller in two locations within build method?

Yep, you had 2 different controllers.

It may be necessary to include in the docs that controllers need to be declared:
in the build method
or class scope by getters
Unless named routes are being used.
It will prevent 100% errors like it

Yep, you had 2 different controllers.
It may be necessary to include in the docs that controllers need to be declared:
in the build method
or class scope by getters
Unless named routes are being used.
It will prevent 100% errors like it

Yes, it would be very helpful. Could you give an example on the proper way to declare them in the class scope by getters?

Yep, you had 2 different controllers.
It may be necessary to include in the docs that controllers need to be declared:
in the build method
or class scope by getters
Unless named routes are being used.
It will prevent 100% errors like it

Yes, it would be very helpful. Could you give an example on the proper way to declare them in the class scope by getters?

class MyTalentProfileScreen extends StatelessWidget {
  MyTalentsController get talentController => Get.put(MyTalentsController());

As it's explained, I'm closing

Yep, you had 2 different controllers.
It may be necessary to include in the docs that controllers need to be declared:
in the build method
or class scope by getters
Unless named routes are being used.
It will prevent 100% errors like it

Yes, it would be very helpful. Could you give an example on the proper way to declare them in the class scope by getters?

class MyTalentProfileScreen extends StatelessWidget {
  MyTalentsController get talentController => Get.put(MyTalentsController());

As it's explained, I'm closing

is there a difference between using a getter to declare a controller and the following as per your docs: ```
// Instantiate your class using Get.put() to make it available for all "child" routes there.
final Controller c = Get.put(Controller());

The difference is that according to the doc you should be using named routes, if you use common routes, you should use either in the build, or as a getter.
An even more recommended way is to use bindings and leave the view completely clean, with just widgets, but I don't like to be opinionated on how people are going to work, I just want to warn them to do it in a way that they won't encounter problems.


Error parsing boolean value. Path '', line 1, position 1. when running first execution

Whenever, I have been running the first cell in the tutorials, I have been getting this error.
Error parsing boolean value. Path '', line 1, position 1.
I can still check by algorithms with the reference implementation, but I can't run any exercises due to the syntax errror.
I think the problem is that I have an updated version of IQSharp, but even when I change the cell, I get the same error.

That's a new and interesting error. Can you provide your environment details? OS, .NET Core version, IQ# version installed, which tutorial you're running, a screenshot of the error?

Nevermind, it was a small mistake. Thank you though!

My favorite kind of issues :-)


Example .exe download fails

"Set up CI system to create desktop installer of vanilla Theia #5481" says

First releases of theia-example v1.2.0 are now appearing here:
https://download.eclipse.org/theia/

That offers
https://download.eclipse.org/theia/snapshots/windows/theia-Installer-1.2.0.exe
which here (Chrome browser) fails giving "Access Forbidden".
Note: I would contribute this report on the issue itself except someone has locked that issue to non-"contributors" (as if testers aren't contributors) with "Pestering the project for one's pet feature is not productive."

@thegecko it looks like the download links for the linux appImage and windows exe do not work at the moment, so it's just a heads up for now.

Thanks for highlighting it, it's probably a file permission setting I need to change before uploading the installers.

Umm, I just tried this myself and can download the files fine.
@chrisjj @vince-fugnitto Can you confirm your experiences?

non-"contributors"

non-committers.

Thanks for the correction.

Umm, I just tried this myself and can download the files fine.
@chrisjj @vince-fugnitto Can you confirm your experiences?

Today it downloads fine. Perhaps someone fixed the permission.

Nothing has changed. Feel free to reopen this issue if there are further problems.

Caching etc. means we never really know "nothing has changed".


Add support for Rails URL helpers

So far, rodauth-rails has recommended using Rodauth's route helpers.
rodauth.login_path(type: "visitor") #=> "/login?type=visitor"
rodauth.create_account_url #=> "https://example.com/create-account"

This communicates that Rodauth routes are different from Rails routes, since Rodauth endpoints are not handled by the Rails router. However, this starts being less convenient in certain situations:

not available in tests (need to use something like path_class_methods)
not displayed in rails routes (need to use separate rails rodauth:routes command)
locale switching using url_for(locale: locale) doesn't work on Rodauth pages

This adds the ability to define Rails URL helpers for Rodauth routes using the #rodauth router method.
Rails.application.routes.draw do
  rodauth # generate URL helpers for main configuration
  rodauth(:admin) # generate URL helpers for secondary configuration
end

$ rails routes -g rodauth

                Prefix Verb     URI Pattern             Controller#Action
                 login GET|POST /login                  rodauth#login
        create_account GET|POST /create-account         rodauth#create_account
 verify_account_resend GET|POST /verify-account-resend  rodauth#verify_account_resend
        verify_account GET|POST /verify-account         rodauth#verify_account
                logout GET|POST /logout                 rodauth#logout
              remember GET|POST /remember               rodauth#remember
reset_password_request GET|POST /reset-password-request rodauth#reset_password_request
        reset_password GET|POST /reset-password         rodauth#reset_password
       change_password GET|POST /change-password        rodauth#change_password
          change_login GET|POST /change-login           rodauth#change_login
   verify_login_change GET|POST /verify-login-change    rodauth#verify_login_change
         close_account GET|POST /close-account          rodauth#close_account

This also changes instrumentation to use RodauthController + <action> instead of RodauthApp + call, which should be more reliable for monitoring agents that expect :controller to reference an actual controller, and it should make it easier to differentiate between Rodauth endpoints in monitoring services.

This is exactly what i need to have a before_action for rodauth controllers for captcha support..
e.g.
before_action :check_captcha, only: %i[create_account]

Wait, does that before_action actually work with these changes? 🤔 It wasn't intended, but it's an interesting corrolary, and seems like a nice to have 🙂

It's not working with the current live latest rodauth-rails version.. but I can check again after this PR is merged 😃

It required one additional line to make per-action controller callbacks work 🤘🏻
I'm not sure if this isn't giving too much of an impression that the controller is processing the request instead of the Roda middleware. But if we already support controller callbacks, then I suppose we can also support specifying the action while we're at it. One would just need to distinguish the HTTP verb, e.g:
before_action :check_captcha, only: %i[create_account], if: -> { request.post? }

perfect, I will implement my captcha check and check for request.post on the before_action.. is this ready in the current latest version of the gem or will you need to make a new release?

No, I just added it to this PR, so it hasn't yet been released.

@34code BTW, in the meanwhile you can just use a Rodauth hook:
before_create_account_route do
  rails_controller_instance.send(:check_captcha) if request.post?
end

Another thing I need to solve before merging this PR is that fact that Rodauth routes without imported view templates appear in the rails routes --unused list (relevant code).

@34code BTW, in the meanwhile you can just use a Rodauth hook:
before_create_account_route do
  rails_controller_instance.send(:check_captcha) if request.post?
end

Another thing that should be solved before merging this PR is that fact that Rodauth routes without imported view templates appear in the rails routes --unused list (relevant code).

Awesome, will use the Rodauth hook method in that case :) thank you!

A big downside of these URL helpers are that it forces Rodauth to be loaded at boot time, since routes are loaded on boot. This means that people using URL helpers won't benefit from lazy loading enabled by rodauth-rails. Since Rodauth also loads Sequel, this has an impact on boot time.

It looks like this will make it much easier to write request specs, by making the ubuquitous line handle Rodauth as well as Rails routes:
RSpec.configure do |config|
  config.include Rails.application.routes.url_helpers, type: :request
end

@34code BTW, in the meanwhile you can just use a Rodauth hook:

before_create_account_route do

rails_controller_instance.send(:check_captcha) if request.post?

end

Another thing that should be solved before merging this PR is that fact that Rodauth routes without imported view templates appear in the rails routes --unused list (relevant code).

Awesome, will use the Rodauth hook method in that case :) thank you!

Confirmed that rodauth route hooks work perfectly with my captcha method!

Hi @janko,Thank you for this work.
What is the status of this PR? Do you need some testing, or can I do something to help this be merged?

@Dainii I'm actually almost ready to close this PR, now that Rodauth allows retrieving the current route. I mostly wanted this to make locale switching easier, but the current route will do that.
At the moment I think native route helpers can cause confusion, making Rodauth appear more integrated in Rails than it actually is, and I didn't see compelling enough use cases to actually go ahead and merge this. What do you want the native URL helpers for?

Thank you for the reply. I didn't need it for something specific, but I wanted to know if this was still planned or not.
I recently had to work with rodauth-omniauth and I was working with the SAML strategy. I wanted to update the require_login_redirect to automatically redirect to the SAML endpoint, so I tried to look up the name of the route, but neither rails rodauth:routes nor rails routes displayed it. And when I was investigating why, I saw this PR open and asked for the status.
I agree that since rodauth routes are not managed the same way as rails routes, it makes sense to have separate commands.

I decided not to pursue this pull request, because I think having Rails URL helpers alongside Rodauth URL helpers can add confusion, and suggest that requests are processed at the controller level rather than the middleware level.
Now that the rodauth.current_route method has been added to latest Rodauth version, it's much easier to implement things like locale switchers, which was one of the main motivators behind introducing Rails URL helpers.
I might still revisit this idea later, but I really want to be conservative and add only things that provide real value, to keep the scope of the gem as narrow as possible.


Create a database based on a diagram

Hello Reviewer,
thanks for taking the time to go through my projects, comments and remarks are welcomed. Here are some actions and results we followed in order to complete the exercise:

created the queries for the database and tables inside the schema_based_on_diagram.sql file; the tables were created according to the diagram provided in the exercise
added indexes for the different foreign keys in each table
Happy review 😉 .

Hi there, we worked on the project together but only one of us wrote the file. But now I also updated the file that says we worked together. Thank you for accepting our apology.


Use rand(...) instead of rand(..., 1)[1]

Hi! I noticed that some nested loops calculate rand(d, 1)[1] a lot. This can be sped up by using rand().
julia> using Random

julia> Random.seed!(1234); rand(1)[1]
0.5908446386657102

julia> Random.seed!(1234); rand()
0.5908446386657102

I've spotted a few more occurrences and added them in 65c16ac.

Thanks a lot Rik!

StatisticalRethinking.jl v3 definitely needs quite a bit of attention. As soon as this disaster migration from Travis to GitHub actions is done it will go back on my priority list.

StatisticalRethinking.jl v3 definitely needs quite a bit of attention. As soon as this disaster migration from Travis to GitHub actions is done it will go back on my priority list.

No worries! :smile: Rome wasn't built in a day either

StatisticalRethinking.jl v3 definitely needs quite a bit of attention. As soon as this disaster migration from Travis to GitHub actions is done it will go back on my priority list.

By the way, feel free to notify me if CI is a problem at a later point. 😄 I like CI and have set up many things with it


🚧Create text box control

I have done the items below . . .

[X] I have updated the title by replacing the '<title>' section.

Description
Create a text box control that gives the user the ability to render text in a rectangular space.
This control will be complicated to make.  The idea here is to utilize the Label control for the text.  The control will need to detect keyboard input so it can change the text of the label control to be displayed to the user.  Deletion capability will also be required using the Delete and Backspace keys.
For text selection, a solid rectangle should be rendered behind the text. The color of the text should be set to the inverse color of the selection rectangle.  The inverse color will need to be calculated somehow.
Acceptance Criteria

[ ] Text rendered in a rectangular area
[ ] Hitting Delete key will delete characters that are to the right of the blinking cursor
[ ] Hitting Backspace key will delete characters that are to the left of the blinking cursor
[ ] Hitting the Home key by itself will move the cursor to the beginning
[ ] Hitting the End key by itself will move the cursor to the end
[ ] Ability to set the text color
[ ] Ability to set the color of the selection
[ ] Ability to set the color of the cursor

Text Selection:

[ ] Holding shift while using the Right Arrow key will select text one character at a time to the right of where the cursor started during the selection process
[ ] Holding shift while using the Left Arrow key will select text one character at a time to the left of where the cursor started during the selection process
[ ] Holding shift while using the End key will select all of the text to the right of where the cursor started during the selection process
[ ] Holding shift while using the Home key will select all of the text to the left of where the cursor started during the selection process
[ ] When text is selected, a filled rectangle will be rendered with the text on top.  This shows the text as selected.
[ ] When text is selected, the inverse color of the original text color should be used so that way it is always visible

Other:

[ ] Unit tests added
[ ] All unit tests pass

ToDo Items

[ ] Draft pull request created and linked to this issue
[X] Priority label added to issue (low priority, medium priority, or high priority)
[X] Issue linked to the proper project
[X] Issue linked to proper milestone
[ ] Unit tests have been written and/or adjusted for code additions or changes
[ ] All unit tests pass

Issue Dependencies

#75
#76

Related Work
No response

Reviewed

Warning Added https://github.com/KinsonDigital/Velaptor/labels/🧨breaking changes

Change the ControlBase.OnMouseDown() and ControlBase.OnMouseUp() methods to internal.  This is only meant for internal Velaptor use.  Use the ControlBase events instead.


hh errors out from terminal without alternate screen

This happens, for example, when I ssh from a macOS system on a terminal without alternate screen, into a Linux box, https://github.com/dvorka/hstr/commit/3747f4edd774c7bc451de6be20a625ff8da1d227#commitcomment-27699450. It does work if I export TERM=xterm or export TERM=xterm-256color prior to running hh.
[root@centos6 ~]# hh
Error opening terminal: xterm-256color-noaltscr.
[root@centos6 ~]#
[root@centos6 ~]# hh --version
hh version "1.24" (2018-01-03T12:19:00)
[root@centos6 ~]#
[root@centos6 ~]# uname -a
Linux centos6 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@centos6 ~]#
[root@centos6 ~]# strace hh 2> error.log
[root@centos6 ~]#
[root@centos6 ~]# hh
Error opening terminal: xterm-256color-noaltscr.
[root@centos6 ~]#
[root@centos6 ~]# cat error.log
execve("/home/linuxbrew/.linuxbrew/bin/hh", ["hh"], [/* 23 vars */]) = 0
brk(0)                                  = 0x795000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfc53bd000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfc53bc000
access("/home/linuxbrew/.linuxbrew/Cellar/glibc/2.23/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/Cellar/hh/1.24/lib/tls/x86_64/libreadline.so.7", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/linuxbrew/.linuxbrew/Cellar/hh/1.24/lib/tls/x86_64", 0x7ffe8cad5e10) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/Cellar/hh/1.24/lib/tls/libreadline.so.7", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/linuxbrew/.linuxbrew/Cellar/hh/1.24/lib/tls", 0x7ffe8cad5e10) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/Cellar/hh/1.24/lib/x86_64/libreadline.so.7", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/linuxbrew/.linuxbrew/Cellar/hh/1.24/lib/x86_64", 0x7ffe8cad5e10) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/Cellar/hh/1.24/lib/libreadline.so.7", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/linuxbrew/.linuxbrew/Cellar/hh/1.24/lib", 0x7ffe8cad5e10) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/lib/tls/x86_64/libreadline.so.7", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/linuxbrew/.linuxbrew/lib/tls/x86_64", 0x7ffe8cad5e10) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/lib/tls/libreadline.so.7", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/linuxbrew/.linuxbrew/lib/tls", 0x7ffe8cad5e10) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/lib/x86_64/libreadline.so.7", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/linuxbrew/.linuxbrew/lib/x86_64", 0x7ffe8cad5e10) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/lib/libreadline.so.7", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240h\1\0\0\0\0\0"..., 832) = 832
lseek(3, 323584, SEEK_SET)              = 323584
read(3, "\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 448) = 448
fstat(3, {st_mode=S_IFREG|0555, st_size=338256, ...}) = 0
lseek(3, 323584, SEEK_SET)              = 323584
read(3, "\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 448) = 448
mmap(NULL, 2390352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfc4f54000
mprotect(0x7fbfc4f8e000, 2138112, PROT_NONE) = 0
mmap(0x7fbfc518e000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a000) = 0x7fbfc518e000
mmap(0x7fbfc5196000, 5384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbfc5196000
mmap(0x7fbfc5198000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4f000) = 0x7fbfc5198000
close(3)                                = 0
open("/home/linuxbrew/.linuxbrew/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000U\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0555, st_size=3476576, ...}) = 0
mmap(NULL, 3158248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfc4c50000
mprotect(0x7fbfc4d53000, 2093056, PROT_NONE) = 0
mmap(0x7fbfc4f52000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x102000) = 0x7fbfc4f52000
close(3)                                = 0
open("/home/linuxbrew/.linuxbrew/lib/libncursesw.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3<EMAIL_ADDRESS>832) = 832
lseek(3, 507904, SEEK_SET)              = 507904
read(3, "\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 448) = 448
fstat(3, {st_mode=S_IFREG|0555, st_size=517584, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfc53bb000
lseek(3, 507904, SEEK_SET)              = 507904
read(3, "\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 448) = 448
mmap(NULL, 2565584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfc49dd000
mprotect(0x7fbfc4a48000, 2117632, PROT_NONE) = 0
mmap(0x7fbfc4c47000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6a000) = 0x7fbfc4c47000
mmap(0x7fbfc4c4d000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7c000) = 0x7fbfc4c4d000
close(3)                                = 0
open("/home/linuxbrew/.linuxbrew/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \10\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=10721872, ...}) = 0
mmap(NULL, 3795360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfc463e000
mprotect(0x7fbfc47d4000, 2093056, PROT_NONE) = 0
mmap(0x7fbfc49d3000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x195000) = 0x7fbfc49d3000
mmap(0x7fbfc49d9000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbfc49d9000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfc53ba000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfc53b9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfc53b8000
arch_prctl(ARCH_SET_FS, 0x7fbfc53b9700) = 0
mprotect(0x7fbfc49d3000, 16384, PROT_READ) = 0
mprotect(0x7fbfc4c47000, 16384, PROT_READ) = 0
mprotect(0x7fbfc4f52000, 4096, PROT_READ) = 0
mprotect(0x7fbfc518e000, 8192, PROT_READ) = 0
mprotect(0x609000, 4096, PROT_READ)     = 0
mprotect(0x7fbfc53be000, 4096, PROT_READ) = 0
brk(0)                                  = 0x795000
brk(0x7b6000)                           = 0x7b6000
open("/home/linuxbrew/.linuxbrew/Cellar/glibc/2.23/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1668976, ...}) = 0
mmap(NULL, 1668976, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fbfc5220000
close(3)                                = 0
brk(0x7de000)                           = 0x7de000
access("/root/.hh_favorites", F_OK)     = -1 ENOENT (No such file or directory)
open("/root/.bash_history", O_RDONLY)   = 3
fstat(3, {st_mode=S_IFREG|0600, st_size=792, ...}) = 0
read(3, "du -sh /\nifconfig \nshutdown -h n"..., 792) = 792
close(3)                                = 0
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
time(NULL)                              =<PHONE_NUMBER>
getppid()                               = 7656
open("/proc/7656/cmdline", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "strace\0hh\0", 1024)           = 10
read(3, "", 1024)                       = 0
close(3)                                = 0
open("/home/linuxbrew/.linuxbrew/Cellar/glibc/2.23/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linuxbrew/.linuxbrew/Cellar/glibc/2.23/lib/gconv/gconv-modules", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=56095, ...}) = 0
read(3, "# GNU libc iconv configuration.\n"..., 4096) = 4096
read(3, "1002//\tJUS_I.B1.002//\nmodule\tJUS"..., 4096) = 4096
read(3, "ISO-IR-110//\t\tISO-8859-4//\nalias"..., 4096) = 4096
brk(0x7ff000)                           = 0x7ff000
read(3, "\t\tISO-8859-14//\nalias\tISO_8859-1"..., 4096) = 4096
read(3, "IC-ES//\nalias\tEBCDICES//\t\tEBCDIC"..., 4096) = 4096
read(3, "DIC-CP-ES//\t\tIBM284//\nalias\tCSIB"..., 4096) = 4096
read(3, "//\nalias\tCSIBM864//\t\tIBM864//\nal"..., 4096) = 4096
read(3, "BM939//\nmodule\tIBM939//\t\tINTERNA"..., 4096) = 4096
read(3, "EUC-CN//\nalias\tCN-GB//\t\t\tEUC-CN/"..., 4096) = 4096
read(3, "T//\nmodule\tISO-2022-CN-EXT//\tINT"..., 4096) = 4096
read(3, "//\t\tISO_5428//\nalias\tISO_5428:19"..., 4096) = 4096
read(3, "CII-8\t1\n\n#\tfrom\t\t\tto\t\t\tmodule\t\tc"..., 4096) = 4096
read(3, "\tfrom\t\t\tto\t\t\tmodule\t\tcost\nalias\t"..., 4096) = 4096
brk(0x820000)                           = 0x820000
read(3, "712//\t\tINTERNAL\t\tIBM12712\t\t1\nmod"..., 4096) = 2847
read(3, "", 4096)                       = 0
close(3)                                = 0
rt_sigaction(SIGINT, {0x404460, [INT], SA_RESTORER|SA_RESTART, 0x7fbfc4671310}, {SIG_DFL, [], 0}, 8) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
stat("/root/.terminfo", 0x802540)       = -1 ENOENT (No such file or directory)
stat("/home/linuxbrew/.linuxbrew/Cellar/ncurses/6.1/share/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
time(NULL)                              =<PHONE_NUMBER>
access("/home/linuxbrew/.linuxbrew/Cellar/ncurses/6.1/share/terminfo/x/xterm-256color-noaltscr", R_OK) = -1 ENOENT (No such file or directory)
write(2, "Error opening terminal: xterm-25"..., 49Error opening terminal: xterm-256color-noaltscr.
) = 49
exit_group(1)                           = ?
+++ exited with 1 +++
[root@centos6 ~]#

The problem is caused by terminal name that is unknown to curses. After checking various other curses based programs I think that the best solution is to provide a reasonable error message (this problem cannot be solved by hh) - check MC source code which reports:
Unknown terminal: xxxxxxx
Check the TERM environment variable.
Also make sure that the terminal is defined in the terminfo database.
Alternatively, set the TERMCAP environment variable to the desired
termcap entry

@1-61803 I think that the right solution to this problem is registration of your terminal name - like http://neic.dk/2011/11/08/Add-terminfo-entries-on-Linux.html

less (436) notifies the following and seems to have a fallback.
[root@centos6 ~]# less install.log
WARNING: terminal is not fully functional
install.log  (press RETURN)

hh could do the same and still keep alternate screen disabled (by the way, I think I suggested that enhancement a while back via mail).
If I add xterm-256color-noaltscr to the server, less works fine but hh errors out.

Good point! I will try to find source code for such curses fallback :+1:


Script 5 - Summary Report

A fifth script: an .Rmd or .ipynb files that presents the key useful (not all!) exploratory data analysis as well as the statistical summaries and figures in a little report. There should be a written narrative in this document that introduces and justifies your question, introduces the data set, presents the findings/results, and interprets the findings/results in context of the question. Some critique of the analysis is also expected (limitations, assumptions, etc) and a statement of future directions (what would you do next if you had more time to work on this). The report is expected to be 1-2 written pages (excluding figures, tables and references). You are expected to have a reference section and cite 2-3 external sources (data source can be one of these citations) in addition to citing the programming languages and packages used. Yes, you need to cite the programming languages and packages used in your project. You will learn how to do this in lecture.

Done by me. Modified and uploaded by Sasha.


Modify system to be branch specific

Right now we depend on the master branch having all of the definitions for the jobs for all target branches.  Ideally we want:

The jobs for a branch to be read from that branch.
Pull request jobs should be generated and run on a per-branch basis.  The trigger isn't branch specific but it can be set up to only run for PRs to certain target branches.

I think the best way to implement this is to change the repo list to include the branch name.  The subfolder structure would be modified to the following:
/dotnet_coreclr/
PR jobs for specific branches would go ijn their specific folders, whitelisted for that target branch
There are some challenges:

Workspace name length becomes an issue
Larger accumulation of PR jobs

This has been implemented


How can i get profile photo url ?

Hi Sbertix,
I try to get profile photo url from userdata like this but i cant get url;

   _let image = $0.imageVersions2.candidates.array()?.first
                let imageUrl = image!.url
                print(imageUrl)_

But when i try to this code i can get,
_

let a = image!["url"].value

_
Can you show me correct programmability way how can i get url ?
thank you

Hey @aslios
I'm not 100% positive on what you mean by "profile photo url", cause it seems to suggest you are maybe looking for the user's avatar, but then refer to their actual posts, so I'm just gonna try and explain both. 😊
Posts
Endpoint.Feed.posts(by: …)
    .unlocking(with: …)
    .task(maxLength: 1) {
        // I'm just using the first element as an example.
        guard let item = try? $0.get().items[0] else { return }
        let previewURL: URL?
        switch item.mediaType.int() {
        case 8?:
            // A carousel (aka an album).
            previewURL = item.carouselMedia[0].imageVersions2.candidates[0]["url"].url()
        default:
            // A video or picture.
            previewURL = item.imageVersions2.candidates[0]["url"].url()
        }
        // Do something with `previewURL`.
        print(previewURL as Any)
    }
    .resume()

I'm aware this is not convenient at all, and in the next update (coming before the end of the week) you will be able to obtain it directly without needing to know the actual structure in advance.
/* Given `item` as above, It will be something as simple as… */
item.preview

Avatar
Endpoint.User.summary(for: …)
    .unlocking(with: …)
    .task {
        print((try? $0.get().user.profilePicUrl.url()) as Any)
    }
    .resume()

thank you so much :)


Protect the policy cache from unintended updates

Deep copy the policy before passing it to handleObjectTemplates since even
though handleObjectTemplates accepts a copy (i.e. not a pointer) of the
policy, policy.Spec.ObjectTemplates is a slice of pointers, so any
modifications to the objects in that slice will be reflected in
the PolicyMap cache, which can have unintended side effects.
This manifested itself when a policy has templates which when resolved,
still have intentional template delimiters (i.e. {{ and }}) in the result.
On the first time being processed, everything would go well. On the
second or third time, when the policy cache was not updated again by the
reconciler, the policy in the cache already had resolved templates. This
would lead to the templates code trying to reprocess the already
resolved policy.
Additionally to this, this caused some updates to referenced resource
objects in templates to not get properly updated in the policy.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2007575

/lgtm
/hold to let @willkutler take a second look

@mprahl  : looks good  to me , would let Yu or Will  who know this component more  to approve , not sure if any of the processing that happens later on is impacted by this  like status calculations etc.

@mprahl : looks good to me , would let Yu or Will who know this component more to approve , not sure if any of the processing that happens later on is impacted by this like status calculations etc.

I had this same concern but it shouldn't be an issue since handleObjectTemplates does not receive a pointer to a policy, so therefore, it's a copy and since plc.Status is not a pointer, no modifications to it can propagate back to the cache until the Reconcile method is called again with the updated status and then updates the cache.

/lgtm

/cherry-pick release-2.3


Add project analysis template

Add template for project analysis
This is to be used at first by the CPS to better understand the current state of projects and recommend a path forward

Also change CODEOWNERS to include FezBox. This is by accident as a fallover from a prior development in the online VSCode editor, but no harm done I don't think


Validate SRI files

Type of Change

Routes: Library & library version
Utilities: SRI for version

What issue does this relate to?
N/A
What should this PR do?
As discussed on Slack, we currently have no easy way of knowing if SRI data is missing for files. This adds logic to our SRI loading, so that if SRI data is missing for js/css files when a request comes in for a library or a version of a libary, we will log an error in Sentry & console.
This doesn't make the request fail, the existing clean error handling will allow SRI to be blank etc, but it does mean we will see Sentry errors for any missing SRI data.
What are the acceptance criteria?
CI passes, logic looks correct.

CI is currently failing due to an unrelated error -- the generated package data is missing the autoupdate field for packages, which the test suite expects to exist.


feat(userAgent): allow for optional user agent to be provided

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

[ ] Make sure to open an issue as a bug/issue before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
[ ] Ensure the tests and linter pass
[ ] Code coverage does not decrease (if any source code was changed)
[ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕

@JustinBeckwith

I'll follow-up with both of you over email due to internal only information.

Looks like the system tests may be flaky.

Project overground may be causing this... will raise in today's sync and report back.
cc: @amanda-tarafa
  1) storage
       HMAC keys
         should create an HMAC key for a service account:
     Error: Request violates constraint 'constraints/iam.disableServiceAccountKeyCreation'
      at new ApiError (node_modules/@google-cloud/common/build/src/util.js:59:15)
      at Util.parseHttpRespBody (node_modules/@google-cloud/common/build/src/util.js:194:38)
      at Util.handleResp (node_modules/@google-cloud/common/build/src/util.js:135:117)
      at /workspace/node_modules/@google-cloud/common/build/src/util.js:434:22
      at onResponse (node_modules/retry-request/index.js:214:7)
      at /workspace/node_modules/teeny-request/build/src/index.js:219:13
          -> /workspace/node_modules/teeny-request/src/index.ts:325:11
      at runMicrotasks (<anonymous>)
      at processTicksAndRejections (internal/process/task_queues.js:97:5

Yes, definetely seems to be related to overground. Create an internal bug, and assign it to me, with the following info:

Project ID this is happening.
What exactly is this method trying to do? Is it really trying to create and download a Service Account Key?


Added format and from_str for raw varient to dtos

It turns out changing $dto_name:ty to $dto_name:ident makes rustc 😊
here is what's being generated from the macro for ChannelType::Raw:
                DivoomChannelType::Raw(n) => {
                    return {
                        let result = f.write_fmt(::core::fmt::Arguments::new_v1(
                            &[""],
                            &[::core::fmt::ArgumentV1::new_display(&n)],
                        ));
                        result
                    }
                }

Signed-off-by: Jiaxiao Zhou<EMAIL_ADDRESS>

nice! it works!!! thanks a lot!


Register your Schema to go-chassis

where should i register？这个注册接口应该在哪里注册？

there is a pkg "chassis", and it has exposed Register method, will this answer helps you?

chassis.RegisterSchema("rest", &HelloServer{},server.WithSchemaID("HelloServer"))
besides there is complete examples is exsamples folder

thank you!


Python errors unreadable in non-english locale

With my system locale (ru_RU.UTF-8) I receive following error:
> $ deiss apps
Couldn't connect to the Deis Controller:
('Connection aborted.', error(104, '\xd0\xa1\xd0\xbe\xd0\xb5\xd0\xb4\xd0\xb8\xd0\xbd\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x80\xd0\xb0\xd0\xb7\xd0\xbe\xd1\x80\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xbe \xd0\xb4\xd1\x80\xd1\x83\xd0\xb3\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd0\xbe\xd0\xb9'))
Make sure that the Controller URI is correct and the server is running.

With default locale it's much better:
> $ LANG= deiss apps
Couldn't connect to the Deis Controller:
('Connection aborted.', error(104, 'Connection reset by peer'))
Make sure that the Controller URI is correct and the server is running.

This is probably a python problem, but print for cyrillic letter from python3 console works fine with ru_RU locale.

I couldn't reproduce this using the deis built binary or deis.py locally:
$ LANG=ru_RU.UTF-8 deis apps
Couldn't connect to the Deis Controller:
('Connection aborted.', error(61, 'Connection refused'))
Make sure that the Controller URI is correct and the server is running.
$ LANG= deis apps
Couldn't connect to the Deis Controller:
('Connection aborted.', error(61, 'Connection refused'))
Make sure that the Controller URI is correct and the server is running.

This looks like it should all be client-side, so I'm not sure what else to try. The client does start up with the standard invocation to set the locale from the LANG variable, and your tests indicate it is being honored...

@mboersma I suspect you don't have russian locale configured, that's why it falls back to english for you. I've just set up another non-latin locale (greek):
> $ LANG=el_GR.UTF-8 deiss apps
Couldn't connect to the Deis Controller:
('Connection aborted.', error(111, '\xce\x91\xcf\x80\xcf\x8c\xcf\x81\xcf\x81\xce\xb9\xcf\x88\xce\xb7 \xcf\x83\xcf\x8d\xce\xbd\xce\xb4\xce\xb5\xcf\x83\xce\xb7\xcf\x82'))
Make sure that the Controller URI is correct and the server is running.

Same on Debian 8 with python 2

The python client is deprecated and will be removed with the v1.10.0 release. If you see similar issues with the new go CLI, please open a new issue.


can't get nested tags by name in loop

Hello,
I add nested tag in a loop, giving them a name dynamicly.
I can't retrieve them in this.tags.
For exemple :
<posts-list>
    <div each={ posts } >
        <post-element
            name="te{ this.post.id }"
            post={ post }
            editable={ editable }
            onclick={ parent.toggleFocus }
            />
    </div>

    this.on('mount', function() {
        this.posts = opts.posts;
        this.update();
    });

    toggleFocus(e) {
        if (!e.item.focus) {
            this.posts.forEach(function(post) {
                post.focus = e.item === post;
            });
            this.tags['te'+e.item.post.id].trigger('focus');
        }
    }

</timeline>

If I log this.tags in toggleFocus I get an object with one tag : Object {te{ this.post.id }: Tag}

Are you using the latest version of Riot?

Yes 2.0.14
Le 9 avr. 2015 03:33, "Juha Lindstedt"<EMAIL_ADDRESS>a écrit :

Are you using the latest version of Riot?
—
Reply to this email directly or view it on GitHub
https://github.com/muut/riotjs/issues/574#issuecomment-91086092.

I have been facing this problem too. this.tags only contains tags that weren't used with a each loop
such as <accounts each={affiliate.accounts}></accounts>

try this.parent.tags or this.parent.parent.tags

Hello @pakastin,
I test with that
toggleFocus(e) {
        if (!e.item.focus) {
            this.posts.forEach(function(post) {
                post.focus = e.item === post;
            });
        }
        console.log(
            'toggleFocus',
            this,
            this.tags,
            this.parent
        );
}

I get :
this => Tag {_id:<PHONE_NUMBER>, parent: undefined, root: timeline, opts: Child, tags: Object…}
tags => Object {te{ this.post.id }: Tag}
this.parent => undefined
I will be happy to help with a pr but I'm just discovering this library and I haven't so much free time for the moment to really put my self on it but I can try with some lighting on the part to look in it.

Could you make a jsfiddle, so I can take a better look..

You can find that here https://jsfiddle.net/hw9hvbws/

I updated your fiddle to use Riot 2.0.14 and the problem persists: https://jsfiddle.net/o55c7get/

The parent is a different div tag each tme. Need to introduce the notion of a parent custom tag in the code and push there. Are you working on this @lalop?  If not i can explore further.

Hi Richard,
No I didn’t start any thing

Le 11 avr. 2015 à 18:36, Richard Bondi<EMAIL_ADDRESS>a écrit :
The parent is a different div tag each tme. Need to introduce the notion of a parent custom tag in the code and push there. Are you working on this @lalop https://github.com/lalop? If not i can explore further.
—
Reply to this email directly or view it on GitHub https://github.com/muut/riotjs/issues/574#issuecomment-91877162.

ok, so what is the spec here for the tags attribute?
re. above fiddle:
this.tags['my-child'] = [Tag, Tag, Tag]
simple but does not seem consistent with the intention inferred from the code
or
this.tags['child-{ this.id }'] = [Tag, Tag, Tag]
I hope not but this is what I currently get with the simple addition of custom parent tag search instead of parent,  the evaluation does not appear to have happened at the time of parsing
or
this.tags['child-'] = Tag
this.tags['child-0'] = Tag
this.tags['child-1'] = Tag

maybe most inline with the intention but has the challenge of not being evaluated at parse
or
this.tags['my-child']['child-'] = Tag
this.tags['my-child']['child-0'] = Tag
this.tags['my-child']['child-1'] = Tag

or
???
to me the first one makes the most sense but not sure about use cases
@GianlucaGuarini

I think the first the most consistent

with my latest build https://jsfiddle.net/opub3h52/

Just to be sure, is this a bc ?

It is work in progress, not sure what a bc is.

I mean a breaking change :)

Le 15 avr. 2015 à 19:55, Richard Bondi<EMAIL_ADDRESS>a écrit :
It is work in progress, not sure what a bc is.
—
Reply to this email directly or view it on GitHub.

@rsbondi Can we close this? It seems you've fixed all the issues

@lalop your jsfiddle is working with our riot WIP https://jsfiddle.net/gianlucaguarini/t9x9pqot/ :)

I think so

Thank you for all your active work on riot
Le 15 avr. 2015 23:53, "Gianluca Guarini"<EMAIL_ADDRESS>a
écrit :

Closed #574 https://github.com/muut/riotjs/issues/574.
—
Reply to this email directly or view it on GitHub
https://github.com/muut/riotjs/issues/574#event-282562578.


[WIP] Custom CUDAGraph to accelerate PPO without memory waste

Change:

Add a custom CUDAGraph with cudaGraphExecUpdate() to replace original pytorch implementation. This will allow kv-cache to be released when not performing generation without introducing significant overhead.

This feature is not fully tested, marked as WIP.

Damn, I'm writing this today. Wonderful coincidence.
struct CustomizedCUDAGraph : at::cuda::CUDAGraph {
  // A wrapper around capture_begin without the pool argument.
  // We use the memory pool of the CUDAGraph itself.
  void recapture_begin(
      cudaStreamCaptureMode capture_mode = cudaStreamCaptureModeGlobal);

  // A wrapper around capture_end. Instead of creating a newly instantiated
  // graph_exec_, this function updates the existing graph_exec_ instance with
  // the new memory addresses captured in the new graph.
  void recapture_end();

Damn, I'm writing this today. Wonderful coincidence.
struct CustomizedCUDAGraph : at::cuda::CUDAGraph {
  // A wrapper around capture_begin without the pool argument.
  // We use the memory pool of the CUDAGraph itself.
  void recapture_begin(
      cudaStreamCaptureMode capture_mode = cudaStreamCaptureModeGlobal);

  // A wrapper around capture_end. Instead of creating a newly instantiated
  // graph_exec_, this function updates the existing graph_exec_ instance with
  // the new memory addresses captured in the new graph.
  void recapture_end();
}

I found that although cudaGraphExecUpdate() will accelerate recapturing, the major overhead is not on CUDAGraph instantiate (at least in 7b llama generate), but on gc.collect() and torch.cuda.empty_cache() in torch.cuda.CUDAGraph wrapper. But removing them will cause something wrong in custom all reduce. I am still finding a solution.

This problem is probably not fixable unless modifying torch CUDAGraph source code and recompile. It is related to the entanglement between CUDAGraph and NCCL process group in pytorch, which is described in this issue and fixed in pytorch version 2.1.1 in this PR.
It is also very interesting that it is actually the root cause of the problem that CUDAGraph cannot capture torch.distributed.all_reduce(). CUDAGraph needs to wait for enqueued work to finish before capture otherwise it will crash with "operation not permitted when stream is capturing".  If we update torch version, CUDAGraph will be able to capture all_reduce as well, and therefore custom_all_reduce from vllm is not necessary. However by testing custom_all_reduce still reduces overhead caused by waiting for enqueued NCCL work and we should not remove this feature.
As I mentioned in above comment,  the major overhead of recapturing is on unnecessary gc.collect() and torch.cuda.empty_cache() in torch.cuda.graph wrapper. We only need to use lower level API: torch.cuda.CUDAGraph.begin_capture() and torch.cuda.CUDAGraph.end_capture() to eliminate this overhead. I will close this PR and reopen one to update our CUDAGraph implementation.


define for optional chaining is different from esbuild

I don't have a specific use case in mind, but I was testing a similar example from https://github.com/evanw/esbuild/issues/3551 which I reported on esbuild in the past and found a minor difference/inconsistency.
reproduction: https://github.com/hi-ogawa/reproductions/tree/main/rolldown-define-optional-chain

input

{
  define: {
    'globalThis.process.env': '{}'
  }
}

console.log(globalThis.process.env)
console.log(globalThis.process?.env)
console.log(globalThis.process?.env.ok)
console.log((globalThis.process?.env).ok)

output (oxc, rolldown)

console.log({});
console.log(globalThis.process?.env);
console.log({}.ok);
console.log((globalThis.process?.env).ok);

output (esbuild)

var define_globalThis_process_env_default = {};
console.log(define_globalThis_process_env_default);
console.log(define_globalThis_process_env_default);
console.log(define_globalThis_process_env_default.ok);
console.log(define_globalThis_process_env_default.ok);

Most of the part should be done with https://github.com/oxc-project/oxc/pull/7433 ?

The only different should not relevant to optional chain?  Because for a normal StaticMemberExpr we still will not generate a shared object, we will replace each DotDefineMemberExpr with a ObjectExpr

Thanks for the fix!
I think we can close. I've never wondered why esbuild uses shared object, but I think that's for later when that alignment turns out to be important.


Improve documentation for parameter instance cap per cloud

Referencing this issue
Objective is to improve documentation so that users know that what they name their clouds will determine the instance cap for each cloud. Code logic

Resolved with: https://github.com/jenkinsci/google-compute-engine-plugin/pull/51


Update to xterm 3.13.0 [True colors support]

https://github.com/xtermjs/xterm.js/releases/tag/3.13.0

There were big changes in this release that would break the webgl renderer. I've updated for the most part the webgl renderer but the custom patches on top of it (and for the emoji input) would likely need to be redone, also true color doesn't work on it yet.

There were big changes in this release that would break the webgl renderer. I've updated for the most part the webgl renderer but the custom patches on top of it (and for the emoji input) would likely need to be redone, also true color doesn't work on it yet.

@Tyriar you're right, I tried to merge 3.13.0 tag and I get those conflicts. Is there a reason to have a fork with the patches instead of making a PR to xterm directly? Just curious

@pablopunk there are 2 PRs out on xterm that aren't finished yet https://github.com/xtermjs/xterm.js/pull/1890, https://github.com/Tyriar/xterm.js/pull/5. Also the webgl renderer isn't merged in yet so it may fall behind (I work on xterm not hyper).

@Tyriar Ok, thanks for the info 🙂. I'll keep this issue open til we get true colors then, I'll update the title

In case anybody wants to have true colors in the meantime, I built hyper for Mac with the new xterm. You can download it here, but keep in mind you'll need to disable WebGL inside your .hyper.js and also you won't get emoji support.

@Tyriar I'm guessing hyper could migrate once these are completed?

@pablopunk I think the plan for Hyper is to wait for v4 yes, true color won't work in the webgl renderer until https://github.com/xtermjs/xterm.js/issues/2249 is done though.

@Stanzilla I understand closing #2294 due to duplicity, however, this issue isn't solved yet.
As you suggested on the referenced issue, I tested on latest Canary build and still doesn't work.
Should I open another issue as you mentioned there or this can be used? Or True Colors won't be officially supported?

@SkyaTura it should work in the latest CI build from master, can you test it there please?

Sorry for my ignorance @Stanzilla, but I didn't found the build you've mentioned anywhere.
However, I've cloned the most recent commit and built myself and worked fine.
You can close it now, again, sorry for reopening it.

Yay!


bug: OT-2 continues with pipetting steps while temperature module is still completing a .set_temperature() step

Overview
While running the following code on software and robot server version 4.5.0:
temp_module.set_temperature(22)
temp_module.set_temperature(67)
for _ in range(10):
    pipette_l.pick_up_tip()
    pipette_l.drop_tip()

observed that robot waits for the temperature module to reach 22C, but then as the module starts ramping up to 67C, the robot  simultaneously proceeds with picking up and dropping off tips. The robot should wait for the module to reach 67C before going through the rest of the protocol.

Steps to reproduce

Create a Python API protocol with the above code/steps
Upload to an OT-2  running 4.5.0 (though expect this still persists up to the latest software version)
Run protocol

Current behavior
As the second .set_temperature() command commences, the robot starts running the rest of the code, in this case the for loop for picking up and dropping tips.

Expected behavior
The robot should wait for the .set_temperature() to complete with the temperature module reaching the programmed temperature before running through the rest of the protocol.

A cursory look at the code indicates that @sanni-t may have fixed this in September. I will double check.

Thanks @amitlissack! I had looked through the existing and closed set_temperature() bugs, but couldn't find a ticket describing this specific problem.

https://github.com/Opentrons/opentrons/issues/8275

^ Yep. That should have fixed it. Thanks @amitlissack!
@Matt-Zwimpfer does this error still show up in 4.7?

Ah thanks @amitlissack and @sanni-t ! Thought the #8275 fix for await_temperature() was separate from this. The user that brought this up is still on 4.5.0, so that is most likely the cause.
Should I delete this ticket?

I should have noticed when Ethan first posted this that the customer is doing two set_temperature calls consecutively.
You can safely delete this.


Write docs

A decent README.md will probably do for a start, at least.

Especially the syntax available for use in the config files needs to be documented.  See https://github.com/sul-cidr/patent_data_extractor/tree/main/config for examples.

Use of * in keys should be documented


Update self help page with URLs for authentication

On this page there is a link to the self help page (https://portal.azure.com/selfhelp) which runs automated checks.
However these checks does not include the URLs for the Portal Authentication (like msauth.net).
It would be good if the self help page checked all the URLs needed for authentication.
I have a VM in a customer DMZ where the self help checks is all green, but when I try to logon and check the network traffic I can see that msauth.net and others are blocked.

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

ID: d8336877-da93-ecd6-829a-0cc068caaf29
Version Independent ID: 1e70f094-f220-92c6-7e5b-cfaf071101d5
Content: Allow the Azure portal URLs on your firewall or proxy server - Azure portal
Content Source: articles/azure-portal/azure-portal-safelist-urls.md
Service: azure-portal
GitHub Login: @JnHs
Microsoft Alias: jenhayes

@janerikohman
Thanks for your feedback! We will investigate and update as appropriate.

@janerikohman Thanks for your valuable feedback. Kindly note this channel is mainly for documentation changes. For product-feedback , kindly raise the suggestions or requests in Azure Feedback Forum and for technical questions, post your questions on Microsoft Q & A Community forum.
For now, I have raised your feedback request on Feedback forum. I also would recommend you navigate here and share your feedback or suggestions directly with the responsible Azure feature team and clicking the vote button of your suggestion to raise visibility and priority on it.
As there are no documentation changes,we will close the issue for now. If there are further questions , please revert and we will be glad to assist you.


didSet called each time value updates

I have a class with an optional Observable var. I would like to add a handler to this when I set the observable.
    class Field: UIView {
        var observe:Observable<String>? {
            didSet {
                observe!.afterChange += { self.update($1) }
            }
        }
    }

However, I find that the didSet callback gets called not only when the observable gets set initially, but also each time its value updates after that, which I would not expect to happen. Is this expected? How can I achieve this otherwise?
Edit: I just found out Observables are passed by value, which renders my whole approach moot.
Edit2: ObservableReference to the rescue! Working beautifully now.

Not a real issue, I misunderstood a few things.