Passing arguments to preLaunchTask in launch.json

I am using launch.json to debug .Net Core Application in VS code.
Debugger configuration uses "preLaunchTask": "build" to build application before starting, but the problem is that I have several projects in my solution that I want to debug, so I have duplicated launch.json configurations for every single executable project in my solution. With this scenario build preLaunchTask is not working. I need to pass my project's directory to build task.
Is there anyway to pass arguments to preLaunchTask from launch.json?

Yes, tasks in "preLaunchTask" are actually referencing tasks in tasks.json. Inside the tasks.json you can pass arguments to your task. More about configuring tasks can be found here

Build task is unique I can't dublicate it in task.json passing different arguments. I need to define arguments in launch.json

Forwarding to @dbaeumer to get his opinion what is recommended here

@dopare I am not fully understanding why you can't have a build2 task having the additional argument.
@isidorn we could extend the task runner API so that you can pass additional arguments which a user specifies in launch.json. Not sure so if you want to do down that road.

@isidorn please open a request if you want me to add the additional API.

@dbaeumer I do not want to go down that road. I was just not fully sure if we support the scenario @dopare is requsting using a build2 task. Since you say we do I am closing this, since this request cant be done by adding an additional task in the tasks.json and referencing that task in preLaunchTask

I have simple task which is automatically generated by coreclr debugegr
{
    "version": "0.1.0",
    "command": "dotnet",
    "isShellCommand": true,
    "args": [],
    "tasks": [
        {
            "taskName": "build2",
            "args": [],
            "isBuildCommand": true,
            "problemMatcher": "$msCompile"
        }
    ]
}

this says that dotnet-build2 is not a shell command

@dopare not sure why you get that error maybe @dbaeumer or @gregg-miskelly can comment

The problem is that the taskName is automatically added to the command line as an argument. You can do the following:
{
    "version": "0.1.0",
    "command": "dotnet",
    "isShellCommand": true,
    "args": [],
    "tasks": [
        ... ,
        {
            "taskName": "build2",
            "suppressTaskName": true,
            "args": ["build", "some arguments"],
            "isBuildCommand": true,
            "problemMatcher": "$msCompile"
        }
    ]
}

@dbaeumer your solution is not working, it treat "build" as path, still same exception

Can you add 	"echoCommand": true globally and provide me with the output of triggering build and build2

@dbaeumer  sorry, updated my comment
Its worked


Do not create test cases for scenarios with no steps.

Summary
Do not create test cases for scenarios with no steps.
Details
To be consistent with the (Pickle) compiler in the Gherkin library, test cases should not be created for scenarios with no steps.
Motivation and Context
Fixing the root cause of cucumber/cucumber#243.
How Has This Been Tested?
The automated test suite has been updated to verify this behaviour.
I have manually verified that cucumber --dry-run with empty scenarios does not raise the exception of  cucumber/cucumber#243 with this change.
Types of changes

[X] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[X] I've added tests for my code
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

I know I'm late to the party, but IMO a scenario with no steps should result in a test case with an undefined status. If you think about the real-world use of an empty scenario, it's generally the starting point for growing it into a real scenario. I think having it count as "amber" in people's burn-up charts and so-on would be useful to them.
I guess the right place to have this discussion is around the Pickle compiler though, as that's what we need to move to ourselves.

It was exactly because that the Gherkin compiler behaves this way, that I did not hesitate to fix the problem this way.

Makes sense, the gherkin compiler should produce pickles with an empty list of pickle steps.

I opened a ticket here for us to discuss it.

When we should handle Scenarios with no steps in Cucumber-Ruby, then we need to change the hooks and prepare world filters not to add hook steps if the incoming test case has no steps, because a test case with no steps should ... have no steps.

Indeed.


[DOCS] Need to have an example using router with .(js,ts)x

How can the documentation be improved?
I add an index.tsx file and delete all the MDX files in the pages folder with Qwik-city with the router example. But it does not work 🥹. Hopefully, your team can have a basic example with routing support! Thanks <3

#545 shows that jsx and tsx files aren't supported in routes at the moment.
I think you can work around it by using an .mdx file to define the route, and making your .tsx file a layout that the .mdx file references.

We will add this features along with nested layouts, catch all routes and params next week!

Hey @harrytran998! The new Qwik City starter has .tsx routes and there are also Qwik City docs that explain further. Hope that helps!

QwikCity docs are available now! and more to come


NBS: Commit locks out Rebasers for less time

Persisting tables now tacks place outside the manifest fetch lock so rebasers don't spend time blocking on writers persisting.

lgtm


change person.bio to person.email

randomuser.me no longer returns a bio field for person.  Therefore calls to person.bio return undefined which cause React warnings that required Children prop is missing.

Thanks @robreiss!


New version auto-check

Do a check an startup to see if there is a new version of Android Studio available.
Allow to filter check by only the current major version or all versions
Allow to filter check by build variant (Stable, Canary etc.)

https://developer.apple.com/documentation/servicemanagement/smappservice


cleanutils simplify step fails when structure hasn't been published

The code can be fixed like this:
     if '_citation.title' in mmcif_dict:
         L1 = mmcif_dict['_citation.title']
     else:
         L1 = "???"

     if '_citation.year' in mmcif_dict:
          L2 = mmcif_dict['_citation.year']
     else:
          L2 = "???"

     if '_citation.pdbx_database_id_DOI' in mmcif_dict:
         L3 = mmcif_dict['_citation.pdbx_database_id_DOI']
     else:
         L3 = "???"

I need to update cleanutils.py with the new version of the code


Helm 3.11.1 indirectly depends on a vulnerable golang.org/x/net  (CVE-2022-41723)

Helm has an indirect dependency on golang.org/x/net and that dependency currently references a version prior to the fix in v0.7.0.
See https://github.com/advisories/GHSA-vvpx-j8f3-3w6h (CVE-2022-41723)
The local fix is relatively simple (tested it for helm and for many other tools that we have that ran into this same issue):
go mod edit --replace<EMAIL_ADDRESS>go mod tidy

This adds an override of the version indirectly referenced and builds with the fixed version.
Output of helm version:
version.BuildInfo{Version:"v3.11.1", GitCommit:"293b50c65d4d56187cd4e2f390f0ada46b4c4737", GitTreeState:"clean", GoVersion:"go1.18.10"}

I'm pretty sure the core maintainers are against doing replaces (but I'm not sure). Most projects try to avoid them as they cause an excessive maintenance burden.
Helm's use of net is not as a server, so the codepath of that cve is not relevant to helm. If you need to write a mitigation report, this is usually sufficient (in my experience writing mitigation reports).
:crossed_fingers:

I agree that replaces are a long term problem but the long pole here is getting the scanners to stop flagging any VM or container with the helm binary.
While a mitigation report is possible for helm for our team, it is not so simple across all teams/companies and all customers.
(PS - I really hate replaces but I also really do not like vulnerabilities and trying to justify in each case "why it does not matter here" or "why it absolutely does matter here" - it is so much better to just say "it matters in all cases" such that a deep dive into the behaviors and code paths are not needed)

Note that this vulnerability is still there in helm 3.11.2

Unless I'm missing something, you can just do a go get golang.org/x/net && go mod tidy without the replace, right?

Closing this. We use dependabot. You can view the security tab to see details.
If you're finding security issues not listed, they're probably a false positive from the security tool you're using.


Mark Lock as deprecated

As mentioned by https://github.com/apple/swift-tools-support-core/pull/327#issuecomment-1150395797 there is a desire to transform away from Lock wrapper and so to mark it as deprecated

@swift-ci smoke test

@swift-ci smoke test

@swift-ci smoke test

@swift-ci test


blindex:0.1.0

I am submitting

[x] a new package
[ ] an update for a package

Description: The package create indices of biblical literature citations key-ed by biblical literature BOOKS, a specific functionality that is useful for theologians and for writers that frequently cite biblical literature. The provided functionality is by no means easily achievable (or at all) by existing ecosystem index-making packages. The package also provides multi-language infrastructure, with incipient multilingual implementation (so far, English and Portuguese).

I have read and followed the submission guidelines and, in particular, I

[x] selected a name that isn't the most obvious or canonical name for what the package does
[x] added a typst.toml file with all required keys
[x] added a README.md with documentation for my package
[x] have chosen a license and added a LICENSE file or linked one in my README.md
[x] tested my package locally on my system and it worked
[x] excluded PDFs or README images, if any, but not the LICENSE

[x] ensured that my package is licensed such that users can use and distribute the contents of its template directory without restriction, after modifying them through normal use.

As suggested by the automatic tests, Typst packages generally use kebab-case names. However, it is not mandatory, and if you prefer to keep camelCase, please tell me, I can merge this package as is.

Hello @elegaanz, I'll pay closer attention to that in future contributions. As for this package, please, merge it as it is. Thank you!


Register Additional Message Handler

When writing a plugin, I'd like to register an additional handler for a particular type of message. Currently the architecture first resolves an inbound message to a message type, and the message type designates a single handler. I'd like to register a handler that will also receive the inbound message for processing, but that flow is not currently possible.
Specifically, I'm working on the toolbox plugin adding a routing module, and I'd like to receive a RouteQueryResponse message to a handler within my plugin without interrupting the already supplied message handling. I know the handler doesn't do anything, but I'd like to avoid future conflict when functionality is added.
I know I can override the handling, but is there a cleaner way?

@andrewwhitehead @nrempel

I'd like to register a handler that will also receive the inbound message for processing, but that flow is not currently possible.

If I understand correctly, you are looking for something like middleware? Basically you want to plug into the lifecycle and read from the message before it reaches its destined handler?

No, I want to add an additional handler that operates in addition to the destined handler.

The tricky part of this is whether the extra handler should kick in before, after or instead of the existing handler.  I've built a system before that offered such a flexible mechanism.  The good part is that it covered all possible scenarios and so was very helpful. Bad part was that in the way we did it, the code become horribly convoluted. I suspect in a modern system it could be done in a much cleaner way.
Should we request the full capability with some convention of how to notify ACA-Py of what external handlers should be used for a given deployment?

At present, I'd be pretty happy with a way to register a 'secondary' handler that didn't interfere with the operation of the 'primary' handler. If a more generalized solution is desirable, we could discuss a more full solution.
This is inside a plugin, so I'd think the plugin would have a mechanism to register the additional handlers.

