add Inventor set Tricky programs

Dear @laurensvalk and @dlech,
Happy New Year! 🎆
I got the Mindstorms Inventor set from Santa.
I wrote a letter to Santa saying I like lego. So when we saw the big box under the present tree my dad thought it was Duplo, but when I open it it was the Inventor set!
I feel happy to submit my first program this year for your review.
I had played soccer before so I did the soccer program first.
Thank you very much!
Antoni 🎁 !

Hi @laurensvalk and @dlech,
As @AntoniLuongPham shared above, Santa was incredibly kind and understanding this season! His sister Ariana also got a colorful SPIKE Prime set. I was amazed myself! ;)
@AntoniLuongPham and I are playing with all the new APIs -- LEGO's Scratch and Python APIs, and PyBricks. Since he already knows PyBricks (he can actually code much PyBricks without reading the docs now :) ), it is easier for him to try writing the PyBricks programs first. I'm helping him out with the PyBricksDev CLI setup and the code.pybricks.com interface.
Since this new SPIKE-based system is different from EV3, I've asked @AntoniLuongPham to open this PR with one program first, so that we have something concrete in front for you to review and instruct us re: the standards for these new programs. Right now I have a few questions:

is sets/spike/inventor/ an appropriate path for this set? In my mental model, "spike" is at the same level as "ev3" (indicating the system), while "inventor" is at the same level as "home" / "home_bonus" / "education_core" / "education_extension"

What should we write in READMEs?

Do we need auxiliary files such as .GitIgnore and the VSCode settings/configs files?

Above are some obvious considerations I would like to check with you on. Please also let us have comments/instructions on other aspects of these new PRs that you think of.
Thank you and Happy New Year!
Vinh

Hi @laurensvalk and @dlech,
As @AntoniLuongPham shared above, Santa was incredibly kind and understanding this season! His sister Ariana also got a colorful SPIKE Prime set. I was amazed myself! ;)
@AntoniLuongPham and I are playing with all the new APIs -- LEGO's Scratch and Python APIs, and PyBricks. Since he already knows PyBricks (he can actually code much PyBricks without reading the docs now :) ), it is easier for him to try writing the PyBricks programs first. I'm helping him out with the PyBricksDev CLI setup and the code.pybricks.com interface.
Since this new SPIKE-based system is different from EV3, I've asked @AntoniLuongPham to open this PR with one program first, so that we have something concrete in front for you to review and instruct us re: the standards for these new programs. Right now I have a few questions:

is sets/spike/inventor/ an appropriate path for this set? In my mental model, "spike" is at the same level as "ev3" (indicating the system), while "inventor" is at the same level as "home" / "home_bonus" / "education_core" / "education_extension"

What should we write in READMEs?

Do we need auxiliary files such as .GitIgnore and the VSCode settings/configs files?

Above are some obvious considerations I would like to check with you on. Please also let us have comments/instructions on other aspects of these new PRs that you think of.
Thank you and Happy New Year!
Vinh

Happy new year. We're glad you are still having fun with robots and Pybricks.

* In my mental model, "spike" is at the same level as "ev3"

Actually, "Prime" and "Inventor" are on the same level as "EV3" while "SPIKE" is on the same level as "MINDSTORMS".

* What should we write in READMEs?

Anything that someone who has not used Pybricks very much might need to know about using your program.

* Do we need auxiliary files such as .GitIgnore and the VSCode settings/configs files?

No, these are not needed for Powered Up hub programs.

Happy new year. We're glad you are still having fun with robots and Pybricks.

* In my mental model, "spike" is at the same level as "ev3"

Actually, "Prime" and "Inventor" are on the same level as "EV3" while "SPIKE" is on the same level as "MINDSTORMS".

* What should we write in READMEs?

Anything that someone who has not used Pybricks very much might need to know about using your program.

* Do we need auxiliary files such as .GitIgnore and the VSCode settings/configs files?

No, these are not needed for Powered Up hub programs.

Thanks for submitting this! I will get back to you as soon as possible, but certainly this upcoming week.

Thanks for submitting this! I will get back to you as soon as possible, but certainly this upcoming week.

Thank you @dlech and @laurensvalk!
We will gradually add the other games/programs for Tricky to this PR, in parallel to your review and standard-setting for the Inventor set. :)
I have also observed some things that do not work as expected yet, and will open Issues to track those bugs.
Vinh

Thank you @dlech and @laurensvalk!
We will gradually add the other games/programs for Tricky to this PR, in parallel to your review and standard-setting for the Inventor set. :)
I have also observed some things that do not work as expected yet, and will open Issues to track those bugs.
Vinh

@laurensvalk @dlech, I've got @AntoniLuongPham to update the Tricky Basic and Tricky Playing Soccer programs after the recent Sensor & Motor bug fixes.
His school semester has started, so we're probably gonna take a while with other Tricky variations. Would you like to review the current PR with these 2 programs first, so that we can set these as a standard for subsequent PRs?

@laurensvalk @dlech, I've got @AntoniLuongPham to update the Tricky Basic and Tricky Playing Soccer programs after the recent Sensor & Motor bug fixes.
His school semester has started, so we're probably gonna take a while with other Tricky variations. Would you like to review the current PR with these 2 programs first, so that we can set these as a standard for subsequent PRs?

Thanks for the updates.

Would you like to review the current PR with these 2 programs first, so that we can set these as a standard for subsequent PRs?

That sounds like a good plan :+1:.

Thanks for the updates.

Would you like to review the current PR with these 2 programs first, so that we can set these as a standard for subsequent PRs?

That sounds like a good plan :+1:.

I've had a look at the tricky soccer example. Very nice!
A couple of tips and tricks in terms of features:

In reset_kicker_motor, I'm guessing you are using run_time to put the motor all the way to one end. You might want to consider run_until_stalled for this purpose with an appropriate duty_limit setting.
Instead of hub.light.on(color=Color.BLACK) you could do: hub.light.off()
If the kick method is already working fine, then feel free to keep as is. But you may be able to kick even faster by using track_target, which skips any acceleration or speed setting and just goes to the target as fast as possible.

Coding suggestions:

See the commits
Mainly, I think we can keep the code a bit shorter by leaving out keyword arguments except where they are needed.
I moved the initialization to the init method. Feel free to move this back if that is not right.
Within the class methods, I grouped some of the commands that do one thing, and added a short comment to that group.
I added a wait to the while loop

For tricky basics, would it make sense to do it without a class altogether? That could be a good starting point for people who don't know how to use classes yet.

I've had a look at the tricky soccer example. Very nice!
A couple of tips and tricks in terms of features:

In reset_kicker_motor, I'm guessing you are using run_time to put the motor all the way to one end. You might want to consider run_until_stalled for this purpose with an appropriate duty_limit setting.
Instead of hub.light.on(color=Color.BLACK) you could do: hub.light.off()
If the kick method is already working fine, then feel free to keep as is. But you may be able to kick even faster by using track_target, which skips any acceleration or speed setting and just goes to the target as fast as possible.

Coding suggestions:

See the commits
Mainly, I think we can keep the code a bit shorter by leaving out keyword arguments except where they are needed.
I moved the initialization to the init method. Feel free to move this back if that is not right.
Within the class methods, I grouped some of the commands that do one thing, and added a short comment to that group.
I added a wait to the while loop

For tricky basics, would it make sense to do it without a class altogether? That could be a good starting point for people who don't know how to use classes yet.

@laurensvalk thank you for the detailed comments. Let me walk these through with @AntoniLuongPham later today and/or tomorrow so that he understands what's going on. :)

Many people might end up learning Python from your examples 👍

Yes! -- in my experience with @AntoniLuongPham, programming LEGO Robots has been a fantastic way to learn Python. Allow me to digress here and elaborate on our Python teaching & learning experience over the past 8-9 months.
While I understand the usefulness of visual coding interfaces such as Scratch, those interfaces are naturally limited in terms of expressing a number of powerful high-level concepts such as classes, reuse by inheritance, reuse by importing, etc. So I determined early on that @AntoniLuongPham should try to use Python to control the robots instead of taking the usual route of using Scratch/LabVIEW first, hitting a wall after a while, and then being forced to unlearn and learn something very different.
While his primary motivation is to make the robots do what he wishes, @AntoniLuongPham has also learned to enjoy the process of writing "nice" programs. It takes lots of time-consuming rinse-and-repeat for a young coder to develop a sense of what "nice" means for a page of austerely plain text on a black VSCode screen (in contrast, all Scratch programs are nice by default and instantly gratifying, because they are so colorful!). I would tell him "you've built a nice robot, so you should have your program look nice too!", and that would prompt him to spend more time finding ways to make the program a bit more structured, a bit more DRY (he doesn't know this term yet, actually), and a bit easier to explain when he records YouTube videos (big deal indeed! :D).
Writing and refactoring textual code also involves a lot more copying/cutting-and-pasting than in visual blocks-based coding, and I have observed very interesting abstract thinking seemingly developing behind his Ctrl-C/X/V hand movements. In the early days @AntoniLuongPham would copy and paste only extremely obviously repeating LOCs. Later on, he would copy and paste and modify blocks of multiple (3-5) commands. Then he would copy and paste whole functions or a few functions at a the same time, between programs. Then, as of now, he can confidently copy and paste a whole class or a whole file and modify it for a new robot (e.g. "I think this robot is quite like , so I'll copy the whole program there and delete what I don't need and add what more I need"). Obviously I cannot read his mind, but I think there're some very beneficial neural connections developing when the copy-and-paste activity takes place. And again, textual coding offers a lot more opportunities for such copying-and-pasting than visual blocks-based coding.
We do hope the Python examples we contribute would help other young coders to take up Python and reap these benefits too. :)

@laurensvalk thank you for the detailed comments. Let me walk these through with @AntoniLuongPham later today and/or tomorrow so that he understands what's going on. :)

Many people might end up learning Python from your examples 👍

