Fix #2187 Crash in the product page in the OBF flavor and new issue with Question

Related issues and discussion

Fix #2187 Crash in the product page in the OBF flavor
Fix issue if not question found (java.lang.NullPointerException: The mapper function returned a null value)

Also @raphael0202 @deniger can we ensure only logged in users can answer / see questions  (perhaps see, and ask for login to answer, but that's a bit shady)

I can add this to this PR... :)

Also @raphael0202 @deniger can we ensure only logged in users can answer / see questions (perhaps see, and ask for login to answer, but that's a bit shady)

Done in last commit.
Something to review: it seems that the method SummaryProductFragment#showProductQuestion  is called twice

Small conflict to merge.
Is import org.apache.commons.lang3.StringUtils; still imported/needed ?

otherwise, good to merge

@teolemon everything should be ok now
StringUtils is used in a new method

Merging @deniger


Enable the reverse in the CurrentLabel

Should we just replace this false  by reverse to enable the reverse in the CurrentLabel

Should be fixed in 9e85a82359abdb7f825668f087f7fb8a6c0a642b.

Thanks for the update. It works perfect in the current unreleased 0.19a0 version.


Fix drag & drop

[Issue] https://github.com/Samsung/TAU-Design-Editor/issues/347
[Problem] unable to place dimmer widget properly on wearable sample app
[Solution] Fix drag&drop algorithm
Signed-off-by: Hubert Siwkin<EMAIL_ADDRESS>

#347 is fixed by https://github.com/Samsung/TAU-Design-Editor/pull/403


Scoring Points via questions

Currently answering questions incorrectly just returns you to question and answering questions correctly just returns you to game. This story as two parts:

if answer correctly, increase score by R points and then continue.
if answer incorrectly, decrease score by W points and then go back to question.
For this story R (ie for Right answer) can be configured to 25 and W (for Wrong answer) configured to 5 points.

In a future story make R & W set per question on the QNA markdown page. This will allow us to make harder questions worth more points and give incentive to get thru the easy ones to get to the ones worth alot more
Note score is equal to counter, so just increment counter to increase score

done

Done


How to enable Russian Cyrillic letters in MathML?

I want to use Russian Cyrillic letters in [asciimath] blocks. How can I enable rendering it asciidoctor-fopub? All I found was this: http://jats.nlm.nih.gov/archiving/tag-library/1.1d1/n-ive2.html

Could you provide an example of the formula you are trying to use?
What I recommend is just entering the Unicode glyph directly.
:stem: asciimath

[stem]
++++
text(Память: )M_(доп)(n) = Theta(N)
++++

Then run:
asciidoctor -b docbook document.adoc

I have noticed, however, that this causes asciimath to choke. You should raise that issue in https://github.com/pepijnve/asciimath.

This issue resolved in asciimath
https://github.com/pepijnve/asciimath/issues/2

:+1:


.env cannot be parsed with some auto-generated database names

Laravel Version: 9.51.0
PHP Version: 8.1.2
Database Driver & Version: MySQL 8.0.31

Description:
After creating a new project via laravel new "Sakurator (New)" --jet, I got an error after trying to launch my application with php artisan serve:
The environment file is invalid!
Failed to parse dotenv file. Encountered unexpected whitespace at [sakurator (new)].

It seems like Laravel doesn't wrap the auto-generated database name with quotation marks or doesn't do something to get rid of the whitespaces, e.g. replacing them with dashes "-":
# Inside the .env
DB_DATABASE=sakurator (new)

Steps To Reproduce:

Create a new project via laravel new "Project name" --jet. Make sure to leave a space inside the project name.
Try to run the server via php artisan serve

Probably Laravel should do some more manipulations with project name, probably wrapping the name with "" or replacing spaces with dashes.
Probably the database name should be sakurator-new or "sakurator (new)" in the .env

"sakurator (new)" indeed isn't a valid database name. I'd argue that "Sakurator (New)" isn't really a common name people choose for their project name. Usually that's a hyphened name like sakurator-new. I don't think we're going to take any action here right now sorry.


Common pattern for reusable snippet of workflow template

This is a enhancement request to probably the documentation.
Sorry if the doc already covers this kind of use-case with enough details!
Context
This is a successor of #795, especially based on my thought on how we should address the use-case.
As an Argo user wanting to write a concise, declarative, secure workflow definition, and also a potential Argo developer who wants to contribute the project, I'd like to define so-called macros in workflow spec. So that Argo can focus on high-level things like steps, template, dag, suspend and container, while an Argo user can write a concise workflow spec without repeating instances of these high-level concepts.
What won't work
Again, a macro runner must be as scalable and secure as Argo's other runners exist today. It should:

not consume too much resources in Argo controller/worker and
not require a direct access to "secrets" from Argo controller

So for example, a "http template type processed directly in Argo controller"(#795) for prupose of maximizing conciseness of your workflow declaration wouldn't be a solution.
How I would achieve it today
For example, if I as an Argo user wanted to integrate Brigade with Argo, I would write something like the below for maximum reusability of my snippet(invoking a single brigade workflow) based on the arguments-parameters example and global-parameters example:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: brigade-ci-cd-pipeline
spec:
  entrypoint: my-brigade-ci-cd-pipeline
  # Usage
  # $ argo submit my-brigade-ci-cd-pipeline.yaml -p project=$BRIGADE_PROJECT_PER_GIT_REPO -p commit=$GIT_COMMIT_SHA1
  arguments:
    parameters:
    - name: commit
    - name: project
  templates:
  - name: ci-pipeline
    dag:
      tasks:
      # Parallelly run 4 tasks
      - name: unit-test
        template: brig-run
        arguments:
          parameters: [{event: "unit-test"}]
      - name: integration-test
        template: brig-run
        arguments:
          parameters: [{event: "integration-test"}]
      - name: docker-build
        template: brig-run
        arguments:
          parameters: [{event: "docker-build"}]
      - name: lint-chart
        template: brig-run
        arguments:
          parameters: [{event: "lint-chart"}]
      # And finally deploy the helm chart along with the latest docker image
      - name: deploy
        template: brig-run
        arguments:
          parameters: [{event: "deploy"}]
        dependencies: [unit-test, integration-test, docker-build, lint-chart]
  # Macro: brig-run
  # synchronously run a brigade event handler for the event specified via the "event" arg
  - name: brig-run
    inputs:
      # `commit` and `project` comes from global parameters
      parameters:
      - name: event
    container:
      image: mumoshu/brig:latest
      command: ["brig"]
      args: ["run", "{{workflow.parameters.project}}", "-e", "{{inputs.parameters.event}}", "-c", "{{workflow.parameters.commit}}"]

For use-cases other than mine, not involving Brigade at all, you can rewrite brig-run macro in the above example freely to choose any "backend" to offload your actual task to anything other than a raw command in a docker image.
Issue
So, what's the issue actually?
I guess this is a documentation issue at this point, because "I" couldn't figure out how I would write a "macro" in this way.
WDYT? Any input is welcomed! Thanks.
Extra, potential question
What is the performance(latency/throughput) implication by implementing "macros" this way?
Back to #795, one of my expectations was that executing http templates directly within Argo controller would have a potential for achieving:

higher throughput
lower latency
lower cpu/memory consumption

than running it this way(=nested workflow processing and at least one k8s pod creation per macro call).
Would this question makes sense? Can we just forget about these performance/resource consumption issue in practice?
Thanks!

Sorry for the long delay in responding.
Would jsonnet be appropriate for this type of use case?
@jessesuen

Would the use of jsonnet for templating address this use case?
@jessesuen

We will have a workflow template CRD for storing reusable templates:
https://github.com/argoproj/argo/issues/927

Yeah I saw that awesome PR, which does resolve this issue. Thanks for your efforts!


20MTD, GHVR, and VTOL VR support

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 3 committers have signed the CLA.:white_check_mark: MythicManiac:x: ebkr:x: ZeprusYou have signed the CLA already but the status is still pending? Let us recheck it.


Lock/Unlock on demand

There is a need for long standing sessions to lock the config DB only when needed. For example if one starts the script as a daemon, while the process will run in background no other user would be allowed to make changes to the config of the device.
This is why we propose to lock the config only when needed.

Solution proposed does not change at all the current behavior. But in case one would like to not have the session locked by default, would simply instantiate the object argument lock = False and call the lock() & unlock() methods when needed.

+1 on this.

@fooelisa comments ? thoughts ?

yep! sorry for the delay, just got back from a long trip yesterday. I'll need to re-do some napalm functionality to go along with this, give me a day or two

Oh now I see that you are not actually changing the current behavior :) I'll propagate this into napalm (along the lines of the junos PR you sent). Thanks!


Squashed commit of the following:

commit f7176d147be1d7a6dc682783546e146eb522a94e
Author: brightchen<EMAIL_ADDRESS>Date:   Tue Jun 9 15:20:54 2015 -0700
MLHR-1728: Create concrete POJO-based output operator for HBase; MLHR-1730: HBase Operator should support batch

implemented HBase Pojo put operator and it's test case.

modified code according to the comments


Multiple Line Chart - Cannot read property 'onAddFilter' of undefined

Multiple Line Chart fails due to a js error in the browser.
This happens both for a custom configuration and for the "out of the box" configuration of superset, with the demo data in the Misc Charts dashboard.
--> Cannot read property 'onAddFilter' of undefined
Seems to be related to missing "hooks" in the object received by the function below.
explore.9143456362a2ecd682d2.entry.js:formatted:141465 TypeError: Cannot read property 'onAddFilter' of undefined
at t.default (explore.9143456362a2ecd682d2.entry.js:formatted:28990)
at t.n.render (explore.9143456362a2ecd682d2.entry.js:formatted:135774)
at ba (vendors-major.1ca42289e8c2b845f403.chunk.js:formatted:11830)
at ga (vendors-major.1ca42289e8c2b845f403.chunk.js:formatted:11820)
at Ks (vendors-major.1ca42289e8c2b845f403.chunk.js:formatted:13954)
at zs (vendors-major.1ca42289e8c2b845f403.chunk.js:formatted:12981)
at js (vendors-major.1ca42289e8c2b845f403.chunk.js:formatted:12841)
at Ds (vendors-major.1ca42289e8c2b845f403.chunk.js:formatted:12714)
at vendors-major.1ca42289e8c2b845f403.chunk.js:formatted:10563
at t.unstable_runWithPriority (vendors-major.1ca42289e8c2b845f403.chunk.js:formatted:14990)

Hello, I'm having this issue as well. I'm trying to plot average, minimum and maximum temperature values in a line chart (all grouped by day), and it seems that the only option is through Multiple Line Chart.
This issue is appearing with one or more charts added (all to the left side).

/move to apache-superset/superset-ui


Add atom_manager2

This allows the name of the struct field to be different from the atom name.
This is useful because some atoms contain whitespaces (e.g. most atoms from
xinput)

Hm. The 2 in the name is "obviously bad". Is it possible to do both atom managers with a single macro?
Something like (no idea about the specific syntax, I just want to make it clear that some "part" should be optional):
atom_manager!(AtomCollection, AtomCollectionCookie,
  WM_NAME,
  ATOM_WITH_SPACE => "ATOM WITH SPACE",
);

Something like stringify!(argument).as_bytes() could work. Perhaps...?

It is possible to do the two in the same macro, but I don't think it is possible to mix the two syntaxes in a single invocation without using proc macros.

I have created https://github.com/psychon/x11rb/pull/243, where it allows to optionally specify an atom value different to the field name on a per-atom basis:
x11rb::atom_manager! {
    pub AtomCollection: AtomCollectionCookie {
        _NET_WM_NAME,
        _NET_WM_ICON,
        ATOM_WITH_SPACES: b"ATOM WITH SPACES",
        WHATEVER,
    }
}

This looks amazing
On 1 March 2020 16:44:04 GMT-05:00, "Eduardo Sánchez Muñoz"<EMAIL_ADDRESS>wrote:

I have created https://github.com/psychon/x11rb/pull/243, where it
allows to optionally specify an atom value different to the field name
on a per-atom basis:
x11rb::atom_manager! {
   pub AtomCollection: AtomCollectionCookie {
       _NET_WM_NAME,
       _NET_WM_ICON,
       ATOM_WITH_SPACES: b"ATOM WITH SPACES",
       WHATEVER,
   }
}

--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/psychon/x11rb/pull/239#issuecomment-593149563

e.g. most atoms from xinput

Sounds like you are using xinput. Does it work? Are you using any of the <switch>-based API that caused so much problems while writing the code generator? I only ever read the code, but never actually used it for anything.

I'm just using it to enable/disable devices, so no.


A radio group inside a table cell switches value on blur

Provide a general summary of the issue here
When a radio group is inside a table cell, focusing that table cell, then focusing a different table cell, can result in the radio group's value changing, even though otherwise, the radio group value only changes when pressing Space.
🤔 Expected Behavior?
The radio group value should only change if I press Space with a different radio option focused.
😯 Current Behavior
Focus a cell with a radio group, then press Left to focus the previous cell. The radio group changes value.
In the following video, I clicked the left-most column in the table, then on my keyboard, I pressed

Right Right Right Right Right (the focus is on the first radio option, "Standard", now)
Right (focus is now on the second radio option, "Express"), then
Left (focus back on "Standard"), then again
Left (focus is back on the previous column, "n/a", but also the second radio option "Express" is now selected.

Screencast from 2023-11-29 12-42-11.webm
🖥 Steps to Reproduce
Unfortunately I couldn't fork the CodeSandbox, but I forked the docs example to reproduce: https://github.com/adobe/react-spectrum/commit/c36e4e06fd6607f1923155bc61ee6dd728209c54
You can try it out by cloning that repo, then running the docs and visiting http://localhost:1234/react-aria/examples/stock-table.html.
git clone --branch repro-radio-table git@github.com:Vinnl/react-spectrum.git
yarn
yarn start:docs
# Then visit http://localhost:1234/react-aria/examples/stock-table.html

Version
3.30.0
What browsers are you seeing the problem on?
Firefox, Chrome, Other
If other, please specify.
GNOME Web (WebKit)
What operating system are you using?
Fedora Silverblue Linux 39
🧢 Your Company/Team
Mozilla/Monitor
🕷 Tracking Issue
No response

Because a RadioGroup uses keyboard navigation (even the native one) it's going to conflict with table's Grid navigation. I am a bit surprised that it only seems to interfere when leaving the cell. I would need to look into it more. However, I think this is not a supported use case at the moment. I think it falls under our edit mode https://github.com/adobe/react-spectrum/issues/2328 because if the Table navigation wins, then there is no way to change the value in the radio group. And if the radio group navigation wins, then focus will get stuck in the cell.
Edit mode would have the table win by default, except when in actual edit mode is entered, then the radio group wins until edit mode is exited. I'm going to close the Issue in favor of our umbrella edit mode. Let us know if you have further questions.
Here's a codesandbox reproduction https://codesandbox.io/p/sandbox/eloquent-ganguly-5597lv?file=%2Fsrc%2FApp.js%3A12%2C9


added new favicons

Hiya,
Just added some new favicons.
Will be doing some more design changes if thats okay. but this was a quick easy start.
let us know what you think :)

gonna close this and work on it a bit more, since this is terrible in dark mode


Remove Browserify-Shim transform from package.json in all Chiasm subprojects

There is a problem now with bundling Chiasm applications using Browserify. When a project requires Chiasm as a dependency, and uses Browserify to bundle the application, the fact that browserify-shim is listed in the transforms in the package.json of Chiasm and each component causes Browserify to try running those transforms in the outer project that requires Chiasm as a dependency. I didn't realize this would happen, I added the browserify-shim transform with the idea that it would only apply locally, and not when the package is a dependency. For example, model.js should not be shimmed in the parent project (which may want model.js included in the bundle), but should be shimmed in the Browser build of Chiasm (which is for use in bl.ocks.org examples and should not have model.js in the bundle).
To remedy this situation, the package.json of all Chiasm subprojects needs to be changed such that there are no browserify transforms listed. For example, consider the following package.json:
{
  "name": "chiasm",
...
  "scripts": {
    "pretest": "browserify -o chiasm.js -s Chiasm src/index.js",
    "test": "mocha"
  },
...
  "browserify": {
    "transform": [
      "browserify-shim"
    ]
  },
  "browserify-shim": {
    "lodash": "global:_",
    "model-js": "global:Model"
  }
}

This needs to be changed around such that the transforms are specified in the Browserify command rather than the "browserify" field in package.json. After the change, it looks like this:
{
  "name": "chiasm",
...
  "scripts": {
    "pretest": "browserify -t browserify-shim -o chiasm.js -s Chiasm src/index.js",
    "test": "mocha"
  },
 ...
  "browserify-shim": {
    "lodash": "global:_",
    "model-js": "global:Model"
  }
}

After this change is made, new NPM releases must be made so the changes come through when adding Chiasm as a dependency.

Done for Chiasm itself in 154c1305323a19f5d99d2e6dec54bb51b1898eb6

Done for chiasm-component in https://github.com/chiasm-project/chiasm-component/commit/775401f336d193d3dd50e533e94ecd1bea5ad139
Done for chiasm-layout in https://github.com/chiasm-project/chiasm-layout/commit/75262fc571b9c5a6455947298dc9d95deb34f65c

Done for chiasm-links in https://github.com/chiasm-project/chiasm-links/commit/fc25ae796c2cf874a68c6930f1e139aeb2581a26

Done for chiasm-dsv-dataset in https://github.com/chiasm-project/chiasm-dsv-dataset/commit/7c33b2fb34c26798ff1f5ed0c73c9e269a5674cd

Done for chiasm-data-reduction in https://github.com/chiasm-project/chiasm-data-reduction/commit/639c879b0c5582b09896983c6c0fc0ccaff5a672

chiasm-component is still being shimmed out for some reason. I think this is because the components are depending on an older version and need to be updated. I'm going to make one more pass through all the modules and update their dependencies to the latest using npm-check-updates.

Here's the sequence of commands used to upgrade dependencies for a package and push out a new version.
Step 1. Upgrade dependencies and ensure tests pass:
ncu --upgradeAll
git diff
npm install
npm test

Some tests may fail - watch out for the jsdom package, which needs to be pegged at version 3.1.2 because it is has some funky Node.js version compatibility issues.
Step 2. If everything looks good, publish a new version:
git commit -m "Upgrade dependencies" -a
npm version patch
git push && git push --tags
npm publish

After doing this for all modules, I see the following beautiful upgrade set for the Magic Bar Chart (Browserified) example.
$ ncu --upgradeAll
 chiasm                 ^0.2.2  →  ^0.2.3
 chiasm-component       ^0.2.2  →  ^0.2.3
 chiasm-data-reduction  ^0.2.1  →  ^0.2.2
 chiasm-dsv-dataset     ^0.2.1  →  ^0.2.2
 chiasm-layout          ^0.2.3  →  ^0.2.4
 chiasm-links           ^0.2.2  →  ^0.2.3

The shim situation is horrible using browserify-shim. The top-level package being bundled cannot specify the set of modules to be shimmed. This is because browserify-shim looks in the package.json of all dependency packages to find out which modules to be shimmed.
Example scenario - I want to have a UMD bundle that has a bunch of Chiasm modules AND model.js included, but has D3 and Lodash shimmed out. If the top-level package only specifies D3 and Lodash to be shimmed, model.js is also shimmed, because it is configured to be shimmed out within one of the chiasm modules. This is so frustrating - I want to be able to include model.js in the bundle, but it seems there is no way to get browserify-shim to include it if any dependencies want to shim it out in their own browser builds.
Rollup seems to have a better story in terms of specifying shims. I think all of this will go away after adopting Rollup https://github.com/chiasm-project/chiasm/issues/54

Can you quickly explain the reason the shim transform is needed?  I was going to bump lodash v4 and thought it might be a good idea also replace each require with the specific lodash module.  For example var keys = require('lodash/keys').  But I found that the bundle got bigger... which might be due to browserify-shim always including lodash as a global.
Also, related, what is your target for chiasm.  Object.keys has pretty good browser and node support now.  Can we start using this?  How about string literal templates (to replace _.template)?

Perhaps I have that backwords?  The browserify-shim ensures that lodash is not included in the bundle?

Ahh yes. The reason why these were included in the first place is to exclude D3 and Lodash from the bundles. The target here was a Rails app, which included D3 and Lodash separately through the Rails asset pipeline. We wanted to be able to just include one copy of D3 and Lodash for the entire app, rather than have two copies, one in the Chiasm bundle (not exposed globally) and one via the Rails asset pipeline.
We can definitely make use of Object.keys and string literal templates. I was just not aware of them at the time of writing Chiasm.


ARD mediathek: Unable to download JSON metadata: HTTP Error 404

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2018.09.26. If it's not, read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2018.09.26

Before submitting an issue make sure you have:

[x] At least skimmed through the README, most notably the FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones
[x] Checked that provided video/audio/playlist URLs (if any) are alive and playable in a browser

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

full verbose output:
$ youtube-dl --verbose https://www.ardmediathek.de/tv/Unser-Sandm%C3%A4nnchen/Sendung?documentId=11094342&bcastId=11094342
[1] 2240
christoph@server:~$ [debug] System config: [u'--output', u'/srv/NAS/media/online-videos/%(playlist)s/%(autonumber)s-%(duration)ss-%(title)s.%(ext)s', u'--ignore-errors', u'--netrc', u'--add-metadata', u'--format', u'mp4', u'--write-info-json', u'--write-annotations', u'--all-subs', u'--write-description', u'--write-thumbnail', u'--verbose']
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'--verbose', u'https://www.ardmediathek.de/tv/Unser-Sandm%C3%A4nnchen/Sendung?documentId=11094342']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.09.26
[debug] Python version 2.7.15rc1 (CPython) - Linux-4.15.0-34-generic-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.4-0ubuntu<IP_ADDRESS>, ffprobe 3.4.4-0ubuntu<IP_ADDRESS>
[debug] Proxy map: {}
[ARD:mediathek] 11094342: Downloading webpage
[ARD:mediathek] 11094342: Downloading media JSON
ERROR: Unable to download JSON metadata: HTTP Error 404: Not Found (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be  sure to call youtube-dl with the --verbose flag and include its complete output.
  File "/usr/local/lib/python2.7/dist-packages/youtube_dl/extractor/common.py",                                               line 604, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/local/lib/python2.7/dist-packages/youtube_dl/YoutubeDL.py", line 2211, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python2.7/urllib2.py", line 435, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 548, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 473, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)