@nrempel -- is that enough to know what is needed?  I know you have a ton of knowledge about the handler and were in there recently regarding the minor/major version handling.  My instinct is to do this right and provide a way to have the before/replace/after capabilities, but defer on that detail to others.
I see two ways to proceed:

You do a bit now on editing the issue description (the first message) to define the path we want to take and for now we hang a "Help Wanted" flag on this.
We use this as a holding place for you to think about and them implement when you get a chance (unless someone else takes it)

Let me know what you think.  Sound right, @TelegramSam ?

I think this is a useful feature.
The reason I ask about middleware is because we could offer lifecycle hooks as the message travels through the system which allows you to read or modify the message. This would include the required functionality to effectively run an additional handler (you could bind to the onComplete lifecycle hook or something).
If we just wanted add handlers to existing message types, I'm not sure the best way to do that yet since the handler is coded into the message definition. But something to think about.

Closing this -- reopen if needed.


Some fixes to the "New in Chrome 75" article

What's changed, or what was fixed?
In the "New in Chrome 75" article,

Removed unnecessary comma
Capitalized "web share API" where it wasn't
Added missing "are" in a sentence
And fixed some other small issues

CC: @petele

:tada: This has been pushed live to https://developers.google.com/web/


Cannot find the "Microsoft.Phone" assembly

Hello there! I was working on one of my projects and then I wanted to use the Microsoft.Phone assembly, but I couldn't find it, I was getting
Error	CS0234	The type or namespace name 'Phone' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)	testprojectlol	D:\vs stuff\testprojectlol\Main.cs	4	Active
Any idea on how I can fix this? I can't seem to find the Microsft.Phone dll,

@StevenRafft -- Stev, thank you for your feedback.  Are you following a particular docs.microsoft.com article?  Meanwhile, please consider these resources:

Visual Studio on Microsoft Q&A
Visual Studio MSDN Forum
Stack Overflow
Reddit

Windows Phone may have been discontinued.


Remove @Harwayne from OWNERS.

Changes

Remove @Harwayne from OWNERS.

/kind removal

Release Note

NONE

/lgtm
/approve


[WIP] logaggregator: buffer snapshots

WIP
Implement snapshotting to disk as a stepping stone to full replication from leader to follower(s). The snapshot format & internal mechanism for dumping/loading can be reused for part of replication.

As discussed yesterday, it looks like flatbuffers are a good fit, as the deserialization cost is near-zero.

As discussed yesterday, it looks like flatbuffers are a good fit, as the deserialization cost is near-zero.

I actually went the other direction and swapped out the protobufs code for the encoding/gob package. It should be performant enough for the time being, and the serialization format is not used by anything outside logaggregator, so it should be easy to replace gob when/if that's needed.
I need to squash this down, do a bit of cleanup, and manually test this some more. But it's ready for :eyes:

LGTM!


Prevent MySQL disk full

Migration of: https://help.aiven.io/en/articles/3781502-mysql-disk-full-prevention
Tested:

Fixes: https://github.com/aiven/devportal/issues/666

Would be possible someone to review this? thank you


flip "hangs" (screen is not redrawn)

When executing flip (which is also missing in show commands) nothing happens. Only after executing the next command things get turned around.

Yeah thats odd, even calling "refresh" doesnt do it

ah found the bug :) thanks for the report!


DioException on 500 error

Package
dio
Version
5.7.0
Operating-System
iOS, MacOS
Adapter
Default Dio
Output of flutter doctor -v
[✓] Flutter (Channel stable, 3.24.3, on macOS 15.1 24B83 darwin-arm64, locale
    en-US)
    • Flutter version 3.24.3 on channel stable at /Users/arash/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2663184aa7 (2 months ago), 2024-09-11 16:27:48 -0500
    • Engine revision 36335019a8
    • Dart version 3.5.3
    • DevTools version 2.37.3

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    • Android SDK at /Volumes/Software/Development/SDKs/Android/sdk
    • Platform android-35, build-tools 35.0.0
    • Java binary at: /Applications/Android
      Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16A242d
    • CocoaPods version 1.15.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2024.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)