Yes! -- in my experience with @AntoniLuongPham, programming LEGO Robots has been a fantastic way to learn Python. Allow me to digress here and elaborate on our Python teaching & learning experience over the past 8-9 months.
While I understand the usefulness of visual coding interfaces such as Scratch, those interfaces are naturally limited in terms of expressing a number of powerful high-level concepts such as classes, reuse by inheritance, reuse by importing, etc. So I determined early on that @AntoniLuongPham should try to use Python to control the robots instead of taking the usual route of using Scratch/LabVIEW first, hitting a wall after a while, and then being forced to unlearn and learn something very different.
While his primary motivation is to make the robots do what he wishes, @AntoniLuongPham has also learned to enjoy the process of writing "nice" programs. It takes lots of time-consuming rinse-and-repeat for a young coder to develop a sense of what "nice" means for a page of austerely plain text on a black VSCode screen (in contrast, all Scratch programs are nice by default and instantly gratifying, because they are so colorful!). I would tell him "you've built a nice robot, so you should have your program look nice too!", and that would prompt him to spend more time finding ways to make the program a bit more structured, a bit more DRY (he doesn't know this term yet, actually), and a bit easier to explain when he records YouTube videos (big deal indeed! :D).
Writing and refactoring textual code also involves a lot more copying/cutting-and-pasting than in visual blocks-based coding, and I have observed very interesting abstract thinking seemingly developing behind his Ctrl-C/X/V hand movements. In the early days @AntoniLuongPham would copy and paste only extremely obviously repeating LOCs. Later on, he would copy and paste and modify blocks of multiple (3-5) commands. Then he would copy and paste whole functions or a few functions at a the same time, between programs. Then, as of now, he can confidently copy and paste a whole class or a whole file and modify it for a new robot (e.g. "I think this robot is quite like , so I'll copy the whole program there and delete what I don't need and add what more I need"). Obviously I cannot read his mind, but I think there're some very beneficial neural connections developing when the copy-and-paste activity takes place. And again, textual coding offers a lot more opportunities for such copying-and-pasting than visual blocks-based coding.
We do hope the Python examples we contribute would help other young coders to take up Python and reap these benefits too. :)

we can keep the code a bit shorter by leaving out keyword arguments except where they are needed

On this point, I think we should strike a balance between brevity (and the performance benefits of such brevity on the SPIKE/Inventor Hub) and readability to the consumers of the examples. If we expect many Python beginners to read these examples, I feel "explicit is better than implicit" applies to a certain extent. Having keyword arguments at the right places would make it easier for young coders to know what those arguments are for. For example, drivebase.drive(x, y) is much less understandable than drivebase.drive(speed=x, turn_rate=y) to those who are new to the API.
One anti-pattern I can bring up is Robot Mesh's Python API for VEX Robotics (https://www.robotmesh.com/studio), which admits no keyword arguments at all. All of their functions have positional arguments only. I'm teaching VEX IQ with Python to middle-schoolers in my nonprofit work, and the positional-only API design has made it very painful to teach, learn and review each other's work.
So let me look at the updated Tricky programs and propose where I think some keyword arguments could be helpful. :)

we can keep the code a bit shorter by leaving out keyword arguments except where they are needed

On this point, I think we should strike a balance between brevity (and the performance benefits of such brevity on the SPIKE/Inventor Hub) and readability to the consumers of the examples. If we expect many Python beginners to read these examples, I feel "explicit is better than implicit" applies to a certain extent. Having keyword arguments at the right places would make it easier for young coders to know what those arguments are for. For example, drivebase.drive(x, y) is much less understandable than drivebase.drive(speed=x, turn_rate=y) to those who are new to the API.
One anti-pattern I can bring up is Robot Mesh's Python API for VEX Robotics (https://www.robotmesh.com/studio), which admits no keyword arguments at all. All of their functions have positional arguments only. I'm teaching VEX IQ with Python to middle-schoolers in my nonprofit work, and the positional-only API design has made it very painful to teach, learn and review each other's work.
So let me look at the updated Tricky programs and propose where I think some keyword arguments could be helpful. :)

Thanks for your messages. I'm glad to see you're enjoying the learning process.
There are indeed some keyword arguments that would be useful to keep, but perhaps there is a right balance somewhere in the middle. For example, left_motor=left_motor or color=Color.RED are probably things we can avoid. I would also encourage to leave out keyword arguments which are the same as the default, such as surface=True. As in the commit above, sometimes a variable/constant can help too, e.g. self.KICKER_SPEED, but this depends a bit on the situation.

which admits no keyword arguments at all

This was the case for Pybricks 1.0 too; we've been adding them ever since 2.0. In Python, you get keyword arguments automatically. When implementing MicroPython libraries in C, you have to do some extra coding such as parsing the arguments and validating their type. Besides the extra work it takes some extra flash, ram, and cpu resources.
Much you like said though, we totally think this is worth it, so we'll keep adding them when we add new functions.

Thanks for your messages. I'm glad to see you're enjoying the learning process.
There are indeed some keyword arguments that would be useful to keep, but perhaps there is a right balance somewhere in the middle. For example, left_motor=left_motor or color=Color.RED are probably things we can avoid. I would also encourage to leave out keyword arguments which are the same as the default, such as surface=True. As in the commit above, sometimes a variable/constant can help too, e.g. self.KICKER_SPEED, but this depends a bit on the situation.

which admits no keyword arguments at all

This was the case for Pybricks 1.0 too; we've been adding them ever since 2.0. In Python, you get keyword arguments automatically. When implementing MicroPython libraries in C, you have to do some extra coding such as parsing the arguments and validating their type. Besides the extra work it takes some extra flash, ram, and cpu resources.
Much you like said though, we totally think this is worth it, so we'll keep adding them when we add new functions.

For example, left_motor=left_motor or color=Color.RED are probably things we can avoid. I would also encourage to leave out keyword arguments which are the same as the default, such as surface=True.

I totally agree -- those can and should be omitted. To make it simple to remember for @AntoniLuongPham, I have taught him to include all arguments explicitly. :) Now I'll step in and help make some judgement on explicit vs. implicit.
We'll try to finalize these programs following your suggestions by this weekend, including rewriting the Basic program without the class.
Btw, we should run linting checks (e.g. Flake8) on these programs as usual, right? In your latest code version, there's one long LOC flagged by the linters.

For example, left_motor=left_motor or color=Color.RED are probably things we can avoid. I would also encourage to leave out keyword arguments which are the same as the default, such as surface=True.

I totally agree -- those can and should be omitted. To make it simple to remember for @AntoniLuongPham, I have taught him to include all arguments explicitly. :) Now I'll step in and help make some judgement on explicit vs. implicit.
We'll try to finalize these programs following your suggestions by this weekend, including rewriting the Basic program without the class.
Btw, we should run linting checks (e.g. Flake8) on these programs as usual, right? In your latest code version, there's one long LOC flagged by the linters.

Btw, we should run linting checks (e.g. Flake8) on these programs as usual, right?

That would be great, thanks. We're also open to suggestions to relaxing particular rules; they're not set in stone. They can be configured here. Especially if we're aiming for somewhat shorter scripts, maybe it does make sense to increase the maximum line length a bit, for example.
Since many users might use it in Pybricks Code, it would also be good to occasionally paste it there to get a feel for how it looks and works.

Btw, we should run linting checks (e.g. Flake8) on these programs as usual, right?

That would be great, thanks. We're also open to suggestions to relaxing particular rules; they're not set in stone. They can be configured here. Especially if we're aiming for somewhat shorter scripts, maybe it does make sense to increase the maximum line length a bit, for example.
Since many users might use it in Pybricks Code, it would also be good to occasionally paste it there to get a feel for how it looks and works.

Dear @laurensvalk,
I have updated the Tricky basic and soccer programs according to your instructions.I have also tested the robot again and it works.
Thank you very much!
Antoni

Dear @laurensvalk,
I have updated the Tricky basic and soccer programs according to your instructions.I have also tested the robot again and it works.
Thank you very much!
Antoni

@laurensvalk, as a checklist, the further changes @AntoniLuongPham has made are as follows:

In reset_kicker_motor, I'm guessing you are using run_time to put the motor all the way to one end. You might want to consider run_until_stalled for this purpose
Done.

If the kick method is already working fine, then feel free to keep as is. But you may be able to kick even faster by using track_target, which skips any acceleration or speed setting and just goes to the target as fast as possible.
Done.

For tricky basics, would it make sense to do it without a class altogether? That could be a good starting point for people who don't know how to use classes yet.
Done.

At a few places, we have added back some keyword arguments to make the code a bit clearer to understand. :)
We will build and program other Tricky variants and submit new PRs, maybe from next weekend.
Thank you again!
Vinh

@laurensvalk, as a checklist, the further changes @AntoniLuongPham has made are as follows:

In reset_kicker_motor, I'm guessing you are using run_time to put the motor all the way to one end. You might want to consider run_until_stalled for this purpose
Done.

If the kick method is already working fine, then feel free to keep as is. But you may be able to kick even faster by using track_target, which skips any acceleration or speed setting and just goes to the target as fast as possible.
Done.

For tricky basics, would it make sense to do it without a class altogether? That could be a good starting point for people who don't know how to use classes yet.
Done.

At a few places, we have added back some keyword arguments to make the code a bit clearer to understand. :)
We will build and program other Tricky variants and submit new PRs, maybe from next weekend.
Thank you again!
Vinh

Thank you! I’ll have a look as soon as possible.
I think you mentioned your YouTube channel a few times. Are you filming these robots as well? It might be pretty cool to have (short and mostly unedited) video snippets that show each demo program in action so people can see if they’ve done it right.

Thank you! I’ll have a look as soon as possible.
I think you mentioned your YouTube channel a few times. Are you filming these robots as well? It might be pretty cool to have (short and mostly unedited) video snippets that show each demo program in action so people can see if they’ve done it right.


A sub-query fails to be unnested and causes panic.

sql:
select l_shipdate from lineitem where l_partkey in (select p_partkey from part join partsupp on p_partkey = ps_partkey and l_partkey = p_partkey and l_suppkey = ps_suppkey);

plan:
 BatchExchange { order: [], dist: Single }
   BatchHashJoin { type: LeftSemi, predicate: $0 = $2, output_indices: [1] }
     BatchExchange { order: [], dist: HashShard([0]) }
       BatchScan { table: lineitem, columns: [l_partkey, l_shipdate] }
     BatchHashJoin { type: Inner, predicate: $0 = $1, output_indices: [0] }
       BatchExchange { order: [], dist: HashShard([0]) }
         BatchFilter { predicate: (CorrelatedInputRef { index: 2, depth: 1 } = $0) }
           BatchScan { table: part, columns: [p_partkey] }
       BatchExchange { order: [], dist: HashShard([0]) }
         BatchProject { exprs: [$0] }
           BatchFilter { predicate: (CorrelatedInputRef { index: 3, depth: 1 } = $1) }
             BatchScan { table: partsupp, columns: [ps_partkey, ps_suppkey] }

cc @likg227

Try to replace the on condition of join with filter.

Yes. There are two approaches to solve this:

add more rules to pull up correlated predicate
Try to push Apply down Join

This first one is relatively simple, but I don't have a plan for it and it need to think carefully what kinds of predicates can  be pulled up.


readme update

Nice module, small mistake on readme file require('mysql-migration');
meant to be require('mysql-migrations');
https://github.com/kawadhiya21/mysql-migrations/blame/master/README.MD#L27

Can we close this issue? It appears as if it has been resolved.


Define text/font properties

Would be fantastic if you could define
font-family: local font family name;
font-style: normal;
font-size: 1rem; (or px)
line-height: 1rem; (or px)
letter-spacing: 0rem; (or px)
font-weight: (set to the local font weight names);

You alluded to support of this in your Medium article with "You have many text layers, and they need to be the same color as some of your shapes, so you need two types of shared styles. Some text needs be a different size, some need to be center aligned, etc. " but I was unable to get it working successfully.
Thanks!  This is an incredible Sketch plugin. :)