$

...
<end of log>

Other commands producing similar errors are:
youtube-dl --verbose https://www.ardmediathek.de/tv/Tagesschau-in-100-Sekunden/Sendung?documentId=52149182&bcastId=52149182
and
youtube-dl --verbose https://www.ardmediathek.de/tv/Tagesschau-in-100-Sekunden/Tagesschau-in-100-Sekunden/Das-Erste/Video?bcastId=52149182&documentId=56407524

https://github.com/rg3/youtube-dl#video-url-contains-an-ampersand-and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command

I'm sorry that I ended up pasting the wrong version of the command (I tried uncountable different versions based on various hints I found), but I did of course see that ampersand FAQ and did put the URL in quotation marks (both single and double) but that did not help either.
In other words:  youtube-dl --verbose "https://www.ardmediathek.de/tv/Unser-Sandm%C3%A4nnchen/Sendung?documentId=11094342&bcastId=11094342" does not work either


[plugins] support plugins from external python packages

Before submitting this pull request I have:

[x] At least skimmed through contributing guidelines including yt-dlp coding conventions
[x] Searched the bugtracker for similar pull requests
[x] Checked the code with flake8

In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under Unlicense. Check one of the following options:

[x] I am the original author of this code and I am willing to release it under Unlicense
[ ] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