[✓] VS Code (version 1.92.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.94.0

[✓] Connected device (4 available)
    • iPhone Arash (mobile)           • 00008110-000855E13491A01E • ios
      • iOS 18.1 22B83
    • macOS (desktop)                 • macos                     • darwin-arm64
      • macOS 15.1 24B83 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad     • darwin
      • macOS 15.1 24B83 darwin-arm64
    • Chrome (web)                    • chrome                    •
      web-javascript • Google Chrome 131.0.6778.86

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Dart Version
3.5.3
Steps to Reproduce
I have API, and it gives me 500 errors in Postman, but when I test it in Dio, it gives me DioException [unknown]: null, Error: HttpException: Connection closed while receiving data
but other errors like 400 or 401 are ok, and i can figure out what error happened
Expected Result
response.statusCode == 500
Actual Result
DioException [unknown]: null
Error: HttpException: Connection closed while receiving data

Please attach more details and a reproducible example.


Add a HTTP/2 client example using the newer frames approach...

... the current HTTP/2 client example uses the older 'HTTP/1 <--> HTTP/2' translation approach.
Motivation:
When I was previously working on a project using Netty's HTTP/2 support, I used the newer frames approach but I struggled to find any good examples or documentation online. I did, however, see a few people ask the same (or similar) questions as me on StackOverflow and a couple of older Netty Github issues.
Reading issue 9733 therefore prompted me to pull together a few bits of code into this HTTP/2 frame client example.
Modification:
Populated the previously-empty example/src/main/java/io/netty/example/http2/helloworld/frame/client/ folder with a HTTP/2 frame client example.
Result:
Gives a clear example of how the newer HTTP/2 support can be used for Netty clients.

Thanks @normanmaurer, that all makes sense - those changes should all have been made now.

@netty-bot test this please

@TristanPerry thanks a lot


feat(ui): Allow specifying whether local or all snapshots are shown by default

When I connect to the server http page, I prefer to see all snapshots shown by default.  every time I switch away and come back I need to reselect 'All' instead of 'Local'.  This just makes the default a preference option
Requires https://github.com/kopia/kopia/pull/3289

I put this comment in the kopia PR, but I'll add it here too as any changes are probably more relevant here:
I noticed that this will result in a configuration setting that has no effect when using the kopiaUI application (since multiUser is false there).
Solutions:
keep the code as is
leave the setting always available and place it in a 'multi user' section
query multi-user mode on the preferences page and hide the config option
remove the config option altogether and default to 'All Snapshots' if there is no local snapshot
The last option cold be done entirely in the UI without a need for any server-side changes, but it is the least flexible.

I considered allowing selection of any user instead of just the all or local.  It didn't make sense to me to save this setting, since normally I'm just using it as a filter, and not as a permanent setting.  Whereas the 'Local' setting is of no use to me as I don't have any local snapshots.  It is also a little weird to me to use what is effectively a filter as a preference and store that on the server.  It would perhaps be better to store in in a local-store, but I don't see any enabling for that.  If we do go this way, it eliminates the need for altering the preferences screen, so maybe it is overall more inuitive.
Anyhow, I can store the value as a username.  we'll need to validate that the user exists each time, so I'm not sure it will actually simplify the code any though.
Please confirm you prefer preserving the last-selection, and I'll make the changes.  Looks like @jkowalski already merged the boolean parameter, so we'll need a new pull-requrst into kopia for this change.

Hi @PhracturedBlue,
then we should just fix the code and implement it as it is - with the current logic. What you you think @jkowalski?
Cheers,

One further option I thought of:
We can remove the preferences config and update defaultSnapshotViewAll based on the last seen of set('latest', 'all').  I.e. it wouldn't store that last selected user, but it would store the last selected latest or all.
That has the benefit of not requiring a server-only configuration section in the preferences.

I ended up removing the configuration option, as the more I thought about it the less it seemed helpful.


Test bigtable change

@ishanrc: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test-drill
9f583f00c78c6064d26be7d7c80cbbacdd9ced53
link
/test test-drill

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


terminal: Implement text selection and copy/paste functionality in terminal mode

See issue #726
// TODO

[x] Text selection
[x] Copy (ctrl+shift+c for Windows/Linux / cmd+shift+c for MacOS)
[x] Paste (ctrl+shift+c for Windows/Linux / cmd+shift+c for MacOS)
[ ] Word full word select (with double-left click)

Thanks! Sorry about the commit history, I'll try cleaning it up

Rebased

It needs a bit of testing, but I'd say it has all the features it needs.

This is such an important feature, love to see it go forward. Attempting to fix the failing CI

Ci is failing because of this:

3 | _ =>  can be substituted by _ =>

@VolatileMark cargo clippy -- -D warnings
Thank you for your contrib!

Thanks!

Thank you so much!


2fa input code is not automatically focused

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

Action Performed:

Begin Sign-in and add your login for an account with 2fa enabled
Copy-paste the magic code received in your email
Verify that you are now asked to enter your 2fa code
Start typing the code without explicitly clicking on the input component

Expected Result:
The code should be entered in the input component as I type it
Actual Result:
The code is not entered in the input field until I explicitly click on the input field
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

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

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: 1.3.24-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/09716825-2de3-4852-8467-d201e896142c
Expensify/Expensify Issue URL:
Issue reported by: @cristipaval
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1685702165939109
View all open jobs on GitHub

This is dupe of https://github.com/Expensify/App/issues/19711


Add Shashankzz0007

Related issue

What changes does this PR do?
Screenshots (If any)
Questions

@Panquesito7 Can you please point me the submodule because I am not able to find it. It would be helpful of you.

@Panquesito7 please can you tell me how to remove the submodule.

@Shashankzz0007

Can anyone check if submodule is deleted or not?  Hopefully.

@Panquesito7 let me know if there is any problems left to solve while reviewing it. Thank you.


Redesign aggregate search datasource UI

This PR redesigns the ui for adding an aggregate data source, and also changes the resulting query label text to something that matches the data-source type:

Time Series Datasource -> Query
Search Data Source -> Resoto Search
The rest of them -> Aggregate Search

When using a template, it should fill the correct fields and not just include the finished query.
How it is now after selecting a template:

How it should look (in my opinion):


BIO_sendmmsg/BIO_recvmmsg (API only)

To make merging this easier, as a first step I've separated out the API into a separate PR. There are no implementations provided here, though a third party could do so using the BIO APIs.
An updated version of the BIO_dgram implementation PR without the Windows compatibility issues will follow.

Updated.

I've updated this to have a new int *err parameter. I think this is looking a lot better now. The semantics of the return value are also a lot clearer now and only indicate number of messages processed.

Not sure what you mean about DTLS. This is a new API without existing users. If there are semantics of the DTLS APIs we need to preserve those belong in libssl...

Its a new API that could be used by some future alteration to the DTLS code. The libssl DTLS code currently calls the BIO_read function to receive a message. The current API is that the end user calls SSL_read and if a failure occurs at the system call level then the end user expects to receive an error from SSL_read(), with SSL_get_error() returning SSL_ERROR_SYSCALL and errno set to an appropriate error code. Libssl does not explicitly do anything with errno. That's the behaviour libssl in turn inherits from BIO_read(), i.e. if a syscall fails then an error return is signalled and errno is set accordingly. In fact this behaviour only applies to BIOs that cause errno to be set at all (such as BIO_dgram) but wouldn't apply to BIOs that don't make syscalls (such as a mem BIO). Nonetheless, lots of applications rely on it.
If we at some point in the future modify libssl to call  BIO_recvmmsg instead of BIO_read then we still need to preserve the previous behaviour back to the caller of SSL_read, i.e. signal an error return and ensure errno is set. It would be easiest if the underlying BIO calls BIO_read vs BIO_recvmmsg worked in the same way with regards to signalling errors. This makes it an easier change in libssl.
Modifying libssl to set errno instead would work, but is kind of weird and not ideal. The errno behaviour is specific to BIOs that actually make syscalls and doesn't apply to (say) a mem BIO. Libssl doesn't actually know what kind of BIO it is dealing with.

I've updated this to have a new int *err parameter. I think this is looking a lot better now. The semantics of the return value are also a lot clearer now and only indicate number of messages processed.

How is err interpreted for BIOs that don't make sys calls (e.g. a mem BIO)?

So basically we have a situation where:

We have accidentally exposed side effects of internal implementation details (errno);
Applications have ended up depending on this abstraction leak, in an instance of Hyrum's law.
We have system specific state (errno) which is leaked to the application sometimes (if a BIO which makes syscalls is used) and which doesn't other times.
The BIO API contract, as well as the libssl API contract, has accidentally incorporated the state of errno.

This is unfortunate. I feel like we should fix this in 4.0, probably by zeroing errno after syscalls. Nonetheless, we have to support the current expectation...
Some things worth noting, however. If applications are depending on errno in this way, can we even be confident that switching from recv(3) to recvmmsg(3) preserves these semantics? What if the OS uses the system-specific error codes differently?
I suspect the safest thing would be to make use of sendmmsg/recvmmsg in libssl opt-in, requiring the application to explicitly enable the new semantics (and forego use of the errno side channel).
int *err would use errno.h values, regardless of whether implemented via syscalls or in memory.

(But leaving all of the above aside, since int *err provides a system error code, if you want to have libssl's calls to BIO_readmmsg work the same way, you would only have to add the line errno = err; after each call site. I don't think that's a problem and avoids introducing this unfortunate side channel into the new BIO API.)

We have accidentally exposed side effects of internal implementation details (errno);
Applications have ended up depending on this abstraction leak, in an instance of Hyrum's law.
We have system specific state (errno) which is leaked to the application sometimes (if a BIO which makes syscalls is used) and which doesn't other times.
The BIO API contract, as well as the libssl API contract, has accidentally incorporated the state of errno.

That's a fair summary. Although whether it was accidental or not is lost in the mists of time. I think this behaviour has probably been there since SSLeay times (i.e. before OpenSSL even existed). It is so entrenched that it is now documented. From the man page for SSL_get_error():

SSL_ERROR_SYSCALL
Some non-recoverable, fatal I/O error occurred. The OpenSSL error queue may contain more information on the error. For socket I/O on Unix systems, consult errno for details. If this error occurs then no further I/O operations should be performed on the connection and SSL_shutdown() must not be called.

https://www.openssl.org/docs/man3.0/man3/SSL_get_error.html

That's some interesting history...
So basically the question for now is whether errno = err; is in BIO_sendmmsg or libssl. Since it's just one line, it doesn't make a massive difference either way, but I'd argue it should be libssl doing this:

If we put this in BIO_sendmmsg things like this will probably happen accidentally again in the future.
Callers of BIO_sendmmsg other than our existing SSL code will forget about the errno channel, and then callers of those callers end up depending on it. Will we always remember to put errno = 0; after every call to BIO_sendmmsg or BIO_recvmmsg in our QUIC implementation, etc. If we don't, this kind of unintended dependency is going to happen again, somehow...
The object of this is to preserve the documented semantics of the libssl API, so it's logical for libssl to do this.
Having it done explicitly in libssl also makes it less likely for this behaviour to be accidentally broken later, and serves to document this in code, as currently this is rather subtle. Nor is it burdensome, since it's literally one line.

The only concern I have is making libssl touch errno, which doesn't necessarily exist on all platforms (and needs to be WSASetLastError on Win32). Though it looks like it already does in one case. But this can be readily abstracted by adding a set_last_socket_error to match the existing get_last_socket_error.
So all libssl would have to do, if it decides to preserve these semantics when using sendmmsg/recvmmsg would be:
int err;

num_processed = BIO_sendmmsg(..., &err);
set_last_socket_error(err); /* The OS socket error variable is part of the SSL_read API */

I can live with libssl doing this.
However, I have another thought (which may be slightly contradictory to my previous thought, but still needs to be considered). Should we be using OS specific error values at all in a new API? Or should we convert them to an OpenSSL error value of some form. Part of the point of the BIO abstraction is to abstract away system specific details. Applications written to use OpenSSL APIs should be portable. If you write an OpenSSL app on one platform, it should more-or-less work unmodified on a different platform (at least as far as the OpenSSL specific bits are concerned). By incorporating system specific error codes into the API we are breaking that. Users of the API will have to have different code to handle different platforms that they run on.

Matt,
I don't think converting OS specific errors is a good idea. When you have os specific error, you can google the possible reasons more effectively.

Option 1: Use our own error codes
I was thinking about this yesterday. It does seem like it would be better in principle to use our own error codes. My main concern is then we would have e.g. a function with a switch statement mapping from OS error codes to our own; but then what if the OS returns an error code we didn't add support for? Not a massive deal since OSes don't want to break compatibility either and it would be odd for them to add a new code in an existing syscall. But new platforms may have OS-specific error codes we don't handle. These would presumably be translated to some kind of BIO_UNKNOWN value. Then people would have to raise PRs to add handling for these error codes if they wanted to be able to discern them. (But then we would switch from returning BIO_UNKNOWN to returning a specific value, which is potentially a breaking change for any existing users that came to depend on us returning BIO_UNKNOWN.)
Option 2: Define-based abstraction
Another option is we do define our own error codes, but these just forward to OS-specific ones:
#ifdef OPENSSL_SYS_WINDOWS
#define BIO_ERR_WOULDBLOCK WSAEWOULDBLOCK
#else
#define BIO_ERR_WOULDBLOCK EWOULDBLOCK
#endif

The numeric BIO_ERR values needn't be the same on all platforms but still provide an effective abstraction. We may need to include the relevant header in bio.h.
But I don't think this works either; there may be multiple error codes on a given OS corresponding to one of our abstracted error codes (for example, EWOULDBLOCK and EAGAIN). Users would presumably test the error code with x == BIO_ERR_WOULDBLOCK so this creates problems.
Option 3: Predicate and opaque system-specific value
BIO_ERR *err outputs a system specific value, and we offer predicates to test it:
typedef int BIO_ERR;
int BIO_ERR_is_would_block(BIO_ERR err);
int BIO_ERR_is_conn_refused(BIO_ERR err);
int BIO_ERR_is_intr(BIO_ERR err);
int BIO_ERR_to_socket_error(BIO_ERR err);
BIO_ERR BIO_ERR_from_socket_error(int err);

I think this is probably the best option:

Abstracts OS values
The application can still access the OS value if it needs it using BIO_ERR_to_socket_error (to support libssl as discussed above)
We can map multiple OS error codes to one predicate (EAGAIN vs. EWOULDBLOCK, etc.)
We can map multiple predicates to one OS error code if desired.
We can add new calls to test new conditions on an error code without breaking backwards compatibility.

Might be a good idea to make BIO_ERR 64-bit or a structure with a couple of opaque ints in just in case. I'll update this PR soon with a prototype of this.

Option 3 sounds plausible, but please consider how it interacts/intersects with numerous other BIO macros/functions in this area. E.g.
# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0))
# define BIO_set_retry_special(b) \
                BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY))
# define BIO_set_retry_read(b) \
                BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY))
# define BIO_set_retry_write(b) \
                BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY))

/* These are normally used internally in BIOs */
# define BIO_clear_retry_flags(b) \
                BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
# define BIO_get_retry_flags(b) \
                BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))

/* These should be used by the application to tell why we should retry */
# define BIO_should_read(a)              BIO_test_flags(a, BIO_FLAGS_READ)
# define BIO_should_write(a)             BIO_test_flags(a, BIO_FLAGS_WRITE)
# define BIO_should_io_special(a)        BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL)
# define BIO_retry_type(a)               BIO_test_flags(a, BIO_FLAGS_RWS)
# define BIO_should_retry(a)             BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY)

int BIO_get_retry_reason(BIO *bio);
void BIO_set_retry_reason(BIO *bio, int reason);

int BIO_sock_should_retry(int i);
int BIO_sock_non_fatal_error(int error);

In particular codes like EAGAIN are closely related to the BIO retry macros above.

Please, please, leave a plain option to get a system errno/LastError. Otherwise debugging becomes much more difficult.

@beldmit Yes, this will be supported via BIO_ERR_to_socket_error.
@mattcaswell Most of the BIO calls read or write state on the BIO so are incompatible with our objectives of supporting concurrent use for the mmsg methods. BIO_sock_non_fatal_error is more plausible though does hold us to using an int rather than a structure. Anyway, I'll come up with a proposal.