Great idea! CSSketch features are usually added as I need them in my Sketch work, or as people contribute. I'm working on an iOS UX kit right now that depends on CSSketch, and I'll see about incorporating these into the kit so that these features get added.

Ur the best ;)

Fantastic!

Sounds AWESOME


Run all parser tests for gzip file

Just extending the TestParsers so all those tests runs for a gz version of the simple.obj file as well.

I really like having proof that the tests passed 😝

"Working for laziness in the future" 👍


set nocompatible not idempotent - setting produces side effects when already set

TL;DR
This seems to be a bug in vim where set nocompatible is not idempotent and doesn't follow the principle of least astonishment.
As a workaround, either:

Ensure that you set nocompatible (or the equivalent set nocp) only once, and at the top of your vimrc.

Don't set it if it's already set:
 if &compatible | set nocompatible | endif " Avoid side effects if `nocp` already set

Explanation and bug illustration
From :help compatible (empahsis mine):

This is a special kind of option, because when it's set or reset,
other options are also changed as a side effect.  CAREFUL: Setting or
resetting this option can have a lot of unexpected effects: Mappings
are interpreted in another way, undo behaves differently, etc.  If you
set this option in your vimrc file, you should probably put it at the
very start.

Note that &viminfo is not listed in the side-effects, however the following lines clearly show the side effect upon &viminfo:
set nocompatible
set viminfo+=nWatch-my-viminfo-file-location-be-ignored
echom &viminfo
set nocompatible " do side effects even though nocomptible is already set
echom 'After 2nd "set nocompatible":'
echom &viminfo

Output:

'100,<50,s10,h,nWatch-my-viminfo-file-location-be-ignored
After 2nd "set nocompatible":
'100,<50,s10,h

vim --version | head -1

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 05 2016 16:48:20)

See also this question on Vi Stackexchange

If you put .vimrc, it should be always nocompatible
See 'compatible'
'compatible' 'cp'	boolean	(default on, off when a |vimrc| or |gvimrc|
					file is found, reset in |defaults.vim|)
			global
			{not in Vi}

So you don't need to set or reset compatible option if you have .vimrc.

I'm reading the default on being related to compatible, meaning that nocompatible defaults to off, implying it needs to be set to use iMproved features.
Either way, re-running the side-effects as illustrated is downright weird.

Hi Tom!
On Do, 29 Sep 2016, Tom Hale wrote:

TL;DR
This seems to be a bug in vim where set nocompatible is not idempotent and doesn't follow the principle of least astonishment.
As a workaround, either:

Ensure that you set nocompatible (or the equivalent set nocp) only once, and at the top of your vimrc.

Don't set it if it's already set:
 if &compatible | set nocompatible | endif " Avoid side effects if `nocp` already set

Explanation and bug illustration
From :help compatible (empahsis mine):

This is a special kind of option, because when it's set or reset,
other options are also changed as a side effect.  CAREFUL: Setting or
resetting this option can have a lot of unexpected effects: Mappings
are interpreted in another way, undo behaves differently, etc.  If you
set this option in your vimrc file, you should probably put it at the
very start.

It says there:
when it's set or rest ... have a lot of unexpected effects ... , etc

Note that &viminfo is not listed in the side-effects, however the following lines clearly show the side effect upon &viminfo:

So the list of changes is not limited to those mentioned.

set nocompatible
set viminfo+=nWatch-my-viminfo-file-location-be-ignored
echom &viminfo
set nocompatible " do side effects even though nocomptible is already set
echom 'After 2nd "set nocompatible":'
echom &viminfo

It's not a good idea to set/reset compatible in your .vimrc several
times for reasons you have quoted above.
Best,
Christian
Letzte Worte eines Henkers:
"Das Fallbeil klemmt? Kein Problem, ich schau mal nach"

For future googlers, I found the quote to support @mattn saying that compatible is off if there's a vimrc further down:

When a |vimrc| or |gvimrc| file is found while Vim is starting up,
this option is switched off, and all options that have not been
modified will be set to the Vim defaults.

Thanks for your time on this @mattn and @chrisbra.
In summary, the important part is (emphasis mine):

Setting or resetting this option can have a lot of unexpected effects


Dev tempdir (fixes #48)

fixes #48

Turns out I can update your branch. to match the new master.

Are you also doing to?

Yes I'm also doing to.


small/hypoplastic middle ear ossicles

Add:
small middle ear ossicles (a child of abnormal middle ear ossicle morphology MP:0005105 )
DEF: reduced size of the three bones of the middle ear
SYN: small middle ear bones
J:83132 J:58093 J:237904
middle ear ossicle hypoplasia
DEF: underdevelopment or reduced size of the three bones of the middle ear, usually due to reduced cell number
SYN: hypoplastic middle ear bones
SYN: hypoplastic middle ear ossicles
J:226497, J:100584 J:214092 J:52575 J:62928
Anna

small middle ear ossicles MP:0030123
middle ear ossicle hypoplasia MP:0030124


Update README.md to "fix" #355

lgtm! I'd love it if you added your name to the Authors list as well. Thanks for the contribution!

I hereby donate all intellectual property of the changes contained in this pull request to the current ts-jest authors, to be licensed as they see fit. I prefer not to be credited for such a trivial change.


Consolidate DevPool Promotional Message

We should consolidate the promotional comment into the permit generation comments.
Promotional message should be an <h6>

Permit generation skipped because assignee is undefined.
If you enjoy the DevPool experience, please follow Ubiquity on GitHub and star this repo to show your support. It helps a lot!

/assign

Hello @pavlovcik ,
Can you tell me which is the  promotional comment?
Do you mean this one? "Permit generation skipped because assignee is undefined."

If you enjoy the DevPool experience, please follow Ubiquity on GitHub and star this repo to show your support. It helps a lot!

Hello @pavlovcik ,
Can you help with an example where I can see this message? Or what should I do to see this message?
The fix should be ok, but I want to test it.
Thanks

Yes it's the bottom half of the original comment/specification

@pavlovcik I see that this has been fixed here? https://github.com/ubiquibot/production/issues/23
I think it was a duplicate, but in the end it was solved


fix(vulnerabilities): update golang

According to prisma cloud go version 1.13.15 has 24 vulnerabilities. An update solves the vulnerabilities.

Closed in favor of https://github.com/titansoft-pte-ltd/imagepullsecret-patcher/pull/33


Switch built-in SSH server to github.com/gliderlabs/ssh

This pull request is the first step towards making the built-in SSH server a good option. As discussed in discord, gliderlabs/ssh does a fairly good job at abstracting away most of the error-prone x/crypto/ssh code while still maintaining the flexibility we need.
A few things worth noting:

The change in cmd/serv.go probably isn't needed (I can revert it if requested), but may be worthwhile anyway. I was using that before I was properly shell escaping command arguments.
The copyright was changed from Gogs to Gitea because almost the entire file was rewritten, mostly from scratch.
There's a TODO in Listen because gliderlabs/ssh doesn't currently support choosing ciphers, key exchanges, and MACs. I'd be happy to open a PR there to get that support in.
It would be really nice if there was a way to use cmd/serv.go directly, rather than having to call it like this. That would allow us to avoid re-escaping command args as they come in.
This now checks the incoming user against setting.SSH.BuiltinServerUser. I don't believe that was done before.

If anyone has a recommended test suite or things they'd like to see tested, please let me know and I will do my best.

CI failed.

Codecov Report

Merging #3896 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #3896   +/-   ##
=======================================
  Coverage   20.16%   20.16%
=======================================
  Files         145      145
  Lines       29171    29171
=======================================
  Hits         5881     5881
  Misses      22395    22395
  Partials      895      895

Continue to review full report at Codecov.

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

Sorry about that. Managed to figure out how to run it locally and fixed the issues I saw - most notably, the BUILTIN_SSH_SERVER_USER option needs to be set and generated URLs use setting.SSH.BuiltinServerUser over setting.RunUser so there was a test which needed to be fixed.

I've been really busy lately but I still plan on updating this. I don't know if I can give a specific date though.

This has been updated to use dep, though there were some oddities with the Godep.lock file which seems like it added something for all existing deps as well. Not sure how that should be handled.

The lock file seems fine. Those additions are probably just from a newer version of dep.

@belak any update?

I'll get that change into gliderlabs/ssh which should let us have the same level of granularity with the internal algorithms (though I'm not 100% we need to expose that) and then fix up the Gopkg files. Is there anything else that needs to be done I'm missing?

My apologies, I completely forgot about this. I'd be happy to clean this up some time this week.

@belak no need to apologize, we appreciate your PR, and I'm the one who should be sorry as we should've done a better job of reviewing your PR sooner.
I'm just going through right now and doing some maintenance patches on older PRs so they aren't conflicted and make it easier for them to get reviewed, so I hope you don't mind that I pushed directly to your branch.

@belak I've just created #7250 which resolves the conflicts from this PR. I am going to close this PR, let me know if you want access to the other PR if you want to make any changes to it. Thank you for the work you did for this PR :)


Add phase banner and breadcrumbs block to layout

Add the phase banner to the top of the site layout, and a block which can be used for breadcrumb navigation.
Screenshots
Before

After

Thanks for taking the time to think about these and add them!  I am a little hesitant to add anything to our code base until we know we need to - both these feel like examples of that?
I am not really sure what phase we are in or if we are even in one yet, so it feels early to add the banner, I would hope we are somewhere in private/public beta territory, but you've gone for pre-alpha - so there is already debate!
Breadcrumbs are often more tricky than they should be (in my experience!), I would question adding anything to the code that implies we have them or users need them until we are confident and can delivery the feature of 'breadcrumbs' we know our users would find helpful.
I know these might feel excesive, but I do feel strongly about keeping the code as lean and simple as we possibly can. Happy to talk about this if helpful.


FEAT: Add UIUCTF write up

Hey guys do not forget to add your write up, here again we can earn some prizes but we only have 7 days to do it.
After merging this issue, you can send the writeup link to:  https://forms.gle/1MSh8X3LJtV7yn29A

@Costinteo do you have anything left to add here?
I pushed my writeups on branch #48 uiuctf.

I don't.


The API doesn't run on IIS 8 and higher

I found that the default value for runAllManagedModulesForAllRequests is false (patch IIS 7 and high) and after deployment to IIS the API doesn't work
So my suggestion is to add it explicitly in Web.config (line 52)

I tried it myself with IIS 10.0 and found that it works. I can call any endpoint including swagger/ui/index.
I've published the project directly to IIS and it runs without any changes in a config file.
Can you add additional details to let me reproduce your problem? Do you use some other modules?

I close the issue as not reproducible but if you have additional information that can help me reproduce the problem feel free to open it again.


Add Pixnews local repository

#148  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @illarionov and the rest of your teammates on  Graphite


Custom TagHandler