[ ] Bug fix
[x] Improvement
[ ] New extractor
[ ] New feature

Description
This PR enhances the capability to find and load plugin modules. (Closes #1389)

uses namespace packages for extractor and postprocessor plugins
zip-safe solution, which works with .whl, .egg and PyInstaller
supports editable packages (pip install -e )
report all plugin directories in verbose mode
update plugin documentation in README

I noticed that only the plugins from one ytdlp_plugins folder will be actually loaded despite plugin_directories listing all directories. You can test it by pip installing a plugin package and running the source code (with the sample plugins present). Only the sample plugins are loaded in this case. Is this intentional? If so, that should be documented. Also, this would mean that if someone creates a package with some plugins included, that package cannot load any more plugins.

The whole idea is to be able to load plugins from multiple directories. Could you be more specific? Which pip package can I use for testing this?

I am thinking of removing the sample plugins from the main repo and hosting it separately like https://github.com/pukkandan/ytdlp-sample-plugins to demonstrate how to make an installable plugin package. Let me know what you think about this. Note that the tests will need to be rewritten if we go ahead with this
Makes sense. Then the whole repository can be used as a template for plugin development...

implemented as separate package

flashdagger commented: "implemented as separate package"
flashdagger deleted the plugins-pr branch

@flashdagger : why ?

@flashdagger : why ?

I had some ideas, I wanted to try out and experiment with so I made a separate project. That way I felt less restricted and could release faster. In the spirit of open source the code is free to be shared and adapted. Myself I'm not able to spend much effort on it atm..

thanks for your reply. sorry to hear that. I thought you and pukkandan were on a good track together.


Support all attribute selector operators

Adds support for all attribute selector operators
Removes nodeHasProperty in favor of nodeHasMatchingProperty
Updates property/attribute tests to use the public API instead of importing the internal nodeHasProperty utility. This decouples the tests from the internal implementation and also makes them more robust. I discovered https://github.com/airbnb/enzyme/issues/1155 while doing this.

@ljharb feedback has been addressed 👌

Hi @aweary - I've been meaning to put in a PR for this, looks like you beat me to it!
Thought it'd be a good opportunity to see how a more experienced dev went about the same task. Hope you don't mind me commenting on a couple of bits 🙂

@aweary If this can be rebased and existing comments addressed, we can probably re-review it and get it in :-)

I'll merge this tomorrow if there's no objections.


Bug: ReferenceError: document is not defined

Check if document is defined as well besides window . Fixes https://github.com/gtm-support/vue-gtm/issues/96

On a first look, looks good to me
Did you tested it in your project? (e.g. modify the node_modules content or use something like yarn link)
If everything is good, I hope I find time today to merge it and draft a release for you

On a first look, looks good to me Did you tested it in your project? (e.g. modify the node_modules content or use something like yarn link) If everything is good, I hope I find time today to merge it and draft a release for you

Haven't test it. Let me find out about yarn link so I can test it properly.

I think the easiest form to test it for you is to change line 23 in<EMAIL_ADDRESS>

'yarn link' works fine. I just didn't know it existed despite searching for that exactly functionality. I've seen that the issue is not in this package. The isInBrowserContext() is never called on the https://github.com/gtm-support/vue-gtm package. I'm digging there right now and trying to test it in local.
I'll be back here and/or there when I have everything solved.

It is called indirect here and here

I think we need something like this in here
But in a way that the plugin still expose everything correctly but just not fire events
So app.config.globalProperties.$gtm = gtmPlugin; and app.provide('gtm', options); should still work 🤔

I think we need something like this in here But in a way that the plugin still expose everything correctly but just not fire events
So app.config.globalProperties.$gtm = gtmPlugin; and app.provide('gtm', options); should still work 🤔