Most of the BIO calls read or write state on the BIO so are incompatible with our objectives of supporting concurrent use for the mmsg methods

Yes, good point.

New update. Trying to avoid overkill and reinventing our existing error code infrastructure.

Ping? This is holding a lot up now.
@mattcaswell

Updated:

There is now a BIO_R_NON_FATAL which non-syscall-based BIOs can use to indicate a non-fatal condition in a way which does not depend on system error codes.
The is_non_fatal function has been updated to test for this code.
Documentation has been updated to advise people to use is_non_fatal rather than testing for any specific error code.

This pull request is ready to merge

Merged to master.


LFS-681: When clicking (+) on a subject child chart to add a form, do not show parent subject in the subject selection dialog

This is more of a bugfix that occurs when creating a Radiotherapy or Chemotherapy form from the Tumour chart. This restricts the ability to create subjects of subject types that are not descendents of the currently viewed subject. E.g. you can no longer create a Patient or a Tumour from the tumour chart, only TumourRegions.
To test: Create a bunch of different forms from different patient/tumour/tumour region charts. You should no longer be able to create any subject that is not a child of the currently-selected chart.

Wrong PR name/branch


External blockers

Our list of external blockers (that is, things we need other teams to accomplish):

[x] #656 Remove psl-monad submodule, blocked on #732
[x] #463 Enable PowerShellGet, blocked on cross-platform availability of OneGet
[x] #639 Using platform-specific packages, blocked on dotnet/corefx#6743
[x] #395 dotnet-resgen to generate resources
[x] #746 dotnet-resgen to generate C# bindings, blocked on dotnet/cli#819 generation implemented in build.psm1
[x] #530 Move content to System.Management.Automation, blocked on dotnet/cli#753
[x] #529 Remove content from superproject, blocked on dotnet/cli#66 or #732
[x] #459 Enable DLL strong name verification, blocked on dotnet/cli#720
[ ] #673 Remove Linux configuration, blocked on dotnet/cli#465
[ ] #733 Remove the type catalog generator, blocked on dotnet/corefx#1784
[x] #806 Fix the xUnit runner, blocked on dotnet/cli#2402
[x] #1211 Native Image Generation