Hi!
If a tag is not supported by your library, is there any way to handle it?
Thanks!
Denis

There is no way really. Please modify https://github.com/SufficientlySecure/html-textview/blob/master/HtmlTextView/src/main/java/org/sufficientlysecure/htmltextview/HtmlTagHandler.java and make a pull request with your changes.


Update ReadMe.md

Update docoments

@malik1u While we appreciate our customers wanting to improve our documentation, this pull request does not meet our standards, so I have closed it.


NotImplementedError: Sharded Llama requires Flash Attention enabled models.

command:
text-generation-launcher --model-id LLaMA-13B --disable-custom-kernels --port 6006 --num-shard 2
result:
2023-07-20T12:31:14.506674Z  WARN text_generation_launcher: Could not import Flash Attention enabled models: No module named 'vllm_cache_ops'
NotImplementedError: Sharded Llama requires Flash Attention enabled models.

Seems like you are running older version of text-generation-inference. In the later version v0.9.0, 'vllm' integrstion was added which requires it to be installed along with flash-attn.
You can pull the latest changes and then run cd server && make install-vllm. Re-run the launcher command.

thank you.

Seems like you are running older version of text-generation-inference. In the later version v0.9.0, 'vllm' integration was added which requires it to be installed along with flash-attn. You can pull the latest changes and then run cd server && make install-vllm. Re-run the launcher command.

thank you.

It would be useful to update the Makefile to install this when BUILD_EXTENSIONS=True.


Using filter on List.

I queried the database and got Results object. I used the following to convert it to List because feel that more comfortable:
let listFromResults = List<Type>()
listFromResults.extend(resultObject)

Now when I try to use listFromResults.filter(typeName == 'xyz') I get an error stating This method can only be called on RLMArray instances retrieved from an RLMRealm. Is there any other way to filter List?

You should be filtering the Results -- List instances are only meant to be used as Object properties.

Ok then where does the filter method on List help out for?

When the List is a property on an object that you get from a Realm

ok so suppose I have ToDoItem containing list of comments. Then I can use filter on comments is it so?


Remove :kotlin-dsl dependency from :configuration-cache

It's only used for two extensions and the KotlinScript interfaces and contributes a long time to the build when iterating on unit tests.

Inline useToRun and serviceOf extensions
Introduce GradleScript marker interface to subsume the Script and KotlinScript interfaces

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.

@bot-gradle test this

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test this

OK, I've already triggered ReadyForMerge build for you.


Error generated on doing build iOS

AS031:ios user216454$ ~/Downloads/flutter/bin/flutter build ios
Changing current working directory to: /Users/user216454/Desktop/petsapp_final
Building com.protectiondogs.petsProtection for device (ios-release)...
Automatically signing iOS for device deployment using specified development team in Xcode project:
2Z44XW539A
Running pod install...                                           2,229ms
Running Xcode build...
Xcode build done.                                           38.8s
Failed to build iOS app
Error output from Xcode build:
↳
objc[69653]: Class AMSupportURLConnectionDelegate is implemented in both /usr/lib/libamsupport.dylib
(0x2027d7678) and
/Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice
(0x1085bc2c8). One of the two will be used. Which one is undefined.
objc[69653]: Class AMSupportURLSession is implemented in both /usr/lib/libamsupport.dylib
(0x2027d76c8) and
/Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice
(0x1085bc318). One of the two will be used. Which one is undefined.
** BUILD FAILED **
Xcode's output:
↳
Writing result bundle at path:
/var/folders/ky/rhsjstfd2xd5r_x9h96fkmrm0000hs/T/flutter_tools.ZYBjaz/flutter_ios_build_temp_dir7wY2
sj/temporary_xcresult_bundle
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/webview_flutter_wkwebview-2.7.
1/ios/Classes/FlutterWebView.m:575:23: warning: 'requiresUserActionForMediaPlayback' is deprecated:
first deprecated in iOS 10.0 [-Wdeprecated-declarations]
        configuration.requiresUserActionForMediaPlayback = true;
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      mediaTypesRequiringUserActionForPlayback
In module 'WebKit' imported from
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/webview_flutter_wkwebview-2.7.
1/ios/Classes/FlutterWebView.h:6:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sd
k/System/Library/Frameworks/WebKit.framework/Headers/WKWebViewConfiguration.h:218:28: note:
'requiresUserActionForMediaPlayback' has been explicitly marked deprecated here
@property (nonatomic) BOOL requiresUserActionForMediaPlayback
API_DEPRECATED_WITH_REPLACEMENT("mediaTypesRequiringUserActionForPlayback", ios(9.0, 10.0));
                           ^
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/webview_flutter_wkwebview-2.7.
1/ios/Classes/FlutterWebView.m:587:23: warning: 'requiresUserActionForMediaPlayback' is deprecated:
first deprecated in iOS 10.0 [-Wdeprecated-declarations]
        configuration.requiresUserActionForMediaPlayback = false;
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      mediaTypesRequiringUserActionForPlayback
In module 'WebKit' imported from
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/webview_flutter_wkwebview-2.7.
1/ios/Classes/FlutterWebView.h:6:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sd
k/System/Library/Frameworks/WebKit.framework/Headers/WKWebViewConfiguration.h:218:28: note:
'requiresUserActionForMediaPlayback' has been explicitly marked deprecated here
@property (nonatomic) BOOL requiresUserActionForMediaPlayback
API_DEPRECATED_WITH_REPLACEMENT("mediaTypesRequiringUserActionForPlayback", ios(9.0, 10.0));
                           ^
2 warnings generated.
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.8.4+10/ios/Clas
ses/FLTImagePickerPhotoAssetUtil.m:17:44: warning: 'UIImagePickerControllerReferenceURL' is
deprecated: first deprecated in iOS 11.0 - Will be removed in a future release, use PHPicker.
[-Wdeprecated-declarations]
  NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
                                           ^
