Switch TaskActions from Optionals to nullable.

Deserialization of Optionals does not work quite right- they come back as actual
nulls, rather than absent Optionals. So these probably only ever worked for the local
task action client, which doesn't put results through serde.

@gianm does this actually cause errors, or are the optionals just unnecessary?

@xvrl it causes errors, as the calling code would expect an absent Optional, but it actually gets a null (so it'll get NPE thrown if it tries to do check blah.isPresent()
This hasn't come up before because so far these actions are only called at points where they are either running on the overlord (with the local task action client- no serde) or running remotely but guaranteed to get a present Optional (so no null deserialization issues)

:+1:


Support laravel reverb

Add support for laravel reverb

hey, there
i create this package that works on all platforms
pusher_client_socket
i tried it with Laravel/Reverb its works there is example on README file to how connect it with Laravel/Reverb

hey, there
i create this package that works on all platforms
pusher_client_socket
i tried it with Laravel/Reverb its works there is example on README file to how connect it with Laravel/Reverb


error:'output.filename' is required, either in config file or as --output-filename"

Do you want to request a feature or report a bug?
bug
What is the current behavior?

If the current behavior is a bug, please provide the steps to reproduce.
1.config webpack like this:

2.run webpack
3.it got an error like above
What is the expected behavior?
no error thrown
If this is a feature request, what is motivation or use case for changing the behavior?
no

exports not exxport,that is the reason.

Thanks. yeah, you are right. But I also think that we maybe can give a the config not a object error rather than the 'output.filename' is required, because I always doubt whether my output.filename misspelling. Any thought about it?

@monkindey What about this scenario:
const rootPath = path.join(__dirname, '..');

module.exports = {
  entry: {
    main: `${rootPath}/src/main.js`,
  },

  output: {
    filename: '[name].[hash].js',
    path: `${rootPath}/dist`,
  },

  module: {
    rules: [
      {
        test: /\.js$/,
        use: {
          loader: ['babel-loader']
        }
      }
    ]
  },
};

Getting OP's error using webpack 3.5.4.

hi, @baruchvlz ,what error did you get?

The same one OP got. 'output.filename' is required, either in config file or as --output-filename

oh, I didn't find out something wrong with your config as above, maybe you can provide reproduction repo.

Why the feature is closed if the problem isn't solved? I have just the same problem. And yes I do use  exports with s at the end

I don't know why, but it suddenly just appeared to be working. It's a kind of magic I suppose. Or, maybe the reason is that I forgot to save something and then did it unconsciously. A big loss in solving the problem..

I do this all the time

@akshayjai1 Why does having two module.exports in one config file causes an error?

i got same error 'output.filename' is required, either in config file or as --output-filename. how to resolve this


On touch screen focus is lost after shape double tap

platform: android 10, google chrome browser 96.0.4664.104, draw.io 16.6.6.
Problem: when you double-tap to edit the contents of the text of a node, the input field opens, and the focus is immediately lost (perhaps this is due to the resizing of the visible window area when the keyboard appears), or the input field is immediately closed.
Perhaps a fixed (keyboard independent) window size will solve this problem.

https://user-images.githubusercontent.com/93568283/158006625-ee085446-24b5-4549-a761-9c4a2632a884.mp4


Crash in 1.21.1 with Roughly Enough Items

Describe the bug
Game will be a
To Reproduce
Install REI, Launch game
Expected behavior
Game works
Desktop (please complete the following information):

OS: Windows 11
Minecraft [e.g. 1.14.4] 1.21.1
Fabric [e.g. fabric 0.7.2+build.174] Fabric
Mods [e.g. aurora_keystrokes v1.0.0, modmenu v1.7.15] The crash stopped ones REI was removed.
Version [e.g. 1.0.0]
Branch [e.g. dev]

Additional context
Add any other context about the problem here.

if anyone else is experiencing this and doesnt want to remove REI, I installed Just Enough Items instead.


Enable changing the buffer type

In order to reuse buffers in DDP

I will add this change in another PR


feat(portal): Display user display name in release modal

What's the purpose of this PR
Display user display name in release-modal.html
Which issue(s) this PR fixes:
Fixes #
Brief changelog
feat(portal): Display user display name in release modal
Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Read the Contributing Guide before making this pull request.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Write necessary unit tests to verify the code.
[ ] Run mvn clean test to make sure this pull request doesn't break anything.
[ ] Update the CHANGES log.

I have read the CLA Document and I hereby sign the CLA

Thanks for the contribution. The layout feels a bit tight; could we adjust it slightly? For example, we could utilize the space around the left-side label.


Debezium table schema conflict after table recreation with different data types.

Looks like if we create some table,make some insert in it, after that drop it in MySQL and on ClickHouse side and recreate it (create with the same table name and schema but different column data type) in some cases it leads to table schema conflict in debezium and crash it till manual recovery.
Some logs:
WorkerSourceTask{id=test-connector-0} Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted   [org.apache.kafka.connect.runtime.WorkerTask]
debezium          | org.apache.kafka.connect.errors.ConnectException: Tolerance exceeded in error handler
debezium          |     at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:223)
debezium          |     at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execute(RetryWithToleranceOperator.java:149)
debezium          |     at org.apache.kafka.connect.runtime.WorkerSourceTask.convertTransformedRecord(WorkerSourceTask.java:330)
debezium          |     at org.apache.kafka.connect.runtime.WorkerSourceTask.sendRecords(WorkerSourceTask.java:356)
debezium          |     at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:258)
debezium          |     at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:188)
debezium          |     at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:243)
debezium          |     at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
debezium          |     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
debezium          |     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
debezium          |     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
debezium          |     at java.base/java.lang.Thread.run(Thread.java:829)
debezium          | Caused by: org.apache.kafka.connect.errors.DataException: Failed to serialize Avro data from topic SERVER5432.test.users1 :
debezium          |     at io.confluent.connect.avro.AvroConverter.fromConnectData(AvroConverter.java:93)
debezium          |     at org.apache.kafka.connect.storage.Converter.fromConnectData(Converter.java:64)
debezium          |     at org.apache.kafka.connect.runtime.WorkerSourceTask.lambda$convertTransformedRecord$3(WorkerSourceTask.java:330)
debezium          |     at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndRetry(RetryWithToleranceOperator.java:173)
debezium          |     at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:207)
debezium          |     ... 11 more
debezium          | Caused by: org.apache.kafka.common.errors.SerializationException: Error registering Avro schema{"type":"record","name":"Envelope","namespace":"SERVER5432.test.users1","fields":[{"name":"before","type":["null",{"type":"record","name":"Value","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"int"}],"connect.name":"SERVER5432.test.users1.Value"}],"default":null},{"name":"after","type":["null","Value"],"default":null},{"name":"source","type":{"type":"record","name":"Source","namespace":"io.debezium.connector.mysql","fields":[{"name":"version","type":"string"},{"name":"connector","type":"string"},{"name":"name","type":"string"},{"name":"ts_ms","type":"long"},{"name":"snapshot","type":[{"type":"string","connect.version":1,"connect.parameters":{"allowed":"true,last,false,incremental"},"connect.default":"false","connect.name":"io.debezium.data.Enum"},"null"],"default":"false"},{"name":"db","type":"string"},{"name":"sequence","type":["null","string"],"default":null},{"name":"table","type":["null","string"],"default":null},{"name":"server_id","type":"long"},{"name":"gtid","type":["null","string"],"default":null},{"name":"file","type":"string"},{"name":"pos","type":"long"},{"name":"row","type":"int"},{"name":"thread","type":["null","long"],"default":null},{"name":"query","type":["null","string"],"default":null}],"connect.name":"io.debezium.connector.mysql.Source"}},{"name":"op","type":"string"},{"name":"ts_ms","type":["null","long"],"default":null},{"name":"transaction","type":["null",{"type":"record","name":"ConnectDefault","namespace":"io.confluent.connect.avro","fields":[{"name":"id","type":"string"},{"name":"total_order","type":"long"},{"name":"data_collection_order","type":"long"}]}],"default":null}],"connect.name":"SERVER5432.test.users1.Envelope"}
debezium          |     at io.confluent.kafka.serializers.AbstractKafkaSchemaSerDe.toKafkaException(AbstractKafkaSchemaSerDe.java:259)
debezium          |     at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.serializeImpl(AbstractKafkaAvroSerializer.java:156)
debezium          |     at io.confluent.connect.avro.AvroConverter$Serializer.serialize(AvroConverter.java:153)
debezium          |     at io.confluent.connect.avro.AvroConverter.fromConnectData(AvroConverter.java:86)
debezium          |     ... 15 more
debezium          | Caused by: io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException: Schema being registered is incompatible with an earlier schema for subject "SERVER5432.test.users1-value", details: [Incompatibility{type:MISSING_UNION_BRANCH, location:/fields/0/type/1, message:reader union lacking writer type: RECORD, reader:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"int"}],"connect.name":"SERVER5432.test.users1.Value"}], writer:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"string"}],"connect.name":"SERVER5432.test.users1.Value"}]}, Incompatibility{type:MISSING_UNION_BRANCH, location:/fields/1/type/1, message:reader union lacking writer type: RECORD, reader:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"int"}],"connect.name":"SERVER5432.test.users1.Value"}], writer:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"string"}],"connect.name":"SERVER5432.test.users1.Value"}]}] io.confluent.kafka.schemaregistry.rest.exceptions.RestIncompatibleSchemaException: Schema being registered is incompatible with an earlier schema for subject "SERVER5432.test.users1-value", details: [Incompatibility{type:MISSING_UNION_BRANCH, location:/fields/0/type/1, message:reader union lacking writer type: RECORD, reader:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"int"}],"connect.name":"SERVER5432.test.users1.Value"}], writer:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"string"}],"connect.name":"SERVER5432.test.users1.Value"}]}, Incompatibility{type:MISSING_UNION_BRANCH, location:/fields/1/type/1, message:reader union lacking writer type: RECORD, reader:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"int"}],"connect.name":"SERVER5432.test.users1.Value"}], writer:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"string"}],"connect.name":"SERVER5432.test.users1.Value"}]}]
debezium          | io.confluent.kafka.schemaregistry.rest.exceptions.RestIncompatibleSchemaException: Schema being registered is incompatible with an earlier schema for subject "SERVER5432.test.users1-value", details: [Incompatibility{type:MISSING_UNION_BRANCH, location:/fields/0/type/1, message:reader union lacking writer type: RECORD, reader:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"int"}],"connect.name":"SERVER5432.test.users1.Value"}], writer:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"string"}],"connect.name":"SERVER5432.test.users1.Value"}]}, Incompatibility{type:MISSING_UNION_BRANCH, location:/fields/1/type/1, message:reader union lacking writer type: RECORD, reader:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"int"}],"connect.name":"SERVER5432.test.users1.Value"}], writer:["null",{"type":"record","name":"Value","namespace":"SERVER5432.test.users1","fields":[{"name":"id","type":"int"},{"name":"MyData","type":"string"}],"connect.name":"SERVER5432.test.users1.Value"}]}]
debezium          |     at io.confluent.kafka.schemaregistry.rest.exceptions.Errors.incompatibleSchemaException(Errors.java:133)