We are getting both the remaining issues with .NET CLI's move to msbuild (which will resolve #673), and .NET Core's next big patch (which will resolve #733), so I'm closing this. Hooray!


[EPIC] Performance Improvements

Parallelization and performance optimizations

I appreciate you may not have optimised yet.
But fyi, I get approximately:-

50req/s with mojo lightbug.🔥
100req/s compiled

whereas python flask does about 1000 req/s on a single core.
Performance profile attached

Nether mind it's just something in the Welcome handler
With my own handler, I get 2700 req/s.

Woah, nice! Thanks for testing! Yes, the welcome handler serves an html page with an image, which might be slower. Can I ask how you're profiling this? The charts look sick

Profile was with Linux's built in kernel profiler and "perf" usermode tool, I couldn't find a profiler specifically for mojo yet. This technique does have the advantage of showing all user and kernel mode activity, i.e. the libc and cpython work.
I suspect there is a lot of memory allocation or copying happening in the welcome handler but I'm not all that familiar with mojo and haven't found a technique to profile memory allocation.
i'm also suspicious the use of python sockets might be suboptimal, but what do i know?
flame graph is by https://www.brendangregg.com/perf.html
git clone https://github.com/brendangregg/FlameGraph
cd FlameGraph
sudo perf record -F99 -g -p `pgrep lightbug` -- sleep 60
sudo perf script | ./stackcollapse-perf.pl > out.perf-folded
./flamegraph.pl out.perf-folded > perf.svg
google-chrome perf.svg

you might also enjoy perf top

Yeah 1500req/s with the base64 image removed.

@crunchy-vonage we're actually doing external_calls to C in the Mojo server implementation in the sys folder (this one is enabled by default) and not talking to Python! Python is only invoked in the separate Python implementation in the python folder

I've made some improvements in #40 , getting 10468 reqs per second now with wrk. wrk is the tool used, among other things, for TechEmpower benchmarks. I have a fork for potential submission here, but the performance is not satisfying enough yet, and we don't even have JSON serialization support in order to submit it to the listing. Would be cool if we can make an entry at some point though.
Running 1s test @ http://localhost:8080
  1 threads and 1 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.67ms   11.33ms  78.56ms   94.60%
    Req/Sec     9.56k     2.40k   11.29k    72.73%
  Latency Distribution
     50%   53.00us
     75%   58.00us
     90%   98.00us
     99%   66.70ms
  10468 requests in 1.10s, 1.59MB read


Update samples that use OfflineMapTask

Description
A couple of the samples dealing with offline map tasks do the following:

Create a PortalItem m_portalItem
initialize m_map using m_portalItem
initialize m_offlineMapTask using m_portalItem

This results in the OfflineMapTask creating its own map from m_portalItem. So there ends up being 2 instances of a map. Although the samples work correctly, if users copy and paste the code, they may run into problems trying to do something outside what the sample indicates.
Type of change

[x] Bug fix
[ ] New sample implementation
[ ] Sample viewer enhancement
[ ] Other enhancement

We can remove m_portalItem from the header file because it isn't needed anymore and just do the following to create a new map
  // Create a map from the Portal Item
  m_map = new Map(new PortalItem(portal, webMapId(), this), this);


Accessing /static ✅

Accessing a dynamic url with {example} ✅

Accessing /test ❌

What did you expect to see?
By the precedence rules, if I access /test, it should use the static URL handler, but the dynamic URL handler is used. This behavior likely has to do with the use of multiplexers, but it is strange and I am not sure if it is intentional.

Similar Issues

net/http: enhanced ServerMux routing #65231
net/http: ServeMux behaves inconsistently across operating systems #66288
net/http: muxer no longer redirects host patterns in go1.10 #23183
net/http: ServeMux forcibly cleans double forward slash in URLs even when behaving as a gateway #42244
net/http: document and test behavior of ServeMux with ports #23351

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

This is working as intended. Each layer of net/http.ServeMux works independently without knowledge of any nested muxes.


Strange subtitles rendering

Have you read the FAQ and checked for duplicate open issues?:
Yes
What version of Shaka Player are you using?:
2.4.4
Can you reproduce the issue with our latest release version?:
Yes
Can you reproduce the issue with the latest code from master?:
I didn't test it
Are you using the demo app or your own custom app?:
demo
If custom app, can you reproduce the issue using our demo app?:
What browser and OS are you using?:
MacOS High Sierra / Firefox 62.0
What are the manifest and license server URIs?:

https://shaka-player-demo.appspot.com/demo/#asset=https://d1chyo78gdexn4.cloudfront.net/vualto-demo/sintel/sintel_nodrm.ism/manifest.mpd;lang=en-GB;build=compiled
https://shaka-player-demo.appspot.com/demo/#asset=https://d1chyo78gdexn4.cloudfront.net/vualto-demo/elephants-dream/elephants-dream_nodrm.ism/manifest.mpd;lang=en-GB;build=compiled

What did you do?

Load the stream
Enable subtitles
Pause at 6 sec for sintel or 15 sec. for Elephant dreams

What did you expect to happen?

To see subtitles inside a small black box

What actually happened?

I see a big black box behide the subtitles and in sometimes it is weirdly positioned (cf. elephant stream). (It works as expected in the 2.3.7 version)

This is sort of expected.  What is happening is we are using VTTRegion to set the portion of the window to draw the cue on.  Then the browser is styling the VTTRegion with the default styles, which includes a background color of black.  Normally, you should be able to add CSS to style them, like:
video::cue-region {
  background: transparent;
}

However, both Chrome (https://crbug.com/884232) and Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=1491365) have bugs where you can't use CSS to fix this.  Maybe we should just not use VTTRegion since it isn't even enabled in Chrome by default and Firefox has at least one bug with it.
Also note that your cues are supposed to have a transparent background, but we don't support many TTML styles, so we ignore it and just use the default black background.
I've filed #1585 to handle the odd positioning.

Thanks for the tip, but will the changes between 2.3.7 and 2.4.4 around rendering be rolled back or fixed?

I guess we can revert VTTRegion support until browsers fix their implementations.  It is currently only doing something on Firefox anyway.
Also note that even though #1585 is fixed, it won't fix your content.  You use a non-spec-compliant namespace URI in your TTML files; I suggest you talk to your encoder about using the correct namespace URIs.  That file uses http://www.w3.org/2006/10/ttaf1, but the correct namespace URI is http://www.w3.org/ns/ttml.  I can't find any spec (even old versions) that use that namespace URI.
See: https://www.w3.org/TR/ttml1/#vocabulary-namespaces

The removal of VTTRegion support was cherry-picked to v2.4.5.


Do not display Coordinates Resolved for nonsense coordinates

Current, hyperlinked values for Coordinates Resolved are displayed for nonsense coordinates with values outside the allowed range of -90:90 for latitude and -180:180 for latitude (Coordinate Status="Coordinate values out of bounds"). Nothing should be displayed in column Coordinates Resolved for coordinates with Coordinate Status="Coordinate values out of bounds" or Coordinate Status="Coordinates non-numeric". Values should only be displayed for coordinates which appear on the map.

I have reopened this issue as out-of-bounds coordinates were still displaying. However, the main solution was with the API. I have updated the API to remove out-of-bounds coordinates from field latitude and longitude. However, there is still an additional problem on web app end: a single comma now displays for nonsense coordinates (both "out of bounds" and "non-numeric"). This is no doubt the result of concatenating the empty latitude and longitude columns with a comma delimiter. Please correct this behavior so that column Coordinates Resolved is completely blank for "out of bounds" and "non-numeric" coordinates.

See https://github.com/ojalaquellueva/gvs/issues/8 (completed).


DS-2852 - Discovery label fix for authority display value

This pull request will make sure the author's name is displayed when clicking a discovery facet and the author is under authority control.
This is still work-in-progress!

This has been rebased and can be considered final now.

I've skimmed this code and it looks OK to me. I will note that I asked as a comment on DS-2852 if this applies to DSpace 6x as well, and @tomdesair said that it did. Do we need a PR for that? Or is forward-porting enough?

Forward-porting is not enough AuthorityValueFinder is not available in the dspace-6_x branch anymore. I prepare a second pull request for DSpace 6x.

I just tested this with the mirage theme and it did not work... It breaks the UI and fail if the filter is applied again:

If you press "Apply" the value (f.e. "Haak, Laurel") is submitted as the ID and that obviously does not work.

About the UI problem:
This issue was not limited to the Mirage theme, but also caused problems for Mirage2. I changed the name of the display value field and hid it.

So the patch currently does not change the display in the Mirage theme?! :confused:

DS-2852 only relates to Mirage2.
The specific issue is that the "tag" beneath the discovery search input field is showing an identifier instead of something human readable (Eg. for authors --> full name).
This "tag" html element does not exist in Mirage(1), so there's nothing to "fix" in Mirage(1).
The advanced filters still show the identifier (in both Mirage2 and Mirage), this seems logical, as it is explicitly searching for an identifier. (The dropdown values say "Author" and "ID"; it would be strange if you would expect a name to appear here instead of an ID)

hi @tomdesair , this looks good... if you'd like this fix to get into 6.3 could you please rebase to dspace-6_x or cherrypick and submit a new PR to dspace-6_x? we can give it a quick re-test then should be good to go!


Add additional support for array indexing in Set

Description:
Closes #117. You can now use Set with array indices when the full path does not already exist.
Benchmark before change:
BenchmarkJsonParserLarge-4                    	  100000	     75566 ns/op	       0 B/op	       0 allocs/op
BenchmarkJsonParserMedium-4                   	  500000	     13141 ns/op	       0 B/op	       0 allocs/op
BenchmarkJsonParserDeleteMedium-4             	 1000000	     10421 ns/op	       0 B/op	       0 allocs/op
BenchmarkJsonParserEachKeyManualMedium-4      	 1000000	      7995 ns/op	     112 B/op	       2 allocs/op
BenchmarkJsonParserEachKeyStructMedium-4      	 1000000	      8653 ns/op	     672 B/op	      12 allocs/op
BenchmarkJsonParserObjectEachStructMedium-4   	  500000	     12323 ns/op	     624 B/op	      11 allocs/op
BenchmarkJsonParserSmall-4                    	10000000	      1107 ns/op	       0 B/op	       0 allocs/op
BenchmarkJsonParserEachKeyManualSmall-4       	10000000	       879 ns/op	      80 B/op	       2 allocs/op
BenchmarkJsonParserEachKeyStructSmall-4       	10000000	      1370 ns/op	     256 B/op	       9 allocs/op
BenchmarkJsonParserObjectEachStructSmall-4    	10000000	      1017 ns/op	     240 B/op	       8 allocs/op
BenchmarkJsonParserSetSmall-4                 	 5000000	      1579 ns/op	     816 B/op	       5 allocs/op
BenchmarkJsonParserDelSmall-4                 	 3000000	      1840 ns/op	       0 B/op	       0 allocs/op

Benchmark after change:
BenchmarkJsonParserLarge-4                    	  100000	     64982 ns/op	       0 B/op	       0 allocs/op
BenchmarkJsonParserMedium-4                   	 1000000	     12109 ns/op	       0 B/op	       0 allocs/op
BenchmarkJsonParserDeleteMedium-4             	 1000000	      9541 ns/op	       0 B/op	       0 allocs/op
BenchmarkJsonParserEachKeyManualMedium-4      	 1000000	      7348 ns/op	     112 B/op	       2 allocs/op
BenchmarkJsonParserEachKeyStructMedium-4      	 1000000	      7987 ns/op	     672 B/op	      12 allocs/op
BenchmarkJsonParserObjectEachStructMedium-4   	 1000000	     11086 ns/op	     624 B/op	      11 allocs/op
BenchmarkJsonParserSmall-4                    	10000000	      1005 ns/op	       0 B/op	       0 allocs/op
BenchmarkJsonParserEachKeyManualSmall-4       	10000000	       799 ns/op	      80 B/op	       2 allocs/op
BenchmarkJsonParserEachKeyStructSmall-4       	10000000	      1209 ns/op	     256 B/op	       9 allocs/op
BenchmarkJsonParserObjectEachStructSmall-4    	10000000	      1081 ns/op	     240 B/op	       8 allocs/op
BenchmarkJsonParserSetSmall-4                 	 5000000	      1497 ns/op	     816 B/op	       5 allocs/op
BenchmarkJsonParserDelSmall-4                 	 5000000	      1721 ns/op	       0 B/op	       0 allocs/op

Should we include a test to note this behavior (which maybe isn't ideal but I think that's ok for now)?
	{
		desc:    "set indexed path to object on empty JSON, index value is ignored",
		json:    `{}`,
		path:    []string{"top", "[0]", "middle", "[1]", "bottom"},
		setData: `"value"`,
		isFound: true,
		data:    `{"top":[{"middle":[{"bottom":"value"}]}]}`,
	},

@JoshKCarroll I think thats a good call. As far as the right behavior, I'm not entirely sure what the alternative is. Throw an error?

Also, if I understand the code correctly, this test would pass.. when I think the expected behavior would be to append rather than replace the array. Maybe that's ok right now but should file an issue if we don't want to fix it. Or am I misunderstanding?
	{
		desc:    "array is replaced instead of expected append",
		json:    `{"top":[{"middle":[]}]}`,
		path:    []string{"top", "[1]", "second", "[0]"},
		setData: `"value"`,
		isFound: true,
		data:    `{"top":[{"second":["value"]}]},
        // Expected: `{"top":[{"middle":[]}, {"second":["value"]}]}
	},

Yeah I think either a nil-padded array or throw an error

Otherwise LGTM

Taking over for Casey and continuing to work on this at https://github.com/qntfy/jsonparser/pull/2


Blacklist Functionality

I'm not sure if this is an issue or not, but I'm wondering about the actual behavior of the blacklist setting. I have a handful of instances added, however I still have a follower from one of them (and I also see that particular instance's crawler showing up in my nginx access log). I'm just wondering if  that's expected behavior.

The blacklist function does not block crawlers, it only denies follow request from the listed servers. It only blocks servers from the moment you added them to the list. If someone from one of these servers was on your followers list before, he/she will not be blocked. I am working on a feature, where you will be able to edit your followers list, to remove them by hand.
If users from blocked servers will still be able to follow you, it is a bug!

The follower I'm referring to is from Gab, which of course is in the list by default (and I haven't removed it at any point), so perhaps. Thanks for the clarification.


Can't play the recorded audio

Hello, well as I explain in the title, I can not play the recorded audio, I checked the actual path of filePath in my device (physical) and nothing is in there.
I followed one of your samples.

isRecording event is triggered.
AudioInputReceived is triggered.
filePath is different than null.
player.play(filePath) executes with no error but the record isn't played.
player.FinishedPlaying is not triggered.

Sorry that I can not provide my code because I can't share it.
Thanks

I have the exact same problem.

Can you confirm that you've set the necessary permissions? Does the library log anything when you debug your app?

I have the permissons, the phone asked for it and gave them. It doesn't throw any error at all, it just records but never saves it in the temporal folder.
I have the permissons of Data Management (because I take pictures with it) and the permisson of recording audio.

After a bit of research in the code, I found that the "FilePath" argument can be used in the recorder initialization to specify any intended path for saving the recording. For me, I changed it to point to the local application resource folder in Xamarin.Forms & I can now view the recording in the actual folder specified.

I tried to save it in a local folder but it tells me that I don't have the permissons to do so... How did you get it to work? Could you post if possible your code?

In the platform permissions you need to request access for external storage. In Android, it is WRITE_EXTERNAL_STORAGE for example. You need to make sure that the app permissions on your phone settings shows that storage permission is enabled.

@DD2XAlpha were you able to get it working with the external storage permission?


Kubernetes

/lgtm

Hello there, @saiyam1814  and @kranurag7
Just to let you know, I was suffering from cold and fever, which led me to discontinue my DevOps learning streak.
As I'll be continuing my learning after a long break, I'll take a week to revisit the concepts before moving on to the new one.


updated_releases()

I discovered the method pypi.CheeseShop.updated_releases() and wondererd how you came across this since it's not documented on http://wiki.python.org/moin/PyPiXmlRpc?action=show&redirect=CheeseShopXmlRpc

Oh I found it: https://svn.python.org/packages/trunk/pypi/rpc.py


JSQMessageViewController not showing message bubbles

New issue checklist

[ ] I have read the README, documentation, and FAQ.
[ ] Contributing guidelines confirmation: ____
[x] I have searched existing issues and this is not a duplicate.

General information

JSQMessagesViewController version:
iOS version:
Devices/Simulators:
Reproducible in the demo project? (Yes/No):
Any related issues:

What happened?
JSQ.zip
green messages are the ones that i have stored in the phone, but the message with gray bubble is the on that i am loading through api request, after loading i am creating JSQMessage and append it to the array of JSQMessage and calling finishRecievingMessages().
But the message is not visible on the screen until and unless i am manually dragging the screen.
This does not happen one when the no. of text messages are exceeds the number which can fit into the screen.
In the image i have called finishSendingMessage(), i have tried both methods, it is not working

Thanks! 😄
Please provide all the information in the issue template so we can help!
And don't forget to read our contribution guidelines. 😊

Hello everyone!
I'm sorry to inform the community that I'm officially deprecating this project. 😢 Please read my blog post for details:
http://www.jessesquires.com/blog/officially-deprecating-jsqmessagesviewcontroller/
Thus, I'm closing all issues and pull requests and making the necessary updates to formally deprecate the library. I'm sorry if this is unexpected or disappointing. Please know that this was an extremely difficult decision to make. I'd like to thank everyone here for contributing and making this project so great. It was a fun 4 years. 😊
Thanks for understanding,
— jsq


Update governance

switch to<EMAIL_ADDRESS>as the maintainers
mailing list
use the CNCF code of conduct
define antrea-io Github org membership and how to become a member
clarify PR merging process

I am hoping that Github changes the permission model for Github actions in the near future, and that we can reduce permission level for members from "Write" to "Triage".

Codecov Report

Merging #2197 (ba372fc) into main (5c5cae5) will increase coverage by 13.77%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #2197       +/-   ##
===========================================
+ Coverage   41.02%   54.80%   +13.77%
===========================================
  Files         134      273      +139
  Lines       16683    20644     +3961
===========================================
+ Hits         6844    11313     +4469
+ Misses       9253     8127     -1126
- Partials      586     1204      +618

Flag
Coverage Δ

kind-e2e-tests
40.28% <ø> (?)

unit-tests
41.02% <ø> (ø)

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

Impacted Files
Coverage Δ

pkg/apiserver/handlers/webhook/mutation_labels.go
24.71% <0.00%> (ø)

pkg/version/version.go
38.46% <0.00%> (ø)

pkg/apis/stats/register.go
81.81% <0.00%> (ø)

...yped/clusterinformation/v1beta1/antreaagentinfo.go
15.06% <0.00%> (ø)

pkg/ipfix/ipfix_process.go
100.00% <0.00%> (ø)

...legacyclient/informers/externalversions/generic.go
0.00% <0.00%> (ø)

...yclient/listers/security/v1alpha1/networkpolicy.go
0.00% <0.00%> (ø)

pkg/querier/querier.go
57.14% <0.00%> (ø)

pkg/agent/util/ipset/ipset.go
61.53% <0.00%> (ø)

pkg/legacyapis/networking/v1beta1/register.go
92.30% <0.00%> (ø)

... and 212 more

/skip-all

/skip-all


issue #498 slideshare downloader added

Description
This program download slides from Slideshare as pdf.
Fixes #498
Have you read the Contributing Guidelines on Pull Requests?

[x] Yes
[ ] No

Type of change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)
[x] Documentation Update

Checklist:

[x] My code follows the style guidelines(Clean Code) of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have created a helpful and easy to understand README.md
[x] My documentation follows Template for README.md
[x] My changes generate no new warnings
[x] I have added tests/screenshots(if any) that prove my fix is effective or that my feature works.

@santushtisharma10 @tamanna-verma @antrikshmisri

@vikashkumar2020 @kaustubhgupta LGTM 🚀


Fix issue #1

Fix for issue #1: Escape arguments with double quotes if they contain space (only under Windows platform).

LGTM


Keyword Search?

Hello there!
I've reviewed the README.md file, but I'm a bit uncertain about whether the ability to collect submissions from specific subreddits based on keywords is a feature. Could you clarify if this functionality is available?

Hi @hw016
That's actually a key feature - Thanks for the suggestion. I will be working on such functionality shortly.

The feature has been just added! Please upgrade redditharbor to its newest version, and if you have any questions, let me know.


Are there reranker framework?

Hi, I found that it is the framework for finetuning embeddings; what about rerankers then?

Not at the moment however PRs are welcome!
Also tevatron seems to implement reranker training


Update versions

A bunch of Libuv tests fail when I try to get a new version of the shared fx.
[xUnit.net 00:01:50.47]     ConnectionClosedWhenBothRequestAndResponseExperienceBackPressure [FAIL]
  Failed   ConnectionClosedWhenBothRequestAndResponseExperienceBackPressure
  Error Message:
   System.TimeoutException : The operation at /_/src/Servers/Kestrel/shared/test/TaskTimeoutExtensions.cs:12 timed out after reaching the limit of 30000ms.
  Stack Trace:
     at Microsoft.AspNetCore.Testing.TaskExtensions.TimeoutAfter[T](Task`1 task, TimeSpan timeout, String filePath, Int32 lineNumber)
     at Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.ResponseTests.ConnectionClosedWhenBothRequestAndResponseExperienceBackPressure() in /_/src/Servers/Kestrel/test/FunctionalTests/ResponseTests.cs:line 728
  --- End of stack trace from previous location where exception was thrown ---
  Standard Output Messages:
   | [0.002s] TestLifetime Information: Starting test ConnectionClosedWhenBothRequestAndResponseExperienceBackPressure at 2019-03-05T01:13:45
   | [0.007s] Microsoft.AspNetCore.Hosting.Internal.WebHost Debug: Hosting starting
   | [0.008s] Microsoft.AspNetCore.Hosting.Internal.WebHost Debug: Hosting started
   | [0.008s] Microsoft.AspNetCore.Hosting.Internal.WebHost Debug: Loaded hosting startup assembly Libuv.FunctionalTests, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60
   | [0.008s] Microsoft.AspNetCore.Server.Kestrel Debug: TestServer is listening on port 51149
   | [0.009s] Microsoft.AspNetCore.Server.Kestrel Debug: Connection id "0HLL10UGEN1HE" started.
   | [0.009s] Microsoft.AspNetCore.Hosting.Internal.WebHost Information: Request starting HTTP/1.1 POST http:///  6553600
   | [0.011s] Microsoft.AspNetCore.Server.Kestrel Debug: Connection id "0HLL10UGEN1HE", Request id "0HLL10UGEN1HE:00000001": started reading request body.
   | [0.643s] Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv Debug: Connection id "0HLL10UGEN1HE" paused.
   | [30.024s] Microsoft.AspNetCore.Hosting.Internal.WebHost Debug: Hosting shutdown
   | [30.095s] Microsoft.AspNetCore.Server.Kestrel Error: Connection id "0HLL10UGEN1HE", Request id "0HLL10UGEN1HE:00000001": An unhandled exception was thrown by the application.
   | System.TimeoutException: The operation at /_/src/Servers/Kestrel/shared/test/TaskTimeoutExtensions.cs:12 timed out after reaching the limit of 30000ms.
   |    at Microsoft.AspNetCore.Testing.TaskExtensions.TimeoutAfter[T](Task`1 task, TimeSpan timeout, String filePath, Int32 lineNumber)
   |    at Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.ResponseTests.<>c__DisplayClass11_0.<<ConnectionClosedWhenBothRequestAndResponseExperienceBackPressure>g__App|4>d.MoveNext() in /_/src/Servers/Kestrel/test/FunctionalTests/ResponseTests.cs:line 700
   | --- End of stack trace from previous location where exception was thrown ---
   |    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application) in /_/src/Servers/Kestrel/Core/src/Internal/Http/HttpProtocol.cs:line 576
   | [30.096s] Microsoft.AspNetCore.Hosting.Internal.WebHost Information: Request finished in 30088.0164ms 200
   | [30.097s] Microsoft.AspNetCore.Server.Kestrel Error: Connection id "0HLL10UGEN1HE", Request id "0HLL10UGEN1HE:00000001": An unhandled exception was thrown by the application.
   | Microsoft.AspNetCore.Connections.ConnectionAbortedException: The connection was aborted by the application. ---> System.InvalidOperationException: Reading is already in progress.
   |    at System.IO.Pipelines.ThrowHelper.ThrowInvalidOperationException_AlreadyReading()
   |    at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
   |    at System.IO.Pipelines.Pipe.TryRead(ReadResult& result)
   |    at System.IO.Pipelines.Pipe.DefaultPipeReader.TryRead(ReadResult& result)
   |    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1ContentLengthMessageBody.TryRead(ReadResult& readResult) in /_/src/Servers/Kestrel/Core/src/Internal/Http/Http1ContentLengthMessageBody.cs:line 113
   |    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1MessageBody.OnConsumeAsync() in /_/src/Servers/Kestrel/Core/src/Internal/Http/Http1MessageBody.cs:line 41
   |    --- End of inner exception stack trace ---
   | [30.097s] Microsoft.AspNetCore.Server.Kestrel Debug: Connection id "0HLL10UGEN1HE", Request id "0HLL10UGEN1HE:00000001": done reading request body.
   | [30.097s] Microsoft.AspNetCore.Server.Kestrel Debug: Connection id "0HLL10UGEN1HE" disconnecting.
   | [30.098s] Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv Debug: Connection id "0HLL10UGEN1HE" sending FIN because: "The libuv transport's send loop completed gracefully."
   | [30.098s] Microsoft.AspNetCore.Server.Kestrel Debug: Connection id "0HLL10UGEN1HE" stopped.
   | [30.100s] TestLifetime Information: Finished test ConnectionClosedWhenBothRequestAndResponseExperienceBackPressure in 30.098767s