Agreed. That's what I'm currently testing.  I was testing changing this
if (gtmPlugin.isInBrowserContext() && gtmPlugin.options.enabled && gtmPlugin.options.loadScript) {
line https://github.com/gtm-support/vue-gtm/blob/b5075a8598ed5b04b84a2d655fa5a0fab3bbde51/src/index.ts#L46

This could be a bigger change than I thought 😮

Maybe I can look into this this evening or in worst case at weekend, unless nothing different comes into my way

This PR is not needed as window is the root at the browser so checking document is redundant. Issue is fixed in https://github.com/gtm-support/vue-gtm/pull/97


Not running again

Why does it say not running again? How to debug this?
{"line":"63","file":"synced-cron-server.js","message":"SyncedCron: Scheduled \"Sample name\" next run @Sat Sep 10 2016 03:00:00 GMT+0000 (UTC)","time":{"$date":1473476294724},"level":"info"}
{"line":"63","file":"synced-cron-server.js","message":"SyncedCron: Not running \"Sample name\" again.","time":{"$date":1473476400020},"level":"info"}

SyncedCron.config({
    log: true
});

SyncedCron.add({
    name: 'Sample name',
    schedule: function(parser) {
        return parser.recur().on(0).minute(); // 0th minute of every hour
    },
    job: function() {
       // do the job
    }
});

// Start all cron jobs
SyncedCron.start();

I have answer for your question. You have more than one CRON on One db.
Each cron instance writing to same DB. Once of them write NOT RUNNING!

It's okay now! @mfeuermann

Sorry, I don't understand @mfeuermann comment.
Same error for me. How to solve this issue ?

@FlawaCLV you're running SyncedCron on more then one server, but all servers connect to the same database. Every time one SyncedCron instance on one server runs a task, it marks it as ran in the cronHistory db collection, and all the other servers running SyncedCron instances will tell you they're not running the task again, because it's already been run.

@TheGame2500 thanks for your answer. Indeed, I found that yesterday. We're 3 developers running our servers locally but hitting the same MLAB database. We solved it by reconfiguring a little bit are environnement.


Feat: Autoplay next song in search list

Description
When user plays a song from song search results the next song in the list now automatically plays when the current song ends.
Related Issues

"Fixes #499 ".

Video
https://github.com/user-attachments/assets/098ad8c8-2bb6-46e2-b1ef-558e1d880411
Checklist

[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings
[x] I am working on this issue under GSSOC

@The-Phoenics  till your PR doesnot show what u have solved.
it is showing same as the previous state (songs donot autoplayed)
check it

Hey @saurabhsingh720
Did you review it in the deployed version of this PR? Or in the attached video?

@saurabhsingh720
Can you check again I've resolved the merge conflicts and next song autoplay is working for me.


gzip compression_level default

The gzip directivecompression_level by default is 9. I'm fairly certain any value greater than 5 for compression_level rarely results in smaller files. Essentially the majority of the time after level 5 is just wasted cpu cycles for nearly no smaller output. NGINX by default uses a level of 1. I propose changing the default to level 5 which should be nearly fully optimized for size without wasting extra cpu cycles.

The hypothesis seems sound. Anyone want to run a quick experiment or find a reference of already-done experiments about compression level?
I do think you're right, though, the compression factor might flatten out quite a bit after 5 or 6.

@mholt so I found the following via https://catchchallenger.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO. Basically seems about right using a value of 5.

LGTM. Let's make it so.

Happy to make my first PR to Caddy 👍 . Where is this default value located? I searched through https://github.com/mholt/caddy/blob/master/caddyhttp/gzip/gzip.go but did not see the default set here.

@nodsocket https://github.com/mholt/caddy/blob/master/caddyhttp/gzip/setup.go#L149

@mholt I thought this was fixed ages ago in Caddy? I have been defaulting Caddy vhosts I create with gzip level compression = 5 since I found out Caddy was using level 9 though so haven't noticed in my testing.
But you don't want to be using level 9 due to compression times and resource usage. I did some compression algorithm benchmarks a while back and you can see how gzip level 1-9 fair https://community.centminmod.com/threads/compression-comparison-benchmarks-zstd-vs-brotli-vs-pigz-vs-bzip2-vs-xz-etc.12764/

@cez81 where is gzip.DefaultCompression coming from in https://github.com/mholt/caddy/blob/master/caddyhttp/gzip/setup.go#L149? Is this a built in from the gzip lib? Can we just pass 5 here instead?

https://golang.org/pkg/compress/gzip/

@nodesocket I think perhaps if you make a const set to 5 and assign that as the default it should be acceptable.  You could place it in the gzip/setup.go file

The default level is set at
https://github.com/mholt/caddy/blob/c4dfbb9956095c92d0586a52723748c070c7b459/caddyhttp/gzip/setup.go#L163
And the default level is 6, which is set at
https://github.com/golang/go/blob/07c01e396894cc2b6d2528fe6b00e910d24a9384/src/compress/flate/deflate.go#L595
5 and 6 is very close so I don't think changing is necessary.

I would love to implement this one for caddy! My firsts in GO :)

@crvv if the default is really 6, then the documentation is wrong as it states the default settings is 9.
See https://caddyserver.com/docs/gzip

@crvv thanks for your links. As far as i understand GO code, i think Caddy initializes default with level 9 compression:
var i int
[...]
for i = gzip.BestSpeed; i <= gzip.BestCompression; i++ {
		writerPool[i] = newWriterPool(i)
}
// According to golang doc "i" has a value of "9" now
defaultWriterPoolIndex = i
writerPool[defaultWriterPoolIndex] = newWriterPool(gzip.DefaultCompression) <- why add again? it's already done in previous loop

According to golang doc "i" has a value of "9" now

gzip.BestCompression is 9, but here i has a value of 10.(https://play.golang.org/p/zcNbZhqkR5)
The last line is writerPool[10] = newWriterPool(gzip.DefaultCompression)
defaultWriterPoolIndex(10) is a global variable, and it is used at
https://github.com/mholt/caddy/blob/c4dfbb9956095c92d0586a52723748c070c7b459/caddyhttp/gzip/setup.go#L167

Thanks for clarification and example @crvv
We initialize all possible writers from BestSpeed (1) to BestCompression (9). Now we can pick the requested one out of them. For default compression defaultWriterPoolIndex could be set to 5 or 6 (depending on what we want as default). Why add another "default" instance additionally?

In Go standard library, gzip.DefaultCompression is -1. The actual value is implementation dependent.
If Caddy want to use whatever Go defines as default, adding another "default" is necessary.
However, in documentation of GNU Gzip, the default compression level is defined as 6 explicitly.
I think assuming 6 as standard default value is acceptable.

Thanks guys for all your investigations,  I'm a little confused as to what the 'actual' value is being set to?  Can you do a simple
fmt.Println(gzip.DefaultCompression)

to find the actual value if we are not 100% sure?  If it is 5 or 6 we can close this issue.

@tobya
In summary:

fmt.Println(gzip.DefaultCompression) will print -1

In https://github.com/golang/go/blob/07c01e396894cc2b6d2528fe6b00e910d24a9384/src/compress/flate/deflate.go#L595  there is a switch statement that determines the level
	case level == DefaultCompression:
		level = 6
                fallthrough

So the default is 6

@djhworld ok great, so then updating the documentation from saying the default compression level is 9 to 6 should be completed right?

I only get an output value of 10 unless I set the level myself like this
site.com
gzip {
level 1
}
I think the default config.level should be set about here  if someone wants to do that.

As go standard lib already determines the default level which is good enough, and we follow it. Why should we set another default value? Anyway, if you really want, you could set it explicitly with gzip { level x } .

the problem is I dont think it is set to 6 in code I think it is set to 10

Surely there must be a way to debug this and prove the defaut?

@tobya
10 is NOT compression level.
10 is defaultWriterPoolIndex.
writerPool[defaultWriterPoolIndex] = newWriterPool(gzip.DefaultCompression)

And the default compression level of the default writer is gzip.DefaultCompression

I've been having a look at the code, and agree with @crvv
What happens is the caddy gzip module creates a map of writers, indexed with keys 1 - 9
e.g.
map[1: writerWithLevel(1), 2: writerWithLevel(2), 3: writerWithLevel(3)...
Then at the end it creates a new key called 10 with writer configured with the level gzip.DefaultCompression and stores this key (10) in a variable called defaultWriterPoolIndex
https://github.com/mholt/caddy/blob/baf6db5b570e36ea2fee30d50f879255a5895370/caddyhttp/gzip/setup.go#L144
If you don't specify a level for the gzip compression, the variable level will default to 0
When caddy attempts to get a gzip writer, it passes a the configured level to
https://github.com/mholt/caddy/blob/baf6db5b570e36ea2fee30d50f879255a5895370/caddyhttp/gzip/setup.go#L168
Which checks if the level is between 1-9,
If it isn't it  then uses the variable defaultWriterPoolIndex (which is set to 10) which contains a writer that passes the level as -1, which in turn defaults to 6 in the gzip standard library

I guess from a casual observation it could be confusing as the keys in the writerPool map don't necessarily reflect the compression level being set.
1: writerWithLevel(1)
2: writerWithLevel(2)
3: writerWithLevel(3)
4: writerWithLevel(4)
5: writerWithLevel(5)
6: writerWithLevel(6)
7: writerWithLevel(7)
8: writerWithLevel(8)
9: writerWithLevel(9)
10: writerWithLevel(-1)

I think there could be some slight confusion if a user purposefully configures level 0 (for whatever reason), because this would return a writer with the default compression of 6 - which might not be desired behavior?

Ok.  That makes more sense now.  We can get an update pushed to the docs.

So am I right to understand that all we have to do is update the docs to say the default level is 6, which is the Go standard library's default?
I've just done that locally and they will go out with the next site update. If I misunderstand, we can re-open the issue.
Thanks!


[AMI/GCP/Azure] - Align images name - follow up

Following https://github.com/scylladb/scylla-machine-image/pull/383. renaming version parameter to scylla_version parameter

LGTM what about the image-name var?

i commented on the other PR. opened an issue https://github.com/scylladb/scylla-machine-image/issues/385 since it didn't work for me

Verification:
https://jenkins.scylladb.com/job/scylla-master/job/releng-testing/job/azure-image/243/
https://jenkins.scylladb.com/job/scylla-master/job/releng-testing/job/gce-image/631/
https://jenkins.scylladb.com/job/scylla-master/job/releng-testing/job/ami/1492/


cancel method doesn't cancel AsWebAuthenticationSession request

Hi there,
I tested the library and discovered that the cancel method doesn't call the AsWebAuthenticationSession one (doc).
As a result, the opened authentication window is never discarded.
Additionally, calling the cancel method doesn't reject the promise returned by start, causing the promise to never end.
Is there a reason why it isn't doing this? 🤔
If not, I ended up patching my version using the following code, and it seems to work as expected.
If it sounds good to you, it would be great to have it merged into the library.

diff --git a/node_modules/electron-native-auth/src/addon_mac.mm b/node_modules/electron-native-auth/src/addon_mac.mm
index 94b95b7..418d1ae 100644
--- a/node_modules/electron-native-auth/src/addon_mac.mm
+++ b/node_modules/electron-native-auth/src/addon_mac.mm
@@ -312,6 +312,10 @@ Napi::Value AuthRequest::Cancel(const Napi::CallbackInfo& info) {
     THROW_ERR_AND_RETURN_UNDEFINED(
         env, "this auth request has not been started, cannot be canceled");
   }
+  // PATCH - cancel request and reject promise
+  [webAuthSess_.get() cancel];
+  promise_.Reject(Napi::Error::New(env_, "Canceled").Value());
+  // PATCH END

   // Make our reference to this object weak again since we're no longer in a
   // request

Thanks for reporting this oversight! Should be fixed in v0.2.0 😄


Frontend: develop course info bento

https://www.figma.com/file/73ExdLYkvpk86rSrUbuBOO/Prototype?node-id=1445%3A7119&t=BDHVwwNteJ12deku-0

Couse Information Bento
Some cards are clickable, use Button component as base for clickables. Description section should be expandable.

section

Which cards are clickable?

section

Which cards are clickable?

The description card is clickable to expand when the content is over 3 lines.


[1570] Remove hardcoded qualification aim to factor in others

Context

https://trello.com/c/CAtRXyah/1570-l-enable-award-of-eyts

Changes proposed in this pull request
Shaun has confirmed that all trainees eventually get QTS. However, you can have different qualification aims. It's this field which needs to differentiate based on the route you're on and the qualification you're aiming for.
At the moment, our app is not setup to collect all the details of the aiming qualification but this PR sets up the plumbing to be able to pull out the correct id for the qualification aim in DTTP.
The full list of qualification aims contains quite a few entries and currently none of them map 1 to 1 with our training routes. EYTS for example has 4 different types of qualification aims.
The only thing which needs to change for now is the field in the screenshot and the route. A trainee is still awarded a QTS so there's no need to create a separate params class for the PlacementOutcome as it'll be exactly identical for EYTS, only the PlacementAssignment needs to be changed. There are a couple of fields in the exit information which are set by DQT depending on the profile outcome and qualification obtained on exit.

Guidance to review

Create an EYTS trainee locally and submit to DTTP.
Use postman or DTTP dev to assert the correct EYTS values are set on the placement assignment

 [L] Enable award of EYTS


Capacitor 5 Build Error - Invalid Project Type

Just started integrating glassify with an Ionic v7 app and Capacity v5.
As soon as i run: yarn add capacitor-plugin-glassfy
I then run ionic capacitor copy ios or ionic capaciitor run ios -l --external and I get this error:
[ERROR] Invalid project type: react-vite (project config: ./ionic.config.json).

        Project type must be one of: angular, react, vue, ionic-angular, ionic1, custom

Bad project type: undefined

Not really sure what the implication is there. Any help would be appreciated!

Hey we are experiencing the very sam problem. I would also appriociate very much if someone with authority would find a solution to this as soon as possible. Thank you.

I am experiencing the same issue. After installing the plugin, the application gives the error above. Could you please resolve this issue?

Hello,
Could you please the steps required to reproduce the issue starting with an empty project ?

İ've solved the issue. When I changed the minSdkVersion in the android/variables.gradle file from 22 to 24, the problem was resolved.

There is no issue during the installation from scratch. However, when it is added to the project later, it gives this error.

I created a new Ionic project from scratch, and the first thing I did was to install the 'capacitor/glassify' plugin. Unfortunately, I am still encountering the same error...

Can you post all the steps?
The following works as expected:
ionic start myapp blank --type=angular --capacitor
cd myapp
npm install capacitor-plugin-glassfy
ionic build
ionic cap add ios
ionic cap copy
ionic cap sync

Can you post all the steps?
The following works as expected:
ionic start myapp blank --type=angular --capacitor
cd myapp
npm install capacitor-plugin-glassfy
ionic build
ionic cap add ios
ionic cap copy
ionic cap sync

ionic start myApp list --type=vue       ======== ok
cd myApp                                              ====== ok
ionic capacitor add android                 ====== ok
npm install capacitor-plugin-glassfy  ======= ok
ionic capacitor update                         ==== ok
ionic capacitor sync                             ====== ok
ionic cap run android -l --external     ==== failed (Invalid project type: react-vite (project config: ./ionic.config.json).)

I follow your steps: to get it works I just updated minSdkVersion = 24 in android/variables.gradle, by default it's 22.
My env:
# ionic -v
7.1.5
# node -v
v18.17.0
# npm -v
10.2.4

package.json
{
  "name": "myApp",
  "private": true,
  "version": "0.0.1",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vue-tsc && vite build",
    "preview": "vite preview",
    "test:e2e": "cypress run",
    "test:unit": "vitest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@capacitor/android": "5.5.1",
    "@capacitor/app": "5.0.6",
    "@capacitor/core": "5.5.1",
    "@capacitor/haptics": "5.0.6",
    "@capacitor/keyboard": "5.0.6",
    "@capacitor/status-bar": "5.0.6",
    "@ionic/vue": "^7.0.0",
    "@ionic/vue-router": "^7.0.0",
    "capacitor-plugin-glassfy": "^3.3.2",
    "ionicons": "^7.0.0",
    "vue": "^3.3.0",
    "vue-router": "^4.2.0"
  },
  "devDependencies": {
    "@capacitor/cli": "5.5.1",
    "@vitejs/plugin-legacy": "^5.0.0",
    "@vitejs/plugin-vue": "^4.0.0",
    "@vue/eslint-config-typescript": "^12.0.0",
    "@vue/test-utils": "^2.3.0",
    "cypress": "^13.5.0",
    "eslint": "^8.35.0",
    "eslint-plugin-vue": "^9.9.0",
    "jsdom": "^22.1.0",
    "terser": "^5.4.0",
    "typescript": "^5.1.6",
    "vite": "^5.0.0",
    "vitest": "^0.34.6",
    "vue-tsc": "^1.0.24"
  },
  "description": "An Ionic project"
}

The minSdkVersion in our project was already set to version 24. However, I resolved the issue. The problem was not with Glassfy, but with @ionic/cli. When I installed @ionic/cli as a development dependency within the project, the issue was resolved.


second dnscrypt service

Is it possible to install dnscrypt as a second service but with <IP_ADDRESS> local address? will the two conflict each other? if possible, what would be the command to enter?

What's the setup need ?

to have two dnscrypt resolver-one primary and second for reserve in local area connection, because the one I use sometimes not working.

Hi Alex,
Sure. This is what --local-address switch is for:
dnscrypt-proxy --local-address=<IP_ADDRESS> --resolver-name=...

Or use a different port. Also, put both behind unbound so you don't care if one is down.

jedisct1
I installed with the command you you say and everything looks installed correctly but is there a way to check if reserve dns is working? because dnsleak test only shows primary dns and I don't use wireshark.
also, if I want to change now the second resolver, how to do that without uninstalling the service because I'm not sure now if I enter "dnscrypt-proxy --uninstall" command, which service it will remove-only one of them or both?!
licaon-kter
I'm not familiar with cmd scripting so it's hard to me to enter correct command with different port using.

first dnscrypt... --local-address=<IP_ADDRESS>:40
second dnscrypt... --local-address=<IP_ADDRESS>:41
You're on Windows?

yes, on windows.

Ha :(
Unfortunately, on Windows, you are out of luck.
Although this will be improved in future versions, only one service can currently be installed.

See #418 :)

I tried to do with 2 ports with the same service as licaon-kter suggested but got following error because of twice installing

then tried command "dnscrypt-proxy --local-address=<IP_ADDRESS> --resolver-name=dnscrypt.org-fr --local-address=<IP_ADDRESS>:54 --plugin libdcplugin_example_ldns_aaaa_blocking.la"  but this just changed the port from 53 to 54 and after restarting I lost internet.
I see there is no simple way to me to have two resolvers on windows; just one question jedisct1, is this correct command to block ipv6 queries while installing: "dnscrypt-proxy --install -R  --plugin libdcplugin_example_ldns_aaaa_blocking.la" ??

Yes, this is the correct way to enable that plugin.

@alex3026 you can only have one resolver on port 53, but that one can be actually a forwarder to other ports where dnscrypt services listen, eg. unbound on Linux
Not sure how you'll do that on Windows yet as @bitbeans pointed out.

I'll leave one resolver as main and use xiala or something else on a reserve. unbound and such programs seems a bit complicated to me. Anyway, thanks all for helping me.

@alex3026 you use cmd back in 2016? :D
@licaon-kter  You CAN have two resolver running on same port, defaults to port 53. If bound to different localadresses! This Enables primary and secondary os dns server setting.
.\dnscrypt-proxy.exe --resolver-name=dnscrypt.org-fr --local-address=<IP_ADDRESS>
.\dnscrypt-proxy.exe --resolver-name=dnscrypt.org-fr --local-address=<IP_ADDRESS>
But here i have one question. i Use ipv6. And here i only see to have [::1]:53 once. Or someone can lead me to the quivalent of <IP_ADDRESS>==::1 for <IP_ADDRESS> !=::2 (notavailable)
Is there only one loopback ipv6 adress? :( i use [::1]:54 successfully. i also recomment you to use unbound.
@bitbeans works same on windows ;) alex just failed installing second dnscrypt service, because the service name is hardcoded to be the same. --install arg can only be run once. workaround is to rename the already installed service and run command again with second resolver configured.

So if port 53 is down Windows will use port 54? https://technet.microsoft.com/en-us/library/dd197515(v=ws.10).aspx
If you have those and use the Extended test on https://dnsleaktest.com/ you will see both servers, right?


.js extension added, even when exists

I built a new version of the app and it returned several errors like this:
GET<EMAIL_ADDRESS>404 (Not Found)
I believe this may be solved by updating the es6-module-loader / systemjs version. Similar here:
https://github.com/ModuleLoader/es6-module-loader/issues/376
I've tried myself, but I'm unsure how to manually require the newest version of the es6-module-loader (0.17.0)

It sounds like you may be using a not-released beta of system.js. I'm not sure. There are some changes happening there which would cause this, but it shouldn't be released yet.

Thank's for the quick response!
I reinstalled the jspm packages and it worked!!


Update sqlparse>=0.4.4 sqlfluff==2.1.4

https://github.com/reata/sqllineage/blob/master/setup.py#L68
"sqlparse>=0.4.4",
https://github.com/apache/superset/blob/master/setup.py#L129
"sqlparse>=0.4.4, <0.5",
Hello,
Currently openmetadata-sqllineage is using  "sqlparse==0.4.3",
https://github.com/open-metadata/openmetadata-sqllineage/blob/master/setup.py#L67
which is one minor version behind reata/sqllineage and apache-superset.
Upgrading to use the versions supported by apache-superset and sqlparse itself will allow us to use openmetadata-sqllineage in conjunction with them.

Hi @ulixius9 I couldn't create an issue or ask a question on this repo ; but could you review this request and see if this update is feasible. Thank you and Regards.

@rxm7706 this version of sqllineage is not compatible with sqlparse version 0.4.4, in the past we did not restrict the version and faced several issue when the sqlparse released tha 0.4.4 version to hence with this pr we have limited sqlparse to be 0.4.3 version, you can open a separate ticket to make it compatible with 0.4.4.
sqlfluff version update should be fine

@ulixius9 thank you, I have reverted the pin on sqlparse here.
I didnt see the issues enabled on this repo, how would you like me to open a separate ticket to make openmetadata-sqllineage compatible with sqlparse 0.4.4.

@rxm7706 yes you can create a new ticket for sqlparse 0.4.4 🙇

@rxm7706 there were some tests failing I fixed them and tried to push it to your branch but looks like something went wrong doing that raised this pr with the tests fix

@rxm7706 yes you can create a new ticket for sqlparse 0.4.4 🙇

Hi @ulixius9
Thank you ! Great to see the sqlfluff upgrade !
Perhaps you misunderstood me, I don't see the issues tab on this repo to create a ticket - that's why I was asking how would you like me to create an issue for "Upgrade  to "sqlparse==0.4.4""
See image below - the issues tab is not visible / available. I could create another PR, which you could use and link to the ticket, if thats what you want.
Thanks and Regards.

@rxm7706 ahh I see, since this is a forker repo it does not allow to create the ticket on this repo but you can open the same ticket in OpenMetadata main repo here


PR from issue 2

#2

Hello! Is any progress expected on that?

Hi @fractalawareness -- are you encountering the same issue (#2)?  One difficulty on my side is I don't have a good test showing the problem.

I ran into this problem with a race condition.
async function () {
 let ftp = new PromiseFtp()
 await ftp.connect({host, user, password})
 ftp.get('file').then(console.log)
 await ftp.end()
}

If end gets called before get is done I get { FtpConnectionError: can't perform 'get' command when connection status is: disconnecting  with @motiz88 fork while the original fails silently.

If someone would like to create another PR without the merge conflicts, I'd be happy to review and merge it.


Add REST API to manage Pending Approvals of an User

Need a REST-based API to,

List all the available approval tasks for a user
View details of a given task
Change the state of a task  ( claim, release, approve, deny)

Implemented in following PRs

https://github.com/wso2/identity-rest-dispatcher/pull/20
https://github.com/wso2/identity-api-user/pull/22
https://github.com/wso2/identity-api-user/pull/23
https://github.com/wso2/identity-api-user/pull/24


Enable multithreading

Is your feature request related to a problem? Please describe.
I check my task manager. It seems Meilisearch seems to use only 1 CPU out of 16 CPUs I have.
Describe the solution you'd like
I'd like Meilisearch to use most if not all the CPUs.
Describe alternatives you've considered
I am wondering about the slow processing times
Additional context
Maybe this is a rust issue?

Further info.
I tried this on WSL (Windows Linux Subsystem) and on Ubuntu.
After sending 30,000 items to index. it still takes 1 day to index.
All this time, the indexing uses 1 CPU core and single-threaded. Suppose you send 30,000 huge documents (like 2,000 words each) to index, it takes 4 or 5 seconds per document. This is very slow. So 30,000 documents sent to index, according to the developers would take ~ 5 seconds for 30,000 documents.
In my case, sending 30,000 1,000 word documents to index will take ~ 1.33 days.
If I index 200,000 documents, Meilisearch could potentially take 3 weeks with 1 CPU core stupidly doing the indexing while the 63 cores (I am using an AMD 3900) are idle.
There must be some way to alleviate this, like using all 12 cores instead of just one core,

Maybe multi-threaded indexing when there are no incoming search queries.
Ability to off-load indexing and/or backup or restore indexed search state.

Is this being looked at, at all? I find Meilisearch extremely intriguing, but the slow processing time is worrying. If it's being looked at however, they would ease concerns. Any updates?

Hello, sorry for forgetting to keep informed people on this issue: the core-team is currently working hard on a new search engine that will definitely improve the indexation and search performance (using multi-threading).
This new search engine will be available in the v0.21.0. We hope to be able to release this new version by the end of June, or at least provide release-candidate versions of the v0.21.0 by the end of this deadline.

Thanks for the update! That's all I wanted to know. I got a bit worried when the issue hadn't even been responded to :)
Great job, peeps!

Fixed by the integration of the new search engine in https://github.com/meilisearch/MeiliSearch/pull/1421

Fixed by the integration of the new search engine in #1421

Do you mean the newest meilisearch uses multi core to process queue?
Today I tested this with a production grade data and the queue was extremely slow to process.

Hello @entrptaher
Yes, MeiliSearch uses multi cores to index your data.
However it still can take some time, depending on your dataset. I'm writing a guide in our documentation to help users speed up the indexation. It's not merged yet, but here is the PR: https://github.com/meilisearch/documentation/pull/1231/files

@curquiza that's not what I'm seeing with latest release, seems locked to one core

@Kerollmops & @ManyTheFish  i think this need clarifying. Please feel free to add/correct to my answer.
@curquiza answer is a bit misleading: updates are processed sequentially. But each update is processed on multiple core, although not all of it. Instead of processing shards in parallel, MeiliSearch process shards for different parts parallel. Some task outputs are shared by subsequent tasks and are performed on a single thread, and the merging of all the tasks into a single database at the end also is. The number of used cores during the process will change. There are also updates that are more write heavy than other, for which you will see only one core working. Let me explain:

Say you add only one document, the. Then the indexing in itself is very fast, but adding this new document in the database requires a lot of write, so this operation is mostly write heavy and therefore single threaded (I'm simplifying a bit here)

on the other hand, if you add many documents at once, then indexing is what will take  the most time, and multi threading will kick in.

Tldr: add as many documents as you can at once.

Hey @aariacarterweir,
we have an open discussion dedicated to indexing performance.
The goal of this discussion is to centralize issues to help us to target the main bottlenecks.
Don't hesitate to test the potential fixes written in the post, and, if it doesn't work, write a comment explaining your issue.
We will continuously be working on the indexing time while it's not satisfying for our users.
Thanks for your interest in Meilisearch!

Hey that makes a lot of sense - thank you for explaining!!
On Tue, 15 Mar 2022 at 7:01 pm, Many @.***> wrote:

Hey @aariacarterweir https://github.com/aariacarterweir,
we have an open discussion dedicated to indexing performance
https://github.com/meilisearch/meilisearch/discussions/2131.
The goal of this discussion is to centralize issues to help us to target
the main bottlenecks.
Don't hesitate to test the potential fixes written in the post, and, if it
doesn't work, write a comment explaining your issue.
We will continuously be working on the indexing time while it's not
satisfying for our users.
Thanks for your interest in Meilisearch!
—
Reply to this email directly, view it on GitHub
https://github.com/meilisearch/meilisearch/issues/876#issuecomment-1067726167,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHKFEPEMUGB5Y7Q4VKAFO3VABGXTANCNFSM4PEIH2AQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Sent from Gmail Mobile


🐛 [firebase_database] Object? to JSON Model

I'm working on a real-time Firebase listener to display a list of objects that I want to convert to my Model.
I'm getting Unhandled Exceptions when trying to convert the data to a Model.
So the core question is, how do I convert event.snapshot.value which is an Object? into a Map<String, dynamic> or into JSON that I can use my Model?
Example:
_childStreamSub =
          ref.child("ChildABC").child('childKey').onValue.listen(
        (event) {
          setState(() {
                 Map<String, dynamic> data = jsonDecode(jsonEncode(event.snapshot.value));
                 final cleanData = Map<String, dynamic>.from(data);
                 final List<ChildModel> model = cleanData.values
                        .map(
                               (raw) => ChildModel.fromJson(raw),
                        )
                        .toList();
           }
}

My Debug Console:
[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'
#0      _PageState._setListeners.<anonymous closure>.<anonymous closure>.<anonymous closure>
package:../pages/test_page.dart:85
#1      MappedIterator.moveNext (dart:_internal/iterable.dart:391:20)
#2      new _GrowableList._ofOther (dart:core-patch/growable_array.dart:198:26)
#3      new _GrowableList.of (dart:core-patch/growable_array.dart:152:26)
#4      new List.of (dart:core-patch/array_patch.dart:50:28)
#5      Iterable.toList (dart:core/iterable.dart:388:12)
#6      _PageState._setListeners.<anonymous closure>.<anonymous closure>
package:../pages/test_page.dart:87
#7      State.setState
package:flutter/…/widgets/framework.dart:1088
#8      _PageState._setListeners.<anonymous closure>
package:../pages/test_page.dart:65
#9      _rootRunUnary (dart:async/zone.dart:1436:47)
#10     _Custom<…>

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: type 'String' is not a subtype of type 'Map<String, dynamic>'
#0      _PageState._setListeners.<anonymous closure>.<anonymous closure>.<anonymous closure>
package:../pages/test_page.dart:85
#1      MappedIterator.moveNext (dart:_internal/iterable.dart:391:20)
#2      new _GrowableList._ofOther (dart:core-patch/growable_array.dart:198:26)
#3      new _GrowableList.of (dart:core-patch/growable_array.dart:152:26)
#4      new List.of (dart:core-patch/array_patch.dart:50:28)
#5      Iterable.toList (dart:core/iterable.dart:388:12)
#6      _PageState._setListeners.<anonymous closure>.<anonymous closure>
package:../pages/test_page.dart:87
#7      State.setState
package:flutter/…/widgets/framework.dart:1088
#8      _PageState._setListeners.<anonymous closure>
package:../pages/test_page.dart:65
#9      _rootRunUnary (dart:async/zone.dart:1436:47)
#10     _CustomZone.ru<…>

Version:
firebase_database: ^9.0.0

@lukeirvin
Your question is better suited for support channels like StackOverflow, so please ask the same there.
See this SO link for your reference: https://stackoverflow.com/questions/51854891/error-listdynamic-is-not-a-subtype-of-type-mapstring-dynamic
Closing from here.


error in including <glog/logging.h> after installing glog according to the official tutorial

A recent project requires glog. I installed glog according to the official installation manual and then compiled my project, but errors occurred. I just imported logging.h into the project:  #include<glog/logging. h>. Since I don't know if there is something wrong with my project itself, I test glog/logging.h using official example programs. It didn't work and the same error occurred. I test the project in two environment: Ubuntu22.04 with g++11.4.0 and Ubuntu20.04 with g++ 9.4.0. Both of them didn't work. Anybody can help me, thanks.

```
In file included from ast.h:19,
                 from ast.cpp:8:
/usr/local/include/glog/logging.h:100:20: error: variable ‘google::GLOG_EXPORT google::LogMessageTime’ has initializer but incomplete type
  100 | struct GLOG_EXPORT LogMessageTime {
      |                    ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:101:19: error: expected ‘}’ before ‘;’ token
  101 |   LogMessageTime();
      |                   ^
/usr/local/include/glog/logging.h:100:35: note: to match this ‘{’
  100 | struct GLOG_EXPORT LogMessageTime {
      |                                   ^
/usr/local/include/glog/logging.h:102:3: error: ‘explicit’ outside class declaration
  102 |   explicit LogMessageTime(std::chrono::system_clock::time_point now);
      |   ^~~~~~~~
/usr/local/include/glog/logging.h:104:29: error: non-member function ‘const time_t& google::timestamp()’ cannot have cv-qualifier
  104 |   const time_t& timestamp() const { return timestamp_; }
      |                             ^~~~~
/usr/local/include/glog/logging.h: In function ‘const time_t& google::timestamp()’:
/usr/local/include/glog/logging.h:104:44: error: ‘timestamp_’ was not declared in this scope; did you mean ‘timestamp’?
  104 |   const time_t& timestamp() const { return timestamp_; }
      |                                            ^~~~~~~~~~
      |                                            timestamp
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:105:20: error: non-member function ‘const int& google::sec()’ cannot have cv-qualifier
  105 |   const int& sec() const { return time_struct_.tm_sec; }
      |                    ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::sec()’:
/usr/local/include/glog/logging.h:105:35: error: ‘time_struct_’ was not declared in this scope
  105 |   const int& sec() const { return time_struct_.tm_sec; }
      |                                   ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:106:25: error: non-member function ‘const int32_t& google::usec()’ cannot have cv-qualifier
  106 |   const int32_t& usec() const { return usecs_; }
      |                         ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int32_t& google::usec()’:
/usr/local/include/glog/logging.h:106:40: error: ‘usecs_’ was not declared in this scope; did you mean ‘usec’?
  106 |   const int32_t& usec() const { return usecs_; }
      |                                        ^~~~~~
      |                                        usec
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:107:21: error: non-member function ‘const int& google::min()’ cannot have cv-qualifier
  107 |   const int&(min)() const { return time_struct_.tm_min; }
      |                     ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::min()’:
/usr/local/include/glog/logging.h:107:36: error: ‘time_struct_’ was not declared in this scope
  107 |   const int&(min)() const { return time_struct_.tm_min; }
      |                                    ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:108:21: error: non-member function ‘const int& google::hour()’ cannot have cv-qualifier
  108 |   const int& hour() const { return time_struct_.tm_hour; }
      |                     ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::hour()’:
/usr/local/include/glog/logging.h:108:36: error: ‘time_struct_’ was not declared in this scope
  108 |   const int& hour() const { return time_struct_.tm_hour; }
      |                                    ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:109:20: error: non-member function ‘const int& google::day()’ cannot have cv-qualifier
  109 |   const int& day() const { return time_struct_.tm_mday; }
      |                    ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::day()’:
/usr/local/include/glog/logging.h:109:35: error: ‘time_struct_’ was not declared in this scope
  109 |   const int& day() const { return time_struct_.tm_mday; }
      |                                   ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:110:22: error: non-member function ‘const int& google::month()’ cannot have cv-qualifier
  110 |   const int& month() const { return time_struct_.tm_mon; }
      |                      ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::month()’:
/usr/local/include/glog/logging.h:110:37: error: ‘time_struct_’ was not declared in this scope
  110 |   const int& month() const { return time_struct_.tm_mon; }
      |                                     ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:111:21: error: non-member function ‘const int& google::year()’ cannot have cv-qualifier
  111 |   const int& year() const { return time_struct_.tm_year; }
      |                     ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::year()’:
/usr/local/include/glog/logging.h:111:36: error: ‘time_struct_’ was not declared in this scope
  111 |   const int& year() const { return time_struct_.tm_year; }
      |                                    ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:112:26: error: non-member function ‘const int& google::dayOfWeek()’ cannot have cv-qualifier
  112 |   const int& dayOfWeek() const { return time_struct_.tm_wday; }
      |                          ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::dayOfWeek()’:
/usr/local/include/glog/logging.h:112:41: error: ‘time_struct_’ was not declared in this scope
  112 |   const int& dayOfWeek() const { return time_struct_.tm_wday; }
      |                                         ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:113:26: error: non-member function ‘const int& google::dayInYear()’ cannot have cv-qualifier
  113 |   const int& dayInYear() const { return time_struct_.tm_yday; }
      |                          ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::dayInYear()’:
/usr/local/include/glog/logging.h:113:41: error: ‘time_struct_’ was not declared in this scope
  113 |   const int& dayInYear() const { return time_struct_.tm_yday; }
      |                                         ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:114:20: error: non-member function ‘const int& google::dst()’ cannot have cv-qualifier
  114 |   const int& dst() const { return time_struct_.tm_isdst; }
      |                    ^~~~~
/usr/local/include/glog/logging.h: In function ‘const int& google::dst()’:
/usr/local/include/glog/logging.h:114:35: error: ‘time_struct_’ was not declared in this scope
  114 |   const int& dst() const { return time_struct_.tm_isdst; }
      |                                   ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:115:28: error: non-member function ‘const long int& google::gmtoff()’ cannot have cv-qualifier
  115 |   const long int& gmtoff() const { return gmtoffset_; }
      |                            ^~~~~
/usr/local/include/glog/logging.h: In function ‘const long int& google::gmtoff()’:
/usr/local/include/glog/logging.h:115:43: error: ‘gmtoffset_’ was not declared in this scope; did you mean ‘gmtoff’?
  115 |   const long int& gmtoff() const { return gmtoffset_; }
      |                                           ^~~~~~~~~~
      |                                           gmtoff
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:116:23: error: non-member function ‘const tm& google::tm()’ cannot have cv-qualifier
  116 |   const std::tm& tm() const { return time_struct_; }
      |                       ^~~~~
/usr/local/include/glog/logging.h: In function ‘const tm& google::tm()’:
/usr/local/include/glog/logging.h:116:38: error: ‘time_struct_’ was not declared in this scope
  116 |   const std::tm& tm() const { return time_struct_; }
      |                                      ^~~~~~~~~~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:118:2: error: expected unqualified-id before ‘private’
  118 |  private:
      |  ^~~~~~~
/usr/local/include/glog/logging.h:133:33: error: ‘LogMessageTime’ does not name a type; did you mean ‘LogMessageInfo’?
  133 |                           const LogMessageTime& time_)
      |                                 ^~~~~~~~~~~~~~
      |                                 LogMessageInfo
/usr/local/include/glog/logging.h:144:9: error: ‘LogMessageTime’ does not name a type; did you mean ‘LogMessageInfo’?
  144 |   const LogMessageTime& time;
      |         ^~~~~~~~~~~~~~
      |         LogMessageInfo
/usr/local/include/glog/logging.h: In constructor ‘LogMessageInfo::LogMessageInfo(const char*, const char*, const int&, std::thread::id, const int&)’:
/usr/local/include/glog/logging.h:138:9: error: class ‘LogMessageInfo’ does not have any field named ‘time’
  138 |         time(time_) {}
      |         ^~~~
/usr/local/include/glog/logging.h: At global scope:
/usr/local/include/glog/logging.h:150:1: error: expected declaration before ‘}’ token
  150 | }  // namespace google
      | ^
/usr/local/include/glog/logging.h:422:1: error: ‘GLOG_EXPORT’ does not name a type
  422 | DECLARE_bool(timestamp_in_logfile_name);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:422:1: error: ‘fLB::FLAGS_timestamp_in_logfile_name’ has not been declared
  422 | DECLARE_bool(timestamp_in_logfile_name);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:425:1: error: ‘GLOG_EXPORT’ does not name a type
  425 | DECLARE_bool(logtostdout);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:425:1: error: ‘fLB::FLAGS_logtostdout’ has not been declared
  425 | DECLARE_bool(logtostdout);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:428:1: error: ‘GLOG_EXPORT’ does not name a type
  428 | DECLARE_bool(colorlogtostdout);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:428:1: error: ‘fLB::FLAGS_colorlogtostdout’ has not been declared
  428 | DECLARE_bool(colorlogtostdout);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:431:1: error: ‘GLOG_EXPORT’ does not name a type
  431 | DECLARE_bool(logtostderr);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:431:1: error: ‘fLB::FLAGS_logtostderr’ has not been declared
  431 | DECLARE_bool(logtostderr);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:434:1: error: ‘GLOG_EXPORT’ does not name a type
  434 | DECLARE_bool(alsologtostderr);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:434:1: error: ‘fLB::FLAGS_alsologtostderr’ has not been declared
  434 | DECLARE_bool(alsologtostderr);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:437:1: error: ‘GLOG_EXPORT’ does not name a type
  437 | DECLARE_bool(colorlogtostderr);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:437:1: error: ‘fLB::FLAGS_colorlogtostderr’ has not been declared
  437 | DECLARE_bool(colorlogtostderr);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:441:1: error: ‘GLOG_EXPORT’ does not name a type
  441 | DECLARE_int32(stderrthreshold);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:441:1: error: ‘fLI::FLAGS_stderrthreshold’ has not been declared
  441 | DECLARE_int32(stderrthreshold);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:444:1: error: ‘GLOG_EXPORT’ does not name a type
  444 | DECLARE_bool(log_file_header);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:444:1: error: ‘fLB::FLAGS_log_file_header’ has not been declared
  444 | DECLARE_bool(log_file_header);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:447:1: error: ‘GLOG_EXPORT’ does not name a type
  447 | DECLARE_bool(log_prefix);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:447:1: error: ‘fLB::FLAGS_log_prefix’ has not been declared
  447 | DECLARE_bool(log_prefix);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:450:1: error: ‘GLOG_EXPORT’ does not name a type
  450 | DECLARE_bool(log_year_in_prefix);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:450:1: error: ‘fLB::FLAGS_log_year_in_prefix’ has not been declared
  450 | DECLARE_bool(log_year_in_prefix);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:454:1: error: ‘GLOG_EXPORT’ does not name a type
  454 | DECLARE_int32(logbuflevel);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:454:1: error: ‘fLI::FLAGS_logbuflevel’ has not been declared
  454 | DECLARE_int32(logbuflevel);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:457:1: error: ‘GLOG_EXPORT’ does not name a type
  457 | DECLARE_int32(logbufsecs);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:457:1: error: ‘fLI::FLAGS_logbufsecs’ has not been declared
  457 | DECLARE_int32(logbufsecs);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:461:1: error: ‘GLOG_EXPORT’ does not name a type
  461 | DECLARE_int32(minloglevel);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:461:1: error: ‘fLI::FLAGS_minloglevel’ has not been declared
  461 | DECLARE_int32(minloglevel);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:465:1: error: ‘GLOG_EXPORT’ does not name a type
  465 | DECLARE_string(log_dir);
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:465:1: error: ‘fLS::FLAGS_log_dir’ has not been declared
  465 | DECLARE_string(log_dir);
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:468:1: error: ‘GLOG_EXPORT’ does not name a type
  468 | DECLARE_int32(logfile_mode);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:468:1: error: ‘fLI::FLAGS_logfile_mode’ has not been declared
  468 | DECLARE_int32(logfile_mode);
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:472:1: error: ‘GLOG_EXPORT’ does not name a type
  472 | DECLARE_string(log_link);
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:472:1: error: ‘fLS::FLAGS_log_link’ has not been declared
  472 | DECLARE_string(log_link);
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:474:1: error: ‘GLOG_EXPORT’ does not name a type
  474 | DECLARE_int32(v);  // in vlog_is_on.cc
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:474:1: error: ‘fLI::FLAGS_v’ has not been declared
  474 | DECLARE_int32(v);  // in vlog_is_on.cc
      | ^~~~~~~~~~~~~
/usr/local/include/glog/logging.h:476:1: error: ‘GLOG_EXPORT’ does not name a type
  476 | DECLARE_string(vmodule);  // also in vlog_is_on.cc
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:476:1: error: ‘fLS::FLAGS_vmodule’ has not been declared
  476 | DECLARE_string(vmodule);  // also in vlog_is_on.cc
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:479:1: error: ‘GLOG_EXPORT’ does not name a type
  479 | DECLARE_uint32(max_log_size);
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:479:1: error: ‘fLU::FLAGS_max_log_size’ has not been declared
  479 | DECLARE_uint32(max_log_size);
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:482:1: error: ‘GLOG_EXPORT’ does not name a type
  482 | DECLARE_bool(stop_logging_if_full_disk);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:482:1: error: ‘fLB::FLAGS_stop_logging_if_full_disk’ has not been declared
  482 | DECLARE_bool(stop_logging_if_full_disk);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:485:1: error: ‘GLOG_EXPORT’ does not name a type
  485 | DECLARE_bool(log_utc_time);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:485:1: error: ‘fLB::FLAGS_log_utc_time’ has not been declared
  485 | DECLARE_bool(log_utc_time);
      | ^~~~~~~~~~~~
/usr/local/include/glog/logging.h:488:1: error: ‘GLOG_EXPORT’ does not name a type
  488 | DECLARE_string(logmailer);
      | ^~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:488:1: error: ‘fLS::FLAGS_logmailer’ has not been declared
  488 | DECLARE_string(logmailer);
      | ^~~~~~~~~~~~~~
In file included from /usr/local/include/glog/logging.h:619,
                 from ast.h:19,
                 from ast.cpp:8:
/usr/local/include/glog/log_severity.h:84:69: error: two or more data types in declaration of ‘LogSeverityNames’
   84 | extern GLOG_EXPORT const char* const LogSeverityNames[NUM_SEVERITIES];
      |                                                                     ^
In file included from /usr/local/include/glog/logging.h:620,
                 from ast.h:19,
                 from ast.cpp:8:
/usr/local/include/glog/vlog_is_on.h:100:78: error: two or more data types in declaration of ‘SetVLOGLevel’
  100 | RT int SetVLOGLevel(const char* module_pattern, int log_level);
      |                                                              ^
/usr/local/include/glog/vlog_is_on.h:122:64: error: two or more data types in declaration of ‘InitVLOG3__’
122 |                                     google::int32 verbose_level);
|                                                                ^
In file included from ast.h:19,
from ast.cpp:8:
/usr/local/include/glog/logging.h:624:53: error: two or more data types in declaration of ‘InitGoogleLogging’
624 | GLOG_EXPORT void InitGoogleLogging(const char* argv0);
|                                                     ^
/usr/local/include/glog/logging.h:628:72: error: two or more data types in declaration of ‘InitGoogleLogging’
628 |                                    void* prefix_callback_data = nullptr);
|                                                                        ^
/usr/local/include/glog/logging.h:631:45: error: two or more data types in declaration of ‘IsGoogleLoggingInitialized’
631 | GLOG_EXPORT bool IsGoogleLoggingInitialized();
|                                             ^
/usr/local/include/glog/logging.h:634:40: error: two or more data types in declaration of ‘ShutdownGoogleLogging’
634 | GLOG_EXPORT void ShutdownGoogleLogging();
|                                        ^
/usr/local/include/glog/logging.h:643:70: error: two or more data types in declaration of ‘InstallFailureFunction’
643 | GLOG_EXPORT void InstallFailureFunction(logging_fail_func_t fail_func);
|                                                                      ^
/usr/local/include/glog/logging.h:646:60: error: two or more data types in declaration of ‘EnableLogCleaner’
646 | GLOG_EXPORT void EnableLogCleaner(unsigned int overdue_days);
|                                                            ^
/usr/local/include/glog/logging.h:647:36: error: two or more data types in declaration of ‘DisableLogCleaner’
647 | GLOG_EXPORT void DisableLogCleaner();
|                                    ^
/usr/local/include/glog/logging.h:648:74: error: two or more data types in declaration of ‘SetApplicationFingerprint’
648 | GLOG_EXPORT void SetApplicationFingerprint(const std::string& fingerprint);
|                                                                          ^
/usr/local/include/glog/logging.h:771:72: error: two or more data types in declaration of ‘MakeCheckOpValueString’
771 | GLOG_EXPORT void MakeCheckOpValueString(std::ostream* os, const char& v);
|                                                                        ^
/usr/local/include/glog/logging.h:773:79: error: two or more data types in declaration of ‘MakeCheckOpValueString’
773 | MakeCheckOpValueString(std::ostream* os, const signed char& v);
|                                                              ^
/usr/local/include/glog/logging.h:776:63: error: two or more data types in declaration of ‘MakeCheckOpValueString’
776 |                                         const unsigned char& v);
|                                                               ^
/usr/local/include/glog/logging.h:781:64: error: two or more data types in declaration of ‘MakeCheckOpValueString’
781 |                                         const std::nullptr_t& v);
|                                                                ^
......
In file included from ast.h:19,
from ast.cpp:8:
ast.cpp: In function ‘Vlab::SMT::Or* Vlab::SMT::TransformIteToOr(Vlab::SMT::Term_ptr, Vlab::SMT::Term_ptr, Vlab::SMT::Term_ptr)’:
ast.cpp:2723:3: error: ‘InitVLOG3__’ is not a member of ‘google’
2723 |   DVLOG(VLOG_LEVEL) << "Parser converts 'ite' term to 'or' term";
|   ^~~~~
ast.cpp:2723:3: error: ‘FLAGS_v’ was not declared in this scope
2723 |   DVLOG(VLOG_LEVEL) << "Parser converts 'ite' term to 'or' term";
|   ^~~~~
ast.cpp:2723:3: error: could not convert ‘({...})’ from ‘void’ to ‘bool’
2723 |   DVLOG(VLOG_LEVEL) << "Parser converts 'ite' term to 'or' term";
|   ^
|   |
|   void
ast.cpp:2723:3: error: in argument to unary !
2723 |   DVLOG(VLOG_LEVEL) << "Parser converts 'ite' term to 'or' term";
|   ^~~~~
ast.cpp:2723:3: error: ‘LogMessageVoidify’ is not a member of ‘google’; did you mean ‘LogMessageVoidify’?
2723 |   DVLOG(VLOG_LEVEL) << "Parser converts 'ite' term to 'or' term";
|   ^~~~~
/usr/local/include/glog/logging.h:1579:19: note: ‘LogMessageVoidify’ declared here
1579 | class GLOG_EXPORT LogMessageVoidify {
|                   ^~~~~~~~~~~~~~~~~
In file included from ast.h:19,
from ast.cpp:8:
ast.cpp:2723:3: error: ‘LogMessage’ is not a member of ‘google’; did you mean ‘LogMessage’?
2723 |   DVLOG(VLOG_LEVEL) << "Parser converts 'ite' term to 'or' term";
|   ^~~~~
In file included from ast.h:19,
from ast.cpp:8:
/usr/local/include/glog/logging.h:1347:19: note: ‘LogMessage’ declared here
1347 | class GLOG_EXPORT LogMessage {
|                   ^~~~~~~~~~
/usr/local/include/glog/logging.h: In instantiation of ‘std::string* MakeCheckOpString(const T1&, const T2&, const char*) [with T1 = int; T2 = int; std::string = std::__cxx11::basic_string]’:
/usr/local/include/glog/logging.h:858:1:   required from ‘std::string* Check_EQImpl(const T1&, const T2&, const char*) [with T1 = int; T2 = int; std::string = std::__cxx11::basic_string]’
/usr/local/include/glog/logging.h:858:1:   required from here
/usr/local/include/glog/logging.h:832:25: error: ‘MakeCheckOpValueString’ was not declared in this scope; did you mean ‘google::MakeCheckOpValueString’?
832 |   MakeCheckOpValueString(comb.ForVar1(), v1);
|   ^~
|   google::MakeCheckOpValueString
/usr/local/include/glog/logging.h:764:13: note: ‘google::MakeCheckOpValueString’ declared here
764 | inline void MakeCheckOpValueString(std::ostream* os, const T& v) {
|             ^~~~~~~~~~~~~~~~~~
/usr/local/include/glog/logging.h:833:25: error: ‘MakeCheckOpValueString’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
833 |   MakeCheckOpValueString(comb.ForVar2(), v2);
|   ~~~~^~
</details>

I assume you simply included <glog/logging> without integrating glog using CMake or Bazel. However, such bare use of the library is not supported. You need to properly consume the library. Please see the documentation, e.g., for CMake how this is done.

I've updated the docs in 39df0545e7688309f49e17acd48aa64485ab0184 to clarify this.


Need support for Turkmen language in DatePicker

I need to show date picker in several places of my app and it looks nice with supported languages. So, the main language of my app is Turkmen, but flutter doesn't support this language. I've already written my own custom Turkmen custom language and created my own json package with translations, here is my code:
class MaterialLocalizationTkDelegate extends LocalizationsDelegate<MaterialLocalizations> {

  static final MaterialLocalizationTkDelegate _singleton = MaterialLocalizationTkDelegate();

  static MaterialLocalizationTkDelegate get instance => _singleton;

  @override
  bool isSupported(Locale locale) {
    return locale.countryCode == "TM" && locale.languageCode == "tk";
  }

  @override
  Future<MaterialLocalizations> load(Locale locale) async {
    return DefaultMaterialLocalizations();
  }

  @override
  bool shouldReload(LocalizationsDelegate<MaterialLocalizations> old) => false;
  }

As you see, I used DefaultMaterialLocalizations, because I don't want to override all of those weird fields, even if I will override them all I'm not able to find any fields related to dialog picker. Is it possible to add support for Turkmen language in dialog picker?
Thanks for your response! Need more details? Just ask!

Hi @Mickey-A-Mouse
Please check https://github.com/flutter/flutter/issues/46710, Turkmen is not supported yet as you know
If you're trying to override this by yourself and have questions
Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
I see there's an open issue addressing the case you described.
Please follow up on that issue, I'm closing the current one as a duplicate.
If you disagree, please write in the comments and I will reopen it.
Thank you


use new feature state=patched to better handle namespace labeling

fixes: kiali/kiali#3949
This requires PR https://github.com/kiali/kiali-operator/pull/460 to be merged first.

I ran this molecule test that passes - this would fail if the new "state: patched" option to the k8s task was not available. Because this passed, its clear we at least are picking up the latest ansible k8s collection with that new feature we've been waiting for.
make -e CLUSTER_TYPE=minikube -e MOLECULE_USE_DEV_IMAGES="true" -e MOLECULE_SCENARIO="accessible-namespaces-test" molecule-test
I have not tested the actual condition that QE found causes the initial failure. We need to confirm this actually fixes the problem.

after talking to @mattmahoneyrh and @jshaughn it has been decided that we will merge this PR and related PRs into master but will not backport anything. I will remove the DNM label

@jshaughn @FilipB I need this re-approved. I actually added some commits to this PR and then realized those commits are unrelated to this "use new feature" issue. So I backed out those changed reverting this PR back to the way it was. But in doing all of this, I lost the approvals you put on this PR. So I need this re-approved.


Fixes typo in ABOUT.md

There is a small typo the ABOUT file for Racket: "coule" should instead by "couple" I assume.

Sincere apologies!  This has been superseded by the changes in #207 .  I am closing this as no longer relevant, since the paragraph has now been re-worded and amended with additional books and links.


Issue with overloaded function with a generic

TypeScript Version:  3.0.3, I tried typescript@next but it crashed.

Search Terms:
generic overload
Code
function toNum(input: string): number;
function toNum<T>(input: T): T;
function toNum(input: unknown) {
    if (typeof input !== 'string') {
        return input;
    }
    return Number(input);
}

function getValue(): number | string {
    return 'aaa';
}

function test(input: number) {}

test(toNum("str"));
test(toNum(123));
test(toNum(getValue()));

Expected behavior:
If you pass a string to toNum, you'll get a number.
If you pass a number to toNum, you'll get a number.
If you pass a number | string to toNum, you'll get a number.
Actual behavior:
If you pass a number | string to toNum, you'll get a number | string.
This can be fixed by changing function toNum(input: string): number; to function toNum(input: string | number): number; but I don't think it should be necessary.
Playground Link:
https://www.typescriptlang.org/play/#src=function toNum(input%3A string)%3A number%3B
function toNum<T>(input%3A T)%3A T%3B
function toNum(input%3A unknown) {
    if (typeof input !%3D%3D 'string') {
        return input%3B
    }
    return Number(input)%3B
}

function getValue()%3A number | string {
    return 'aaa'%3B
}

function test(input%3A number) {}

test(toNum("str"))%3B%0D%0Atest(toNum(123))%3B%0D%0Atest(toNum(getValue()))%3B
Am I doing something wrong? I'm not sure how to search for that kind of bug.

This is the intended behavior; when you write
function toNum<T>(input: T): T;

This says "If passed e.g. string | number, then return string | number". TypeScript has no way to know that you instead want to just return number here.

@RyanCavanaugh

TypeScript has no way to know that you instead want to just return number here.

But it does with
function toNum(input: string): number;

I think TypeScript should be able to compute all the various possible input-output combinations, so it can understand that, given
input string -> output number

input T(number) -> output T(number)

input T(string | number)
  = (input string -> output number | input T(number) -> output T(number))
  = input T(string | number) -> output number

It doesn't sound impossible to me that TS could figure out what all the possible combinations are, and deduct the most accurate return type.
For example toNum<string | number | null>(value) should return with the type number | null.
Am I missing something?


Add check for using an automation passcode on a solution / amax panel

Not quite sure what error message to use here - and we might even want  to roll this into the idea of using proper exceptions too. This however does work, on my solution panel this catches me trying to use an automation passcode instead of the RSC+ passcode.

Hm, I see.... Weird! What do the subsequent commands return for the error code? Is it something sensible like a NACK with a "No Authority" or "Invalid Remote ID" error?

Hm, I see.... Weird! What do the subsequent commands return for the error code? Is it something sensible like a NACK with a "No Authority" or "Invalid Remote ID" error?

Unfortunately not, it just gives us Exception: ('NACK: ', 'Execution Function Sequence Wrong')

As much as I liked the approach of automatically trying both auth methods, s.t. we don't have to maintain a list of which panels support which auths, at this point, maybe it's time to go back to doing basicinfo before authentication, and choosing the authentication command based on the panel type. Otherwise it's getting weird to the point that the cure is starting to seem worse than the disease.

Seems reasonable, i was hoping by now i would have a amax panel so i could verify what authentication is required for it, but that has not arrived yet unfortunately.