@AlmostIvanSidorov can u please close this if its already fixed.

Still need to fix (sink v.2022-10-24)


Hide download progress when verbose is off

Also tidied other output

Signed-off-by: Andrew Meyer<EMAIL_ADDRESS>Resolves #355

@ameyer-pivotal I'm not sure I agree we should hide progress in the default case. When the download is slow it's hard to know whether the command is working. I can imagine users wanting download progress w/o wanting debug level output.

@ameyer-pivotal I'm not sure I agree we should hide progress in the default case. When the download is slow it's hard to know whether the command is working. I can imagine users wanting download progress w/o wanting debug level output.

@ekcasey That makes sense. I had considered that too. Do you vote we always show this output then?


th: command not found on experiments/test.sh

Hello,
I'm trying to run your pre-trained model with anaconda. I'm getting 'th: command not found' error when I try to run experiments/test.sh. I downloaded the prerequisite packages, how should I proceed?
Thank you for your support.

Hey @mertmerci, Did you get the solution? I'm facing the same error.

Hey, this error is just because you have not installed torch lua. "th" is basically used to run torch lua files. You should follow the link provided in the ReadME for lua installations.


Handle comments that are substrings of a later comment

Resolves https://github.com/jonschlinkert/strip-comments/issues/27

thanks!


spee.ch links don't unfurl on twitter

story: as a user, when I share a spee.ch link on twitter I want twitter to load the image from the link so that my followers can see the image without having to click through the link.
issue: At the moment, twitter does not retrieve the asset and display it in your tweet, it just shows the link.
steps to reproduce (from @finer9 ) in twitter

click image icon in new tweet box
in file chooser dialog box paste https://spee.ch/url.jpg here
It fetches the location and uploads it almost like a local image

Potential solutions include adding the file extension to the spee.ch url

I think this might be caused by the time while fetching the request or not sending the correct metadata

I'm issuing a PR to add twitter Summary Card support for 'show' actions for images.
support for 'serve' actions will require a more invasive update in order to send html when twitter is trying to unfurl.
support for unfurling gifs and videos will require applying to be white listed via twitter for Player Cards


Drupal api issues

[x] Limit do not work
http://internal.gbif-dev.org/api/cms/search?limit=100
returns "limit": 50

[ ] offset seems odd:
http://internal.gbif-dev.org/api/cms/search?offset=1392
returns an error

[x] http://internal.gbif-dev.org/api/cms/search?limit=100&offset=100
returns "offset":50

[x] relatedGbifResources has defect urls:
http://demo.gbif.org/data-use/newsroom/uses/2015-galluzzi-et-al.debug
returns

relatedGbifResources": [
{
"url": "http://cms.gbif-uat.orghttp://www.gbif.org/species/2733060",
"title": "Bactris gasipaes",
"attributes": []
}
],