Did something with the PipeReader change that could have caused this? @Tratcher

@jkotalik \ @davidfowl

Looking into it. This was an expected break, but it may have a few more side effects than we thought.

@pranavkm PlatformAbstraction library removal is expected (https://github.com/dotnet/core-setup/pull/5218). Can you please fix PlatformManifestListsAllFiles and SharedFrameworkContainsExpectedFiles?

Confirmed it's a bug with my pipelines change, working on a fix.

:shipit:


Error in ingest: exceeding maximum limit on number of rows in spreadsheet

Error in ingest trying to import a spreadsheet exceeding the maximum number of rows (cell suspensions). We need to increase the limit. The number of rows is 76,000, and currently the limit is 50,000. It might be worth increasing the limit to 100,000 or more just to prevent this potentially happening in future.
Link to project in ingest: https://contribute.data.humancellatlas.org/submissions/detail?uuid=12a87cab-9c56-497b-901b-357b1b7c13d1&project=6936da41-3692-46bb-bca1-cd0f507991e9
Link to an old ticket (Feb 2021) when this was solved for a limit of 50,000: https://app.zenhub.com/workspaces/dcp-ingest-product-development-5f71ca62a3cb47326bdc1b5c/issues/ebi-ait/dcp-ingest-central/177 (It needs to be increased further)

@amnonkhen and @ESapenaVentura to discuss solution.

Discussing with @idazucchi about data modelling this evening - May not need this feature

@ESapenaVentura to move this to closed once Updated with the tickets about graph-validation work


Add data collective members to Attio

Might be worth just setting up a Zapier rule to auto-add Tally form entries => Attio.
https://zapier.com/apps/attio/integrations
https://tally.so/help/zapier-integration
We already have a Zapier account you can use (see passwords)

Added via CSV. Merged some duplicates and changed some the tracking categories we have.


x/tools/cmd/godoc: generate docs for test files

Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version)?
go1.7 linux/amd64
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/projects/ntsw-sw19/home/ryanp/ngsdk/INTERNAL/appl/regress/go"
GORACE=""
GOROOT="/projects/ntsw-tools/go"
GOTOOLDIR="/projects/ntsw-tools/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build767044606=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
What did you do?
Trying to run godoc on a directory with test files (_test.go) does not produce documentation.
It would be great if a -test flag could be added to include generating documentation for packages that contain test files.