In module 'UIKit' imported from /Users/user216454/Desktop/petsapp_final/ios/Pods/Target Support
Files/image_picker/image_picker-prefix.pch:2:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sd
k/System/Library/Frameworks/UIKit.framework/Headers/UIImagePickerController.h:62:51: note:
'UIImagePickerControllerReferenceURL' has been explicitly marked deprecated here
UIKIT_EXTERN UIImagePickerControllerInfoKey const UIImagePickerControllerReferenceURL
API_DEPRECATED("Will be removed in a future release, use PHPicker.", ios(4.1, 11.0))
API_UNAVAILABLE(tvos); // an NSURL that references an asset in the AssetsLibrary framework
                                                  ^
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.8.4+10/ios/Clas
ses/FLTImagePickerPhotoAssetUtil.m:21:47: warning: 'fetchAssetsWithALAssetURLs:options:' is
deprecated: first deprecated in iOS 11 - Will be removed in a future release
[-Wdeprecated-declarations]
  PHFetchResult<PHAsset *> *result = [PHAsset fetchAssetsWithALAssetURLs:@[ referenceURL ]
                                              ^
In module 'Photos' imported from
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.8.4+10/ios/Clas
ses/FLTImagePickerPhotoAssetUtil.h:6:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sd
k/System/Library/Frameworks/Photos.framework/Headers/PHAsset.h:77:1: note:
'fetchAssetsWithALAssetURLs:options:' has been explicitly marked deprecated here
+ (PHFetchResult<PHAsset *> *)fetchAssetsWithALAssetURLs:(NSArray<NSURL *> *)assetURLs
options:(nullable PHFetchOptions *)options API_DEPRECATED("Will be removed in a future release",
ios(8, 11), tvos(8, 11)) API_UNAVAILABLE(macos);
^
2 warnings generated.
/Users/user216454/Desktop/petsapp_final/ios/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCu
stomBrowser.m:148:42: warning: 'openURL:' is deprecated: first deprecated in iOS 10.0
[-Wdeprecated-declarations]
      [[UIApplication sharedApplication] openURL:_appStoreURL];
                                         ^~~~~~~
                                         openURL:options:completionHandler:
In module 'UIKit' imported from /Users/user216454/Desktop/petsapp_final/ios/Pods/Target Support
Files/AppAuth/AppAuth-prefix.pch:2:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sd
k/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:124:1: note: 'openURL:' has been
explicitly marked deprecated here
- (BOOL)openURL:(NSURL*)url API_DEPRECATED_WITH_REPLACEMENT("openURL:options:completionHandler:",
ios(2.0, 10.0)) NS_EXTENSION_UNAVAILABLE_IOS("");
^
/Users/user216454/Desktop/petsapp_final/ios/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOSCu
stomBrowser.m:156:61: warning: 'openURL:' is deprecated: first deprecated in iOS 10.0
[-Wdeprecated-declarations]
  BOOL openedInBrowser = [[UIApplication sharedApplication] openURL:requestURL];
                                                            ^~~~~~~
                                                            openURL:options:completionHandler:
In module 'UIKit' imported from /Users/user216454/Desktop/petsapp_final/ios/Pods/Target Support
Files/AppAuth/AppAuth-prefix.pch:2:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sd
k/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:124:1: note: 'openURL:' has been
explicitly marked deprecated here
- (BOOL)openURL:(NSURL*)url API_DEPRECATED_WITH_REPLACEMENT("openURL:options:completionHandler:",
ios(2.0, 10.0)) NS_EXTENSION_UNAVAILABLE_IOS("");
^
2 warnings generated.
/Users/user216454/Desktop/petsapp_final/ios/Pods/AppAuth/Source/AppAuth/iOS/OIDExternalUserAgentIOS.m
:168:58: warning: 'openURL:' is deprecated: first deprecated in iOS 10.0 [-Wdeprecated-declarations]
    openedUserAgent = [[UIApplication sharedApplication] openURL:requestURL];
                                                         ^~~~~~~
                                                         openURL:options:completionHandler:
In module 'UIKit' imported from /Users/user216454/Desktop/petsapp_final/ios/Pods/Target Support
Files/AppAuth/AppAuth-prefix.pch:2:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sd
k/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:124:1: note: 'openURL:' has been
explicitly marked deprecated here
- (BOOL)openURL:(NSURL*)url API_DEPRECATED_WITH_REPLACEMENT("openURL:options:completionHandler:",
ios(2.0, 10.0)) NS_EXTENSION_UNAVAILABLE_IOS("");
^
1 warning generated.
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_ios-2.2.0/ios/Classes/S
tripe Sdk/Mappers.swift:372:25: warning: expression implicitly coerced from 'String?' to 'Any'
                "type": mapFromPaymentIntentLastPaymentErrorType(lastPaymentError.type),
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_ios-2.2.0/ios/Classes/S
tripe Sdk/Mappers.swift:372:25: note: provide a default value to avoid this warning
                "type": mapFromPaymentIntentLastPaymentErrorType(lastPaymentError.type),
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                                ?? <#default
                                                                                value#>
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_ios-2.2.0/ios/Classes/S
tripe Sdk/Mappers.swift:372:25: note: force-unwrap the value to avoid this warning
                "type": mapFromPaymentIntentLastPaymentErrorType(lastPaymentError.type),
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                                !
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_ios-2.2.0/ios/Classes/S
tripe Sdk/Mappers.swift:372:25: note: explicitly cast to 'Any' with 'as Any' to silence this warning
                "type": mapFromPaymentIntentLastPaymentErrorType(lastPaymentError.type),
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                                as Any
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_ios-2.2.0/ios/Classes/B
ridge/RCTBridge.m:26:17: warning: property 'requiresMainQueueSetup' requires method
'requiresMainQueueSetup' to be defined - use @dynamic or provide a method implementation in this
category [-Wobjc-property-implementation]
@implementation NSObject (React)
                ^
In file included from
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_ios-2.2.0/ios/Classes/B
ridge/RCTBridge.m:1:
/Users/user216454/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_ios-2.2.0/ios/Classes/B
ridge/RCTBridge.h:57:46: note: property declared here
@property (nonatomic, assign, readonly) BOOL requiresMainQueueSetup;
                                             ^
1 warning generated.
/Users/user216454/Desktop/petsapp_final/ios/Runner/Runner-Bridging-Header.h:1:9: note: in file
included from /Users/user216454/Desktop/petsapp_final/ios/Runner/Runner-Bridging-Header.h:1:
#import "GeneratedPluginRegistrant.h"
        ^
/Users/user216454/Desktop/petsapp_final/ios/Runner/GeneratedPluginRegistrant.h:10:9: error:
'Flutter/Flutter.h' file not found
#import <Flutter/Flutter.h>
        ^
1 error generated.
<unknown>:0: error: failed to emit precompiled header
'/Users/user216454/Library/Developer/Xcode/DerivedData/Runner-deqxwsvdcjdumqekcuhxlvrvqyay/Build/Inte
rmediates.noindex/PrecompiledHeaders/Runner-Bridging-Header-swift_1Q0BJ2SQ1PZ63-clang_1ZLHARAZBJRRS.p
ch' for bridging header '/Users/user216454/Desktop/petsapp_final/ios/Runner/Runner-Bridging-Header.h'
/Users/user216454/Desktop/petsapp_final/ios/Runner/Runner-Bridging-Header.h:1:9: note: in file
included from /Users/user216454/Desktop/petsapp_final/ios/Runner/Runner-Bridging-Header.h:1:
#import "GeneratedPluginRegistrant.h"
        ^
2 errors generated.
error: generate-pch command failed with exit code 1 (use -v to see invocation)
note: Using new build system
note: Planning
note: Build preparation complete
note: Building targets in dependency order

Result bundle written to path:
    /var/folders/ky/rhsjstfd2xd5r_x9h96fkmrm0000hs/T/flutter_tools.ZYBjaz/flutter_ios_build_temp_dir7wY2
    sj/temporary_xcresult_bundle

Error (Xcode): 'Flutter/Flutter.h' file not found
/Users/user216454/Desktop/petsapp_final/ios/Runner/GeneratedPluginRegistrant.h:9:8
Error (Xcode): failed to emit precompiled header
'/Users/user216454/Library/Developer/Xcode/DerivedData/Runner-deqxwsvdcjdumqekcuhxlvrvqyay/Build/Intermed
iates.noindex/PrecompiledHeaders/Runner-Bridging-Header-swift_1Q0BJ2SQ1PZ63-clang_1ZLHARAZBJRRS.pch' for
bridging header '/Users/user216454/Desktop/petsapp_final/ios/Runner/Runner-Bridging-Header.h'
Encountered error while building for device.

Im using a virtual machine with following configurations-Mac mini (M1, 2020),Apple M1

???

I also use VM for iOS build works for me, check if your package dependencies are mentioned in pods and other XCode requirement. Also check Storage limit during build

@poltustein
Can you provide flutter doctor -v  and flutter build ios --verbose in a text file ? Also provide your ios/podfile and ios/Runner.xcodeproj/project.pbxproj.
Make sure all the plugin dependencies you are using are updated to the latest available versions.


Make it clearer that "minimumInputLength" should be set as a Select2 option

See https://github.com/select2/select2/issues/38

@hartator Please, change the destination branch to develop.


Lance / Burn sub-dependency conflict on half version

Hello Lance team. I'm going through some burn tutorials (Rust deep learning framework) and wanted to take a stab at data loading from a Lance table. Unfortunately there's a sub-crate dependency conflict between burn-core and lance on half (burn wants ^2.4.1, lance wants =2.3.1).
https://github.com/lancedb/lance/pull/1450 is where the last version bump happened. Is there a reason it's pinned exactly? Can we loosen that restriction? FWIW I did try unpinning the exact match and bumping half up to 2.4.1 and cargo-test passed, if you want that as a PR.
Thanks, appreciate all the work on the project!

Yeah I frankly have no idea why it's pinned. I'm open to a PR to un pin it.


Enable TagHelpers to be used inside of HelperResults.

The corresponding Razor change results in HelperResults being rendered with async lambdas.
This change enables TagHelpers and other async code to exist inside of HelperResult blocks.
Added test to validate Templates (they generate HelperResults) can utilize TagHelpers correctly.
Rename RazorPages RenderBodyDelegate to RenderBodyDelegateAsync.

aspnet/Razor#494

/cc @pranavkm

Addressed @rynowak's [comment] (https://github.com/aspnet/Mvc/pull/3029#discussion_r37799236).

:shipit:


Lots Of Issues

-Caracthers With Antialaising Even If The Opition Is Off
-What The Heck You Did To The Arrows
-Replay Just Does Not Work
-The Sprites For The Caracthers Looks Like Gifs (Maybe Because Off Antialaising)
-Theres Just Left , Right And Down Note Colors When Colors By Quantization Is On (Actually Theres For Up But In Low Freq)
-When You Die On Replays (Something That Sould Not Happen) You Go Back To The Freeplay Menu
-Please Nerf Your Test
-You Got To Make The Notes Change Colors But You Did Not For When They Get Hit (Colors By Quantization)

-No Background Dancers For Week 4
-No Background Freaks For Week 6
-No Windows Changing Colors For Week 3
-No UpperBop Or BottomBop
-Caracthers With Antialaising Even If The Opition Is Off
-What The Heck You Did To The Arrows
-Replay Just Does Not Work
-No Lighting For Week 2
-The Sprites For The Caracthers Looks Like Gifs
-Theres Just Left , Right And Down Note Colors When Colors By Quantization Is On (Actually Theres For Up But In Low Freq)
-When You Die On Replays (Something That Sould Not Happen) You Go Back To The Freeplay Menu
-Please Nerf Your Test
-You Got To Make The Notes Change Colors But You Did Not For When They Get Hit (Colors By Quantization)

make sure you have optimizations off and distractions on

-No Background Dancers For Week 4
-No Background Freaks For Week 6
-No Windows Changing Colors For Week 3
-No UpperBop Or BottomBop
-Caracthers With Antialaising Even If The Opition Is Off
-What The Heck You Did To The Arrows
-Replay Just Does Not Work
-No Lighting For Week 2
-The Sprites For The Caracthers Looks Like Gifs
-Theres Just Left , Right And Down Note Colors When Colors By Quantization Is On (Actually Theres For Up But In Low Freq)
-When You Die On Replays (Something That Sould Not Happen) You Go Back To The Freeplay Menu
-Please Nerf Your Test
-You Got To Make The Notes Change Colors But You Did Not For When They Get Hit (Colors By Quantization)

make sure you have optimizations off and distractions on

There’s no distractions in the latest build

oh i see, i already updated the issues

Its also a pain in the ass for coding. Added a bunch of code and it started crashing, removed that code and kade still crashed. Fml. Kade. please help.


[docs] Window show, hide, minimize, maximize, unmaximize, setAlwaysOnTop, setFullScreen etc

First of all, I wanna say, I've been using ElectronJS before. But now using Tauri. So far, I'm loving it. Thank you so much for creating Tauri.
( I'm not really sure, where to put this issue, whether in DOCS or FEATURE REQUEST )
So, I actually made a Pomodoro app for me to force myself every 25 minutes to take a break using ElectronJS. I've been so frustrated about how much RAM/CPU ElectronJS app takes. So, I'm trying to port it into Tauri. Here's the source to the Pomodoro app: https://github.com/p32929/PotatoTimer/
So, the problem is:
in the pomodoro app, to force myself to take a break, I used these ElectronJS APIs:
currentWindow.show()
currentWindow.hide()
currentWindow.maximize()
currentWindow.unmaximize()
currentWindow.minimize()
currentWindow.setAlwaysOnTop(bool)
currentWindow.setFullScreen(bool)

But I can't seem to find these APIs in Tauri docs ( https://tauri.studio/en/docs/api/js ).
So my question is basically, how to implement the above mentioned functions ( ElectronJS API equivalents ) in Tauri apps?
Thanks

Hey @p32929 , thanks for your request!
Just moving it to the appropriate repo. :)


Add opaleye-trans package.

This adds the opaleye-trans package.
Heads up to @WraithM.

Is opaleye in stackage?

@WraithM Opaleye is in stackage.
https://www.stackage.org/lts-5.15/package/opaleye-<IP_ADDRESS>
It looks like this is failing to build because the constraints on the product-profunctors package in opaleye-trans are too strict.
However, this has recently been fixed with the opaleye-trans package.
@WraitM, would you be able to release a new version of the opaleye-trans package that contains the updated version bounds for product-profunctors?

Okay, the 0.3.2 version of opaleye-trans has been released.  So this should build now.
Is there some way to trigger a travis-ci rebuild?  Should I just rebase this commit to the current master and force push?

a (force) push triggers a rebuild.

@bergmark Thanks.  Looks like this is building cleanly.


[Social] Not allowing to view Sexual Partners without check-in

Actual Results
The system is not allowing to see recorded sexual partners info of the patient before chackin
Expected results
The system should allow to view sexual partners records without checkin but prevent additional
Steps to reproduce
Login > Social module > Search and select a patient not checked-in yet > Sexual partners
Screenshot/Attachment (Optional)
A visual description of the unexpected behaviour.

I think the system should also prevent for remove the sexual partners if  the user has not checked in. @valvijo  and @ynurmahomed , what do you think about?


chore: ping ci

Please do not create a pull request without creating an issue first.
Changes need to be discussed before proceeding, pull requests submitted without linked issues may be rejected.
Please provide enough information so that others can review your pull request. You can skip this if you're fixing a typo – it happens.

[ ] I have added tests to tests to cover my changes.
[ ] I have updated docs/, if necessary.
[ ] I have updated the README.md, if necessary.

What existing issue does this pull request close?
Put closes #issue-number in this pull request's description to auto-close the issue that this fixes.
How are these changes tested?
This pull request includes automated tests for the code it touches and those tests are described below. If no tests are included, reasons why must be provided below.
These changes are tested with [...]
Demonstration
Demonstrate your contribution.
For example, what are the exact commands you ran and their output, related screenshots, screen-recordings, test runs, anything that can showcase.
Provide additional context.
Provide as much relevant context as you like.

Codecov Report

Merging #651 (85f2b9c) into main (ee04c99) will decrease coverage by 0.02%.
The diff coverage is 97.57%.

@@            Coverage Diff             @@
##             main     #651      +/-   ##
==========================================
- Coverage   84.34%   84.33%   -0.02%
==========================================
  Files         167      167
  Lines       13274    13303      +29
==========================================
+ Hits        11196    11219      +23
- Misses       2078     2084       +6

Impacted Files
Coverage Δ

tests/test_utils/data_utils.py
96.96% <80.00%> (ø)

dataquality/core/_config.py
93.83% <81.25%> (-1.88%)
:arrow_down:

tests/integrations/spacy/test_spacy_ner.py
91.33% <90.00%> (-0.30%)
:arrow_down:

tests/integrations/keras/test_experimental.py
99.20% <90.90%> (-0.80%)
:arrow_down:

dataquality/loggers/base_logger.py
91.24% <100.00%> (ø)

dataquality/utils/dq_logger.py
95.08% <100.00%> (ø)

tests/clients/test_api.py
100.00% <100.00%> (ø)

tests/conftest.py
99.15% <100.00%> (+0.10%)
:arrow_up:

tests/core/test_finish.py
100.00% <100.00%> (ø)

tests/core/test_init.py
99.12% <100.00%> (ø)

... and 18 more

... and 2 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Not able to figure out how to use substitutions

Here I paste the code I'm using to try to send substitutions. The email is sent with the template. The issue is I have in the template a :variable and -variable- and they are not replaced.
What am I missing? Thanks
var mailer = require('sendgrid')(process.env.SENDGRID_KEY);
var request = mailer.emptyRequest({
method: 'POST',
path: '/v3/mail/send'});
request.body = {
"from": {
"email"<EMAIL_ADDRESS>"name": "Test"
},
"subject": "Hello, World!",
"template_id": "80d243b2-383a-4378-9414-a94b824fa0e3",
"personalizations": [
{
"to": [{
"email"<EMAIL_ADDRESS>"name": "John Doe"
}],
"sub": {
":variable": [
"TEST"
],
"-variable-": [
"TEST"
]
},
"filters": {
"templates": {
"settings": {
"enable": 1,
"template_id": "80d243b2-383a-4378-9414-a94b824fa0e3",
}
}
}
}
]
}
mailer.API(request, function (error, response) {
console.log(response.statusCode)
console.log(response.body)
console.log(response.headers)
});

Please try replacing 'sub' with 'substitutions', please see https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/mail/mail.js
Thanks!

@thinkingserious I did and now I get a Bad Request without mucho more info:
`var request = mailer.emptyRequest({
method: 'POST',
path: '/v3/mail/send'});
request.body = {
"from": {
"email"<EMAIL_ADDRESS>"name": "Avi-on Test"
},
"subject": "Hello, World!",
"template_id": "80d243b2-383a-4378-9414-a94b824fa0e3",
"personalizations": [
{
"to": [{
"email"<EMAIL_ADDRESS>"name": "John Doe"
}],
"substitutions": {
":variable": [
"TEST"
],
"-variable-": [
"TEST"
]
}
}
]
}
mailer.API(request, function (error, response) {
console.log(response.statusCode)
console.log(response.body)
console.log(response.headers)
});`

I found the solution. I have to say: the documentation is far from clear. Thanks, @thinkingserious

Glad you figured it out @blanchma!
We are working on an update to the docs, especially for templates.
Is there anything specific you want us to make sure to cover?
Thanks!

@thinkingserious Right now I'm migrating from mailchimp (who have a beautiful node library but we have problems to get out of black list) to sendgrid and for the moment the only inconvenient was substitutions in templates. Maybe later on I'll have more questions that would be great to be adressed in future doc's updates .

We look forward to your feedback! Please feel free to open issues here as needed.
Welcome aboard!

I'm trying to figure out the same thing.  What was the solution?

@dan335,
Can you share your code with us?

I got it working.  substitutions: {name:var} in the personalizations worked.  I never could get sections to work but don't need it anymore.

Thanks for following up @dan335!


Realm name is sometimes displayed in profile/standings windows

Sometimes when hovering out of table row. Related to DoCellUpdate changes.
v5.x.x

Only affects rows with background

Completed with #567


is there an END for bots?

Hello,
is it possible to "end" a bot after beginning it?
i'd like to be able to enable/disable bot in runtime, is it possible?
thanks

Not explicit, but you can simply stop calling the method getNewMessages().
After a while the connection will be closed from server side, and when you need again will be reopened from bot.

ok so without calling the getNewMessage() the bot is not exchanging anything with the server, right? thank you!

Exactly!


Fix out of the box local dev build

Currently the out of the box build docker-compose up --build breaks for the following reason:

old pip version (fixed with a pip install --upgrade)
requirements-dev.txt references requirements.txt which isn't copied to the folder yet (fixed by reordering copy)

looks good, thanks!


RFC: add support for querying whether an array library/device supports subnormal numbers

Overview
The handling of subnormal numbers has come up a few times since the beginning of the Consortium:

https://github.com/data-apis/array-api/issues/131
https://github.com/data-apis/array-api/issues/339
https://github.com/data-apis/array-api/pull/341
https://github.com/data-apis/array-api/pull/703

and is more generally specified as part of IEEE 754, the standard for floating-point numbers.
In short, support for subnormal numbers is likely to vary across conforming array libraries due to hardware constraints and/or configuration. For example, some devices support flushing subnormal numbers to zero for increased performance or for improving security by thwarting timing attacks.
Given this variability, array library consumers don't have a standardized mechanism for determining whether a library and/or device supports subnormal numbers. Knowing whether a library has subnormal support can be beneficial for those libraries concerned about accuracy in the computation of transcendental functions and other domains.
Proposal
This RFC proposes to add support to the inspection API for querying whether an array library/device supports subnormal numbers. Specifically, this RFC proposes updating info.capabilities to support an optional device argument (similar to info.default_dtypes):
def capabilities(*, device: Optional[device] = None) -> Capabilities

Currently, the info.capabilities API is a nullary function returning a fixed object. This RFC proposes allowing that to remain the default behavior, while extending it to support device-specific capabilities.
This RFC proposes adding the following field to the dictionary returned by info.capabilities():
{
  ...
  "max rank": Optional[int],
+ "subnormals": bool
}

When device is None, the value assigned to subnormals should correspond to the default device. When a device is specified, the value should indicate whether subnormals are supported on that particular device.
With this API in place, downstream libraries could query whether a conforming array library and a particular device support subnormal numbers.
Questions

In https://github.com/data-apis/array-api/issues/339#issuecomment-973047723, another proposal was adding a field to finfo along the lines of is_subnormal_zero to handle the case where smallest_normal and smallest_subnormal are equal. Are the changes in this RFC a better alternative?

Another way for array consuming libraries to check for subnormal support is to perform a calculation which should return a subnormal number (e.g., 2.25e-308/100.0 > 0.0). If the result is greater than zero, you have your answer. While not elegant, certainly doable, and array consuming libraries can always write a small helper function to query whenever creating arrays assigned to particular devices. Would the ability to use a dedicated inspection API as proposed in this RFC be more desirable?

One question that came to mind: what about partial support? If you vendor or depend on some third-party libraries for example, one of which has a "flush to zero" flag (-ftz) in its build config and the other doesn't?
Similarly, what about dtype-specific support? That seems to be the default on CUDA; https://docs.nvidia.com/cuda/floating-point/index.html#compiler-flags says that -ftz affects float32 but not float64.

Another way for array consuming libraries to check for subnormal support is to perform a calculation which should return a subnormal number

Given that the behavior may be device/dtype/function-specific, doing a calculation for the actual operation that is relevant seems more robust.


Documentation of the upgrade path from earlier versions

I have three control-planes with kube-vip 0.3.0 and trying to figure how to upgrade to newer versions while running the cluster. I cannot find any documentation on how to do that.
It would be a great advantage getting an upgrade path to the new versions.

Same here, trying to upgrade to 0,5 without re-installing the cluster. Do we need to regenerate the manifest ?  Replace the file /etc/kubernetes/manifests/kube-vip.yaml ? and then reboot the node ?
Sorry for not being brave enough for trying......

long story short:

re-run the container that generate the manifest in  /etc/kubernetes/manifests/kube-vip.yaml
wait for K8S to notice the change and re-create the container
repeat for each node

sudo bash
export VIP=<IP_ADDRESS>
export INTERFACE=enp0s31f6
KVVERSION=$(curl -sL https://api.github.com/repos/kube-vip/kube-vip/releases | jq -r ".[0].name")
alias kube-vip="docker run --network host --rm ghcr.io/kube-vip/kube-vip:$KVVERSION"
kube-vip manifest pod \
    --interface $INTERFACE \
    --address $VIP \
    --controlplane \
    --services \
    --arp \
    --servicesElection \
    --leaderElection | tee /etc/kubernetes/manifests/kube-vip.yaml

Apologies.. Being a bit slow from the Christmas break.. There should be no issue just recreating the manifests.. the leaderElection code will handle the changing of the underlying kube-vip pods.

Thanks a lot: it worked perfectly!


contrib/terraform/aws: Make path to generated inventory configurable

This will allow the user to change the path to where the generated ansible inventory is placed

ci check this


[Watershed Extents]: SAD Request for Entire Division

Per email from @FHanbali
sad.zip

deployed to:

[ ] develop
[ ] stable

@FHanbali This is complete and deployed.  It is listed under the NAD in the UI.


scrollable drawer

Cosmetics:

Scrollable drawer
Nav rail alignment & dialog colors (dynamic depends on the theme)
Notification dynamic colors.
Translations

wow the lang code is huge.
in v3 i have a change where we keep the json on the server, embedded and then feed them the json when they change languages. will make the initial pwa download much smaller.


Stable

Issues associated with this PR
Your PR should present related issues you want to solve.
Sign the CLA
Make sure you have signed the CLA
Solutions
You should show your solutions about the issues in your PR, including the overall solutions,
details and the changes. At this time, Chinese is allowed to describe these.
UT result
Unit Test is needed if the code is changed, your unit test should cover boundary cases, corner cases, and some exceptional cases.
And you need to show the ut result.
Benchmark
If your code involves the processing of every request, you should give the Benchmark Result
Code Style

Make sure Goimports has run
Show Golint result

Codecov Report

Merging #853 into master will increase coverage by 0.14%.
The diff coverage is 40.86%.

@@            Coverage Diff             @@
##           master     #853      +/-   ##
==========================================
+ Coverage    55.5%   55.65%   +0.14%
==========================================
  Files         232      234       +2
  Lines       23625    23771     +146
==========================================
+ Hits        13114    13230     +116
- Misses       9309     9329      +20
- Partials     1202     1212      +10

Impacted Files
Coverage Δ

pkg/upstream/cluster/host.go
61.9% <ø> (ø)
:arrow_up:

pkg/types/network.go
0% <ø> (ø)
:arrow_up:

pkg/config/load_config.go
0% <ø> (ø)
:arrow_up:

pkg/types/upstream.go
59.37% <ø> (ø)
:arrow_up:

pkg/router/routers_manager.go
69.69% <ø> (-0.31%)
:arrow_down:

pkg/metrics/shm/zone.go
69.23% <ø> (+3.37%)
:arrow_up:

pkg/filter/network/tcpproxy/proxy.go
15.31% <0%> (ø)
:arrow_up:

pkg/server/adapter.go
64.7% <0%> (-1.97%)
:arrow_down:

pkg/mtls/conn.go
25.6% <0%> (ø)
:arrow_up:

pkg/router/factory.go
88.37% <0%> (-4.66%)
:arrow_down:

... and 47 more

Continue to review full report at Codecov.

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


Allow for case sensitive flags to be defined

Overview
Currently, all flags are lower-cased in the Dashboard when created. For various reasons (see below), some users want to be able to store case sensitive flags.
We originally decided to store and evaluate flags without caring for their case, as we thought it could introduce bugs, but we have had several requests for this.
Implementation
Have a per Project setting (that defaults to off) that allow flags to be stored in a case-sensitive way.
Questions

If flags are stored with case sensitivity, should they be evaluated with case sensitvity? Is flag_a the same as FLAG_A ? Should you be able to store both of these flags?
Same for flag evaluation? If I store flag_a in the dashboard, and then in an SDK do flagsmith.getFlagValue("FLAG_A") - what should happen?

Reasons why case sensitive flags are helpful

When unmarshalling flagsmith JSON into an in-memory data structure, it can be beneficial for case sensivity to be preserved.
From another user: "When we sync the toggles back from Flagsmith to our on-prem sites, we need the toggles with the appropriate upper/lower cases.This ensures other consumers of the toggles in our system will work properly."

Hi

in our case we should not distinguish between flag_a and FLAG_A, for us its the same feature toggle.
flagsmith.getFlagValue("FLAG_A") should return the same result as flagsmith.getFlagValue("flag_a").

Suggest that flags are stored in a case sensitive manner, but evaluated ignoring the case. As examples:

In the dashboard, you would not be able to create bothflag_a and FLAG_A or indeed flag_A as they are all equivalent
In the SDKs, getFlagValue("FLAG_A") would be equivalent to getFlagValue("flag_a")

Front end can use the field named only_allow_lower_case_feature_names to control this.
ps: this is available in staging

Will be live under the flag case_sensitive_flags

Keeping open now until we decide to enable the flag.


Add my-ip extension

Description

Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Hi 👋
Thanks for your contribution 🔥
Did you see this extension before building your own? It might already provide what you need.


Adds support for custom ThriftWritable type to ThriftWritableConverter

Existing ThriftWritableConverter uses ThriftWritable directly, even if user
specifies derived ThriftWritableType. This can lead to a runtime error when
creating a SequenceFile, as the SequenceFile writer is handed a Writable of
unexpected type. For example:
pair = LOAD '$INPUT' as (id: int, my_thrift_data);
STORE pair INTO '$OUTPUT' USING com.twitter.elephantbird.pig.store.SequenceFileStorage (
  '-t org.apache.hadoop.io.IntWritable    -c com.twitter.elephantbird.pig.util.IntWritableConverter',
  '-t my.custom.thrift.ThriftTypeWritable -c com.twitter.elephantbird.pig.util.ThriftWritableConverter -- my.custom.thrift.Type'
);

This commit fixes the issue by updating
ThriftWritableConverter.initialize(Class<? extends ThriftWritable<M>> writableClass) to keep track of specified Writable impl class, and uses this
when available, instead of using ThriftWritable directly.

This feature is now covered by latest commits to https://github.com/kevinweil/elephant-bird/pull/89


External IDs for Account schema

Issue/Task Number: T147
Overview
This PR adds the ability to add and autogenerate value for the external_id field to schemas. Starting with the Account.
Another PR will follow with the rest of the schemas.
Changes

Add omisego/ex_ulid as a dependency of EWalletDB
Create a new EWalletDB.Types.ExternalID to support this new Ecto custom type
Add an external_id/1 macro that allows easy adding of ExternalID to schemas.
Add external_id to Account schema

Implementation Details
Background
As the number and complexity of schemas grow, we have lots of schemas that have their IDs in UUID format. Although UUIDs are easily recognisable and guarantees (high probability of) uniqueness, it does not describe what schema it identifies, and thus makes it hard to trace/determine what the ID represents.
Format
"sym_" <> ulid

example> acc_01C9VBWZ92NC2ERZ24DFYS32PV

sym = the schema's symbol, e.g. mtk for minted tokens. The symbol is always 3 characters

ulid =  a generated ULID according to ULID spec

This allows the external ID to be visually identifiable of its schema, as well as being sortable by creation time.
Underscores as a separator

Clearly separates the symbol from the content following it, making it easier to parse by the eyes.
Does not rely on the string length. So if we need to add service/node address in the future, or any other data, we could use another underscore to separate the data e.g, dsym_address_content (d = decentralized?), v1_sym_content for versioning, etc.
Text highlighting considers underscore a part of a word, not a word separator!

Schemas with external IDs

Account: act_
API Key: api_
Auth Token: atk_
Access Key: key_
Mint: mnt_
User: usr_
Transaction request: txr_
Transaction request consumption: txc_
Transfer: tfr_

Schemas without external IDs
Some schemas are internally only or disposable (used only once or not for very long). These will not have external IDs:

Forget password request (disposable)
Invite (disposable)
Membership (internal)
Role (uses name)
Balance (uses address)
Minted token (uses friendly_id)

Technical info
ExULID.Ecto.ULID is not used and instead EWalletDB.Types.ExternalID is created because the ExULID module generates pure ULIDs, while our use case is to have the External ID contains schema symbols along with the ULID, thus it had to be implemented on top of ExULID.ULID as Ecto string primitives.
The external_id is then applied to Account schema first. A separate PR will follow with all the rest.
Schema.get/2 still relies on internal ID because it needs to deal with permission checking and other code relies on it. It will also affect API requests. And so it could easily be its own PR.
Usage
All responses that return accounts should return an external_id attribute for each returned object.
To search for an account with a specific external ID, use "search_terms": {"external_id": "acc_12345...".
Impact
Run mix ecto.migrate after code is deployed.

@unnawut Aren't the external IDs supposed to replace the value of the IDs in all external communication? Having two IDs is quite confusing, how to know which one to use when I receive a JSON response?

@T-Dnzt Updated!

Also to be added to this PR: external IDs all in lower case


History bitcoin not show

I trying setup an peatio exchange, i trying sended a liitle bitcoin to bitcoin address in peatio, but not show in Deposit History
This is transaction on  blockchain.info

And this is fund in peatio

I need help ?

Try refreshing your page first. If it still doesn't work, then this is probably one of the two reasons:

You haven't put in the correct username/password to connect to bitcoind in your currency.yml file
Your daemons are not running. Try restarting them.

Hello @tkembo
This is my file config

bitcoind

server=1
daemon=1
#testnet=1
rpcuser=coinexchange
rpcpassword=HeLl0B0nJ0urS4w4d1K4
 rpcport=8332
 walletnotify=/usr/local/sbin/rabbitmqadmin publish routing_key=peatio.deposit.coin payload='{"txid":"%s", "channel_key":"satoshi"}'

currencies.yml

- id: 2
  key: satoshi
  code: btc
  symbol: "฿"
  coin: true
  quick_withdraw_max: 1000
  rpc: http://coinexchange:HeLl0B0nJ0urS4w4d1K4@<IP_ADDRESS>:8332
  blockchain: https://blockchain.info/tx/#{txid}
  address_url: https://blockchain.info/address/#{address}
  assets:
    accounts:
      -
        address: 1L3XutZMGqbAncBgS6h1oJSiCHZvH6zWLf

And i had restart daemon:
bundle exec rake daemons:stop
bundle exec rake daemons:start

But it's can't working

@tkembo i also have problem same @ecxotarama.
Please help we. thanks so much.

@ecxotarama,
If those are your real credentials, please change your rpc username/password now. Don't ever post a username/password online - someone will use them to steal your money.

@tkembo,
I checked blockchain of the bitcoind, blockcount it's current 321224.
How doing update full blockcount to than 432334 ?
Thanks you very much, i will change rpc username/password now.

It may take another day or two for the update to finish depending on your internet connection speed.
We ended up using bitgod to replace bitcoind. Firstly because we didn't want to download and maintain a full node. Secondly because we wanted a multisig wallet.

I will research bitgod and may be using it to repalce bitcoind.
Thanks so much @tkembo


Rename geofancy to locative (fix #761)

Looks like Geofancy has been renamed to Locative (#761). This updates all references to Geofancy to Locative.
This is a breaking change so I am not sure if we want to have some logic that warns the user that this change has occurred if they have geofancy in their configuration.

It is fine. We'll add it as a breaking change to the release notes.


Docker and K8s settings for 6.1

https://github.com/apache/skywalking-docker
https://github.com/apache/skywalking-kubernetes

Docker provided. https://github.com/apache/skywalking-docker/tree/master/6/6.1

k8s https://github.com/apache/skywalking-kubernetes/tree/master/helm-chart/6.1.0


PBEWITHSHA-256AND128BITAES-CBC-BC encryption yields different results between v1.52 and v1.53 onwards

The key used is a PBEKey for the encryption and for the same data and same key it yields different encrypted output in v1.52 and a different one in all other version starting from v1.53 onwards.

I'd have to see how it's been used. I seem to remember there was a fix to the IV handling around then, depending on how the key is been applied, it may be generating a different IV. It is still possible to reproduce the old behavior as well though.

For Key generation:
SecretKeyFactory pbeSecretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
PBEKeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterations, 256);//keyLength is 256
SecretKey pbeKey = pbeSecretKeyFactory.generateSecret(keySpec);

For performing crypto operation:
Cipher desCipher = Cipher.getInstance("PBEWITHSHA-256AND128BITAES-CBC-BC", "BC");
cipher.init(Cipher.ENCRYPT_MODE, pbeKey);

same input and same key in versions <= BC 1.52  gives one result and versions >=1.53 gives a different result.

Second flavor where I see a similar issue but here the difference is the SecretKeyFactory passes in the provider.
For Key generation:
SecretKeyFactory pbeSecretKeyFactory = SecretKeyFactory.getInstance("PBEWITHSHA-256AND128BITAES-CBC-BC", "BC");
PBEKeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterations, keyLength);
SecretKey pbeKey = pbeSecretKeyFactory.generateSecret(keySpec);

For performing crypto operation:
Cipher desCipher = Cipher.getInstance("PBEWITHSHA-256AND128BITAES-CBC-BC", "BC");
cipher.init(Cipher.ENCRYPT_MODE, pbeKey);

Use:
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
    cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(pbeKey.getEncoded(), "AES"), new IvParameterSpec(new byte[16]));

@bcgit thanks for the reply, three items I would like to clarify here.
(1) Is the above fix for both flavors of the issue I have mentioned? <will update results of my test here>
(2) Can you please point me to the commit which made this change in bcjava repo ?
(3) I thought we internally used PKCS5 for the PBEWITHSHA-256AND128BITAES-CBC-BC cipher. Please feel free to correct me. I understand PKCS#5 padding is defined for 8-byte block sizes whereas PKCS#7 padding would work for any block size (I guess 1 to 255 bytes). But wish to know if I would face any side effect if we change from PKCS#5 to #7. A link to the code in bcjava repo would be useful for educational reasons.

Note sure I follow, I get the same output for both. The code in the 1.52 version of the org.bouncycastle.jcajce.provider.symmetric.util.BaseBockCipher willl show you what the issue was.
PKCS5 and PKCS7 are implemented by the same class. org.bouncycastle.crypto.paddings.PKCS7Padding.

@bcgit
If you look at my second issue again I would like to point out two major differences.
(1) keylength is 128 and not 256 like that of the first issue.
(2) Algo of key generation is different and "BC" is not passed in as provider.
// Note: Here I pass the provider "BC" explicitly.
SecretKeyFactory pbeSecretKeyFactory = SecretKeyFactory.getInstance("PBEWITHSHA-256AND128BITAES-CBC-BC", "BC");
PBEKeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterations, keyLength); //128 bit key
SecretKey pbeKey = pbeSecretKeyFactory.generateSecret(keySpec);

//current code: Cipher cipher = Cipher.getInstance("PBEWITHSHA-256AND128BITAES-CBC-BC", "BC");
//modified code works but without any alterations to the pbeKey
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, pbeKey); //pbeKey without wrapping with SecretKeySpec
// Also above I am not using the IV