the content in Drupal is correct (http://www.gbif.org/species/2733060)

By default the CMS API pages using "range" and "page". Range equals "limit", and "page" takes "range" to calculate offset, which means the number of offset can only work nicely if it's a multiple of range.
On the Express side I've translated "limit" and "offset" to the correct params to Drupal. Please try the above URL. For a random offset number the portal tries to calculate the closest number(page). See the second call.
This is not perfect, I know. But please close this issue if the API already supports what we need on Express.

Sounds good. Didn't intended to create unnecessary work. I simply noticed the other day, and thought I would mention as I got 500s and odd behaviour. Thought that it might entail unforeseen errors in other scenarios as well - but if it is known behaviour and a part of the contract to only ask for multiples then I'm fine with that. Reading above I see that it sounds a bit abrupt. Didn't mean to.


onKeyDown added to Textlink component

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/11354
PROPOSAL: https://github.com/Expensify/App/issues/11354#issuecomment-1283364164
Tests

Go to staging.new.expensify.com
Login with the account
Send PDF protected file
Click on the PDF file
Use the Tab key to navigate to Enter the Password name
Click Enter
Notice On pressing Enter Password modal should open

[x] Verify that no errors appear in the JS console

QA Steps

Go to staging.new.expensify.com
Login with the account
Send PDF protected file
Click on the PDF file
Use the Tab key to navigate to Enter the Password name
Click Enter
Notice On pressing Enter Password modal should open

[x] Verify that no errors appear in the JS console

PR Review Checklist

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

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

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product was added in all src/languages/* files
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

PR Reviewer Checklist
The reviewer will copy/paste it into a new comment and complete it after the author checklist is completed

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

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

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots

Web

Chrome
https://user-images.githubusercontent.com/47522946/196866996-1498e6fd-e578-48e0-a690-8b283c839d5a.mov
Safari
https://user-images.githubusercontent.com/47522946/196867024-5c4461fb-4eec-4314-a537-588b49ad0ab8.mov
Mobile Web - Chrome

Mobile Web - Safari

Desktop

https://user-images.githubusercontent.com/47522946/196867097-4426594a-bd7a-4bf1-acbb-4f06bdb10564.mov
iOS

Android

I found one issue in this condition for native it's not pressable I'm fixing that

hello, For now, we have 2 options

To create a platform-specific index's

To add conditions into onKeyDown like below

onKeyDown={(e) => {
    if (e.key !== 'Enter') {
        return;
    }
    handlePress(e);
}}

I'm happy to proceed with any options from above just wanted to confirm with you guys @eVoloshchak @tgolen

I'd be fine with using option 2. As long as we don't have anything like Platform.OS === whatever

option 2 added @tgolen @eVoloshchak

Screenshots
Web
https://user-images.githubusercontent.com/9059945/199023733-d07c4e7c-d992-478f-abc5-580d5f0ec275.mov
Mobile Web - Chrome
https://user-images.githubusercontent.com/9059945/199024173-819b1a9d-e951-454f-be80-6f5a5e2f740a.mov
Mobile Web - Safari
https://user-images.githubusercontent.com/9059945/199024639-016150da-a3aa-4f7d-b872-51379d07456a.mov
Desktop
https://user-images.githubusercontent.com/9059945/199024709-f7191e67-e152-4b82-a226-c99f5411c6b2.mov

@dhairyasenjaliya, could you please re-test native platforms? It looks like this for me, which is not how it looks on web/desktop. Make sure to merge the latest changes from main.

@eVoloshchak native platform has an issue in the main branch same as you posted a screenshot, you can check even without this PR I think we can post this issue in slack since this was working fine recently these changes so I do think this might be a regression from other PR

You are right, retested all platforms, updated the screenshots.
It's not possible to select a link using Tab navigation on native platforms, is it the same for you?

Screenshots
Web
https://user-images.githubusercontent.com/9059945/199023733-d07c4e7c-d992-478f-abc5-580d5f0ec275.mov
Mobile Web - Chrome
https://user-images.githubusercontent.com/9059945/199024173-819b1a9d-e951-454f-be80-6f5a5e2f740a.mov
Mobile Web - Safari
https://user-images.githubusercontent.com/9059945/199024639-016150da-a3aa-4f7d-b872-51379d07456a.mov
Desktop
https://user-images.githubusercontent.com/9059945/199024709-f7191e67-e152-4b82-a226-c99f5411c6b2.mov
iOS

It's not possible to select a link with Tab on native platforms
Android

It's not possible to select a link with Tab on native platforms

PR Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

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

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product was added in all src/languages/* files
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

@dhairyasenjaliya, I think this comment is not addressed yet
I agree, we should avoid using anonymous functions inside the JSX

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

I manually verified the reviewer checklist is complete.

🚀 Deployed to staging by @tgolen in version: 1.2.24-0 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by @yuwenmemon in version: 1.2.24-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by @yuwenmemon in version: 1.2.24-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by @yuwenmemon in version: 1.2.24-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


create snippet for task with workspace

Just like <exercise>, a <task> inside a <worksheet> can have the @workspace attribute, so I made a snippet for that.

Nice!


selinux: Fix selinuxd policy for RHEL-8/CentoOS-8/RHCOS

What type of PR is this?
/kind regression

What this PR does / why we need it:
While our update of selinuxd's policy worked fine (see CI), it broke
selinuxd's usage on OCP.
This patch brings back the needed changes for selinuxd to work fine
again on RHEL-8 based systems.
Which issue(s) this PR fixes:
Fixes #699

Does this PR have test?
No, but we should have CentOS-8 based tests in CI I guess.

Special notes for your reviewer:
@JAORMX what do you think about just updating the policy quickly for now and then having a separate Fedora-latest and Centos-8? For OCP4 we could select the Centos-8 based one as well as default to it, whoever is crazy/brave enough to deploy Fedora in their cluster would have to kustomize their deployment themselves.
Does this PR introduce a user-facing change?

NONE

Codecov Report

Merging #707 (ce74ef0) into main (e979472) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #707   +/-   ##
=======================================
  Coverage   39.36%   39.36%
=======================================
  Files          41       41
  Lines        3028     3028
=======================================
  Hits         1192     1192
  Misses       1783     1783
  Partials       53       53

Seems to me like these changes will break our fedora tests

huh, I thought this would have broken on Fedora. I guess the older policy is still applicable?

@jhrozek ah, seems you need to rebase

huh, I thought this would have broken on Fedora. I guess the older policy is still applicable?

This PR only adds to the Fedora policy, so far they are not mutually exclusive.

@jhrozek got it; that makes sense. Still gotta rebase though, your PR is missing the AppArmor bits of the rendered manifests.

On Mon, Nov 29, 2021 at 04:35:32AM -0800, Juan Osorio Robles wrote:

@jhrozek got it; that makes sense. Still gotta rebase though, your PR is missing the AppArmor bits of the rendered manifests.

Oops, done.

/test pull-security-profiles-operator-verify

/retest
/lgtm


get the bytecode based on class_name and method name

Hi @reox
I have read the Parsing Instructions and Bytecode but I found that there is no way to search for a specific class_name and method_name to get a bytecode. Could it possible to use get_name(), get_output() to get output like the .ag file.
Assume I have the example as below:
class_name ="Lcom/google/progress/AndroidClientService;"
method_name = "sendMessage"

m  = dx.get_method(class_name, method_name)

and then just
for idx, ins in m.get_instructions_idx():
    print(idx, ins.get_op_value(), ins.get_name(), ins.get_output())

Sorry, maybe there is already such a function but I don't know, if it does, I would like to contribute to the documentation.
Thank you!

classname and methodname is not enough to uniquely identify a method in java! you need the descriptor as well - hence the reasonget_method has three parameters.
But you can use find_methods:
for m in dx.find_methods(class_name, method_name):
    print(m.full_name)
    for idx, ins in m.get_method().get_instructions_idx():
        print(idx, ins.get_op_value(), ins.get_name(), ins.get_output())

Thanks! this is what I looking for, it is useful !!
I think this is a good example for users who want to read the bytecode of the specific function. Maybe we could add it to the documentation?

If you want to get the bytecode from given specific class_name and method_name, you can follow the example as shown below
for m in dx.find_methods("Ltests/androguard/TestActivity;","foo"):
    print(m.full_name)
    for idx, ins in m.get_method().get_instructions_idx():
        print(idx, ins.get_op_value(), ins.get_name(), ins.get_output())

and the output will look like:
Ltests/androguard/TestActivity; foo (I I)I
0 1 move v0, v4
2 52 if-lt v3, v0, +005h
6 57 if-nez v3, +00eh
10 15 return v0
12 216 add-int/lit8 v4, v0, 1
16 147 div-int v3, v0, v3
20 1 move v0, v4
22 40 goto -ah
24 13 move-exception v1
26 19 const/16 v3, 10

#759


Use a random color for new user/classroom created from dashboard

Closes #166
Test:

Cool. Thanks.


Externalize should use cell attributes

Instead of making fake cells like std_mem_d1_ext, we should define an @external(1) attribute for cell declarations and change the externalize pass to use them:
cells {
  @external(1) A = prim std_mem_d1(...);
}

A benefit of doing this is that any cell can be externalized, not just cells with fake _ext counterparts.
TODO:

[ ] Update the Dahlia frontend to use the attribute
[ ] Change the externalize pass
[ ] Remove _ext primitive cells.

Great! Making this generic, for any old component, seems like a clean win---although I can't at the moment think of what else we would want to externalize? Maybe off-chip memories or host interfaces?

Great! Making this generic, for any old component, seems like a clean win---although I can't at the moment think of what else we would want to externalize? Maybe off-chip memories or host interfaces?

I'm imagining anything that you'd want to debug could also be externalized in some manner: externalize the sqrt module and drive it using Verilator or something.

I'm imagining anything that you'd want to debug could also be externalized in some manner: externalize the sqrt module and drive it using Verilator or something.

Sure, seems interesting!

Sure, seems interesting!


Add a VS Code Walkthrough for the Bicep Extension

When a user installs the Bicep extension, we should get them up-to speed on the latest and greatest features within the Bicep extension. The Walkthrough API creates a game-like environment to educate a user on what they can accomplish with our tool.

[ ] Using the editor features (intellisense, completions, resource snippets etc)
[ ] Configuring your linter (bicepconfig, secure param, min max length, disable next line etc)
[ ] Show visualizer
[ ] Bicep Build
[ ] Creating a working Bicep file that can integrate with an existing architecture (e.g web app + server farm)
[ ] Any other features we add in the future

Documentation:
https://code.visualstudio.com/updates/v1_56#_welcome-page-walkthroughs
https://code.visualstudio.com/updates/v1_57#_new-getting-started-experience
https://code.visualstudio.com/api/references/contribution-points#contributes.walkthroughs
Docker Extension for VS Code implementation:
https://github.com/microsoft/vscode-docker/pull/3171
Additional ideas:

[ ] open/create bicep file
[ ] create resource
[ ] nested resources??
[ ] use symbolic names
[ ] use for loops
[ ] params/vars
[ ] quickstarts
[ ] rename
[ ] insert resource
[ ] parent property
[ ] modules

@StephenWeatherford , I think some of my changes were not registered when you were editing my original issue. It would be easier if you add any modifications in a separate comment

Additional ideas

[ ] open/create bicep file
[ ] create resource
[ ] nested resources??
[ ] use symbolic names
[ ] use for loops
[ ] params/vars
[ ] quickstarts
[ ] rename
[ ] insert resource
[ ] parent property
[ ] modules

Add LOGIN - via CLI, PowerShell, Azure Account extension and how to change the bicepconfig.json file appropriately

Open a Bicep File
To get started with Bicep extension features, open or create a Bicep file (any file with '.bicep' extension). Split the Editor (CTRL/CMD + ) to view the walkthrough and Bicep file side by side. ['Open Bicep file' button if we detect bicep] [Create Bicep file]
[1_BicepLogoImage]
Write your first file
Use Bicep's IntelliSense and snippets to help you create a deployable Bicep file in minutes.
[CONTENT BELOW]
Let's author multiple Azure resources with Bicep.
First, create a parameter named location. Next, create a parameter named appPlanName. These parameters will be used to fill attributes in your resources.
[2_Type_Params]
Type 'appplan' to view the App Service plan resource snippet and press Tab or Enter. Press Tab and jump to the name attribute and replace its value with the parameter appPlanName. Next, type 'storage' to view a Storage Account resource snippet and press Tab or Enter. Replace the name attribute's value with '${appServicePlan.name}storage' and save the file. Feel free to search for other snippets that suit your needs.
[CONTENT BELOW]
[3_Type_Resos]
Visualize your resources
The Visualizer gives you a representation of the resources in your Bicep file. In this example, storageaccount has an arrow towards appServicePlan because it depends on the name you declare for the App Service plan during deployment. [Open Visualizer to the Side]
[CONTENT BELOW]
[4_Show_Visualizer]
Deploy to Azure
It's time to get these resource in Azure. If you don't have theAzure Account Extension installed, you will need it to complete this step. [Deploy]
[CONTENT BELOW]
[5_Deploy]
Learn More
Great Job! You've completed Getting Started with Bicep. But don't stop now!
Check out our Bicep Documentation to learn more about importing Bicep files as modules and other extension features.
Wanna take a deep dive into the Bicep language? Take a look at Microsoft Learn - Bicep.
[CONTENT BELOW]
[1_BicepLogoImage]

I updated the content slightly and have sent you the Gif information. Let me know if you have further questions

https://github.com/microsoft/vscode/issues/144129


Added 3D-2 Button

Fixes Issue🛠

Closes #603
Description👨💻
Added a 3d Button.

Type of change📄

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

How this has been tested✅
Tested on my local machine.

Checklist✅

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have added demonstration in the form of GIF/video file
[x] I am an Open Source Contributor

Screenshots/GIF📷

Rename your folder to 3D-2-Button and make the necessary changes in this same PR, don't close this PR @PranavBarthwal

Rename your folder to 3D-2-Button and make the necessary changes in this same PR, don't close this PR @PranavBarthwal

Done.

Merged, Congrats on getting your PR merged to this repo under JWOC 🎉🎉 @PranavBarthwal


CLOUD-856: AWS ephemeral disk is mounted incorrectly

Before formatting a device:

check if it is mounted
if yes: unmount and remove from fstab

@akanto or @keyki pls review

Jenkins build failed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/1347/

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/1348/

LGTM - tested


chore: bump major version for iOS and Android updates

Major version bump for pulling in iOS 5.10.0 and Android 9.3.0

See the iOS- and Android- Changelog for additional information.


AMQP-738: DMLC: Add messagesPerAck

JIRA: https://jira.spring.io/browse/AMQP-738
Using a DirectMessageListenerContainer, support sending acks in batches to reduce network traffic in high volume environments.

Merged as https://github.com/spring-projects/spring-amqp/commit/4d0291ca67f5fef3e18aeac7ac41811a23a17ed1


Modify WebGLRenderer to include stereo rendering directly

Can get away from using VREffect for stereo rendering which is unoptimized. More directly integrated into renderer can allow optimizations like doing things in a single pass like culling, instancing, etc.

VR support has been added to the renderer by mrddob.


Multi-file method

How should multi-file be handled? Git repositories like Gist? Just stuff data in a database?

Handling this via git repository. Changes will eventually be able to be done via git, but for now REST API allows changes, and each change will be a new commit.

This is "done." Multipart support is slotted for 0.2.0, and actual repo access is undefined as of yet. Multi-file has been supported since creation!


unnanounce strawman, closes #9

if we accept topic instead of key into unnanounce we don't have to keep a map of keys to announced topics (the keys would also have to be converted to hex etc).
so here's a strawman with request for comment

closing, see #9


Nam mô a di đà phật Nguyễn  hồ  hải  đăngUpdate and rename fork-a-repo.md to Nam mô a di đà phật Nguyễn  hồ  h…

…ải  đăng fork-a-repo.md

Why:
Closes [issue link]

What's being changed:

Check off the following:

[ ] I have reviewed my changes in staging (look for "Automatically generated comment" and click Modified to view your latest changes).
[ ] For content changes, I have completed the self-review checklist.

Writer impact (This section is for GitHub staff members only):

[ ] This pull request impacts the contribution experience

[ ] I have added the 'writer impact' label
[ ] I have added a description and/or a video demo of the changes below (e.g. a "before and after video")

I can't understand you, can you please speak in english? 😅

Nguyễn  hồ  hải  đăng Nam mô a di đà phật

Nguyễn  hồ  hải  đăng Nam mô a di đà phật


Crashing tests on MacOS are sometimes reported as timeouts.

See this CL temporarily adding the timeout status to satisfy flaky MacOS bots:
https://dart-review.googlesource.com/c/sdk/+/85414

This is probably the same issue as https://github.com/dart-lang/sdk/issues/35268

I have a hypothesis based on an experiment. I have wrote a binary that does nothing but calls abort(). If I run this binary in a shell with ulimit -c unlimited then it takes around 10s to finish. If I spin 10 of those binaries in parallel then they each take around a minute to finish.
It seems that core writing is super slow on Mac.
So what we think is a hang might actually be just slow core dump production.
I think the right way to fix this is to change out testing scripts to set core ulimit back to 0 when running tests that are expected to crash.
There is another consideration - those bots only have 100gb free space and each core is actually >1gb.


UnitaryGate naming seems redundant, Gate is already unitary per definition

What is the expected enhancement?
Terra provides the Instruction type to maintain quantum instructions. These instructions don't have to be unitary, i.e. measurements can be included. For unitary instructions, the Gate class is derived from Instruction, which doesn't allow non-unitary operations. Since the Gate class is unitary per definition it seems redundant (and confusing) to have a UnitaryGate class.
Objects of the UnitaryGate type are defined by a unitary matrix, thus the UnitaryGate is really a UnitaryMatrixGate or MatrixGate or UnitaryMatrix.

I agree. Can we put an Operator in the circuit directly? It would do the same thing.

Currently the Operator uses UnitaryGate to append itself to a circuit. With the structure we have right now anything inside a circuit is an instruction so we still need to wrap the content of the Operator inside one. We could allow other objects as circuit constituents (e.g. Operators) and then the transpiler must synthesize/decompose them but that might be a larger objective on the road.
For this issue we could remove UnitaryGate and put this functionality into Gate, either as initializiation argument or static:
Gate.from_matrix(my_unitary_matrix)

This option would not cause any conflicts with current structure where Gate is just used as parent class and not really functionally.

related to #4528?

related to #4237

The unitary gate essentially uses the isometry for >2 qubits, maybe we can extend the isometry to completely replace this. Though the isometry does need a makeover.

I'm going to close this as stale now.  The naming is a shade unfortunate, but at this point, it would cause more user pain to change it than not to.  The comments about allowing quantum_info.Operator to be placed directly on a circuit are related to the Operation class that now exists, though I would comment here for posterity that Gate represents slightly more information than the very abstract Operation alone, and may have methods that clash with quantum_info.Operator.  They can represent the same data at different points along the normalisation/compilation of the IR.


[Feature][Flink SQL] Support Connector dynamic loading for Flink SQL job

Search before asking

[X] I had searched in the feature and found no similar feature requirement.

Description
Mainly, two points:

support flink sql connector build and bundle
support dynamically loading connector jars when run flink sql job. The key point is loading all the connectors into classloader might cause Class conflict.

Usage Scenario
No response
Related issues
No response
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Thanks @legendtkl, fixed at https://github.com/apache/incubator-seatunnel/pull/1800

Hi, @leo65535 , this is something different. The issues focus on running flink sql job with connectors, and loading the jars when running job.
I have just sumit a PR #1850 for it.

Got, no problem.


Feature/new v3 api

First version of the extension for the V3 API.

@luckfamousa I get following error.
CoinbaseV3.lua: CoinbaseV3.lua:186: attempt to index a nil value (field 'integer index')

Are you sure that you entered your private key in the correct format?
You might add a print statement that prints the extracted key after gsub to check:
    key = string.match(key, "BEGIN EC PRIVATE KEY%-%-%-%-%-%s*(.*)%-%-%-%-%-END EC PRIVATE KEY")
    key = string.gsub(key, "%s+", "")
    print(key)
    key = MM.base64decode(key)

my bad, i copied the json of the key. that included \n chars. Its working thanks

Sure. Does it work for you this way?
So the old V2 API is no longer available and there will be no use case where someone will want to use both in parallel?

@luckfamousa first of all I forgot to say thank you for this extension update.

Sure. Does it work for you this way?

Yes it works as expected.

So the old V2 API is no longer available and there will be no use case where someone will want to use both in parallel?

No that would not make no sense

works like a charm

One last idea, maybe it make sense to filter currencies with no or zero value.

Awesome. I guess you missed the filter for account["type"] == "ACCOUNT_TYPE_FIAT"

And for some reason for some accounts the currency is % very strange, for most currencies it is my account currency

It appears when I add () to currency for non fiat currencies (currency = account["currency"] .. "()",) it works as expected

just remove currency = account["currency"] works as well

This is my version
-- Inofficial Coinbase Extension (www.coinbase.com) for MoneyMoney
-- Fetches balances from Coinbase API V3 and returns them as securities
--
-- Username: Coinbase Key Name
-- Password: Coinbase Private Key
--
-- Copyright (c) 2024 Felix Nensa
-- Copyright (c) 2020-2022 Martin Wilhelmi
-- Copyright (c) 2017 Nico Lindemann
--
-- Permission is hereby granted, free of charge, to any person obtaining a copy
-- of this software and associated documentation files (the "Software"), to deal
-- in the Software without restriction, including without limitation the rights
-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-- copies of the Software, and to permit persons to whom the Software is
-- furnished to do so, subject to the following conditions:
--
-- The above copyright notice and this permission notice shall be included in all
-- copies or substantial portions of the Software.
 IN NO EVENT SHALL THE
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-- SOFTWARE.

WebBanking {
    version = 3.0,
    url = "https://api.coinbase.com",
    description = "Fetch balances from Coinbase API V3 and list them as securities",
    services = { "Coinbase Account" }
}

local apiKey
local apiSecret
local currency
local balances
local prices
local api_host = "api.coinbase.com"
local api_path = "/api/v3/brokerage/"
local market = "Coinbase"
local accountNumber = "Main"

function SupportsBank (protocol, bankCode)
    return protocol == ProtocolWebBanking and bankCode == "Coinbase Account"
end

function InitializeSession (protocol, bankCode, username, username2, password, username3)
    apiKey = username
    apiSecret = password
    -- Take currency of first fiat account, ignores pagination limit (default: 49)
    -- See: https://docs.cdp.coinbase.com/advanced-trade/reference/retailbrokerageapi_getaccounts/
    local accounts = queryPrivate("accounts")
    local size = accounts["size"]
    for i = 1, size do
        local account = accounts["accounts"][i]
        if account["type"] == "ACCOUNT_TYPE_FIAT" then
            currency = account["currency"]
            break
        end
    end
end

function ListAccounts (knownAccounts_notused)
    local account = {
        name = market,
        accountNumber = accountNumber,
        currency = currency,
        portfolio = true,
        type = "AccountTypePortfolio"
    }
    return {account}
end

function RefreshAccount(account_notused, since_notused)
    local s = {}
    local accounts = queryPrivate("accounts")

    local size = accounts["size"]
    for i = 1, size do
        local account = accounts["accounts"][i]
        if account["type"] == "ACCOUNT_TYPE_FIAT" and tonumber(account["available_balance"]["value"]) > 0 then
            s[#s+1] = {
                name = account["name"],
                market = market,
                currency = account["currency"],
                amount = tonumber(account["available_balance"]["value"])
            }
        else
            local prices = queryPrivate("market/products/" .. account["currency"] .. "-" .. currency)

            if prices ~= nil and prices["error"] == nil and tonumber(account["available_balance"]["value"]) > 0 then
                s[#s+1] = {
                    name = account["name"],
                    market = market,
                    -- currency = account["currency"],
                    quantity = tonumber(account["available_balance"]["value"]),
                    amount = tonumber(account["available_balance"]["value"]) * tonumber(prices["price"]),
                    price = tonumber(prices["price"])
                }
            end
        end
    end

    return {securities = s}
end

function EndSession ()
end

-------------------- Helper functions --------------------

-- Function to pad a byte string to a specific length with leading zeros
local function pad_to_length(data, length)
    if #data < length then
        data = string.rep("\0", length - #data) .. data
    elseif #data > length then
        data = data:sub(-length)  -- Trim to the required length if longer
    end
    return data
end

-- Function to convert a DER-encoded signature to concatenated r || s format
-- Based on https://stackoverflow.com/a/69109085/5347900
local function der_to_concat_rs(der_signature)
    local pos = 1
    assert(der_signature:byte(pos) == 0x30, "Expected SEQUENCE")
    pos = pos + 1  -- Skip SEQUENCE tag

    local length = der_signature:byte(pos)
    pos = pos + 1

    -- Extract r value
    assert(der_signature:byte(pos) == 0x02, "Expected INTEGER for r")
    pos = pos + 1
    local r_len = der_signature:byte(pos)
    pos = pos + 1
    local r = der_signature:sub(pos, pos + r_len - 1)
    pos = pos + r_len

    -- Extract s value
    assert(der_signature:byte(pos) == 0x02, "Expected INTEGER for s")
    pos = pos + 1
    local s_len = der_signature:byte(pos)
    pos = pos + 1
    local s = der_signature:sub(pos, pos + s_len - 1)
    pos = pos + s_len

    -- Ensure r and s are 32 bytes by adding leading zeros if necessary
    r = pad_to_length(r, 32)
    s = pad_to_length(s, 32)

    -- Concatenate r || s
    return r .. s
end

-- Function to create JWT token using ES256 and MM helper functions
function create_jwt(apiSecret, header, payload)
    local json_header = JSON():set(header):json()
    local json_payload = JSON():set(payload):json()

    -- Ensure header and payload are BASE64 encoded
    local encoded_header = MM.base64urlencode(json_header)
    local encoded_payload = MM.base64urlencode(json_payload)

    local signature_input = encoded_header .. "." .. encoded_payload

    -- Load and parse the EC private key
    local key = apiSecret
    key = string.match(key, "BEGIN EC PRIVATE KEY%-%-%-%-%-%s*(.*)%-%-%-%-%-END EC PRIVATE KEY")
    key = string.gsub(key, "%s+", "")
    key = MM.base64decode(key)

    local der = MM.derdecode(MM.derdecode(key)[1][2])
    local d = der[2][2]
    local p = MM.derdecode(der[4][2])[1][2]
    local x = string.sub(p, string.len(p) - 63, string.len(p) - 32)
    local y = string.sub(p, string.len(p) - 31)

    -- Sign the data using MM.ecSign
    local signature = MM.ecSign({curve="prime256v1", d=d, x=x, y=y}, signature_input, "ecdsa sha256")
    local rs_signature = der_to_concat_rs(signature)
    local encoded_signature = MM.base64urlencode(rs_signature)

    -- Construct and return the JWT
    return encoded_header .. "." .. encoded_payload .. "." .. encoded_signature
end

-- Generate a hexadecimal nonce
local function generate_hex_nonce(length)
    local res = {}
    local hex_chars = '0123456789abcdef'

    for i = 1, length do
        local rand_index = math.random(1, #hex_chars)
        table.insert(res, hex_chars:sub(rand_index, rand_index))
    end

    return table.concat(res)
end

-- Query the advanced trade API with a private method
-- See: https://docs.cdp.coinbase.com/advanced-trade/reference/
function queryPrivate(method)
    local request_method = "GET"
    local nonce = generate_hex_nonce(64)
    local uri = request_method .. " " .. api_host .. api_path .. method
    local nbf = os.time()
    local exp = nbf + 120
    local header = {alg = "ES256", kid = apiKey, nonce = nonce, typ = "JWT"}
    local payload = {sub = apiKey, iss = "cdp", nbf = nbf, exp = exp, uri = uri}
    local jwt_token = create_jwt(apiSecret, header, payload)

    local path = api_path .. method
    local headers = {}
    headers["Accept"] = "application/json"
    headers["Authorization"] = "Bearer " .. jwt_token

    local connection = Connection()
    local content = connection:request("GET", url .. path, nil, nil, headers)

    local json = JSON(content)
    return json:dictionary()
end

tonumber(account["available_balance"]["value"]) > 0

I am not sure about this one. Are you sure you cannot have a negative balance? At least on a fiat account?

Good Point, negative values should not be filtered.

@mnin WDYT?

Thanks, tested it, required("math") isn't working for me. And also MM isn't available. Are you missed extra lua files?

required("math") isn't working for me.

I have pushed a version that doesn't use "math" anymore.

And also MM isn't available. Are you missed extra lua files?

The MM gets injected via the MoneyMoney sandbox and provides access to some MoneyMoney specific functions. If that is not available you seem to have an issue with your setup. What are the outputs in your MoneyMoney protocol window when the extension gets loaded?

I reinstalled latest MoneyMoney version (2.4.44 (466) Beta) via homebrew. Just installed the latest beta and disabled "Verify digital signatures of extensions" of course.
Error is:
          Coinbase.lua: Coinbase.lua:185: attempt to index a nil value (field 'integer index')

seems to be line:
  local der = MM.derdecode(MM.derdecode(key)[1][2])

So may the undocumented functions are not available.

Error is:
          Coinbase.lua: Coinbase.lua:185: attempt to index a nil value (field 'integer index')

This means that you messed up your private key a bit when entering it into MoneyMoney.
Make sure that you enter it exactly like this (including linebreaks!!):
-----BEGIN EC PRIVATE KEY-----
M ... 9
A ... M
m ... ==
-----END EC PRIVATE KEY-----

Just copied (keys deleted from Coinbase already):
api key: organizations/24f4c1ec-ebbd-46b3-84b9-379e559b9246/apiKeys/0226fe2e-057b-49e8-9c93-f331ae21ce07
api secret: -----BEGIN EC PRIVATE KEY-----\nMHcCAQEEID6FhvZUjcuAIwbx3n9wBQWiuwtOB9x1aOyZSoi742f6oAoGCCqGSM49\nAwEHoUQDQgAE239jJaUh1dqjofGMAXPaQJOTIob/ii6VnetwY13oKDltd/VLxdNa\n+z5P1ykYIvXQ2eaVo5KvsB4WRshSC71m+w==\n-----END EC PRIVATE KEY-----\n

@mnin you need to remove the \n chars, I did the same mistake.

@mnin you need to remove the \n chars, I did the same mistake.

Replace \n with real linebreaks.

@luckfamousa maybe it's possible to automatically do strip those for people like me that existential copy the json encoded multiline key.

Cool, so put into the input field just multiline string.
Now getting the next error:
Coinbase.lua: Coinbase.lua:94: attempt to concatenate a nil value (upvalue 'currency')

First account's in the array are following types:
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO

So currency is still nil.

Do you not have at least one ACCOUNT_TYPE_FIAT account?

key = string.gsub(key, "\\n", "")

This is the complete list:
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_VAULT
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_VAULT
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO
          ACCOUNT_TYPE_CRYPTO

So, nope :-)

Now it defaults to 'EUR' if no fiat account is present.

Okay cool, now the script is running fine. But it's not rendering any data.
Seeing some INVALID_ARGUMENT errors in the console:
22:00:26  1> Received: {"error":"INVALID_ARGUMENT","error_details":"valid product_id is required","message":"valid product_id is required"}
          1> Sending: GET https://api.coinbase.com/api/v3/brokerage/market/products/AMP-EUR

Don't you have any accounts that are convertible to EUR via Coinbase? BTC for instance?

22:00:26  1> Received: {"error":"INVALID_ARGUMENT","error_details":"valid product_id is required","message":"valid product_id is required"}
          1> Sending: GET https://api.coinbase.com/api/v3/brokerage/market/products/AMP-EUR

For me it is working just fine

Don't you have any accounts that are convertible to EUR via Coinbase? BTC for instance?

22:00:26  1> Received: {"error":"INVALID_ARGUMENT","error_details":"valid product_id is required","message":"valid product_id is required"}
          1> Sending: GET https://api.coinbase.com/api/v3/brokerage/market/products/AMP-EUR

I have several accounts there for many currencies. But my account is a bit old.

I have several accounts there for many currencies. But my account is a bit old.

Assuming you have a BTC account that is not empty or another account that is convertible to EUR, it should appear in your list. If it is not convertible to EUR, https://api.coinbase.com/api/v3/brokerage/market/products/XXX-EUR will fail and it will not appear in your list.

Now it seems the Coinbase API is broken somehow. And the support simply doesn't respond.

Coinbase API is broken somehow

The V3 is working without any problems for me. I can watch myself losing money right now 😭🤷♂


improvement Add more log on getDeleteBitmapUpdateLock

getDeleteBitmapUpdateLock may cost too much time, here is an example:
2024-07-08 16:58:43,050 INFO (thrift-server-pool-1|183) [CloudGlobalTransactionMgr.getDeleteBitmapUpdateLock():521] get delete bitmap lock successfully. txns:<PHONE_NUMBER>7006594. time cost: 10500 ms.
So need to add more log to find out why it cost so much time.

run buildall

run buildall

run buildall

run buildall


Github PR Template

Proposed changes
Having a PR template with a quick checklist helps Author write better descriptive PR which follows the conventions set by the maintainers.
Further comments
Do let me know what other things(checklist/ descriptive messages) that we can add to make the PR's more descriptive and have a better experience (in terms of understanding) while reading PR's

@guruhubb can you add a reviewer here?


Timeline plugin drawn incorrectly on MacBook retina display

Only half of the timeline is drawn on MacBook retina display.
Also the canvas is upscaled so it gets blurry.
I edited line 99 to get the whole timeline drawn, from this:
var width = Math.round(this.drawer.wrapper.scrollWidth / this.wavesurfer.params.pixelRatio);

to this:
var width = Math.round(this.drawer.wrapper.scrollWidth / this.wavesurfer.params.pixelRatio) * window.devicePixelRatio;

I didn't have time to make the canvas sharp on retina but I'm assuming all the width and height calculations need to take pixel ratio into consideration.

Can you provide a screenshot, I wonder what this looks like..

Here you go

Right. It looks the same on my Samsung Galaxy S4 mini with Firefox.

I'm guessing it will be the same on all high DPI screens where pixels are doubled by browsers for lower resolution images.

Should be resolved now. Please reopen, if I missed something.


Add documentation for attributes and methods for models

Closing in favor of creating more specific issues for each documentation.


Refactor ImportTask

Following a discussion with @geigerzaehler regarding #690:
Some refactoring in the importer that delegates some more responsibility to the ImportTask class would help simplify the code. As an example, this block from apply_choices:
if task.is_album:
    autotag.apply_metadata(
        task.match.info, task.match.mapping
    )
else:
    autotag.apply_item_metadata(task.item, task.match.info)

could be wrapped up in a task.apply() call.
We could also consider dividing an AlbumImportTask class from a SingletonImportTask. Then apply() could be overridden to do the right thing for the kind of import.
If all goes well, we could eventually consider removing the distinction between album and singleton pipeline stages. The pipeline stages would just make calls to the appropriate ImportTask instance, which would handle the two kinds of imports differently. That would make, for example, the "as Tracks" interactive option more elegant since it could simply break the current AlbumImportTask into several SingletonImportTasks and send them down the pipeline.

The next step in this refactoring will be to move more generic responsibility to the new base class: BaseImportTask, introduced here: https://github.com/sampsyo/beets/commit/04ef371b92072a9162982b44d84c765bfb774713
The hierarchy should probably be like this:

AlbumImportTask and SingletonImportTask are siblings, probably both inheriting directly from BaseImportTask or from an intermediate plain ImportTask.
SentinelImportTask also inherits from BaseImportTask. It should need fewer stub methods than it currently has.
ArchiveImportTask inherits from that, as it does currently.


Remove-DbaLinkedServer: Add option to drop logins along with the linked server

Type of Change

[ ] Bug fix (non-breaking change, fixes # )
[x] New feature (non-breaking change, adds functionality, fixes #7951 )
[ ] Breaking change (effects multiple commands or functionality, fixes # )
[x] Ran manual Pester test and has passed (.\tests\manual.pester.ps1)
[ ] Adding code coverage to existing functionality
[x] Pester test is included
[ ] If new file reference added for test, has is been added to github.com/sqlcollaborative/appveyor-lab ?
[] Unit test is included
[x] Documentation
[ ] Build system

Purpose

Add a -Force param so that the logins for a linked server can be dropped at the same time as the linked server.
Approach

Minor change to use a new param.
Commands to test

See the new pester test.

pawesome! 🐾  thank you both so much

Thanks @lancasteradam!


Release job fails with error when downloading artifacts

See https://github.com/Consensys/linea-besu-package/actions/runs/12481320208
Run actions/download-artifact@v4
Downloading single artifact
Error: Unable to download artifact(s): Not Found

FYI @joshuafernandes  @naveen-consensys

Sorted @Gabriel-Trintinalia - https://github.com/Consensys/linea-besu-package/actions/runs/12502888457
Looks like the calling of the workflows directly has slightly different syntax - the workflow id's weren't read in right on the last step and so artifacts weren't downloading https://github.com/Consensys/linea-besu-package/commit/1b06ef9ac3f030c510322dfcd8a45c33a6ed5a7b
I'll remove the debug echo statements when Im back, but for now this will work for any releases over the next couple weeks


Investigate use of Github's codespaces for interviews

Github have launched Codespaces, which seems to be a method of using dev containers in the cloud.
More info here: https://docs.github.com/en/codespaces
We should arrange a session to find out if this is something we can make use of for the interview process.

@bombadillo (Chris Mumford) has been keen to give this a shot at the back end too - joint session?

After a bit of investigation, I don't believe it's worth taking this further at the front-end. My reasoning is that we can already set up a live share environment that the user can join in the browser. In addition to that, we lose hot reload as there are some issues forwarding websocket ports in Codespaces.
I think that this is going to be a bigger hit with the back end team - I don't think Live Share is as big a thing there already. But I can't see that it offers us as much at the front end.
Closing this issue for now, but if anyone feels differently, please re-open.


Doesn't support symbolic links

This doesn't work if any of the files in the directory are a symbolic link.
Relies on PinataCloud/Pinata-SDK#48

No further action is needed. The package.json is automatically using the updated version of the dependency that fixes this issue.


Just want to let you know that I'm integrating this into my mapper to automatically convert songs 👌

Your license says I can do it

Respect the license and I'm happy 👍


can't detect POSIX shell

> make

*** No POSIX shell could be detected while not building on Windows

The zimk build system needs a POSIX compliant shell. Detection of the shell
can be overridden by passing variables to make:

HOSTSH:  Path to the POSIX shell on the build system
         Defaults to the value of SH when not cross-building
SH:      Path to the POSIX shell on the target system

If you know your system has a POSIX shell available, pass its full path in
one of these variables, e.g.

    make SH=/bin/sh

for the most commonly used path.

zimk/lib/platform.mk:73: *** zimk only works with a POSIX shell or Windows CMD.EXE.  Stop.
Exit 2

> make SH=/bin/sh
GNUmakefile:25: *** unterminated call to function 'shell': missing ')'.  Stop.
Exit 2

I'm on an old version of Debian, and yes sh is at /bin/sh
I can't tell if this is a xmoji issue or a zimk issue.

Not being able to find the POSIX shell means your old Debian is not fully POSIX compliant (maybe the getconf utility is missing, maybe it gives wrong results), but that's unrelated here and passing SH works around it.
The second error is probably an issue with some older GNU-make version. Unfortunately I don't know what exactly it coughs on. As a shot in the dark, could you try this patch please:
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -22,14 +22,12 @@ DISTCLEANDIRS=              tools/bin

 NODIST=                        poser/zimk

-HAVE_KQUEUE=           $(shell echo '#include <sys/event.h>\n'\
-                       'int (*f)(void) = kqueue;' | \
-                       $(or $(CC),cc) -xc -c -o/dev/null - 2>/dev/null \
-                       && echo 1)
-HAVE_INOTIFY=          $(shell echo '#include <sys/inotify.h>\n'\
-                       'int (*f)(void) = inotify_init;' | \
-                       $(or $(CC),cc) -xc -c -o/dev/null - 2>/dev/null \
-                       && echo 1)
+define checkfunc
+$(shell echo "#include <$1>\nint (*f)(void) = $2;" | \
+       $(or $(CC),cc) -xc -c -o/dev/null - 2>/dev/null && echo 1)
+endef
+HAVE_KQUEUE=           $(call checkfunc,sys/event.h,kqueue)
+HAVE_INOTIFY=          $(call checkfunc,sys/inotify.h,inotify_init)
 BOOLCONFVARS_OFF+=     $(if $(HAVE_KQUEUE),,WITH_KQUEUE) \
                        $(if $(HAVE_INOTIFY),,WITH_INOTIFY)
 BOOLCONFVARS_ON+=      $(if $(HAVE_KQUEUE),WITH_KQUEUE,) \

(The patch had tabs vs space mangled, but I managed.)
I do have getconf, and it returns tons of stuff - any particular variable I should check for? This is a very standard Debian, other than being old, it's pretty unlikely it's not POSIX compliant.
Anyway as for the patch:
> make WITH_SVG=of SH=/bin/sh HOSTSH=/bin/sh
zimk/lib/config.mk:40: *** bool flag "of" not in [0,no,false,off,1,yes,true,on].  Stop.
Exit 2

zimk uses _POSIX_SHELL (should return 1 if the system has a POSIX shell) and PATH (should return the path where POSIX utilities are found).
Your latest error is a typo here: WITH_SVG=of ... it's spelled off.

My getconf returns the same thing:
> getconf _POSIX_SHELL
1
> getconf PATH
/bin:/usr/bin

Really sorry about the of vs off!!!
It still won't build, but that's because of missing dependencies, so I'll have to fix that and get back to it.

Then I suppose there's another issue with some older GNU make version ... which one do you have? Maybe I can obtain it to do some debugging.

> make --version
GNU Make 4.1
Built for i686-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

I know it's quite old, I'm actually in the middle of upgrading, so it will be version 4.2 soon. If there's some debugging test you want me to run let me know.

It's 10 years old, I have version 4.4.1 installed here ;) Anyways, confirmed failure to detect the POSIX shell is related to the old GNU make version, I can reproduce it with gmake 4.1 here as well.

I have since upgraded Debian which includes the only slightly less ancient version of make 4.2.1 which doesn't have the same error.
I installed the build deps, and got an error which I'll post as a separate issue. Hopefully that error is not because the library I have is too old :)


performance patch for AEXMLElement.subscript

In my case (and generally for XMLs including a large number of the same tagnames), children.filter {...}.first is slower than children.first {...}.
this should be more efficient in time and space.

Thanks @banjun, it's merged now!


GROOVY-8831: Add instance methods from String to GString

With respoect to this commit, there are some issues and other points that deserve discussion on the mailing list:

we can't just cut and paste the comments from Java source code due to the different licence
for the methods from Comparable and CharSequence we can use "@inheritDoc" (that will work when doing javadoc and we should use that approach for groovydoc too - even though we need to fix usage of that feature for groovydoc - there is an existing issue)
for other methods when can either paraphrase in our own wording and/or point to the related String methods using "@see"
it's a bit confusing for the methods overlapping with those from StringGroovyMethods, e.g. contains, was there a reason to replace them - if so we should have that commented somewhere
for many other methods, Groovy's runtime and static compiler already handle the GString to String conversion, was there a reason to provide implementations since we used to get them for free

@paulk-asert  I've reverted the commit:
https://github.com/apache/groovy/commit/5ff63b1cdad87450893c5809f82b962c87688e23

I have a point here. Not sure whether I can  post....

Using the ExtensionModule feature, we have implemented multiple methods for easy String handling. Ex. println 'some text here'.md5
After this, intuitively I started coding as println "some $var".md5. But, it fails with error No such property: md5 for class: org.codehaus.groovy.runtime.GStringImpl
So, any method that is available in the String class in groovy environment due to a any of the below reasons, they should be made available in GString also.

String's native methods
Using groovy extension module facilty
custom meta class
methods in StringGroovyMethods

Yes. There will be can be more than one method impls with same signature in these places. Groovy runtime can resolve the calls with some order. With some proper documentation, it can be educated to developers or script writers.

StringGroovyMethods has lot of overloadings as GString variant to make the users feel transparant between String and GString. The idea is right. But, the way the methods are given to GString is very manual and can be made automatic using some ways...

FYI, 'abc'.md5()

FYI, 'abc'.md5()

adithyan@adithyan:~$ groovy -e 'println "abc".md5()'
Caught: groovy.lang.MissingMethodException: No signature of method: java.lang.String.md5() is applicable for argument types: () values: []
Possible solutions: any(), is(java.lang.Object), any(groovy.lang.Closure), use([Ljava.lang.Object;), use(java.util.List, groovy.lang.Closure), use(java.lang.Class, groovy.lang.Closure)
groovy.lang.MissingMethodException: No signature of method: java.lang.String.md5() is applicable for argument types: () values: []
Possible solutions: any(), is(java.lang.Object), any(groovy.lang.Closure), use([Ljava.lang.Object;), use(java.util.List, groovy.lang.Closure), use(java.lang.Class, groovy.lang.Closure)
        at script_from_command_line.run(script_from_command_line:1)

Also, my point is not only for this one method. It is about the availability of all the methods in String in groovy environment in GString also.. Thanks

Groovy 2.5.4 is required to use md5 DGM.


Invalid bitcast   %222 = bitcast <8 x i32> %221 to <8 x half>

Output from running mlc_chat_cli:
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
Use lib /cluster/2024mgagvani/dist/lib/vicuna-v1-7b_vulkan_float16.so
Initializing the chat module...
Finish loading
You can use the following special commands:
  /help    print the special commands
  /exit    quit the cli
  /stats   print out the latest stats (token/sec)
  /reset   restart a fresh chat

USER: what is 1 + 1
ASSISTANT: Invalid bitcast
  %222 = bitcast <8 x i32> %221 to <8 x half>
LLVM ERROR: Broken function
Aborted (core dumped)

Debug info:
(mlc-chat) 2024mgagvani@snowy:~$ uname -r
5.15.0-67-generic

System Specs: AMD Threadripper 1950X CPU and Nvidia GeForce 2080 GPU.

I have the same issue.
My driver is :nvidia-driver-530 (530.41.03-0ubuntu<IP_ADDRESS>).
5.15.0-71-generic
The demo video also shows "WARNING: lavapipe is not a conformant vulkan implementation, testing use only.", so it might not be the issue.

If you already have your NVIDIA driver installed, make sure your system is picking it up by setting the Vulkan ICD environment variable:
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
If that's not solving your issue (it did for me), you probably already know that on some Linux distribution (Debian for instance), there is no support for NVIDIA GPUs, so you have to go through the setup. See here: https://phoenixnap.com/kb/nvidia-drivers-debian
I hope this helps. Once the Vulkan driver started to use my NVIDIA Tesla T4 on my VM, all went running fine.

The demo video also shows "WARNING: lavapipe is not a conformant vulkan implementation, testing use only.", so it might not be the issue.

That's correct. lavapipe is a CPU-simulated Vulkan implementation. If this message pops out, it probably means you might want to install a proper version of Vulkan


Prevent SRG SSR livestreams from being played in the past

As member of the legal team I don't want users to be able to pause livestreams, thus avoiding a kind of timeshift feature to be available on such streams.
Acceptance criteria

Livestreams without DVR are stopped instead of paused.
This behavior must also work in the future with AirPlay or picture in picture.

Tasks

[x] Resume SRG SSR livestreams to the live edge after a pause.
[x] Add example under the showcase tab.
[x] Test with poor network conditions.

There is no need to stop a livestream when paused. Digging through AVFoundation APIs (#97) I found automaticallyPreservesTimeOffsetFromLive, available from iOS and tvOS 13, which allows us to control whether livestream playback always resumes at the live edge once the buffer has been exhausted.
We can enable this flag in CoreBusiness to ensure SRG SSR livestreams conform to this rule and cannot be played in the past if they do not support DVR.

Works fine with poor network conditions (network link conditioner with Edge settings).

The buffering limitation strategy applied here to prevent livestream playback in the past has advantages over the approach previously used in Letterbox (implementing a stop which discarded the internal AVPlayer instance):

We don't need any special stopped state.
We don't need any dedicated API.
We never discard the player (something we should strive to avoid, except maybe if we want to implement graceful recovery from media service reset).


1.12-1 cherry-pick request: Fix TfLiteTensor invalidation issue when using the Java API

Fix an issue where the Java Tensor class would hold a reference
to an invalidated TfLiteTensor instance. This issue was manifest
in certain models that add temporary tensors during execution.
PiperOrigin-RevId: 215582842
This CL is critical for 1.12 as there are several clients who were
impacted by the regression in 1.11 and are blocked on a stable fix.

Jared, can you take a look at the  clang-format error:
--- a/tensorflow/contrib/lite/java/src/main/java/org/tensorflow/lite/NativeInterpreterWrapper.java
+++ b/tensorflow/contrib/lite/java/src/main/java/org/tensorflow/lite/NativeInterpreterWrapper.java
@@ -269,9 +269,8 @@ final class NativeInterpreterWrapper implements AutoCloseable {
}
Tensor inputTensor = inputTensors[index];
if (inputTensor == null) {

 inputTensor =

     inputTensors[index] =

         Tensor.fromIndex(interpreterHandle, getInputTensorIndex(interpreterHandle, index));

 inputTensor = inputTensors[index] =

     Tensor.fromIndex(interpreterHandle, getInputTensorIndex(interpreterHandle, index));

}
return inputTensor;
}
@@ -292,9 +291,8 @@ final class NativeInterpreterWrapper implements AutoCloseable {
}
Tensor outputTensor = outputTensors[index];
if (outputTensor == null) {

 outputTensor =

     outputTensors[index] =

         Tensor.fromIndex(interpreterHandle, getOutputTensorIndex(interpreterHandle, index));

 outputTensor = outputTensors[index] =

     Tensor.fromIndex(interpreterHandle, getOutputTensorIndex(interpreterHandle, index));

}
return outputTensor;
}

Hmm, this is a straight cherry-pick and matches code already in master? Do we have to fix the clang failures to land?
I can clean it up in master, but would prefer not to fix the (existing) style issue with the cherry-pick.


plymouth: unstable-2020-12-07 -> unstable-2021-10-18

Motivation for this change
Someone reported at #nixos-brasil Telegram issues with Gnome+Plymouth. It seems that our Plymouth derivation is very old, and this maybe the cause of the issues.
From Arch Linux Wiki:

Plymouth is available from the AUR: the stable package is plymouth and the development version is plymouth-git. Due to the fact that upstream plymouth release only happen on a spotty and highly unregular schedule, it is generally recommended to use plymouth-git, because it is actually less likely to cause problems for most users than the stable package.

Now, this is a really difficult package to test since it doesn't seem to work in the traditional QEMU VM. So what I did is copy the derivation to my personal config, add it as an overlay, set boot.plymouth.enable and did a full reboot cycle. Seems to work fine.
However, keep in mind that I was using 21.05 release for this. I couldn't simply use the package from current master branch since there is some glibc version validation happening behind the scenes, and combining plymouth from master with my release-21.05 didn't allow me to build. So it would be nice someone using nixpkgs-unstable/master to test this PR before merging.
At the same time, if this does fixes some issues, it would be interesting to merge this before release 21.11.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review run on x86_64-linux 1

4 packages marked as broken and skipped:

libsForQt512.breeze-plymouth
libsForQt514.breeze-plymouth
xmonad_log_applet
xmonad_log_applet_gnome3

27 packages built:

adapta-gtk-theme
breeze-plymouth (libsForQt5.breeze-plymouth)
chrome-gnome-shell
gnome.gdm
gnome.gnome-applets
gnome.gnome-flashback
gnome.gnome-initial-setup
gnome.gnome-panel
gnome.gnome-session
gnome.gnome-shell
gnome.gnome-terminal
gnome.gnome-tweak-tool
gnomeExtensions.easyScreenCast
gnomeExtensions.gsconnect
gnomeExtensions.night-theme-switcher
lightdm
lightdm-enso-os-greeter
lightdm-mini-greeter
lightdm-tiny-greeter
lightdm_gtk_greeter
lightdm_qt
pantheon.elementary-greeter
pantheon.elementary-session-settings
phosh
plymouth
vimix-gtk-themes
whitesur-gtk-theme

Pinging team Gnome: @hedning @jtojnar @dasj19 @maxeaubrey
Also: @cillianderoiste

Did not notice anything alarming in the commit log but I am not very familiar with the boot code.
There is a new service that is supposed to run on shutdown but we do not have /run/initramfs so it probably will not work.
cc @puckipedia, who tried to make Plymouth work the last time
cc @samueldr, who seems to be familiar with init

Sorry, no experience with plymouth and NixOS.
AFAIUI the worst that would happen from not having the shutdown service is not showing plymouth during shutdown.

Now, this is a really difficult package to test since it doesn't seem to work in the traditional QEMU VM

Try adding "bochs_drm" to boot.initrd.kernelModules. Not sure it will work, but that's IIRC the driver it uses for modesetting, and likely why plymouth doesn't seem to work.

Did not notice anything alarming in the commit log but I am not very familiar with the init code.

No, mostly the merge of the patch that I ended removing.

Sorry, no experience with plymouth and NixOS.
AFAIUI the worst that would happen from not having the shutdown service is not showing plymouth during shutdown.

I tested and it does show a splash screen during the shutdown.
However, I noted that the spin animation finished too early (after it stopped animating, it still took quite sometime until the shutdown actually finished). This maybe a side-effect of the lack of the shutdown service.

boot.initrd.kernelModules

Didn't seem to work:
{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  inputs.pkgsReview.url = "github:thiagokokada/nixpkgs/bump-plymouth";

  outputs = inputs@{ self, nixpkgs, pkgsReview }: {

    nixosConfigurations.vm = pkgsReview.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs = { inherit inputs; };
      modules = [
        ({ pkgs, ... }: {
          boot.initrd.kernelModules = [ "bochs_drm" ];
          boot.plymouth.enable = true;

          users.mutableUsers = false;

          users.users.me = {
            isNormalUser = true;
            hashedPassword = "";
            extraGroups = [ "wheel" ];
          };
        })
      ];
    };
    # So that we can just run 'nix run' instead of
    # 'nix build ".#nixosConfigurations.vm.config.system.build.vm" && ./result/bin/run-nixos-vm'
    defaultPackage.x86_64-linux = self.nixosConfigurations.vm.config.system.build.vm;
    defaultApp.x86_64-linux = {
      type = "app";
      program = "${self.defaultPackage.x86_64-linux}/bin/run-nixos-vm";
    };
  };
}

I can see on the logs that it loaded the bochs_drm, however I didn't see any animation during boot.

Seems to still work for me on boot (after entering LUKS password).

Nice.
I will merge this tomorrow just to make sure nobody else has any issues with it.

Thanks @jtojnar @samueldr for the inputs in this PR.
Merging it.


Doc/architecture diagram

NOTE: this should be merged after #91
Please only review the architecture diagram that is in the README for this PR.

@oed my comments (keep in mind i'm not super familiar with technical diagrams)
B - "request data from user 3box via [what is the method]?
C2 - where is the link between address and profile stored?
D - the IPFS doc is a single doc containing all mappings (address<>hashes) right, or one per 3Box?
E - what is the root hash tracker? what role does it play later?

@oed Looks good! One question I have is about the Orbit-DB instances. Are we sure the KV-store is the right data structure for the private data? The unencrypted data might be in a KV-store but it’s note clear that the encrypted data is best defined this way. What would be the keys and what would be the values?

Have we considered EAV (entity-attribute-value) at all for the structure, since multiple entities could try to write the same attribute (ie same username attribute)? Or is this need taken care of by namespacing? I just saw something about it in another Medium post (maybe about Graph.io).
@christianlundkvist I would guess the keys need to contain the information necessary to index the values, which are hashes of individually encrypted data?

@dazuck Good questions, I'll make some improvements to the description and some clarifications here.
B - This is only meant to be a high level overview. Details of methods etc should be in the 3box-js spec.
C2 - It's stored in the hash tracker, see F1
D - no, each user has their own ipfs objcect, the mappings are stored in the hash tracker. Clarifying this in the readme.
E. The root hash tracker keeps track of all users latest hashes for their data stores. Hopefully we can decentralize this as much as possible in the future (already have some plans for that, but nothing that we should focus on right now).
Can you take a look and see if the description I added to the readme helps?
@christianlundkvist Right, I might have oversimplified this in my head. Can we schedule a call today to discuss, with @c-castillo as well.
@michaelsena I don't think we have considered it in the MVP no. Currently we have no way of distinguishing entities (dapps) since we have no way to authenticate that. This will change once we move to the iframe method.

@oed sorry didn't see your comments before. looks great to me!


Set format for time input

Currently, the user can specify seconds for time inputs. This is inconsistent with existing documentation and leads to a bug where a lesson is displayed as having the same start and end time.
This PR specifies the format for time inputs to be HH:mm.
Fixes #142

Codecov Report

Merging #154 (69a7b85) into master (67effd5) will increase coverage by 0.02%.
The diff coverage is 50.00%.

@@             Coverage Diff              @@
##             master     #154      +/-   ##
============================================
+ Coverage     29.85%   29.88%   +0.02%
- Complexity      403      404       +1
============================================
  Files           152      152
  Lines          3138     3139       +1
  Branches        378      378
============================================
+ Hits            937      938       +1
  Misses         2156     2156
  Partials         45       45

Impacted Files
Coverage Δ

src/main/java/jarvis/logic/parser/ParserUtil.java
16.04% <50.00%> (+1.04%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more