Godoc is about showing the exported API from a package. Test files are not part of the exported API.
If the tests are so complex that they need documentation to find out how to use them, they're also often worth using from multiple tests, in which case we typically move them into separate standalone packages (not in *_test.go files), like testing/iotest and net/http/httptest. That might be the right solution for your case as well.


DO NOT SUBMIT: testing proxy sha a701bb4a5ad1a12cfc46a35741db39044d3d…

…5a80

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: qiwzhang
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: douglas-reid
Assign the PR to them by writing /assign @douglas-reid in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@qiwzhang: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-bookInfoTests-v1alpha3.sh
de113537cd21a80928fb31d7d995e5b27c3be6ce
link
/test e2e-bookInfo-envoyv2-v1alpha3

prow/istio-pilot-e2e.sh
de113537cd21a80928fb31d7d995e5b27c3be6ce
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Help: I couldn't use it

Please I'm finding it difficult to use. Please can you help me out?
My Activity
    public class PostDetails extends AppCompatActivity {

    private final String TAG = "PostDetails";
    private AlertDialog internetDialog;
    private AlertDialog sthWrongAlert;

    private String postData;

    protected com.nostra13.universalimageloader.core.ImageLoader mImageLoader;

    TextView postTitle, postContent;
    private String post_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post_details);

        showDialog();
        sthWrongDialog();

        postTitle = (TextView) findViewById(R.id.dpost_title);
        postContent = (TextView) findViewById(R.id.dpost_content);
        postContent.setMovementMethod(LinkMovementMethod.getInstance());

        Link link = new Link(Regex.WEB_URL_PATTERN)
                .setTextColor(Color.GREEN)
                .setHighlightAlpha(.4f)
                .setUnderlined(false)
                .setBold(true)
                .setOnClickListener(new Link.OnClickListener() {
                    @Override
                    public void onClick(String clickedText) {
                        Toast.makeText(PostDetails.this, "Link clicked is :: " + clickedText, Toast.LENGTH_SHORT).show();
                        finish();
                    }
                });

        LinkBuilder.on(postContent)
                .addLink(link)
                .build();

        DisplayImageOptions defaultoptions = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
                .defaultDisplayImageOptions(defaultoptions)
                .writeDebugLogs()
                .build();

        mImageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
        mImageLoader.init(config);

        loadPost();
    }

    private void showDialog() {
        internetDialog = new AlertDialog.Builder(PostDetails.this)
               ...
    }

    private void sthWrongDialog() {
        sthWrongAlert = new AlertDialog.Builder(PostDetails.this)
               ...
    }

    private void loadPost() {
        Log.d(TAG, "loadPost called");

        final ProgressBar progressBar;
        progressBar = (ProgressBar) findViewById(R.id.progress_circle);
        progressBar.setVisibility(View.VISIBLE);

        String news_id = getIntent().getStringExtra("PostId");
        Log.d(TAG, "You clicked post id " + news_id);

        StringRequest stringRequest = new StringRequest(news_id,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        //Log.d("Debug", response.toString());
                        if (progressBar != null) {
                            progressBar.setVisibility(View.GONE);
                        }
                        parseHtml(response);
                        postData = response;
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());

                        if (progressBar != null) {
                            progressBar.setVisibility(View.GONE);
                        }
                        sthWrongAlert.show();
                    }
                });

        //Creating requestqueue
        RequestQueue requestQueue = Volley.newRequestQueue(this);

        //Adding request queue
        requestQueue.add(stringRequest);
    }

    private void parseHtml(String response) {
        Log.d(TAG, "parsinghtml");
        Document document = Jsoup.parse(response);
        String post_title = document.select("h1.entry-title").first().text();
        post_content = document.select("div.entry-content").first().html();

        postTitle.setText(post_title);

        Spanned spanned = Html.fromHtml(post_content, new UILImageGetter(postContent, this), null );
        postContent.setText(spanned);

        //Unhiding views
        postTitle.setVisibility(View.VISIBLE);
        postContent.setVisibility(View.VISIBLE);
    }

    ...
}

When I click on a link, it's supposed to close this activity and show a toast but that ain't happening. Rather, clicking a link still fires the chooser to choose web browsers.
Please, what am I getting wrong?

At the bottom, when you set the text on the TextView from the HTML, you are creating a new Span and overwriting the Span that you created with LinkBuiler.
To fix it, after you set the text, just build the link again. Link builder looks at the current text, it doesn't apply to text you place in your text view in the future.

I did this
    public class PostDetails extends AppCompatActivity {

    private final String TAG = "PostDetails";
    private AlertDialog internetDialog;
    private AlertDialog sthWrongAlert;
     private Link mLink;

    private String postData;

    protected com.nostra13.universalimageloader.core.ImageLoader mImageLoader;

    TextView postTitle, postContent;
    private String post_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post_details);

        showDialog();
        sthWrongDialog();

        postTitle = (TextView) findViewById(R.id.dpost_title);
        postContent = (TextView) findViewById(R.id.dpost_content);
        postContent.setMovementMethod(LinkMovementMethod.getInstance());

       mLink = new Link(Regex.WEB_URL_PATTERN)
            .setTextColor(Color.GREEN)
            .setHighlightAlpha(.4f)
            .setUnderlined(false)
            .setBold(true)
            .setOnClickListener(new Link.OnClickListener() {
                @Override
                public void onClick(String clickedText) {
                    Toast.makeText(PostDetails.this, "Link clicked is :: " + clickedText, Toast.LENGTH_SHORT).show();
                    finish();
                }
            });

        DisplayImageOptions defaultoptions = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
                .defaultDisplayImageOptions(defaultoptions)
                .writeDebugLogs()
                .build();

        mImageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
        mImageLoader.init(config);

        loadPost();
    }

    private void showDialog() {
        internetDialog = new AlertDialog.Builder(PostDetails.this)
               ...
    }

    private void sthWrongDialog() {
        sthWrongAlert = new AlertDialog.Builder(PostDetails.this)
               ...
    }

    private void loadPost() {
        Log.d(TAG, "loadPost called");

        final ProgressBar progressBar;
        progressBar = (ProgressBar) findViewById(R.id.progress_circle);
        progressBar.setVisibility(View.VISIBLE);

        String news_id = getIntent().getStringExtra("PostId");
        Log.d(TAG, "You clicked post id " + news_id);

        StringRequest stringRequest = new StringRequest(news_id,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        //Log.d("Debug", response.toString());
                        if (progressBar != null) {
                            progressBar.setVisibility(View.GONE);
                        }
                        parseHtml(response);
                        postData = response;
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());

                        if (progressBar != null) {
                            progressBar.setVisibility(View.GONE);
                        }
                        sthWrongAlert.show();
                    }
                });

        //Creating requestqueue
        RequestQueue requestQueue = Volley.newRequestQueue(this);

        //Adding request queue
        requestQueue.add(stringRequest);
    }

    private void parseHtml(String response) {
        Log.d(TAG, "parsinghtml");
        Document document = Jsoup.parse(response);
        String post_title = document.select("h1.entry-title").first().text();
        post_content = document.select("div.entry-content").first().html();

        postTitle.setText(post_title);

        Spanned spanned = Html.fromHtml(post_content, new UILImageGetter(postContent, this), null );
        postContent.setText(spanned);

        LinkBuilder.on(postContent)
                .addLink(link)
                .build();

        //Unhiding views
        postTitle.setVisibility(View.VISIBLE);
        postContent.setVisibility(View.VISIBLE);
    }

    ...
}

but it still didn't work. Maybe I didn't understand your answer.

Without knowing the content within the HTML, i don't know what to look for.
I would imagine that it isn't finding any web links from your regular expression since the links are actually hidden in an  tag.
fromHTML is also basically doing the same thing as link builder does. It is redundant to do both that, and try to build a web link with my library.

If you are really set on using it with fromHTML, then you should use what was created here: https://github.com/klinker24/Android-TextView-LinkBuilder/issues/30

So what do you advice I do?

Since all you are doing is opening web links, I would suggest creating your own LinkMovementMethod. This would allow you to redirect to a custom intent, rather than the chrome browser:
https://gist.github.com/zackehh/8676560

I still prefer your library since might include hashtags and numbers in the future.
However, I discovered that when I comment out
Spanned spanned = Html.fromHtml(post_content, new UILImageGetter(postContent, this), null );
and set
    postContent.setText(post_content);

It works but the displayed text is not Html formatted. Is there anyway I can do Html.fromHtml () in the library so the displayed text will be properly formatted?

I think you should fork the project, add an example of what you are trying to do, then reopen the issue and tell me where I can find your fork. Then I will see if I can find what is going on.

The project is quite large but I'll lay down what I'm trying to do. I'm fetching blog posts from a blog. The posts contains links and images. I use UILImageGetter to load the images but the problem I'm having is the links. I want my activity to handle links that belongs to the blog while links that doesn't belong to the blog should fire a chooser for web browsers.
Do you get me now?

I really need you to fork my project and add a simple example. You do not have to include your entire project in the example, just make something to do what you have described. I want something to play with, not a description. That will help me solve it.

I have done as you requested Sir, this is the project

I really would have preferred you make a simple example using my project... That way I could have played with the library along with it, that is why I asked to fork my project. All we really needed was some code to download an article, then try to display it from Html.fromHtml().
This is fine though, I will see what I can do in the next few days.

Thanks, bro