Ah, okay, sorry, have been in a bit of a rush of late... With the second one the algorithm is PKCS#12 which defines a mechanism for calculating an IV. In this case the calculated IV is passed internally as part of pbeKey.
PKCS#5 schemes do not provide an IV, so the the HMAC scheme the IV needed to be provided explicitly. The wrong result with the PKCS#12 scheme and the IV occurred because in that situation if the IV is set, it is assumed to be because the user wished to override the generated one.

Gotcha! that makes sense. Thanks for confirming!


jfrog rt cp copies artifact in nested location

jfrog rt cp --server-id lab local-repo/projectname/1.1-15 prod-repo/projectname/1.1-15
[Info] Searching artifacts...
[Info] Found 1 artifact.
[Info] Copying artifact: local-repo/projectname/1.1-15/ to: prod-repo/projectname/projectname/1.1-15
{
"status": "success",
"totals": {
"success": 1,
"failure": 0
}
}
refer to log copying artifact, it copies it at projectname/projectname/version instead of projectname/version

@rajatjindal,
Notice that for the jfrog rt cp command, the default value for the flat option is false. Try setting it to *true". Let us know if you need further help with this.

$ jfrog rt cp --server-id lab local-repo/projectname/1.1-15 prod-repo/projectname/1.1-15 --flat true
[Error] Wrong number of arguments. You can read the documentation at https://www.jfrog.com/confluence/display/CLI/JFrog+CLI
I also tried with just --flat, same error still.

