[WIP] win32: Refactor the NSIS installer

After the discussion in #3485, I have created a new NSIS installer.
The appearance is based on @gpwen's work and also uses MUI2, but the rest of the code is based on the original (non-MUI2) NSIS script and this still relies on dosinst.c. So we don't need to maintain duplicated codes.
The items I listed at https://github.com/vim/vim/issues/3485#issuecomment-425577841 are all implemented.
And also:

Most of the message boxes were removed like gpwen's.
The command prompt will not be shown. (nsExec::Exec is used instead of ExecWait.)
Uninstallation of the old version will be started after selecting the install location. (same as gpwen's)
The installer now remembers the selections of the user for generating _vimrc. (Key remap and mouse behavior.)
Unicode mode is turned on for future translation. This requires NSIS 3.0.
(gpwen's translation uses each encoding for each language. This uses UTF-8 (with BOM) for all languages.)

You can download an installer from here:
https://ci.appveyor.com/project/k-takata/vim-win32-installer/build/175/job/jod0d3d3y9fvet3y/artifacts
(No need to care about the CI status. It's just failed to push the result to GitHub releases.)
Edited:
You can also download it from here:
https://github.com/k-takata/vim-win32-installer/releases/tag/v8.1.0443-newinstaller
Newer version is also avaliable in my later comment.

I suggest having the two "default" option in the same style.
Maybe delete the "default" part because if the radio button is selected as default then maybe not nessary to write default because its already selected as default.
Maybe change "mouse behaviour" to "mouse button behavior".
That way you can remove "button" from the following text and have it shorter.
"Right: context menu, left: visual mode"

Maybe delete the "default" part because if the radio button is selected as default then maybe not nessary to write default because its already selected as default.

I don't agree this. As I wrote above, the new installer remember the selection of a user. When the user execute the new installer next time, the selected button might not be the default setting.

Now translations are avaliable.
Also fixed some minor bugs.

You can download the updated installer from here:
https://github.com/k-takata/vim-win32-installer/releases/tag/v8.1.0443-newinstaller2

Cool :smile_cat:
If the key remapping is always going to be a 2 choice option would it not be better to have it as a check box with the text "Remap a few keys for Windows behavior..."?
Simpler, shorter, less text to read/understand.

If the key remapping is always going to be a 2 choice option would it not be better to have it as a check box with the text "Remap a few keys for Windows behavior..."?

That might be an option. Then we might be able to create another option to select sourcing defaults.vim or vimrc_example.vim. Currently, dosinst.c accepts the selection only when executed with the interactive mode. It doesn't have a command line option for that.

@brammool Thank you for adding this to the todo.txt:
Patch to simplify nsis installer. (Ken Takata, 2018 Sep 24, was #3479)
Now included in #3501, using MUI2.

Improve the installer for MS-Windows.  There are a few alternatives:
- mui2 installer improved by Ken Takata (2018 Sep 29)

BTW, now I'm thinking to create the both types of installers in our vim-win32-installer nightly builds.
It can make casual users to try the new installer easily. (Of course, we should state that the installer is experimental.)
What do you think of this?

BTW, now I'm thinking to create the both types of installers in our vim-win32-installer nightly builds.
It can make casual users to try the new installer easily. (Of course, we should state that the installer is experimental.)
What do you think of this?

I like that and I think that would get the feature a good test base. In fact, I actually wanted to suggest just that the other day, but forgot about it :(

Rebased and changed the _vimrc setting dialogbox.
Now a user can select vi compatibility: 'cp', 'nocp', sourcing defaults.vim or sourcing vimrc_example.vim.

The updated installer is here:
https://github.com/k-takata/vim-win32-installer/releases/tag/v8.1.0451-newinstaller

@chrisbra
I created a PR for it: vim/vim-win32-installer#74.

I think it looks to overwhelming for a new user to see all those options/all that text.
It can look alot simpler if use drop downs.
Instead of all those "default" we could have a "Reset" button.
Also the to titles beginning with "Choose..." basically says the same.

I think it looks to overwhelming for a new user to see all those options/all that text.

Agree.

Instead of all those "default" we could have a "Reset" button.

Adding it seems very difficult.
This is the updated screen shot.

The updated installer is here:
https://github.com/k-takata/vim-win32-installer/releases/tag/v8.1.0451-newinstaller2

You are writing the same things multiple times which does not help the user.
"Choose _vimrv settings" "Choose the settings" "Vi Compatibility" "Compatibility and enhancements" "Vim with all enhancements" "right and left buttons" "Right: ... Left:".
The 3 areas could be as short as "Compatibility", "Keyboard", "Mouse".
At least the "(Default)" is now consistent.
The "Compatibility and enhancements" could have a "newline" at the end so all 3 areas are using the same style.
If someone can remember another software that uses NSIS with a reset button then we could see how they have done it. I can remember any at the moment but will try and look for it.
Or generally see how other software for Windows does it.

So, can you propose concrete messages?
Right button
left button               [popup menu, starts visual]

I don't agree with this part in your screen shot.
It's very hard to under stand that "Right button" corresponds to "popup menu" and "left button" corresponds to "start visual".

Not sure what the best way would be so its short but not cryptic.
Maybe use "/" to seperate left/right.
I think the right click menu is called context menu and not popup menu.
It would be more logical to have the left button info to the left and the right button info to the right.
Button behavior (left/right):
    Visual mode/context menu
    Select mode/context menu
    Visual mode/extend selection

Left/right button behavior:
    Visual mode/context menu
    Select mode/context menu
    Visual mode/extend selection

Sometimes in other software i see they go crazy with spaces and big letters in the english source but i dont know if its correct english or they do it to make it easy to read or something.
Maybe some good at english knows more.
Button behavior (Left / Right):
    Visual mode / Context menu
    Select mode / Context menu
    Visual mode / Extend selection

Maybe other can give input of what they thing of the examples.

I like the last shown dialog. I don't think the Mouse behaviour description should be shortened as mentioned. This looks too confusing.
I would call those three sections perhaps "Vi Mode" (instead of Vi Compatibility), not sure of a better short name, "Mappings" (instead of Key remapping for Windows behaviour which is too long) and "Mouse" (instead of Mouse behaviour)

@chrisbra Your most recent post in this thread got sent to the vim-dev list as being from "Vim Github Bot" instead of as being from Christian Brabant.

OT: @chdiza yes correct. I changed the sender because I thought it looks a bit better. I don't know how to get the actual sender from the message that is created initially so (might have a look later at this)

The first drop down currently have "(Default)" as the last item.
I suggest perhaps having them all the first item in the each list.
Not sure if "Vi Mode" or "Vi Compatibility" ir correct but i suggest using whatever is using in Vim.
vim --help says something about Vi mode and Ex mode and Improved Ex mode so if that is what its talking about then i suggest using the same text (mode) so its the same.
Also i was thinking if <C-V> etc should be <Ctrl-V>.
As new Vim user i did not know what C is but im guess its Ctrl.
It seems Vim is using CTRL in :help
Maybe it could be written a better way instead of listing all those <C-*>.
But i dont know the details.

Is the installer using the old icons again where white is transparent?
Can you check the icons.

@chdiza (changed it a bit more). Let's see if the result in the vim-dev list is better now.

@chdiza (changed it a bit more). Let's see if the result in the vim-dev list is better now.

And if it did not forget to save the rewrite script, it should actually work.
(sorry for spamming this issue)

Let's see if the result in the vim-dev list is better now.

Yes, it's back to normal.  The inbox now lists "Christian Brabant" as the sender.

Is the installer using the old icons again where white is transparent?

You are right. I wasn't aware that the icons were updated recently. Fixed.

Okay all, how about this?

"Vi Mode" (instead of Vi Compatibility)

The word "mode" reminds me a different thing: normal mode, insert mode, etc.
How about "Vi / Vim behavior"?

"Mappings" (instead of Key remapping for Windows behaviour which is too long) and "Mouse" (instead of Mouse behaviour)

Agree.

Also i was thinking if <C-V> etc should be <Ctrl-V>.

I was afraid that using <Ctrl-V> makes the message too long, but using Ctrl-V doesn't make it so long.

The first drop down currently have "(Default)" as the last item.
I suggest perhaps having them all the first item in the each list.

The first drop down is sorted in the order of the enhancements. The last one is most enhanced.
Other lists don't have much meaning in their orders.

Updated the patches to make the uninstaller more precise.

@chdiza okay reverted back to the old behaviour. If anybody feels differently, please open a new ticket, so we don't spam unrelated issues.

@k-takata looks really nice now.

Hi all,
The new MUI2 installer is now available at vim-win32-installer:
https://github.com/vim/vim-win32-installer/releases/tag/v8.1.0454
Please try gvim_8.1.****_x86-mui2.exe.

Its a little confusing the uninstall dialog just pops up at the beginning of the installation progress.
Could the uninstall stuff perhaps be part of the same dialog so there is not two dialogs.

Could the uninstall stuff perhaps be part of the same dialog so there is not two dialogs.

It's not possible (for now).
Actually, gpwen's MUI2 installer does call the uninstaller silently, but it is because his uninstaller is more precise. It deletes the files only installed by the installer. It doesn't delete _vimrc if it is changed by the user.
One possible option is that if the uninstaller is executed silently, do only the first two components: "Unregister Vim" and "Remove Vim Executables/Runtime files". Do not delete vimfiles directory and the root of Vim directory.

Bram's comment was not redirected here:
https://groups.google.com/d/msg/vim_dev/TRBJGgCvHik/CEAh1NSGBAAJ

The "w32" addition is to make sure it doesn't get confused with the
other install.exe that can be build.  It's possible to use "win" instead
of "w32" if that is clearer.  But if there actually are two versions of
the executable, it's probably best to give them different names,
otherwise it's very easy to end up with the wrong one.

We have already dropped support for MS-DOS, so the "w32" (or "win") addition might not be so important now.
And yes, we need the 64-bit version of installer.exe to create 64-bit Vim installer.
But I think keep using "w32" is the simplest way. It doesn't require changing a batch file in vim-win32-installer. I have already done a preparation of 64-bit installer in vim/vim-win32-installer#79 in that way.

https://github.com/vim/vim-win32-installer/releases/tag/v8.1.0466
64-bit installer is now available at vim-win32-installer. (32-bit build seems failed with some reason.)

Improved a message while waiting uninstall of old version.

Confusion might be reduced.

https://github.com/vim/vim-win32-installer/releases/tag/v8.1.0466
64-bit installer is now available at vim-win32-installer. (32-bit build seems failed with some reason.)

Rebuild the commit and this time it was successfull

Could the uninstall stuff perhaps be part of the same dialog so there is not two dialogs.

It's not possible (for now).

I'm rethinking this now.
It's not impossible to run the uninstaller in silent mode at the first step of the installing.
But it's not clear which items should be uninstalled and which should be kept.
Someone may want to just update the version of Vim and want to keep the system _vimrc.
Someone may want to reinstall Vim with changing the settings of the system _vimrc.
Kicking the uninstaller in silent mode cannot handle this situation well...
Should we keep the system _vimrc when the uninstaller in silent mode?
Then if someone wants to change the setting of the system _vimrc, he should run the uninstaller manually and next execute the installer. Is it okay?
(gpwen's uninstaller checks if the system _vimrc is changed or not, but it is not easy in the current system.)
I think that the current implementation is better because it is flexible, even if it is somewhat confusing and a bit noisy.
And even so, it is more silent than the original non-MUI2 installer.

Maybe look at how other software is doing it.
If i click cancel in the uninstall dialog Vim seems to install anyway.

If i click cancel in the uninstall dialog Vim seems to install anyway.

Good point! The behavior is not changed by my patches.
What will happen when a user cancel the uninstaller?
If gvimext{32,64} is in use, it might not be properly updated.
Any other issues? Maybe no.

Maybe look at how other software is doing it.

Some software ask the user to uninstall the old version before install it.
Some other just overwrite the old version.

Does both the 32-bit and 64-bit installer use "Program Files (x86)" as default?
I think it should be "Program Files" for 64-bit and "Program Files (x86)" for 32-bit.
More work sorry :cake:

Does both the 32-bit and 64-bit installer use "Program Files (x86)" as default?

No. 64-bit installer use "Program Files" as default, however,if another version of Vim is installed in another directory (e.g. "Program Files (x86)"), it is used as a default.

Added some comments to the system _vimrc.

" Otherwise use the special 'diffexpr' for Windows.
if &diffopt !~# 'internal'
  set diffexpr=MyDiff()
endif

(Wording might be needed to be adjusted.)

Refactored the commits for easier reviewing.
(Some of them are squashed and some others are edited.)

I think I have almost done my work for this.
(If #3525 will be merged before this, I should rebase this upon it, but it might not be a problem.)
If anyone wants to update the translation, please send a PR to the topic/refactor-installer branch in https://github.com/k-takata/vim .

Guess we need some translation instruction on how to translate the installer.
Do i just make a copy of english.nsi?
Are strings like "Typical", "Minimal", "Full" not already translated in the NSIS translations?
They seem so commonly used.

Do i just make a copy of english.nsi?

I think it's the best way for now. The english.nsi has redundant header compared other files, though.
It is based on gpwen's work, some of the messages are not used for now.

Are strings like "Typical", "Minimal", "Full" not already translated in the NSIS translations?

Yes, they can be translated. See "str_type_typical", "str_type_minimal" and "str_type_full".

I meant if "Typical", "Minimal", "Full" was already translate in the NSIS translations that comes with NSIS but i guess not.
I dont like that translation strings are wrapping on multiple line so you have:
"text \[newline][space][space][space][space][space]text"

Maybe just have each translation on one line like https://github.com/qbittorrent/qBittorrent/blob/master/dist/windows/installer-translations/danish.nsi

I just followed the gpwen's way. If you don't like that, blame to him/her.

I see some leading/trailing spaces i suggest to remove.
 Maybe make it consistent whichever is prefered:
"Remove Vim Executables/Runtime Files"
" Vi / Vim behavior "

I intentionally  added the spaces. Without the spaces, they look too dense.
If your translation doesn't needs the spaces, you can remove them.

If you want space before/after a string i think its better to add it in the code.
That way translations can focus on translating the text only.

I don't agree that.

There are some strings that starts with "Fail to ".
I think they should be "Failed to ".

The strings were copied from the gpwen's work, but currently not used.

I included your Danish translation.

I see some leading/trailing spaces i suggest to remove.

Oops, some of them should have been removed when I changed the radio buttons to the drop down lists.

Rebased on top of 8.1.0472.

Or you can use ".patch" instead of ".diff". E.g.
wget https://github.com/vim/vim/pull/3501.patch
git apply 3501.patch

The differences are:

".patch" can handle binary files, but ".diff" cannot.
".patch" includes all commits and commit messages. (e.g. This PR includes nearly 30 commits.)
".diff" just includes the total changes.

Ken Takata wrote:

@brammool
I think you always get the patch of a PR by adding ".diff" to the end of the URL.
(E.g. https://github.com/vim/vim/pull/3501.diff)
However, I found that this doesn't handle binary files well.
Please use the following zip file for the nsis icon files of this PR.
nsis-icons.zip

Yes, I usually get the .diff file, and that works.  I'll check the icons
once we get to including this.
--
hundred-and-one symptoms of being an internet addict:
200. You really believe in the concept of a "paperless" office.
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

I just downloaded https://github.com/vim/vim-win32-installer/releases/download/v8.1.0490/gvim_8.1.0490_x64-mui2.exe and installed it on a windows 10 system.
I really liked the new installer and it worked really well.

@chrisbra Thank you for trying!
You might want to send updated German translations? ;-)

@k-takata
I did not know I am the nsis translator. But here we go: https://gist.github.com/chrisbra/030431f24f6f26ddda559d63e436d67b (hopefully the link finally works after the recent github failure).
2 observations:

I did not see the VisVim installation dialog (is this obsolete by now? But it is still uncommented in the language file)
After a second thought, I think the difference between "vi compatible", "Vim original", "Vim with some enhancements" and "Vim with all enhancements" is not entirely clear. The first ones should be clear to users (&cp setting), but not the last two. Perhaps it is better to mention what file it will source, e.g.

"Vim with some enhancements (sourcing defaults.vim)" and "Vim with all enhancements (sourcing vimrc_example.vim)"
Hopefully that is not too long.

I did not see the VisVim installation dialog

I currently disable it, because it is for VC6 or older versions. Is there anyone still use it?

After a second thought, I think the difference between "vi compatible", "Vim original", "Vim with some enhancements" and "Vim with all enhancements" is not entirely clear.

Agree.

Hopefully that is not too long.

I had to update the layout. Not sure that the droplists should be left aligned or right aligned.
After applying your translation, the description for the key remapping is too long to display:

thanks for noticing. Does this updated patch fix the issue? It moves some of the description to the title (what is now called Mappings is then called "Mappings to Windows default keys")?
BTW: Is there an easy way to test the translation even when installing on a system with a different locale (or do I have to configure Windows first to use the german system language before trying the installer)?

I applied it. It looks okay now.
I also adjusted English messages.
German:

English:

BTW: Is there an easy way to test the translation even when installing on a system with a different locale (or do I have to configure Windows first to use the german system language before trying the installer)?

Currently, no. I edited the NSIS script.
Should we show a dialogbox to select the language?

Updated.

Yeah, I think this is the easiest way.

Maybe it is useful for debugging, but is it useful for normal users?

Maybe it is useful for debugging, but is it useful for normal users?

Well, it is probably not used much, but in the rare occasions you want to see translated messages
it is really useful. The alternative is fiddling with Windows to change the system locale, having to download the language pack, restart the system several times before the installer picks up the language setting.
So a simple selection dialog seems to provide a good compromise if the user decides to install Vim with a different setting and normal users can simply skip the default setting. A command line parameter would work to, but that does not seem to be supported, is it?

I did not see the VisVim installation dialog

I currently disable it, because it is for VC6 or older versions. Is
there anyone still use it?

I suppose someone using MSVC for editing will have a recent version.
We support building Vim with older MSVC compilers, but I don't think it
is very useful to support older IDEs.
Let me know if this is now ready to include.
For reviewers, please let us know if you are missing anything that was
in the old installer.
--
Did you hear about the new 3 million dollar West Virginia State Lottery?
The winner gets 3 dollars a year for a million years.
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

I added a language selection dialogbox. The dialogbox will be normally shown only once, and the selected language will be stored at HKCU\Software\Vim in the registry. If you delete the key, the dialogbox will be shown again.

There is a request that the installer should remember the user's custom selection.
Now the installer remember the selected components and select the same components on next installation.

@k-takata Cool! thanks!! (It's my request)

@scootergrisen I have updated some English messages a few days ago.
https://github.com/vim/vim/pull/3501/commits/4ab355812c5b876569e1ede2770c7b0fef46dbcd#diff-ff3c2f200bc53b577622a2fe2f586cd9
If you want to update Danish translation, please send me a PR (or patch).

@k-takata danish update https://github.com/k-takata/vim/pull/2

Instead of "Native Language Support" cant we just say "Translations"?
LangString str_section_nls          ${LANG_ENGLISH} \
    "Native Language Support"
LangString str_desc_nls             ${LANG_ENGLISH} \
    "Install files for native language support."

LangString str_section_nls          ${LANG_ENGLISH} \
    "Translations"
LangString str_desc_nls             ${LANG_ENGLISH} \
    "Install translations files."

Also i guess "native language" might be incorrect if it installs all languages and not just one.

Maybe a little confusing the file name is called gvim_.exe but the installer says vim and control center says vim.
Maybe just call it vim_.exe.

In the "Open with..." context menu it says "Vi Improved - A Text Editor".
Maybe it should just be "Vi Improved" in the context menu so its just the name of the program.
uninstall-gui.exe says "uninstall-gui.exe" in the .exe file description.

English messages are adjusted for above changes.

German or Danish translations might be needed to be updated.

@k-takata is it just str_msg_uninstalling?
Then this patch should do it:
diff --git a/nsis/lang/german.nsi b/nsis/lang/german.nsi
index b188fab33..0e0e1b846 100644
--- a/nsis/lang/german.nsi
+++ b/nsis/lang/german.nsi
@@ -221,7 +221,7 @@ LangString str_msg_rm_exe_fail   ${LANG_GERMAN} \
weil es nicht leer ist!"
LangString str_msg_uninstalling  ${LANG_GERMAN} \

"Uninstalling the old version..."

"Deinstalliere alte Version..."

LangString str_msg_registering   ${LANG_GERMAN}
"Registriere..."

I also changed str_desc_rm_vimfiles, because the uninstaller doesn't delete $HOME/vimfiles.

Okay, adding that one makes the patch:
diff --git a/nsis/lang/german.nsi b/nsis/lang/german.nsi
index b188fab33..15e47089d 100644
--- a/nsis/lang/german.nsi
+++ b/nsis/lang/german.nsi
@@ -148,7 +148,7 @@ LangString str_desc_rm_exe          ${LANG_GERMAN} \
 LangString str_unsection_vimfiles   ${LANG_GERMAN} \
     "Entferne vimfiles Verzeichnis"
 LangString str_desc_rm_vimfiles     ${LANG_GERMAN} \
-    "Entfernt eigenes vimfiles Verzeichnis, falls es leer ist."
+    "Entfernt das vimfiles Verzeichnis, falls es leer ist."

 LangString str_unsection_rootdir    ${LANG_GERMAN} \
     "Entferne Vim Installationsverzeichnis"
@@ -221,7 +221,7 @@ LangString str_msg_rm_exe_fail   ${LANG_GERMAN} \
 #     weil es nicht leer ist!"

 LangString str_msg_uninstalling  ${LANG_GERMAN} \
-    "Uninstalling the old version..."
+    "Deinstalliere alte Version..."

 LangString str_msg_registering   ${LANG_GERMAN} \
     "Registriere..."

(let me know, if you'd like to get the translations as separate PR to your vim fork)

I need step by step instructions on how to undate the translations properly.

@scootergrisen
check out this pr:
# (optionally clone the vim repository if you haven't yet)
git clone https://github.com/vim/vim.git
cd vim
# fetch github PR:3501 and checkout to local branch nsis
git fetch origin pull/3501/head:nsis && git checkout nsis
cd nsis/lang
vim danish.nsi
# check the translations of str_msg_uninstalling and str_desc_rm_vimfiles
# save and copy paste the diff
git diff danish.nsi

that should be about it, I think.

And how would i know i need to use 3501 and check the translations of str_msg_uninstalling and str_desc_rm_vimfiles?

3501 is the id of this PR. the two string variables have been mentioned by me and @k-takata (and I got them from looking at the latest diff from @k-takata)

I would like step by step instructions that works everytime i and others want to update.
Looking at the latest diff properly works if there have only been one change but what when i return in 6 months and want to update a translation and there have been 100 changes since the last time the translation was updated.

https://github.com/vim/vim-win32-installer/releases/tag/v8.1.0513
Starting from this version, the installer can execute the uninstaller silently. (It affects only when uninstalling this version or later, though.)
@scootergrisen This PR has not been merged into the official repository, so the procedure can be changed. Basically, you need to check the changes of nsis/lang/english.nsi and apply them to your translation.
If I add a new English message, I may also add them to each translation as is. Because NSIS doesn't fallback to an English message if a corresponding translated message were not found.
If I modify an English message, I may modify only English.

@scootergrisen
It's the translation of the installer. I wouldn't expect hundreds of newly to translated strings the next time you look at it. Once it is merged, it is probably pretty stable.

Rebased on top of 8.1.0535.

FYI, these are the recent download counts of the vim-win32-installer releases:

(To see above results, use a Web browser.)
At this moment, the download counts are:

v8.1.0536
Download counts

Total
908

x64 zip
474

x64 mui2 installer
243

x86 traditional installer
98

x86 zip
64

x86 mui2 installer
26

The x64 mui2 installer is already downloaded more than twice of x86 traditional installer.
It seems that most people want to use x64 version (even it doesn't have so many advantages to x86).
(As I told in the VimConf Hackathon.)
x64/x64 mui2 installers are downloaded by more than 250 people and we don't have any bug reports for them. I think that that mui2 installer is now quite stable and it is ready to be merged.

FYI, these are the download counts before we set up mui2 installers:

v8.1.0451
Download counts

Total
937

x64 zip
676

x86 traditional installer
166

x86 zip
72

I said this is ready to be merged, however, I found some more things to be updated.

Some messages should be updated to reflect the changes in 8.1.0534.
Update the uninstaller to be able to remove $HOME/vimfiles directory.
Some messages are inconsistent between the installer and the uninstaller.
The installer uses "plugin directories" and the uninstaller uses "vimfiles directory".

so you need updated translations?

@chrisbra, @scootergrisen Could you please update the following translations?

$(str_desc_plugin_home): Updated the message for 8.1.0534. Now this option doesn't create the vimfiles directory in the Vim installation directory.
$(str_ungroup_plugin), $(str_desc_rm_plugin): The names and the messages were changed.
$(str_unsection_plugin_home), $(str_desc_rm_plugin_home), $(str_unsection_plugin_vim), $(str_desc_rm_plugin_vim): Newly added.

Ether commenting here or creating a PR should be fine.

Why is str_ungroup_plugin  and str_desc_rm_plugin in English plural? ("Remove plugin directories") Where does it remove the plugin directories from?
I think this patch should be applied:
diff --git a/nsis/lang/german.nsi b/nsis/lang/german.nsi
index f0ffffb02..4132bf9bc 100644
--- a/nsis/lang/german.nsi
+++ b/nsis/lang/german.nsi
@@ -116,8 +116,7 @@ LangString str_desc_plugin          ${LANG_GERMAN} \
 LangString str_section_plugin_home  ${LANG_GERMAN} \
     "Privat"
 LangString str_desc_plugin_home     ${LANG_GERMAN} \
-    "Plugin-Verzeichnis im Benutzerverzeichnis (falls es existiert) oder im \
-     Vim-Installationspfad erstellen."
+    "Erstelle Plugin-Verzeichnis im HOME Benutzerverzeichnis."

 LangString str_section_plugin_vim   ${LANG_GERMAN} \
     "Freigegeben"
@@ -146,19 +145,19 @@ LangString str_desc_rm_exe          ${LANG_GERMAN} \
     "Alle Vim-Anwendungen und Laufzeitdateien von diesem System entfernen."

 LangString str_ungroup_plugin       ${LANG_GERMAN} \
-    "Entferne vimfiles Verzeichnis"
+    "Entferne Plugin-Verzeichnisse"
 LangString str_desc_rm_plugin       ${LANG_GERMAN} \
-    "Entfernt das vimfiles Verzeichnis, falls es leer ist."
+    "Entferne Plugin-Verzeichnisse, falls sie leer sind."

 LangString str_unsection_plugin_home ${LANG_GERMAN} \
     "Privat"
 LangString str_desc_rm_plugin_home  ${LANG_GERMAN} \
-    "Remove the plugin directories from HOME directory."

 LangString str_unsection_plugin_vim ${LANG_GERMAN} \
     "Freigegeben"
 LangString str_desc_rm_plugin_vim   ${LANG_GERMAN} \
-    "Remove the plugin directories from Vim install directory."
+    "Entfernt das Plugin-Verzeichnis aus dem Vim-Installationsverzeichnis."

 LangString str_unsection_rootdir    ${LANG_GERMAN} \
     "Entferne Vim Installationsverzeichnis"

Why is str_ungroup_plugin and str_desc_rm_plugin in English plural? ("Remove plugin directories")

Because str_group_plugin and str_desc_plugin are both plural. I think they mention $HOME/vimfiles and $VIM/vimfiles. (Or the directories under vimfiles (colors, compiler, doc, ...)? Not sure.)

Where does it remove the plugin directories from?

It is a description for a section group which includes str_unsection_plugin_home and str_unsection_plugin_vim, so it removes from $HOME/vimfiles or $VIM/vimfiles.


Animation start() with delay followed directly by stop() doesn't stop

If you setup an Animation with a delay and start() then stop() it before the animation has had the time to actually start, it will start anyways due to the delay not being removed.
Checking the source code and the fix should be quite easy:
in Animation.coffee at line 153
store the result of<EMAIL_ADDRESS>start)
and remove that delay from context in function stop

thx !


Updated to use built in Homebrew Versioning

This updates the package to use the built in homebrew versioning now in core http://docs.brew.sh/Versions.html . It is no longer necessary to tap the homebrew/versions keg. This also changes the syntax from elasticsearch17 to<EMAIL_ADDRESS>.
I'm not sure how to actually test this, so pointers would be appreciated.

Not sure if this can be fixed here, but in order to link elasticsearch to /usr/local/bin/elasticsearch (which is required for the launchctl plist to work) you have to run brew link<EMAIL_ADDRESS>--force.


Adding sqlplus support

This feature provides the opportunity to use sqlplus instead of JDBC to apply changesets. Other liquibase logic (work with databasechangelog and databasechangeloglock) haven't been affected

Hi @JSGette
Thanks for your pull request!
Here’s what happens next:
A member of the Liquibase team will take a look at your contribution and may suggest:

Changes based on guidelines for PR submission
Additional tests (unit and/or integration)
Provide other feedback, like requesting changes.

The PR will be prioritized according to our internal development and testing capacity.
We’ll let you know when it’s ready to move to the next step or if any changes are needed.

Hi @JSGette , would you please resolve branch conflicts and consider adding tests referenced in the documentation from my last message please?

This was added through the runWith attribute


"table" service to return distance and time matrix with routing options

Hi,
I'm using this osrm module in my (meteor.js) routing app and It's been working fine.
I'm looking at extending the "table" service to give me not only the (driving) time matrix but also the distance matrix. I'm also thinking at including options before generating these matrices (basically, "avoidHighways" and "avoidTolls" will do at this stage).
I have some experience in javascript/nodejs, but limited experience in C++.
Would somebody point me in the right direction?
Thanks.

https://github.com/Project-OSRM/osrm-backend/pull/1162 is tracking this. Further pointers are in the backend repository.


Error while cloning using GitHub Desktop

I'm getting the following error when cloning using GitHub Desktop
Cloning into 'D:\Ciaran\Dev\spotify-playlist-archive'...
remote: Enumerating objects: 93894, done.
remote: Counting objects: 100% (11294/11294), done.
remote: Compressing objects: 100% (816/816), done.
remote: Total 93894 (delta 10529), reused 11234 (delta 10474), pack-reused 82600
Receiving objects: 100% (93894/93894), 140.86 MiB | 4.10 MiB/s, done.
Resolving deltas: 100% (88800/88800), done.
error: invalid path 'playlists/cumulative/Acoustic Hits: Oldies but Goodies.md'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

Thanks for reporting. It looks like this is because some of the file names contain a colon, which isn't allowed in Windows. I'll update the script to replace colons with something else, perhaps a dash.

I just landed a few commits to replaces colons, question marks, pipes, and slashes in filenames. Clone now succeeds on Windows.

Thanks for fixing so quickly - can also confirm it works now


CGNX_AutoCalib Error

Hi Carlos,
I got a chance to test the CGNX_AutoCalib function today. As I could see, “Move2PointAndSettle” is used to move the robot to different positions during the calibration process and that function finally calls “Move P, targetPos”, which uses PTP interpolation.
Here comes the problem. My start position of the calibration process is as below in the picture. When it reached the last few steps of the calibration, i.e. rotating +/- 15 degrees, I would expect the traveling direction in Rz to be clockwise looking from the top (Rz from -2 to – 17). But instead, it traveled counter-clockwise (a rotation of 345 degrees) and resulted in an error state.
I tried replacing the interpolation method of the “Move” command by linear interpolation and it seemed to solve the problem.
What do you think?
Regards,
Yingchuan

Hello Yingchuan,
I picked PTP as the interpolation to avoid running into singularity. If Linear moves are preferable we can try to prevent it by using the Singularity Avoidance feature.
We can also edit the targetPos figure to a -3 or -2 which will pick the endFigure that results in the least joint movement.
Let me know if you have other questions.
Thanks,
Carlos A. López

Added fix on v1.6.24


💡 [FEATURE] -

Idea Contribution

[X] I have read all the feature request issues.
[X] I'm interested in working on this issue
[X] I'm part of GSSOC organization

Explain feature request
Well, I want to add Operating Systems in the resources.
Explain your solution
No response
Any alternative approaches/features
No response
Additional Context
I will also provide the documentation for it

Sorry @ayush-848 but I am not accepting more category in the moment. Maybe you could add resources or new section in existing categories?

@jfmartinz okk, sure


Webp image support

Webp image support will be available in Mendix 10.16.

A two word PR. I think this might be a record. Thanks @Robinfr !


automatic update support in iroh {one, cloud}

we need automatic updates.
the self update crate seems like a good place to start after some initial googling.

add an auto_update_check_frequency_hours configuration for number of hours to wait between update checks

let's use hours as a minimum so folks can't bomb the update server with an accidental bad config

when set to zero auto update is disabled
default value for iroh one should be something like every 3 days: 72 (24*3)
auto update running in iroh cloud can lead to downtime, and should be disabled by default (set to a value of zero)
we likely shouldn't use auto update for major version changes, as this could break APIs for folks
we'll need to cache the timestamp of the last check to a file so update checks survive between process restarts
we'll need to document the explicit request pattern & any telemetry collected when an auto-update request is made
will need nice log output for updates

I'm skeptical that updates are something you should deal with in iroh itself. I think it would be better to create packaging for your most common deployment targets (ppa for debian, etc.).
But if you decide to go with that, please make that feature gated, because it won't be useful for everyone. For instance:

people that would rather rely on their OS package manager.
environments where iroh is running from a read-only partition.

Great points @fabricedesre, there's OS / package manager nuance I hadn't considered, and we should be clear about the point of integration for automatic updates to avoid code bloat & potential unwanted network calls.
The main reason auto-update really is our problem surrounds the slow pace of upgrading on the IPFS network itself. This is an incredibly real concern when rapidly iterating on a distributed system. With that in mind, there are lots of places where auto-update doesn't make sense.
Regarding package manager distributions, we should aim to ship package-manager-specific configurations, and in those configurations we can leave auto-update off by default. I think we should ship auto update at the highest level in our stack, just inside CLI crates.
The target I care about this for the most is iroh one running on the desktop, closely followed by iroh cloud. Auto update in the cloud sounds like a horrible thing for uptime, but I've encountered many small teams running IPFS infra that just need to keep the lights on, and will accept a little downtime if it means they have one less human-in-the-loop thing to deal with. This assumes we actually get this feature right, and can gracefully stop, upgrade, and restart iroh services. Not simple.
Regarding running from a read-only partition, I'm of the mind that's a case our auto-update mechanism would have to handle gracefully in all contexts (weather it's running or not).
So I think we do need this, only in some places, and it's hard to get right so it will be a while before we get around to it.

For anything that is supposed to run as unattended as possible, I still think it's better to not use a custom updater and just rely on the host package manager. You can still ship updates as often as needed. Of course that means having a good packaging story, which is not always trivial either.
But your "iroh one running on the desktop" makes me think that maybe you have in mind a product that is more end user oriented, bundling iroh-one with some nice UI? That would be a different story, these kind of products (like web browsers or electron apps) indeed tend to have their own auto-update mechanism.
Lastly, some food for though: I've wondered if ipfs could be an ideal candidate to reduce the amount of data to download for updates: consider you're on a "daily" update channel. It is likely that there are few changes from your current state, so serving the update over IPFS with a smart chunking approach could reduce the number of CID to fetch. I would be very interested in using something like that for Capyloon updates.

For anything that is supposed to run as unattended as possible, I still think it's better to not use a custom updater and just rely on the host package manager.

The numbers for the public IPFS network don't support this conclusion, kubo already has a package manager story, and more than 1/4 of the network is still running go-ipfs v0.7.0:

source

But your "iroh one running on the desktop" makes me think that maybe you have in mind a product that is more end user oriented, bundling iroh-one with some nice UI?

We don't have plans to build this kind of thing, but I don't think that's a reason to not have auto-update. I understand this feels weird & very un-unix, but the numbers are the numbers. having 1/4 of the network running p2p software with known vulnerabilities is an issue we can't leave unaddressed.
With that said, automatic updates and a solid package manager story are composable solutions, and having a solid package manager story should come first. We'll put effort into getting this right with at least a select set of package managers on our first release.

Lastly, some food for though: I've wondered if ipfs could be an ideal candidate to reduce the amount of data to download for updates: consider you're on a "daily" update channel. It is likely that there are few changes from your current state, so serving the update over IPFS with a smart chunking approach could reduce the number of CID to fetch. I would be very interested in using something like that for Capyloon updates.

💯 yes. kubo already uses IPFS to download updates, and we should do this. I'm not sure we need custom chunking

Lastly, some food for though: I've wondered if ipfs could be an ideal candidate to reduce the amount of data to download for updates: consider you're on a "daily" update channel. It is likely that there are few changes from your current state, so serving the update over IPFS with a smart chunking approach could reduce the number of CID to fetch. I would be very interested in using something like that for Capyloon updates.

💯 yes. kubo already uses IPFS to download updates, and we should do this. I'm not sure we need custom chunking

I don't know for sure either, we need data :) Considering a situation like:

v1.0.1 is installed from scratch through n0.computer/install.sh
v1.0.1 is released, the auto-update mechanism downloads it from ipfs: we need to fetch it all.
v1.0.2 is released: what is the % of blocks fetched for 1.0.1 that are also used in this 1.0.2? Can we optimize that to reduce data transfers for updates?

I guess that depends on the format of the update package - is that more like a tar file or more like a disk image, etc.


A problem occurred configuring root project 'countdown_flutter'

APK Build with error
A problem occurred configuring root project 'countdown_flutter'.

SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

I have the same issues

I have the same issues .
`A problem occurred configuring root project 'countdown_flutter'.

SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
`

same issues


More tooltips

Start to adress #89 with tooltips.

Also, moved some content of tooltips to constants. What do you think about this approach @pbeshai ? if its fine, i'll convert the other tooltips and all text will be in one place.
Also makes tooltips fixed width.

one place works for me

ok. i'll unify text into a strings.js file or something.

i'll use this PR to move the existing strings to a single location.


Make standard run loop less chatty in logs

In Enterprise we rely on logs for debugging since we don't have tools like Sentry to see into what has gone wrong in our customers installs. Similarly we can only grab a portion of the logs (since they can be quite large). These two factors encourages us to approach logging in enterprise to be fairly quiet unless something of note is happening.
Right now when we look at logs in the master builds we see:
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887738746220
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:07+0000][travis-logs:drain] time=2017-07-10T14:34:07+00:00 level=info msg="flushing batch buffer" size=0 tid=69887738746220
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887738746220
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887738746220
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887738746220
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887738746220
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887738746220
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887738746220
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:10+0000][travis-logs:drain] time=2017-07-10T14:34:10+00:00 level=info msg="flushing batch buffer" size=0 tid=69887727891580
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=1/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=2/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=3/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=4/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=5/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=6/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=7/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=8/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=9/10 tid=69887756971900
[2017-07-10T14:34:11+0000][travis-logs:drain] time=2017-07-10T14:34:11+00:00 level=info msg="checking drain consumer" name=10/10 tid=69887756971900

And not much else. This happens fast enough that support bundle logs we get only contain these lines.
In this PR I try to fix this issue by moving these log lines to DEBUG, but in the past we've made it so they're only show up when not Enterprise (as there may be monitoring and other things set up in hosted). I'm open to either approach!
Other PRs that address this same issue:
https://github.com/travis-ci/travis-logs/pull/95
https://github.com/travis-ci/travis-api/pull/469

@meatballhat Another thing I'm noticing re logging in err logs is that logs-web doesn't seem to show exceptions in the STDOUT log. I'm guessing this is because we rely on Raven/Sentry in production. Tried turning it back on locally but still wasn't getting stack traces (then again maybe there is no stack traces, when you just return a 500 in Sinatra? As it turns out I was triggering https://github.com/travis-ci/travis-logs/blob/master/lib/travis/logs/app.rb#L80 but wasn't getting the message about it in the logs)

:tada: yay!


Make specs and features global configuration proof

If a ~/.config/rspec/options file contains the following:
--color
--profile 2
--format progress
--require pry

some specs and features fail, since they are run with options that
contradict the default ones, and expectations are not met.
Example failures:
 (RSpec::Expectations::ExpectationNotMetError)
features/verifying_doubles/partial_doubles.feature:34:in `Then the output should contain "1 example, 1 failure"'
...
LoadError:
  cannot load such file -- pry

6) RSpec::Core::Formatters::ProgressFormatter produces the expected full output
...
   +Top 2 slowest example groups:
   +  pending command with block format
   +    n.nnnn seconds average (n.nnnn seconds / 2 examples) ./spec/rspec/core/resources/formatter_specs.rb:14
   +  failing spec
   +    n.nnnn seconds average (n.nnnn seconds / 2 examples) ./spec/rspec/core/resources/formatter_specs.rb:35
   +

This fixes https://github.com/rspec/rspec-dev/issues/217. Similar issues affect features of rspec-mocks and rspec-expectations, will send out pull requests shortly.
NOTE: Unfortunately, this doesn't fix the issue for configuration stored in ~/.rspec. My advice is to move it over to ~/.config/rspec/options.
NOTE: Unfortunately, this doesn't fix the issue for --require pry for features.

Hm I was thinking more along the lines of modifying spec/support/sandboxing.rb to set the right configuration...

@JonRowe Addressed your concerns, now it's less hacky. Please take another look.

AppVeyor failure is unrelated.

This still isn't what I meant, we should set the config required to make specs pass, not ignore the config thats there...

@JonRowe I can't find a good way around some of the failing features. E.g. in my ~/.rspec (or $XDG_CONFIG_HOME/rspec/options) there's a line --format progress (or --format documentation, or any other format, no matter). If I add a step:
Given(/^a configuration file with defaults$/) do
  step %q{a file named ".rspec" with:}, "
    --no-profile
  "
end

and use it features/command_line/init.feature:25, which is:
     Then the output from `rspec` should not be in documentation format
      But the output from `rspec spec/addition_spec.rb` should be in documentation format
      But the output from `rspec spec/addition_spec.rb --format progress` should not be in documentation format

there is nothing that a I can put in that "configuration with defaults" to override the reset the global setting back to default (format for running all is in progress, format for running one is documentation).
Do you have some hints?

I've already removed --require pry from my global conf. I'm more inclined to closing this (and corresponding mocks and expectations PRs) if I'm the only potential contributor suffering from weird failures due to global conf options.


Replace edpm_kustomize with ci_kustomize

As a pull request owner and reviewers, I checked that:

[x] Appropriate testing is done and actually running
[x] Appropriate documentation exists and/or is up-to-date

Depends-On: https://github.com/openstack-k8s-operators/ci-framework/pull/511

recheck

recheck

recheck

/approve

/lgtm
thanks @pablintino this is a great improvement


Inconsistent use of AvroSchemaRegistryClientMessageConverter.AVRO_FORMAT

There are multiple spots where "avro" is supplied as a string when it should be sourced from AvroSchemaRegistryClientMessageConverter.AVRO_FORMAT.

super(Arrays.asList(new MimeType("application", "*+avro")));
this.versionedSchema = Pattern.compile("application/" + this.prefix   			+ "\\.([\\p{Alnum}\\$\\.]+)\\.v(\\p{Digit}+)\\+avro");
		_headers.put(MessageHeaders.CONTENT_TYPE,   			"application/" + this.prefix + "." + schemaReference.getSubject()    			+ ".v" + schemaReference.getVersion() + "+avro");
		return MimeType.valueOf("application/*+avro").includes(mimeType);

Also it should be noted that reference to the "application/*+avro" MimeType should be via a constant.

Merged


Determine plan for managing secrets

Once an ARM service has been created there are some which have keys or secrets associated with them.
For example, a storage account has storage keys, a Redis account has keys, etc. These keys need to be stored and access has to be given to the right users.
ASO historically had two approaches for this, originally storing secrets using Kubernetes secrets, and now optionally supports storing secrets in a KV instead (value for this is controlled via env variable):
AZURE_OPERATOR_KEYVAULT
Take a look at ASO rediscache_types.go for example:
	SecretName             string               `json:"secretName,omitempty"`
	KeyVaultToStoreSecrets string               `json:"keyVaultToStoreSecrets,omitempty"`

ASO lets some services specify the Key Vault its credentials should be placed in. Also there is a global setting that lets all credentials be placed in a specified Key Vault.


vim9: map() used in a function does not know the function's argument

Instructions: Replace the template text and remove irrelevant text (including this line)
To Reproduce
vim9script
def Addpos(a_index: number): list<string>
    let lst = ['a', 'b', 'c']
    lst->map('a_index .. ":" .. v:key .. v:val')
    # lst->map({ind, val -> '' .. a_index .. ':' .. ind .. val})
    return lst
enddef

echo Addpos(3)

The map on commented line works.
The first map says E121: undefined variable: a_index

eval strings can't access variables in the outer function scope:

The local variables are on the stack  and cannot be accessed outside of the
compiled function.

Source.
Solution: use a lambda.

Lambdas are faster than eval strings in a :def function anyway:
$ vim -es -Nu NONE -S <(cat <<'EOF'
    vim9script

    def Lambda()
        let time = reltime()
        map(range(999999), {_, v-> v + 1})
        setline(1, reltime(time)->reltimestr()->matchstr('.*\..\{,3}') .. ' seconds to run lambdas')
    enddef
    Lambda()

    def EvalString()
        let time = reltime()
        map(range(999999), 'v:val+1')
        setline(2, reltime(time)->reltimestr()->matchstr('.*\..\{,3}') .. ' seconds to run eval strings')
    enddef
    EvalString()

    :%p
    qa!
EOF
)

0.393 seconds to run lambdas
0.596 seconds to run eval strings

OTOH, they are slower at the script level:
$ vim -es -Nu NONE -S <(cat <<'EOF'
    vim9script

    let time = reltime()
    map(range(999999), {_, v-> v + 1})
    setline(1, reltime(time)->reltimestr()->matchstr('.*\..\{,3}') .. ' seconds to run lambdas')

    let _time = reltime()
    map(range(999999), 'v:val+1')
    setline(2, reltime(_time)->reltimestr()->matchstr('.*\..\{,3}') .. ' seconds to run eval strings')

    :%p
    qa!
EOF
)

1.225 seconds to run lambdas
0.566 seconds to run eval strings

Conclusion: always use lambdas, but make sure to write them inside :def functions.
For more info, see my notes.

I forgot: this is a duplicate of #6401, and documented at :h fast-functions.
https://github.com/vim/vim/blob/6434fc574dfbde11461e70e5a62712370edf38e6/runtime/doc/vim9.txt#L521-L534

Closing, then.


Publish PCC-Query for Existing Data for Mobile (QEDm) for Public-Comment

https://github.com/IHE/QEDm

@MaryLJ this is ready for your review / editing.


Dynamic loading of components

So right now if I inspected docs and examples correctly you can't dynamically load components, but they must be all loaded (with require) when defining initial router mapping.
When developing large applications it would be cool to have then loaded on demand. So when mapping component you would just specify where to get component it self and when appropriate url is hit you require that component and build it.
Also components it self in most cases have sub routes (ex: item list/edit/create). Could this sub routes be defined as component options that are then inserted into main router at component compile time?

Did you check Async Components?

Somehow I missed this feature in 0.12 release. Thank you.

How does one actually make use of async components along with vue-router? Is there an example?


Incorrect sample code in the BitDropDown demo page

there is extra closing angles in the two first code sample elements
there must use BitDropDownItem instead of dropdownitem in the sample code block.
in the sample code block it's better to use a new c# code structure, and use new() instead of new BitDropDownItem() in list items codes.
in the sample code block must use BitDropDownItemType instead of DropDownItemType.
in the sample code block must use IsEnabled = false instead of IsEnabled = "false"
there is a missing return items; in the sample code block in the GetDropdownItems() method in the first sample code.
change private string ControlledSelectedMultipleKeys to private List<string> ControlledSelectedMultipleKeys in the sample code block code of Controlled Multi-Select section.
newDropDownItemData must change to new DropDownItemData in sample code block.

This issue is solved.


Fix for correct exec command arguments

Last code didn't pass custom ini files for acServer at the command line.
This commit also moves ini creation for /config/ instead of cfg (const).
json can be ignored. (sry :)

Have you actually tested your changes?

Yes i had.
http://i.imgur.com/JHzek0b.png

Yeah I have seen that, but your pull request fixes some issues with the current version, so I'll merge it tomorrow.

I've adapted venyii pull to #24.
I've also changed cfg config and ini path generation to exported methods inside instance package.

Maybe you want to add an error message to the UI if an error occures while creating the zip file on download.

Umm.... why was #25 cherry-picked (and changed) in this PR?

I don't know, maybe @macedot should just remove that one commit from this branch, if still possible.

Because @venyii changed write ini into a create ini buffer. Even though the same logic was applied to both download and save process, it would not be consistent: downloading ini files would result in "downloading reconstructed ini", not current ini in use.
Say you've started a server with config (A0)
Then you change something at config A so now it differs (A1)
Using @venyii commit, download process would reconstruct A1, but current instance is running with A0.
From my perspective, user would like to Download currently in-use ini, not Export most up-to-date instance config.

My plan was to download the latest saved version of a configuration which is 'rebuilt' fresh from the DB on every download.

We could add a download button on the configuration and on the instances page. The one on the instances page downloads the configuration in use and the one on the configuration page downloads the lastest configuration.

I've finished coding merge from @venyii commit. I've reverted back into its code and extended the interface as requested.
I've also created the button into instance page to download current instance files using @venyii code.
I'm finishing tests on it. should be done soon.

Finally, it is done :)
i hereby declare to whom it may concern that i'll stop making changes in master without branching first.
:o)

Job's done. :)

Thanks for the work @macedot and continuing the download PR 👍


Language mistake corrected

Updated some spanish syntax to make it more readable.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

@javisenberg Thank you for your contribution! And congratulations on your first contribution to this repository!


configure.ac: Add --without-gtk2 option

We don't need nor require GTK2 in some scenarios, e.g. when porting Activities to flatpak. I can imagine this will be useful for  building artwork package in modern distributions as well.

Thanks.  Reviewed.  Tested.


hyperfine: 1.3.0 -> 1.4.0

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Whoops forgot the cargoDeps update commit, sorry about that.

Success on aarch64-linux (full log)
Attempted: hyperfine
Partial log (click to expand)

installing
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/5l13wp95jji1nf2qq7ys0kawlk3aap9c-hyperfine-1.4.0
shrinking /nix/store/5l13wp95jji1nf2qq7ys0kawlk3aap9c-hyperfine-1.4.0/bin/hyperfine
strip is /nix/store/6dpnd5aniypn8124mmy8f88s4mq2zl07-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/5l13wp95jji1nf2qq7ys0kawlk3aap9c-hyperfine-1.4.0/bin
patching script interpreter paths in /nix/store/5l13wp95jji1nf2qq7ys0kawlk3aap9c-hyperfine-1.4.0
checking for references to /build in /nix/store/5l13wp95jji1nf2qq7ys0kawlk3aap9c-hyperfine-1.4.0...
/nix/store/5l13wp95jji1nf2qq7ys0kawlk3aap9c-hyperfine-1.4.0

Success on x86_64-linux (full log)
Attempted: hyperfine
Partial log (click to expand)

installing
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/1xzb9kgq687wk7nbp67nqbmznn5vdk0s-hyperfine-1.4.0
shrinking /nix/store/1xzb9kgq687wk7nbp67nqbmznn5vdk0s-hyperfine-1.4.0/bin/hyperfine
strip is /nix/store/rpbg8gmqxhz8g61p1plz5d2srs84pvmv-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/1xzb9kgq687wk7nbp67nqbmznn5vdk0s-hyperfine-1.4.0/bin
patching script interpreter paths in /nix/store/1xzb9kgq687wk7nbp67nqbmznn5vdk0s-hyperfine-1.4.0
checking for references to /build in /nix/store/1xzb9kgq687wk7nbp67nqbmznn5vdk0s-hyperfine-1.4.0...
/nix/store/1xzb9kgq687wk7nbp67nqbmznn5vdk0s-hyperfine-1.4.0

Changelog: https://github.com/sharkdp/hyperfine/releases/tag/v1.4.0

Success on x86_64-darwin (full log)
Attempted: hyperfine
Partial log (click to expand)
test hyperfine::units::test_unit_short_name ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

installing
post-installation fixup
strip is /nix/store/rk3p99jbj4idl3dkkg1rxja5gz0qgs98-cctools-binutils-darwin/bin/strip
stripping (with command strip and flags -S) in /nix/store/q549dscp7a4sa6phn4xz6873yrv9cywg-hyperfine-1.4.0/bin
patching script interpreter paths in /nix/store/q549dscp7a4sa6phn4xz6873yrv9cywg-hyperfine-1.4.0
/nix/store/q549dscp7a4sa6phn4xz6873yrv9cywg-hyperfine-1.4.0


Add methods to set weight, minsize, uniform and pad on row object directly

It would be useful to have methods (or maybe properties(?), although they wouldn't play nicely with the the current fluent interface) to set weight, minsize, uniform and pad on a row object directly. So you could do something like this:
grid.new_row().add(tk.Label()).column_span(3).minsize(150).pad(10)
grid.new_row().skip(2).add(tk.Label()).column_span(4).weight(2).minsize(100)

instead of this:
grid.new_row().add(tk.Label()).column_span(3)
grid.new_row().skip(2).add(tk.Label()).column_span(4)

grid.rowconfigure(0, minsize=150, pad=10)
grid.rowconfigure(3, weight=2, minsize=100)

So again it helps avoid manual calculation of row indices and makes the code much cleaner. The unfortunate thing would be that you still need to use the {row|column}configure methods to set the same stuff on columns.
This would help avoid manual calculation of row indices and makes the code much cleaner. The unfortunate thing is that you still have to use the columnconfigure method to set the same stuff on columns.

Actually, rows have .configure() method, and you can write code like this:
grid.new_row().add(tk.Label()).column_span(3).configure(minsize=150, pad=10)
grid.new_row().skip(2).add(tk.Label()).column_span(4).configure(weight=2, minsize=100)

Yeah, I just noticed :D


Filter apps by state

Issue
Both v2 and v3 API currently don't support filtering by application state
https://apidocs.cloudfoundry.org/280/apps/list_all_apps.html
http://v3-apidocs.cloudfoundry.org/version/3.39.0/index.html#list-apps
Context
As an operator, the ability to filter for STARTED applications would useful for us to avoid fetching thousands of STOPPED apps when performing platform-wide checks/operations.
Steps to Reproduce

Attempt to request a list of started apps using cf curl
Notice that, according to the docs, there is no way to do it

Expected result
cf curl /v2/apps?q=state:STARTED
should return the JSON response containing only STARTED apps
Current result
The command above returns an error. The only workaround is to list all apps regardless of state and then filter.

This seems like something we should do as it seems pretty straightforward and high value. @ankitjain1988 @ssisil
@christarazi && @cwlbraa

This was implemented in https://github.com/cloudfoundry/cloud_controller_ng/commit/226d9c117f5e69b1334c736a1aa58197127b211a and will be included in the next capi release.


apply process does not work

The apply process does not work, because it is handled in the same way as a reduce_dimension, but apply doesn't have the dimension keyword, see here https://github.com/Open-EO/openeo-odc/blob/master/src/openeo_odc/map_to_odc.py#L22

The problem is that there is no apply implemented in openeo-processes-python https://github.com/Open-EO/openeo-processes-python/issues/23

Solved with those two pull requests_
https://github.com/Open-EO/openeo-odc/pull/6
https://github.com/Open-EO/openeo-processes-python/pull/24

Apply is still not usable, the mapping of the parameters for processes inside apply does not work.

Fixed with https://github.com/Open-EO/openeo-odc/pull/11


Added BellmanFord [java] to issue #640

Fixes #640
By submitting this pull request I confirm I've read and complied with the below declarations.

[x] I have read the Contribution guidelines and I am confident that my PR reflects them.
[x] I have followed the coding guidelines for this project.
[x] My code follows the skeleton code structure.
[x] This pull request has a descriptive title. For example, Added {Algorithm/DS name} [{Language}], not Update README.md or Added new code.
[ ] This pull request will be closed if I fail to update it even once in a continuous time span of 7 days.
[ ] This pull request shall only be reviewed and merged once the Travis build passes. No maintainer or supporter shall be obliged to review it before this condition is met.
[x] I have mentioned the issue number correctly (with hyperlink) in this pull request description.

please post a GIF or a screenshot of the execution of the algorithm


[FEATURE] Scheduled events/jobs

This PR aims to resolve what's on the 1635 issue on the principal repo, which is implement a way to run scheduled events/jobs.
It follows almost all what's described there.
This is a first step of something necessary to implement the Decision Process feature.

Is this approach fine? Or should we consider just use something like fang?

Note for reviewer: better to just review changed files and not go through commit history :) - will accomodate commits when moving forward

Closing in favor of opening in main repo next days


Comments for Pi-hole v5

Pi-hole v5 allows to add comments.
The following command is not documented yet but works ;)
See: https://github.com/pi-hole/pi-hole/commit/15a9d662ac5e1aab12a7c025a48d75971b3687f0
pihole -w "test.com" --comment "Test comment"

I could add such functionality if there is interest.
We would just need to add comments to the whitelist.txt file, too.
What do you think?

I've figured out how to modify the script to incorporate the --comment field to all the whitelist domains.
modify the whitelist.sh script and add "--comment "whitelist.txt" in the following line as shown below and execute the script to have all top the whitelisted domains from the script imported with a comment of "whitelist.txt"
${GRAVITY_UPDATE_COMMAND} $(cat /etc/pihole/whitelist.txt | xargs) --comment "whitelist.txt" > /dev/null

Pi-hole v5 allows to add comments.
The following command is not documented yet but works ;)
See: pi-hole/pi-hole@15a9d66
pihole -w "test.com" --comment "Test comment"

I could add such functionality if there is interest.
We would just need to add comments to the whitelist.txt file, too.
What do you think?

Do you mean to comment each entry with information why it needs to be whitelisted? IMO a good idea if there where more space for the comment field. As of now not much of the information would be readable without scrolling sideways. This would demand changes in Pi-hole itself. And a hell of a lot of manual work with the "whitelist.txt"!
For to make it easier to differentiate between manually entered entries and entries added by this script each entry should contain a pointer to where it came from, "anudeep" for example.

@Obihoernchen @andmpel @eTaurus Take a look at the upcoming update. I have added comment for every domain in the whitelist.txt. Check out the whitelist-2.0 branch to test the new scripts.

Great update! Donation on the way!
Must have been a pain to add comments to all of the entries but: No pain,
no gain!
Regards,
Benjamin
Am Sa., 29. Aug. 2020 um 18:45 Uhr schrieb Anudeep<EMAIL_ADDRESS>
:

@Obihoernchen https://github.com/Obihoernchen @andmpel
https://github.com/andmpel @eTaurus https://github.com/eTaurus Take a
look at the upcoming update. I have added comment for every domain in the
whitelist.txt. Check out the whitelist-2.0
https://github.com/anudeepND/whitelist/tree/whitelist-2.0 branch to
test the new scripts.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/anudeepND/whitelist/issues/142#issuecomment-683314367,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AF3W2WGMT7L26SHYKU7GZPDSDEWDJANCNFSM4M5ADPTA
.

Can't wait to test it out! Thanks!


set position velocity and acceleration offboard setpoint

Hi. As far as I see I can either send acceleration offboard or position, velocity offboard is that correct? Can we just send all? I can see that px4 supports it and we can achieve similar behavior using Mavros.
I want to send offboard setpoints for position and feedforward the acceleration and velocity as well.
if this function is not available, how can I implement it myself? I think we should chang ethe mavlink command that is being sent but since everything is auto-generated I don't know how and what to look for

Yes, that's correct. The closest API for you would be position with velocity feedforward. If that's not enough, consider adding it.
First step is to add the API that you would like here:
https://github.com/mavlink/MAVSDK-Proto/blob/main/protos/offboard/offboard.proto

Is there documentation or explanation and example of how to add this? I don't know he concepts behind that which parts I should edit and which part is auto-generated.

The first step is the proto file, then auto-generation happens from that in the next step.
Also see: https://mavsdk.mavlink.io/main/en/cpp/contributing/plugins.html

Thanks I already read that doc and almost did all it said. I created my custom function and it should work. this is the function in cpp:
Offboard::Result OffboardImpl::set_position_velocity_acceleration_ned(
    Offboard::PositionNedYaw position_ned_yaw, Offboard::VelocityNedYaw velocity_ned_yaw, Offboard::AccelerationNed acceleration_ned)
{
    {
        std::lock_guard<std::mutex> lock(_mutex);
        _position_ned_yaw = position_ned_yaw;
        _velocity_ned_yaw = velocity_ned_yaw;
        _acceleration_ned = acceleration_ned;

        if (_mode != Mode::PositionVelocityAccelerationNed) {
            if (_call_every_cookie) {
                // If we're already sending other setpoints, stop that now.
                _system_impl->remove_call_every(_call_every_cookie);
                _call_every_cookie = nullptr;
            }
            // We automatically send Ned setpoints from now on.
            _system_impl->add_call_every(
                [this]() { send_position_velocity_acceleration_ned(); }, SEND_INTERVAL_S, &_call_every_cookie);

            _mode = Mode::PositionVelocityAccelerationNed;
        } else {
            // We're already sending these kind of setpoints. Since the setpoint change, let's
            // reschedule the next call, so we don't send setpoints too often.
            _system_impl->reset_call_every(_call_every_cookie);
        }
    }

    // also send it right now to reduce latency
    return send_position_velocity_acceleration_ned();
}

and this is in .h
 mutable std::mutex _mutex{};
    enum class Mode {
        NotActive,
        PositionNed,
        // PositionGlobalAMSL,
        PositionGlobalAltRel,
        VelocityNed,
        PositionVelocityNed,
        PositionVelocityAccelerationNed,
        AccelerationNed,
        VelocityBody,
        Attitude,
        AttitudeRate,
        ActuatorControl
    } _mode = Mode::NotActive;

   Offboard::Result send_position_velocity_acceleration_ned();
 Offboard::Result set_position_velocity_acceleration_ned(
        Offboard::PositionNedYaw position_ned_yaw, Offboard::VelocityNedYaw velocity_ned_yaw, Offboard::AccelerationNed acceleration_ned);

but when I try to build it in the last step in 100% I get the following error:
[100%] Building CXX object src/mavsdk_server/test/CMakeFiles/unit_tests_mavsdk_server.dir/offboard_service_impl_test.cpp.o
In file included from /home/alireza/MAVSDK/src/mavsdk_server/test/offboard_service_impl_test.cpp:5:
/home/alireza/MAVSDK/src/mavsdk_server/test/../src/plugins/offboard/offboard_service_impl.h: In instantiation of ‘grpc::Status mavsdk::mavsdk_server::OffboardServiceImpl<Offboard, LazyPlugin>::SetPositionVelocityAccelerationNed(grpc::ServerContext*, const mavsdk::rpc::offboard::SetPositionVelocityAccelerationNedRequest*, mavsdk::rpc::offboard::SetPositionVelocityAccelerationNedResponse*) [with Offboard = testing::NiceMockmavsdk::testing::MockOffboard; LazyPlugin = testing::NiceMock<mavsdk::mavsdk_server::testing::MockLazyPlugin<testing::NiceMockmavsdk::testing::MockOffboard > >]’:
/home/alireza/MAVSDK/src/mavsdk_server/test/../src/plugins/offboard/offboard_service_impl.h:959:18:   required from here
/home/alireza/MAVSDK/src/mavsdk_server/test/../src/plugins/offboard/offboard_service_impl.h:984:52: error: ‘class testing::NiceMockmavsdk::testing::MockOffboard’ has no member named ‘set_position_velocity_acceleration_ned’; did you mean ‘set_position_velocity_ned’?
984 |         auto result = _lazy_plugin.maybe_plugin()->set_position_velocity_acceleration_ned(translateFromRpcPositionNedYaw(request->position_ned_yaw()), translateFromRpcVelocityNedYaw(request->velocity_ned_yaw()), translateFromRpcAccelerationNed(request->acceleration_ned()));
|                       ~^~~~~~~~~~
|                       set_position_velocity_ned
cc1plus: note: unrecognized command-line option ‘-Wno-unknown-warning-option’ may have been intended to silence earlier diagnostics
gmake[2]: *** [src/mavsdk_server/test/CMakeFiles/unit_tests_mavsdk_server.dir/build.make:160: src/mavsdk_server/test/CMakeFiles/unit_tests_mavsdk_server.dir/offboard_service_impl_test.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:2175: src
Should I do extra step in mavsdk_server files?
I think I can hard code the position_velocity to include ACC as well and it should work but I am planing to create a new function and then pull it to repo so others can use it later

Can you make the PR for the proto changes, so that I can review those first?
For the mock errors, make sure to add the API here:
https://github.com/mavlink/MAVSDK/blob/main/src/mavsdk/plugins/offboard/mocks/offboard_mock.h

editing the mock file was the step missing in the docs and it solved it. it is not generated in mavsdk cpp. now I want to generate it for python as well. this is I don't know how.
My forked mavsdk repo is at :
https://github.com/alireza787b/MAVSDK
Would you like me to send PR on mavsdk or mavsdk python?
I need help with this converting to Python part. I haven't found any documentation on that.

Would you like me to send PR on mavsdk or mavsdk python?

First one would be MAVSDK-Proto. That will generate the C++ headers, which you need to implement. Python is then fully generated.

I managed to genreate python and it shows up but when I run the new function in python I get multithreading or sth like that .
I created a pull request on mavsdk proto and describe the steps I did and the problem
this is the link:
https://github.com/mavlink/MAVSDK-Proto/pull/314
PS:
sth is still unclear for me. I edited the cpp sources in mavsdk repo. how they end up effecting the python? how the system exactly works? I changed the proto, build the mavsdk and then did python generation from mavsdk python.
Thanks for your help

Hello! You are correct that in offboard mode, you can send either acceleration or position/velocity setpoints. However, it is indeed possible to send all three types of setpoints simultaneously if desired. PX4 and Mavros support this capability, allowing you to achieve the desired behavior.
If the function for sending offboard setpoints with position, velocity, and acceleration is not readily available, you can implement it yourself. One way to do this is by modifying the Mavlink command that is being sent. Since the code is auto-generated, you might need to search for the specific location where the setpoint commands are handled.
Start by locating the part of the code where Mavlink messages are generated and sent to the flight controller. Look for functions or sections related to offboard setpoints, such as set_position_target_local_ned or set_position_target_global_int. These functions typically handle position and velocity setpoints.
To include acceleration in your setpoint message, you would need to modify the existing Mavlink message structure and include the appropriate acceleration fields. You may need to refer to the Mavlink message definitions to ensure compatibility.
Once you have made the necessary changes to include acceleration in the setpoint message, rebuild or recompile the code, and deploy it to your system. Make sure to test thoroughly to ensure the desired behavior is achieved.
Remember to consult the PX4 and Mavros documentation and community forums for further guidance and support during the implementation process. Good luck!

Hello! You are correct that in offboard mode, you can send either acceleration or position/velocity setpoints. However, it is indeed possible to send all three types of setpoints simultaneously if desired. PX4 and Mavros support this capability, allowing you to achieve the desired behavior.
If the function for sending offboard setpoints with position, velocity, and acceleration is not readily available, you can implement it yourself. One way to do this is by modifying the Mavlink command that is being sent. Since the code is auto-generated, you might need to search for the specific location where the setpoint commands are handled.
Start by locating the part of the code where Mavlink messages are generated and sent to the flight controller. Look for functions or sections related to offboard setpoints, such as set_position_target_local_ned or set_position_target_global_int. These functions typically handle position and velocity setpoints.
To include acceleration in your setpoint message, you would need to modify the existing Mavlink message structure and include the appropriate acceleration fields. You may need to refer to the Mavlink message definitions to ensure compatibility.
Once you have made the necessary changes to include acceleration in the setpoint message, rebuild or recompile the code, and deploy it to your system. Make sure to test thoroughly to ensure the desired behavior is achieved.
Remember to consult the PX4 and Mavros documentation and community forums for further guidance and support during the implementation process. Good luck!

Thanks for the information and guide
I did that and added a new function for setting all position, velocity, and acceleration with command and it works ok
the link to the pull request is :
https://github.com/mavlink/MAVSDK/pull/2057
and in it available in the latest mavsdk release


[SUGGESTION] Add a way to hold down right or left click

It works much better with EXP berries and ExNihilo.

Thanks!


user "undefined"

I'm using Chrome Version 49.0.2623.87 (64-bit)
After I log in, I am taken to the profile page: http://childrenofur.com/profile/?profileredirect=true&reason=undefined
And I'm shown this error message: "undefined could not be found."
I have no way to enter a username or change my username; clearly my login credentials work, but after the first time I logged in, where I saw the "select a username" screen for a moment before the page auto-reloaded with the error,  I haven't been able to get to that screen.  Please help.

Updating this: I was able to set a username (celeloriel), but my profile page is still uneditable.

I experienced the same issue when I tried to create an account that I was going to grab my old profile with. The account I am currently able to use I made a while back. The email address I used and got the undefined error with I may have already tried using before in the past, have you already tried creating an account with that email before?

This was caused by an HTTPS upgrade, which should be taken care of now.
If you're still having problems, open an issue at https://github.com/ChildrenOfUr/coUclient/issues :)


Featherize - my poor attempt to make Input Feather-compatible

Updates JSDoc to make it more compatible with Feather. None of __xxx functions were updated, but about 160 main ones were. Deprecated ones are marked with /// @ignore.

Just FYI I believe feather supports /// @deprecated so perhaps that would be more appropriate for deprecated functions than /// @ignore. Not sure how feather displays deprecated functions currently though.

This will take me a while to review, bear with me.

Just FYI I believe feather supports /// @deprecated so perhaps that would be more appropriate for deprecated functions than /// @ignore. Not sure how feather displays deprecated functions currently though.

For functions marked as deprecated, a warning will be displayed if you attempt to use them, and the tooltip should contain an additional message letting you know the function/variable is deprecated.

In our situation, use of @ignore is suitable for a few functions, @deprecated is suitable for others.
I cannot accept this PR for the following reasons:

Parameters should not be prefixed with underscores
Parameters should be in camelCase
Optional parameters should be marked with square brackets along with their default value (e.g. [playerIndex=0]) so that autocomplete is still viable for developers not using Feather
Parameter names should not be substantively renamed (e.g. successCallback -> _success_method)

Also I noticed a couple typing mistakes (input_profile_copy() uses strings for the profile names to copy to/from, not reals) but they're few and far between so not a dealbreaker.
If you're willing to make these changes I can merge this PR in, and I'm keen to get better Feather compatibility for the sake of futureproofing the library. But if that's too much work then that's ok too, I'll get round to it myself sooner or later.

Problem with @param names is that Feather shows a warning if param name isn't same as inside function, that's why I changed camelCase and [optionalParameters] to what they are now.

I've also tried with /// @func but while this work for bottom bar of code editor, Feather ignores it.
When using same variable names in JSDoc that in function definition, optional arguments are in brackets, however default value isn't shown either in bottom bar nor on hover - so that's something that YYG need to fix/add probably....

maaaybe this should be reported as bug, as this was allowed before, and now that feature seems to be removed


[FEAT] push changes to iso4

Description
Specific PR for iso4 to improve syntax error reporting when using an attribute starting with a capital letter.
part of https://github.com/inmanta/inmanta-core/issues/4019 (iso4)
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box
- [ ] Attached issue to pull request

[x] Changelog entry
[x] Type annotations are present
[x] Code is clear and sufficiently documented
[x] No (preventable) type errors (check using make mypy or make mypy-diff)
[x] Sufficient test cases (reproduces the bug/tests the requested feature)
[x] Correct, in line with design
- [ ] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )

Reviewer Checklist:

[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Code is clear and sufficiently documented
[ ] Correct, in line with design

Processing this pull request

Merged into branches iso4 in efb62677b054ba5e2bd78e9519592c112a0f61cf

Re-opening PR to rename changelog file (remove the -iso4 suffix) causing project invariants checking failures.

Processing this pull request

Pull request rejected by merge tool. No change entry file found

I hadn't noticed the name, my apologies. This will not work: the pull request has already been merged so just reopening the PR will not work. I think the easiest approach to fix this would be to just open a new PR that renames the file, then merge that via the merge button (instead of the merge tool).

Opened a new PR to merge changes into iso4: https://github.com/inmanta/inmanta-core/pull/4251
Closing this one.


Any chance to add a AE tracking and Interval Priority?

It is a great app! It is much faster than the Sony APP. Great for astrophotography, save a lot of time! Another grate thing is it allow more than 999 photos.
Will you consider adding the AE tracking and Interval Priority function in next version? It is great help for the day to night timelapse. Save a lot of time on playing LRT.
Again, thanks for your great work.

That's a great idea, I'll see if it is possible for the next version. But it is definitely some work because I need to get and set the chosen exposure settings of the camera.


Updated parser float functions

With the parser_get_float function that was there, I was not getting the correct results.  I wasn't sure where the error is, but the results I was getting were way off.  I have updated it to a function that I know works.
I also added a function called "parser_get_halffloat" which will convert the IEEE-754 16-bit version of float.  This is the one with a sign bit, 5-bit exponent, and 10-bit significant.
Both have been tested.

In BLE we use floats as specified in IEEE 11073. See also this discussion: https://stackoverflow.com/questions/60841331/dart-convert-ieee-11073-32-bit-float-to-a-simple-double
So I think my original code is correct. I think in you usecase you are receiving floats that are encoded with a different standard and hence the unexpected results.

I see.  Yes, you are correct the 32-bit float that you had was 11073 and SFLOAT is also 11073.  And bluetooth specs are about that.  So I guess what is needed are parsing function for the 754 functions for 32 and 16-bit float.  I replaced your float with the 754 version, so that has to be backed out.  But I do think it would be good to include the 754 float formats in the parser.  Bluetooth spec is one thing, but what people do is another.  I know a lot of Chinese exercise devices I've use 754 32-bit float, and I've seen a couple of things that use 16-bit.  If you think these would be OK to add, I can update this PR to pull out the 32-bit float change I made and add it in as a separate 754 float function.

I agree. It is fine to have additional functions for other types of floats...


Obtain Certificate

Hello,
I'm creating this issue cause i didn't find any solutions to my problem, i hope you can help me cause i'm very confused about this.
So i registrered an account on DigtalOcean, created a new project, Droplet (OS: Debian8), i add new domain on freenom (testevilginx17.gq) puts nameserver of DigitalOcean, and when i'm searching for it on google it's working i come on the defaut webpage of apache2. After this i tryed to ping this domain and it's tell me it can't find host.
After this i disabled apache2, installed evilginx2 from the precompiled binary package x86 configure it with my domain and the ip of VPS AND when i want to enabled the facebook phishlets, i get this error that a lot of people have:
/////////////////// [12:15:09] [inf] server domain set to: testevilginx17.gq
: phishlets hostname facebook testevilginx17.gq
[12:15:34] [inf] phishlet 'facebook' hostname set to: testevilginx17.gq
[12:15:34] [inf] disabled phishlet 'facebook'
: phishlets enable facebook
[12:16:01] [inf] enabled phishlet 'facebook'
[12:16:01] [inf] setting up certificates for phishlet 'facebook'...
[12:16:01] [war] failed to load certificate files for phishlet 'facebook', domain 'testevilginx17.gq': open /root/.evilginx/crt/testevilginx17.gq/facebook.crt: no such file or directory
[12:16:01] [inf] requesting SSL/TLS certificates from LetsEncrypt...
[12:16:06] [err] [www.testevilginx17.gq] acme: Error 400 - urn:acme:error:dns - DNS problem: NXDOMAIN looking up A for www.testevilginx17.gq
Error Detail:
Validation for www.testevilginx17.gq:80
Resolved to:
    Used:

[12:16:06] [err] [m.testevilginx17.gq] acme: Error 400 - urn:acme:error:dns - DNS problem: NXDOMAIN looking up A for m.testevilginx17.gq
Error Detail:
Validation for m.testevilginx17.gq:80
Resolved to:
    Used:

[12:16:06] [err] [static.testevilginx17.gq] acme: Error 400 - urn:acme:error:dns - DNS problem: NXDOMAIN looking up A for static.testevilginx17.gq
Error Detail:
Validation for static.testevilginx17.gq:80
Resolved to:
    Used:

[12:16:06] [!!!] failed to obtain certificates \\\\\\\\\\\\\\
So if you have any solution please tell me cause it's for a class project and i ill get a 0 if i can't made this working.
Regards, Stinky

hi, i don't understand on what my A record need to pish ?


Colony freezes if creep on construction site

Description of issue:
If a priority construction site is generated under a worker creep (maybe another type?), the entire colony will freeze because of -7 error on building.
Steps to reproduce:
Have a room reach level 3 while a creep is standing where a tower construction site is placed.  All workers fail at building which freezes the colony but prevents the worker from moving off the site.
Problem fixed after moving the offending creep off the position.
Error message:
N/A
// Console output:
N/A
Other information:

Overmind version: 0.3.1

Commit hash: c01ab8a902da8406a1ccd84dbb058434925a7bd3

Issue is with dependency: no

What do you mean by "the colony freezes"? Do all creeps in the colony stop operating or do only workers stop operating? How long does this effect last for? Typically if the room planner can't place a constructionSite, it will log an error in the console but continue working as normal.

Ok after reviewing the room history, it appears that only the workers were affected, but since they weren't doing anything, the miners filled the containers, the transporters had no output.  Here is a link to the history:
screeps.com/s/AqP1f7

Forgot to close this issue - this was fixed recently: https://github.com/bencbartlett/Overmind/blob/master/src/overlords/core/overlord_work.ts#L122


Fix petclinic-jpa test compilation issue

See related error in https://ci.spring.io/teams/spring-native/pipelines/spring-native-0.11.x/jobs/build-samples-java11/builds/83.

The good news is that the bean definition that refers to test classes is a BeanDefinitionRegistryPostProcessor that is useless at build time and should be removed. It's not ROLE_INFRASTRUCTURE at the moment and should be. Once I fix that in Spring Boot, it might just fix itself.

It did. Closing in favor of https://github.com/spring-projects/spring-boot/issues/28540


telemetry destination_cluster set to "unknown" on client failures

Istio 1.8.0
OpenShift 4.5
Slack Thread
I have a cluster configured for multi-cluster; meshId, clusterName, and network are all defined, and the telemetry is now setting source_cluster and destination_cluster attributes.  But I am seeing a problem where, on client failures like 503, or an upstream disconnect with no response (response_code=0), the destination_cluster is set to "unknown" despite the fact that destination_namespace|service|service_name|workload are all set correctly.  I would expect destination_cluster to be set anytime the destination_service has also been set.  Without the destination_cluster the destination can not be fully identified.
Probably implied, but this is for reporter="source" telemetry.
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[x] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
[ ] Upgrade
Expected behavior
In MC, when the destination service has been identified for a request, the destination_cluster should also be set.
Steps to reproduce the bug
This can be reproduced on a single cluster, as long as it is configured for multi-cluster.   I am seeing it with some standard running of bookinfo but it could probably be forced with fault injection.
Version (include the output of istioctl version --remote and kubectl version --short and helm version --short if you used Helm)
istioctl version --remote
client version: 1.8.0
control plane version: 1.8.0
data plane version: 1.8.0 (11 proxies)
kubectl version --short
Client Version: 4.4.3
Server Version: 4.6.1
Kubernetes Version: v1.19.0+d59ce34
How was Istio installed?
istioctl
Environment where the bug was observed (cloud vendor, OS, etc)
OpenShift 4.5

Please do not close this issue, hoping for a fix in 1.10.

@bianpengyuan , Can this be backported to 1.9 as well?

@jshaughn probably, depends on how much you want this :). It is a bit onerous to backport. one pr in proxy + two PRs in istio/istio.

@bianpengyuan I guess we could wait and see whether a user hits the issue.  I'd say it's possible because I run into problems even running bookinfo.  But we can wait and see.


Missing nsis shim

scoop install nsis

gives a Can't shim 'nsis.exe': File doesn't exist. error at last.

nsis.exe is no longer available (it was only a launcher). Use makesisw.exe instead.


Incompatible with Ansible 2.7 reboot module

via IRC:
181020 23:24:43 <boxrick> Hello :)
181020 23:25:03 <boxrick> Seems mitogen doesn't like the 'reboot' module in Ansible 2.7
181020 23:25:19 <boxrick> Sunday 21 October 2018  00:24:20 +0100 (0:00:00.233)       0:01:31.088 ********
181020 23:25:19 <boxrick> ERROR! [pid 87300] 00:24:22.247450 E mitogen: Router(Broker(0x110b25dd8)): no route for Message(1008, 3011, 0, 101, 1005, b'\x80\x02(XB\x00\x00\x00Rick-Box-MacBook-Pro-4-core.local-87396-7f'..247), my ID is 0
181020 23:25:42 <boxrick> It sits there then never reconnects.

Tagging @boxrick
I had a look at this briefly a few weeks back, IIRC it is the same issue as #369, but my memory is foggy :)

Closing this as duplicate of #370.


Travis CI build failure due to lint

The command "tools/test --full --coverage" is exiting with return value 1 and is preventing PR from getting accepted. The problem lies in lint

@zulipbot claim

Fixed in #3533. Thanks @AB261 for the report!


add snippetIdToString

Related to: https://github.com/uga-rosa/cmp-denippet/pull/2
Create method called snippetIdToString to get body from snippet id

body and str are different concepts.
body is console.log($0), str is console.log(), etc. str is for use in documentation, etc. As far as cmp-denippet is concerned, what you want to add seems to be an id->body function. In that case, you should name the function snippetIdToBody and remove the lsputil.parseSnippet part.

Thanks!
Completed