This commit (https://github.com/klinker24/Android-TextView-LinkBuilder/commit/1b9ab9e3843f41114570ba2c468a4e6d82c91f9c) demonstrates LinkBuilder working just fine along with  tags within HTML text.
I honestly do not know what isn't working on your implementation, i have not looked deep enough.  I would suggest a thorough check to ensure all of those 4 points are correct.

I really appreciate the length you went you to to help me. I believe I have thoroughly checked your example and I discovered that it works perfectly if you know the link text before hand.
Let's take this scenario:
You have text that you fetch from the internet. The text contain random links in random positions. You don't know what goes between the a tags but the you know that it's have this format Some random text.
Please, how can one apply LinkBuilder in such a scenario?

Oh, you cannot, that is not the way that link builder works at all...
On Mon, May 9, 2016, 7:41 PM ozuf<EMAIL_ADDRESS>wrote:

I really appreciate the length you went you to to help me. I believe I
have thoroughly checked your example and I discovered that it works
perfectly if you know the link text before hand.
Let's take this scenario:
You have text that you fetch from the internet. The text contain random
links in random positions. You don't know what goes between the a tags but
the you know that it's have this format Some
random text.
Please, how can one apply LinkBuilder in such a scenario?
—
You are receiving this because you modified the open/close state.
Reply to this email directly or view it on GitHub
https://github.com/klinker24/Android-TextView-LinkBuilder/issues/34#issuecomment-218030012

Ok. Please, do you know how I can do that or any library that can?

You will have to make a custom LinkMovementMethod like I told you about
before and make that use both the link builder one that I have made and the
custom one like the link had.
On Mon, May 9, 2016, 8:02 PM ozuf<EMAIL_ADDRESS>wrote:

Ok. Please, do you know how I can do that or any library that can?
—
You are receiving this because you modified the open/close state.
Reply to this email directly or view it on GitHub
https://github.com/klinker24/Android-TextView-LinkBuilder/issues/34#issuecomment-218032650

I used the custom LinkMovementMethod like you adviced but clicking the links is still firing up a chooser.

use both the link builder one that I have made and the
custom one like the link had

Please could you expatiate on this?


give the definition of the acronym RPS ?

[Enter feedback here]
" RPS Workloads" refers to what ?
All thinks of non native english learning with thoses docs.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: af931817-c3c8-6376-d2c2-a10795161d04
Version Independent ID: d2b59e0c-0c35-a335-b523-64f4d6f29d09
Content: Introduction - Azure App Service Environment
Content Source: articles/app-service/environment/intro.md
Service: app-service
GitHub Login: @ccompy
Microsoft Alias: ccompy

@ehsf973 Thanks for the feedback! We are currently investigating and will update you shortly.

@ehsf973 Thanks again for the feedback! I have assigned the issue to the content author to update the document as appropriate.

@ehsf973 I believe high RPS refers to 'high requests per second'.
Source: https://docs.microsoft.com/en-us/azure/app-service/environment/app-service-app-service-environment-geo-distributed-scale

#please-close


Update CODEOWNERS to individual owners

Following the guidance from https://github.com/opensearch-project/.github/issues/125

https://github.com/opensearch-project/traffic-replayer/blob/9e952925ee6b3c9d22d30aa84d10c261590addd1/.github/CODEOWNERS#L1-L2
This should be a list of all the maintainers of this project instead of a team.

@wbeckler It looks like you are listed as a maintainer on this project per the Manage access screen and not listed on the maintainers.md file.


add support for custom choice buttons

This PR lets the user use custom choice buttons. The custom scenes can be selected from the theme editor.
The selected scene must implement the pressed signal and have the text property available, like any component extending Button.
No checks are performed, the user is only told in the button/label tooltip in the theme editor. Selecting a scene which does not meet the requirements could crash the game.
Like with native buttons, activating custom buttons in the theme editor disables other controls.

Closes #247

Update
This new option is now hidden by default, user must enable advanced theme options to see it.


Dragon Fantasy I and Neon Struct work

Sorry for the slow feedback, this failed our CI check as it is using spaces rather than tabs, if you would correct that, I can merge it straight away.
Thanks!

I feel bad that I didn’t check these titles before I merged; Neon Struct is a month away from launch, how can it be verified as working?

David Pittman sent me a Steam key which I redeemed.. It installed and runs
fine on Debian 64-bit, with gamepad support too.
On Fri, Apr 17, 2015 at 12:06 PM, John Drinkwater<EMAIL_ADDRESS>wrote:

I feel bad that I didn’t check these titles before I merged; Neon Struct
is a month away from launch, how can it be verified as working?
—
Reply to this email directly or view it on GitHub
https://github.com/SteamDatabase/SteamLinux/pull/375#issuecomment-94017275
.

OK, just verifying as we have to be careful with submissions of the sort - as preview builds via developer subs don’t always match regular Steam sub behaviour.


Restore the correct sorting behavior, add tests to verify it

I accidentally broke the correct sorting behavior in #36 (sort keys in './lib/Keywords.coffee' > 'sort' before the other keys). :worried:

Restore the correct sorting behavior.
Add two new tests to verify the expected behavior.

Coverage remained the same at 100.0% when pulling 092b504166fb5f1375cbb0f5da4e8020d944dd42 on matteocng:fix-sort-order into 44930aa32605d11cf02654c0e2ae41b0bee74243 on Kikobeats:master.

That was fast, thanks. 😃

💪


Wish this is getting an English translation anytime soon ^^

hi, 我不太会英语，不过这两天我打算创建一个站点 #4 ，到时候欢迎一起翻译~

Hey, I don't know English very much, but these two days I plan to create a site #4, and welcome to translate together~

Hey, I'd be really happy to help but unfortunately I don't know Chinese :( If you got any idea on how we could collaborate, I am all ears.


Applied content changes

Context
Ticket: https://dfedigital.atlassian.net/browse/CPDNPQ-1580

@javier-npq
The new content update is :

Before April 2024
If your provider doesn’t confirm you’ve started the course before April 2024, your registration will expire.

Then the 2nd sentence (You can register again later…) remains as is, see screenshots.

Thanks @javier-npq just a typo on the word 'course'

@javier-npq Thanks Javier, this all looks good


Tooltips have bad z-index, when scrolling overlap bottom issues pane instead of being cropped by it

Type in some code with typescript error
Hover so tooltip appears
Mousewheel window up/down
Note that tooltip scrolls over linter error message in footer area instead of being clipped to editor text area.

Mousewheel window up/down

that doesn't make the tooltip or the linter error message change its location in my testing.
Am I missing something:


Revising custom Job Exists method

Ran into two regressions in JobOperationTests.cs

The custom Job Exists method is expecting a non-empty response body to validate non-existence.
After speaking with a team member who implemented the service, I can no longer rely on this.  Thus, I am removing the logic that checks for a non-empty response body.
Commenting out the test case for listing Jobs with a select parameter.  This is currently being fixed.

Description

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

[ ] I have read the contribution guidelines.
[ ] The pull request does not introduce breaking changes.

General Guidelines

[ ] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

SDK Generation Guidelines

[ ] If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
[ ] The generate.cmd file for the SDK has been updated with the version of AutoRest, as well as the commitid of your swagger spec or link to the swagger spec, used to generate the code.
[ ] The *.csproj and AssemblyInfo.cs files have been updated with the new version of the SDK.

@ro-joowan,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Adding querystrings to links fails on regex unless there's a {()} before the question mark

This fails:
`"href": "/wallet/statements?start={(%2Fschemata%2Faccount%23%2Fdefinitions%2Fstart)}&end={(%2Fschemata%2Faccount%23%2Fdefinitions%2Fend)}"``
With this error:
#/definitions/account/links/3/href: failed schema #/definitions/resourceLink/properties/href: /wallet/statements?start={(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fstart)}&end={(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fend)} does not match /^(\/([a-z0-9][a-z0-9_\-]*[a-z0-9]|\{\(.*\)\}))+$/.

If I use this:
"href": "/wallet/{()}/statements?start={(%2Fschemata%2Faccount%23%2Fdefinitions%2Fstart)}&end={(%2Fschemata%2Faccount%23%2Fdefinitions%2Fend)}",
It's fine. Breaks my documentation, but atleast it parses.
I'm using prmd 0.8.0

Sorry to hear that. Are these for GET requests? I suspect that it should just render properties as query in the examples if it is a GET, which might help you? If it is not GET, things are slightly more complicated. I think maybe in that case we might need/want to expand the second [] in the first part of the regex to also include the query reserved characters (ie ?&=). What do you think?

I'm having the same problem I have an URI with a query string and it fails against ^(\/((?!-|_)[a-z0-9_\\-]+(?<!-|_)|\\{\\(.*\\)\\}))+$".
I can understand you don't like query string in REST APIs, yet they are widly used (think ?page=, ?q=, whatever), and I think you should allow them.
To be honest, I don't think we can provide a regex that covers all legitimates URI patterns of REST APIs, why not simply drop it ? I'm sure in a certain specific domain and context we can find a legitimate use of _ after a /, like, /doc/functions/__init__/ which is a bad example because it should probably be a {(...)}.

I guess I would prefer to keep some level of validation, even if it is a looser one, to avoid altogether invalid URIs, that said, it does seem problematic to pin down what exactly that regex should be given the many possible edge cases. My question was around GET because parameters in that context for a link are presumed to actually appear in the query string already (so you can define them that way without actually putting them into the path of the link). I thought perhaps that might be a better way to go through this than putting it all in the path and agree there are legitimate cases for using that, but I think largely or wholly in GET (for POST/etc I would expect body params instead). Does that make sense/help?

I understand and can only agree with the preference of keeping a level of validation.
I, personally, think that REST as we understand it is only a human presentation of the 2616, and my understanding of the 2616 highly diverge with "PHP grown" developpers (no insult here):

For a "PHP grown developper" POST has its parameter in the body and GET has its parameter in the query string.
 That said, having a body in a GET request make probably less sense and is probably less often usefull, than having a query string in a POST request.

I mean, I'm OK to GET information with curl -XGET http://... -d '{"huge": "query DSL like ES describing in a lot of bytes exactly what I want}' and I'm OK to curl -XPOST http://...?some_hints_about_how_to_alter_the_collection without body to "add an empty (default ?) document to a collection".
As REST is more a "nice presentation of the 2616" than a "PHP oriented presentation of doing an API", I can only think that we should NOT correlate GET with query string and POST with request body.
Finally, the query string is a well defined list of key value pairs, but the request body is let to the discretion of the implementor, accepting the Content-Type they want, so I'm not sure it's the role of hyperschema to describe request body (no more than allowed content-types and an example ?).

I agree that 2616 doesn't make a strong stance on this, but the json-schema definition does. It quite explicitly says that GET schema becomes query and POST schema becomes body, see: http://json-schema.org/latest/json-schema-hypermedia.html#anchor38
If that pattern is followed, the nice part is that it provides a more detailed way to specify what the different query params are, what values are allowed, etc. But it certainly doesn't provide this niceness if using POST with query. Adding it to the path directly is certainly one way around this, though as you note it isn't currently supported.
Hope that helps clarify some of the reasoning behind why this tooling is setup this way (more to match json-schema expectations/usage than broader 2616).

need this feature +1

Perhaps we should just loosen the regex so that it can be accommodated in the URL. Anyone up for a PR?