@rajatjindal,
You're now getting:
Wrong number of arguments.
This is different than the output you posted initially.
You should construct the command correctly, and avoid mixing the arguments and the command options.

What do you mean mix arguments and command options,
Anyways i tried —flat just after —server-id too and before it as well, none worked
Can you please give a sample cp command with —flat used in it
Thanks

@rajatjindal ,
In the documentation you can find the definitions of all the arguments and the options.
Your command structured as: "jfrog rt cp option argument argument option". The cli will accept only commands in one of the following forms:
"jfrog rt cp options... arguments..."
or
"jfrog rt cp arguments... options..."

In your case:
 jfrog rt cp --server-id lab --flat true local-repo/projectname/1.1-15 prod-repo/projectname/1.1-15
or
 jfrog rt cp local-repo/projectname/1.1-15 prod-repo/projectname/1.1-15 --server-id lab --flat true

@rajatjindal ,
I'm closing this issue. Do let us know if you need additional assistance.


Fix issue #67

Hi @jcampalo, thanks for the patch.
Please read how to contributing next time.
I have the same pr (#68) in waiting for review. Can you review it?

Thanks @jcampalo -  just merged #68 as @simobasso mentioned. Please pull the latest code from the master branch and help us check as well?
I'm close this pull request, but feel free to raise an issue / pull request if you spot any error.


Wrong getFileList() from this file

UnrarError: File read error
    at ExtractorData.getFailException (/home/mx-vankaiser/Projects/test/node_modules/node-unrar-js/dist/js/Extractor.js:187:16)
    at ExtractorData.openArc (/home/mx-vankaiser/Projects/test/node_modules/node-unrar-js/dist/js/Extractor.js:108:24)
    at ExtractorData.getFileList (/home/mx-vankaiser/Projects/test/node_modules/node-unrar-js/dist/js/Extractor.js:54:32)
    at main (/home/mx-vankaiser/Projects/test/nodeunrarjs.js:9:26) {
  reason: 'ERAR_EREAD',
  file: undefined
}

the-rocky-horror-picture-show_spanish-138854.rar.zip

The the-rocky-horror-picture-show_spanish-138854.rar is a zip file, not a RAR file.


Support mechanism to exclude some classes

Default behavior of this extension is create TypeAdapterFactory for every AutoValue classes. But maybe not all of AutoValue classes need it. So it'd be great if we have a mechanism to exclude or include a specific AutoValue class. A @Gson Annotation is a good idea.

@rharter do you have any idea for this feature? is it good? I'm happy to make a PR. But wanna discuss with you first. Cheers!

I've just found another reason for this. The gson and moshi extensions don't support generics in AutoValue classes and generate code that won't compile for those. So without opt-in/out you either can't use generics or can't use the gson/moshi extension.

I do think this is a good idea, I'm just trying to come up with a good way to handle it.  We need to play nice with other extensions, so I'd love it if there was a way to include/exclude classes without the need for another extension, but I'm not sure there is.
Are you suggesting an explicit @Gson annotation for inclusion?
@AutoValue @Gson public abstract class Foo {

}

Yes, it is exactly what I propose. I'd like to add a runtime Module for @Gson annotation only. On main extension library, it should start generate code only if a class has @Gson annotation.

I think there are two completely different usage scenarios. You either want it to run on all and exclude few or the opposite. Adding @Gson to all your classes can get very annoying and using the static TypeAdapterFactory method as opt-in signal won't work with auto-registration.
What do you think of having two separate artifacts? One works like the current one and has a @NoGson annotation to opt-out. The other one requires explicit opt-in by adding the static TypeAdapterFactory method or adding @Gson.

First of all, there's no need for a runtime module, as even if there was a @Gson annotation, it would only need source retention and not be needed at runtime.
That being said, @gabrielittner's points are exactly my concerns.  In your case, you want to exclude most classed, but explicitly include certain ones.  Most of my cases are the opposite, in which most of my classes, benefit from having TypeAdapters. The challenge is that making things easier for one case makes them harder for the other.
As for the idea of having multiple artifacts, that sounds like a management headache and would be confusing to users, so I'm not a big fan of that idea.

I think two atifacts for two scenarios is quite strange. And it's hard to maintain two different codebase.
I still prefer @Gson annotation option because it makes our code clearer, we have to explicit what classes are support Gson. Option 2, with @NoGson anntation, adds magic to our code si nce it automatically adds suppoting Gson. And we can forget to add @Gson easily when we adding new no gson classes.
Cheers,
Thanh
On Wed, Mar 30, 2016 at 8:24 AM -0700, "Gabriel Ittner"<EMAIL_ADDRESS>wrote:
I think there are two completely different usage scenarios. You either want it to run on all and exclude few or the opposite. Adding @Gson to all your classes can get very annoying and using the static TypeAdapterFactory method as opt-in signal won't work with auto-registration.
What do you think of having two separate artifacts? One works like the current one and has a @NoGson annotation to opt-out. The other one requires explicit opt-in by adding the static TypeAdapterFactory method or adding @Gson.

You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/rharter/auto-value-gson/issues/17#issuecomment-203486541

I don't think managing would be a problem, one shared abstract base class and the two implementations would just have to implement applicable(). But you're right that it's probably too confusing.

There is only one problem with no runtime module is Android Studio cannot understand @Gson annotation when we use it with apt plugin. So we have to include the library with apt and provided. Something like this:
// Do not compile AutoValue dependencies to the app.
apt libraries.autoValue
// Make AutoValue annotation visible to the compiler.
provided libraries.autoValue

But I think it's IDE bug, so it may not effect to our decision.

It is not an IDE bug. Annotations should be separate from their compilers.
On Wed, Mar 30, 2016 at 11:23 PM Thanh Le<EMAIL_ADDRESS>wrote:

There is only one problem with no runtime module is Android Studio cannot
understand @Gson annotation when we use it with apt plugin. So we have to
include the library with apt and provided. Something like this:
// Do not compile AutoValue dependencies to the app.
apt libraries.autoValue
// Make AutoValue annotation visible to the compiler.
provided libraries.autoValue
But I think it's IDE bug, so it may not effect to our decision.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/rharter/auto-value-gson/issues/17#issuecomment-203734560

Thanks @JakeWharton for clarify my mistake.

I'd also prefer @NoGson over declaring @Gson for every class. Also this way the extension would still be backwards compatible.

Hm, idk but I'd like to explicitly mark something with @Gson/etc to generate gson mapping. We have a lot of immutable classes and only some part of them needs json serialization.
Imagine you're reading a class and not even realizing that it's going to be jsonable.

I prefer @Gson over @NoGson

Would also love to see @Moshi :)

File a bug on https://github.com/rharter/auto-value-moshi/

So I've been thinking about how to do this cleanly, and I think it aligns with something I've been wanting to add for a while.
The approach would basically be to require the annotated class to include a public static method returning TypeAdapter.  If that exists, then we generate the TypeAdapter, otherwise we don't.
This means to include the class in the gson extension you'd need something like this:
@AutoValue public abstract class Foo {
  public abstract String a();
  public abstract String b();

  public static TypeAdapter typeAdapter() {
    return new AutoValue_Foo.TypeAdapter();
  }
}

This will also open up the opportunity to generate a single TypeAdapterFactory that will return the appropriate TypeAdapter for any auto-value-gson generated class.

I think it is a good idea. It explicit Gson type without adding another annotation.