add the kubelet extra argument to fix vagrant problems

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For 1.11 Features: set Milestone to 1.11 and Base Branch to release-1.11
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
NOTE: After opening the PR, please un-check and re-check the "Allow edits from maintainers" box so that maintainers can work on your patch and speed up the review process. This is a temporary workaround to address a known issue with GitHub.>
Please delete this note before submitting the pull request.

/approve

made a comment about the addition.
thank you for your first PR, please feel free to send more!
@kubernetes/sig-cluster-lifecycle-pr-reviews
unless we get a comment from sig-cluster-lifecycle i suggest we close this.

hi, please combine the commits into one and provide reference links that outline the problem and propose  --node-ip as a solution.

Is there same news?

@CrisMon-01 Please respond to reviewer feedback from @neolit123, @dixudx, and @kad. Once reviewers are satisfied, a docs reviewer will cover any changes to wording or format.

@zacharysarah, i don't think we should include this change as is.
@CrisMon-01 the comments from @kad and @dixudx proposed to give an example on how to do the change in a custom systemd drop-in file. here is more info on the subject:
https://askubuntu.com/a/659268
but please mind that the paths differ between Linux distributions.

@neolit123 Should we close that PR ?

@kad yes, we already have cgroup notes in here:
https://github.com/kubernetes/website/blob/master/content/en/docs/setup/independent/install-kubeadm.md#configure-cgroup-driver-used-by-kubelet-on-master-node
it seems that troubleshooting-kubeadm.md also needs a generic update, but this can happen in a separate PR.
/close

actually, this is about --node-ip.
well we do instruct about using /etc/default/kubelet in the install-kubeadm.md guide...but this file also needs an update.


can't execute ./traccar.run with centos 7 | traccar 3.9

Hi all,
Whene i execute ./traccar.run i have errors and this is the output:
Verifying archive integrity... All good.
Uncompressing traccar  100%
++++++++++ YAJSW SET ENV ++++++++++
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
wrapper home : /opt/traccar
configuration: /opt/traccar/conf/wrapper.conf
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
---------- YAJSW SET ENV ----------
++++++++++ YAJSW SET ENV ++++++++++
/opt/traccar/bin/setenv.sh: line 44: java: command not found
wrapper home : /opt/traccar
configuration: /opt/traccar/conf/wrapper.conf
/opt/traccar/bin/setenv.sh: line 56: java: command not found
---------- YAJSW SET ENV ----------
/opt/traccar/bin/wrapper.sh: line 7: java: command not found

after investigation : line 44, line 56 and line are "$java_exe" -version
I tryed  to add java_exe=java as an envirment variable  but same error.
is there a solution for that thanks.
centos 7.3
traccar 3.9

Looks like you don't have Java installed, or it's not configured properly.

this is my profile config for java:
export JRE_HOME=/opt/jdk1.8.0_111/jre
export JAVA_HOME=/opt/jdk1.8.0_111
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
And java -version work correctly

It works correctly in your shell, but is it configured globally? Remember that service is run from root user in completely different shell.

but i configured java in profile using root user. it's not enough? how chould i configure it

Why don't you just install Java standard way? It works just fine for me on CentOS. Obviously something is misconfigured.

HI,
I have exact the same issue while installing a complete fresh instance on a newly installed Ubuntu.
I can't find where the error is, I re-installed all possible versions of Java too.
Did not have this issue with 3.7 and below.
Brgds
Patrick

HI,
I have exact the same issue while installing a complete fresh instance on a newly installed Ubuntu.
I can't find where the error is, I re-installed all possible versions of Java too.
Did not have this issue with 3.7 and below.
Brgds
Patrick

@marsu211, you don't need to install all possible versions of Java. You just have to install default version using standard package manager. Most of my server are using various versions of Ubuntu and there were no issues whatsoever. How did you install Java?

@marsu211, you don't need to install all possible versions of Java. You just have to install default version using standard package manager. Most of my server are using various versions of Ubuntu and there were no issues whatsoever. How did you install Java?

Thank you Anton
in the meantime I found the reason and fixed it. Maybe to tired for working on this now.
It's so perfect.
Thx

Thank you Anton
in the meantime I found the reason and fixed it. Maybe to tired for working on this now.
It's so perfect.
Thx


Import / export does not support dialects properly

Import and export functionality does not correctly support dialects like the rest of the codebase does. If you pass pt-br into the export or import methods, it explodes. This is because the code in cldr.rules is not dialect aware and only supports base languages e.g pt.

Traceback when trying to export translations for "pt-br" locale:
ERROR Internal Server Error: /translations/export/pt-br/
Traceback (most recent call last):
  File "/Users/jeff/myproject/sitepackages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/jeff/myproject/core/decorators.py", line 13, in wrap
    return func(request, *args, **kwargs)
  File "/Users/jeff/myproject/views.py", line 973, in translations_export
    return export_translations_to_po(language_code)
  File "/Users/jeff/myproject/sitepackages/fluent/importexport.py", line 208, in export_translations_to_po
    lookup = LANGUAGE_LOOKUPS[language_code]
KeyError: u'pt-br'

The view function that calls export_translations_to_po:
from fluent.importexport import export_translations_to_po

def translations_export(request, language_code=None):
    if language_code:
        return export_translations_to_po(language_code)
    else:
        return render(request, "export.html", {
            'languages': settings.LANGUAGES,
        })

Happens with current HEAD of fluent, commit bbcbb497f0c52b09f86365785b30b9b481ff89dc .


Run tests when collecting all

When collecting all submissions from an assignment, a test run will also be run for every submission.

Just a note: the error I discussed in an outdated diff is still relevant:
/home/vagrant/Markus/app/helpers/automated_tests_helper.rb:195:in `has_permission?': undefined method `admin?' for nil:NilClass (NoMethodError)
	from /home/vagrant/Markus/app/helpers/automated_tests_helper.rb:114:in `request_a_test_run'

which is caused from the call from submission_collector.rb
  if assignment.enable_test
      m_logger.log("Now requesting test run for #{assignment.short_identifier} \
                    on grouping: '#{grouping.id}'")
      AutomatedTestsHelper.request_a_test_run(new_submission.grouping.id,
                                              'collection',
                                             @current_user)
    end

Should we override the check, or otherwise what would be the prefered way to access/pass around @current_user?

@alexvail well done. The other feature which is missing is running the tests automatically when manually collecting an individual submission (from the repo browser). If you could work on that too, that would be great.


Add basic support for UDP trackers

Add basic support for UDP trackers is based on Taipei-Torrent.

Awesome, thanks. Are you looking to collaborate further?  Feel free to open issues if you want to plan out some features.

Sure, thanks! I'm trying to learn some Go and Bittorrent so I'll probably make some more pull requests in the future. thank you! 😀


[Install Time Permissions Prompt] Google interest in proposal

Chrome is interested in this proposal, but to solve a different problem. We like the idea of declaring a set of permissions that the app may optionally request, which would be useful for end-users to make more informed decisions about the app they are considering installing. We imagine that a more detailed install UI could include a section that developers are unable to modify (without modifying the app) that would include the set of permissions that the app may potentially request, giving users more insight into the type of application they are installing and how it may function. Another benefit is that permission management in settings UI could be made much simpler if the browser knows, at install time, the full set of permissions that may be requested. Finally, for apps distributed through a store, this could be useful for reviewing permissions during the listing approval process.
As part of this, our proposal would include blocking access to permissions / APIs outside of the declared set as a goal. In the proposal, it is stated that blocking access to APIs based on the set of declared permissions is a non-goal. Could you explain why this was considered a non-goal? How would you feel about a proposal that does indeed state blocking access as a goal?

This is great to hear @jarryd999!

We like the idea of declaring a set of permissions that the app may optionally request, which would be useful for end-users to make more informed decisions about the app they are considering installing. We imagine that a more detailed install UI could include a section that developers are unable to modify (without modifying the app) that would include the set of permissions that the app may potentially request, giving users more insight into the type of application they are installing and how it may function.

We thought about this as well and I think there might be a middle path.
Certain apps will truly have requirements in terms of permissions. For example, Meet and Teams are both less useful without at least Microphone access (and probably camera too). Similarly, Google Maps would need geolocation in order to unlock navigation. Those go in one bucket of "critical" permissions (i.e., they are not "required" but lack of those permissions would likely result in a poor experience/crippled app).
On the other side are less critical permissions, such as notifications for an app like Twitter and Facebook. Those could go in another bucket ("non-critical"?).
That disambiguation could be realized as something like this:
"permissions": {
  "critical": [ … ],
  "non-critical": [ … ]
}

Enumeration like this could certainly, to your point, enable apps to simplify their associated permissions settings screen. It may not, however, be able to do the same for general browsing (in-tab) because the Manifest is such a late lookup.

As part of this, our proposal would include blocking access to permissions / APIs outside of the declared set as a goal. In the proposal, it is stated that blocking access to APIs based on the set of declared permissions is a non-goal. Could you explain why this was considered a non-goal? How would you feel about a proposal that does indeed state blocking access as a goal?

Gating the ability to request permissions in a similar way is a little more fraught. While it is something that is routinely used in the context of compiled apps (e.g., UWP), it does go against the grain of the web and could actually make PWA installation undesirable to some developers because they would have more freedom to request permissions in a tab where the experience is not locked down in the same way. This is the reason why we considered this option, but ultimately decided to drop it from the spec.
Instead of doing that, we opted for the block to define the critical permissions only, which could be requested at one time and enable users to pick and choose what they grant (as opposed to the all-or-nothing model of classic Android in this regard). That left the developer free to request non-critical permissions in the context where they make sense. Going back to the Google Maps example, for instance, perhaps there’s a case to be made for not needing geolocation if you just want generalized info and directions, but as soon as you want to enable turn-by-turn directions and/or use the locator button, you get asked for the requisite permission.
In this way, the permissions block becomes a convenience for developers to be able to request multiple permission grants at once. I’m not against having some disambiguation of critical and non-critical permissions, but I’ve been convinced that turning it into a gate might undermine this effort.

[F]or apps distributed through a store, this could be useful for reviewing permissions during the listing approval process.

100% agreed. We are working with the Microsoft Store to see if we can capture this block and display the info on product pages.

As I don’t think gating permissions is going to be possible and given that the other items are addressed in #536, I think it’s safe to close this one. Let me know if you think otherwise @jarryd999.


Add global access token setting and validation

This PR is a feature addition, which allows the addition of a global access token to all endpoints.
This feature is important because it allows implementing a basic security, in cases where the endpoint is routed through a machine-to-machine connection. For example, a Ruby API handles all incoming requests and performs the user permissions validation, and then proxies the requests onto a TiTiler server; no requests from outside the Ruby API should be allowed to access the TiTiler endpoints directly.
Please advise if any changed are required for acceptance of this small feature addition!

Dear @DeflateAwning
We appreciate the contribution.
Adding Auth on top of titiler application should be done at user level. We see titiler.application module as a demo not as something that should get used in production and specifically if users required auth.
Global access token is pretty weak auth and I don't think it provide real security (IMO) which is why in the documentation we added https://developmentseed.org/titiler/examples/code/tiler_with_auth/ to show how users can implement auth on their own application.

@DeflateAwning can you resolve the issue to make sure the code works with python 3.8 🙏

Done! Forgot about that old Python3.8/3.9 type hinting syntax

@DeflateAwning can you run pre-commit 🙏

Hmm, I ran all the content in CONTRIBUTING.md before the Docs section, and then ran pre-commit, but there are no changes detected (on the latest version of this code). Is there something I'm missing? Was in Python3.10 venv.

Fixed. I changed 403 to 401 everywhere applicable (including docs).


Containers whose leafs are set to default values are no longer suppressed in get-config response beginning in 6ab0617

Beginning in 6ab0617, the server is no longer suppressing containers whose only leafs are set to default values when it presents the configuration via a get-config response.
For example, given the following model:
container test-container {
  leaf test-leaf {
    type string;
    default "foo";
  }
}

and assuming the node test-leaf has not been set, in response to a get-config the server will return an empty container:
<rpc-reply>
  <data>
    <test-container/>
  </data>
</rpc-reply>

In commits prior to 6ab0617, the empty container was suppressed.
I've modified one of the test models in https://github.com/ADTRAN/Netopeer2/commit/b6d791099c1db6e33bb6f3a722e6ec8d14d9a439 to demonstrate the failure. The test test_edit_delete1() in test_edit_get_config will fail due to the unexpected empty test-container. The test will pass against older commits.

Hi,
you are right, sorry about that and it should work now. I have accidentally merged your test case, as well, but no harm done.
Regards,
Michal

Hi Michal,
Your changes in a9844e2 pointed me in the right direction. They did need an additional change to handle default leafs more than one container deep. I've fixed that in #319, and added additional containers in the test model to verify the fix.
Thanks,
Andrew

Fixed with #319, included in server-0.6.8.


Steps for Enabling Copilot Summary Control Unclear

On this page:
https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fdynamics365%2Fcustomer-service%2Fcopilot-powerapps-settings&data=05%7C01%7C%7Cee65c995045241cc09b108db5c6fb712%7C9bc096abf225476e8e92260401469868%7C0%7C0%7C638205407131263393%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=SoS5cWJPbz7NuztiD%2BxxnjgffImBmZvksn%2B%2BUyUBy5M%3D&reserved=0
The instructions are not clear.
Step 5. The customer control CopilotCaseSummaryControl  is not available in the list of components.
Step 6. I am not sure what this means "Copy the unique name of the specified column."
[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: a2d86965-0137-5ba7-bf1f-58082567a8d3
Version Independent ID: a2d86965-0137-5ba7-bf1f-58082567a8d3
Content: Configure Copilot features for custom case forms and custom apps
Content Source: ce/customer-service/copilot-powerapps-settings.md
Service: dynamics-365-customerservice
GitHub Login: @gandhamm
Microsoft Alias: mgandham

@Hammr5900x,
Thank you for your comment. We've updated this topic since. I'd urge you to take a look and let me know if the updated topic helps.

Please let us know if the updated topic has helped. In the mean time, I'll be going ahead and closing this issue.


feat(chat-e2e): added "gpt-35-turbo-0613-adapter" to tests

Description:
added "gpt-35-turbo-0613-adapter" to tests
Checklist:

[x] the pull request name complies with Conventional Commits
[x] the pull request name starts with fix(<scope>):, feat(<scope>):, feature(<scope>):, chore(<scope>):, hotfix(<scope>): or e2e(<scope>):. If contains breaking changes then the pull request name must start with fix(<scope>)!:, feat(<scope>)!:, feature(<scope>)!:, chore(<scope>)!:, hotfix(<scope>)!: or e2e(<scope>)!: where <scope> is name of affected project: chat, chat-e2e, overlay, shared, sandbox-overlay, etc.
[ ] the pull request name ends with (Issue #<TICKET_ID>) (comma-separated list of issues)
[x] I confirm that do not share any confidential information like API keys or any other secrets and private URLs

/deploy-review


Robust input example

This is intended to be a frame rate independent demonstration of deletion of text.
Resolving the issue I found with the text box input example here github
The issue being that only one deletion call can be made per game loop.

feedback appreciated.
In particular some issues that I have before I mark as ready for review are:

nothing except user text is rendered to the screen.
comments do not fully explain the workings of the code and intent behind variables.
against simplicity guideline there is a function present.

Do not feel the need to limit yourself to responding to these issues if you can pose a new one please do.

@benev0 Really liked your idea of showing how to get multiple key inputs in the same frame. I think this would be a really good addition. Great job!
But I'd like to suggest simplifing it. IMHO, examples are there to show the fundamentals in practice, the simpler the better.
I believe just this would be enough:
int letter = GetCharPressed();
int key = GetKeyPressed();

while (letter || key)
{
    if (key == KEY_BACKSPACE)
    {
        if (usedSize > 0)
        {
            textField[usedSize -1] = 0;
            usedSize--;
        }
    }

    if (letter)
    {
        if (usedSize < MAX_INPUT_CHARS)
        {
            textField[usedSize] = (char)letter;
            usedSize++;
        }
    }

    letter = GetCharPressed();
    key = GetKeyPressed();
}

Also would suggest renaming it to text_framerate_independent.c, looks more accurate.
Edits: 1. typo; 2. simplify code.

I think this is an exelent 99% case; however, I think that there may be as issue with deleting multiple times with a successive add (in one frame). I will followup with further reasoning or a retraction, but regardless this works with nearly all typing that the threw at it and I assume that any case I generate will highly contrived. Good work :)
I like the file name suggestion I will change it in the next commit.

The issue I have found with the code provided by @ubkp is that is does not guarantee that the queues are synchronized, in the case where each key press occurs on a different frame the queue is cleared and so the synchronization is guaranteed. In a high frame rate environment I believe the code is highly safe given that with two key presses per frame the code is safe.
note that backspaces are processed first.

int letter = GetCharPressed();
int key = GetKeyPressed();

while (letter || key)
{
    if (key == KEY_BACKSPACE)
    {
        if (usedSize > 0)
        {
            textField[usedSize -1] = 0;
            usedSize--;
        }
    }

    if (letter)
    {
        if (usedSize < MAX_INPUT_CHARS)
        {
            textField[usedSize] = (char)letter;
            usedSize++;
        }
    }

    letter = GetCharPressed();
    key = GetKeyPressed();
}

By exhaustion it can shown that all combinations of delete and character key presses result in the expected output
$Q_c$ Queue of letters
$Q_k$ Queue of key presses

first
second
$\frac{expected}{result}$

$Q_{c0}$
a
a
"aa"

$Q_{k0}$
a
a
"aa"

$Q_{c1}$
a

""

$Q_{k1}$
a
$\leftarrow$
""

$Q_{c2}$
a

" $\leftarrow$ a"

$Q_{k2}$
$\leftarrow$
a
" $\leftarrow$ a"

$Q_{c3}$

" $\leftarrow \leftarrow$ "

$Q_{k3}$
$\leftarrow$
$\leftarrow$
" $\leftarrow \leftarrow$ "

To address the possible use of other 0 character keys such as shift in a sequence of two key presses:

If the character key is replaced then no character adds occur only deletes are a factor.
If the delete key is replaced no deletes occur and only the character key is a factor.

with two key presses it is impossible that the queues to de-sync and cause and issue.
As for three key presses here is a sequence that de-syncs code.

first
second
third
$\frac{expected}{result}$

$Q_{c}$
a

" $\leftarrow \leftarrow$ a"

$Q_{k}$
$\leftarrow$
$\leftarrow$
a
" $\leftarrow$ "

As $Q_c$ does not store backspace characters the character from the third key press is processed in the same iteration as the first backspace. The second iteration results in the second deletion character being processed deleting the first character and third key press information. The third iteration does no processing and terminates the loop.
A de-sync will also occur when the first $Q_k$ item is another non character such as shift.
Is this sufficient issue to warrant the complexity required to mitigate it?

@ubkp Agree 100% with your comments.

@benev0 @ubkp @raysan5
I concur about the difficulties.  I also think that it is too easy to over-simplify the situation, especially with the importance of keystate and the fact that there are keypresses that should not count as characters or lead to characters in that queue.
In the example code, there might need to be some caveats about the assumptions that allow the example to be simple.
Generally, there's also the matter of the conditions under which certain text input functions are used and whether the text is being shown to the user who may have some (limited) ability to edit it before signaling completion (KEY_ENTER or some other).
A simple example is arrow keys (including from the keypad depending on NumLock).  They might signify movement (in the manner of WASD) or they might signify movement of a text cursor and change an insertion point.
PS: Earlier, I confused "key" with "char" and I didn't catch myself until I explored the KeyboardKey enum in raylib.h.  With regard to my remark about ctypes.h, the implementations of those is-functions are very efficient, using nothing so wasteful (and difficult to check) as elaborate switch statements.  Instead bit vectors are used and it takes only one access into the array indexed by the char value to answer questions about a single character by using a bit mask.  This also allows certain accommodations of language and locale. In particular, one can change locale just by switching to a different version of the table.  That concept could be applied with respect to keys as well.  And, by the way, not all ctypes.h is-functions are locale dependent.  Function isprint(c) is not locale-dependent in ISO Standard C, for example.  (I confirmed that looking at the C11 Standard and then checking Windows SDK implementation, which uses a cute trick that works whether a char is signed or unsigned.)  I suspect that the keys situation is more complicated, even more than the situation with controllers.  There's a nice reference example of  using bit vectors in Plauger's The Standard C Library book.

@orcmid The issue of passing negative values (aside from EOF) as UB is true and in real practice, there are implementations that crash on them. As I mentioned, these functions are not for "characters" in strings. Passing unsigned chars makes most of them work "by accident", but passing signed chars is undefined for arbitrary input, which is really bad. There's no good reason to have the functions fall over on that.
And yeah, it does seem to be true that not all of them are affected by locale. But, enough of them are, that it's a footgun I'd rather leave out from my code.
ctype.h is an aggressively misleading API that gets misused in virtually every instance.
see the Character classification and mapping of this post for more details in a more neutral tone if you don't agree with me.
https://nullprogram.com/blog/2023/02/11/
As for optimization: compilers are more than capable of converting the checks to bit tests on their own.
https://gcc.godbolt.org/z/dxrzWjeex
All of the ctype.h functions compile to function calls, as far as I can tell, for gcc anyway.
I doubt there is any perf advantage to ctype.h, if anything, there would be a disadvantage because the compiler cannot inline them...
If you're interested, some of the optimizations are also described here
https://queue.acm.org/detail.cfm?id=3372264
See Chained conditionals

@Peter0x44 as this argument with @orcmid is no longer referring directly to any code relevant to this PR, I ask that you stop discussion of it here.

Thanks to the modifications suggested by @ubkp I believe that core functionality is ready to be reviewed, but before finalizing the submission I would like to consider the following:

[ ] Dress up with draw calls
[ ] Proper crediting for contributors

I also have the concern that this example has become similar to the text_input_box.c example, so it may be more appropriate to update example instead. @raysan5, your input would be greatly valued on this matter.

bit vectors are used and it takes only one access into the array indexed by the char value to answer questions about a single character using choice of a bit mask. ... That concept could be applied with respect to keys as well.

I would like that suggestion to not  be lost in the fog of war here.  I will say no more.

@benev0 I'm afraid I'm not merging this example for the comments I reviewed.


Update holopin.yml to award Quickstarts badge to contributors

Description
The yaml file to award contribution badges has been updated such that each contributor can be awarded a Quickstarts badge for their contribution to this repo.
Issue reference
This PR fixes #1004
Please reference the issue this PR will close: #1004
Checklist
Please make sure you've  completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly.
[x] Correct and accurate change has been done as per the issue suggestion.
[x] YAML doesn't throw any error.

Please review and suggest changes, if any.
@mikeee @marcduiker

@paulyuk  Please review and suggest changes, if any. Thanks.
cc: @mikeee @marcduiker

@Rutam21 Hi! I appreciate you tagged wanting an update, maintainers/approvers will review when time permits. I unfortunately cannot assist with getting this merged here. I've left an approval anyway.

@marcduiker This is still waiting to be merged and tested.

Thank you for contribution @Rutam21 !

@holopin-bot @Rutam21 Thanks again!


Protected watchman reloader against busy loops.

With an error in the loop above (e.g. using query without args), this
would trigger a busy loop.  While this was caused due to changes to the
loop itself, it seems to be just good practice to protect against this.

@orf This seems like a simple change. As author of the changes to support watchman, do you think this makes sense?

I think this makes sense. Ideally it wouldn’t be required, but I think as a safeguard it’s good.


[freexl] build failure on x64-linux on fedora-36

Host Environment

OS: Linux Fedora 36
Compiler: gcc-12

To Reproduce
Steps to reproduce the behavior:
./vcpkg install freexl:x64-linux
Failure logs
Additional context
The freexl port config fails due to missing libiconv while configuring make
Looking into the libiconv port. It seems libiconv is supposed to be an empty package on linux
if(NOT VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_ANDROID)
    set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
    file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/iconv")
    file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv")
    return()
endif()

Removing the empty package snippet from port/libiconv/portfile.cmake fixes the issue.
Once libiconv is actually installed freexl proceeds without complaining
JFYI,
On Fedora-36 Iconv is part of the glibc-common dnf package which i have it installed on my OS
However there doesnt seem to be a libiconv.a or libiconv.so provided by the OS packages.

The problem is only happening on this particular system, so it's not a vcpkg issue.
As you mentioned above, after removing empty package snippet from port/libiconv/portfile.cmake, the problem is solved, I think you can use it as a workaround.

Regarding the freexl error: By properly reporting the original error, we could properly help to resolve the problem. vcpkg reports log files for this purpose.
Regarding libiconv: Did you install the development package corresponding to glibc-common?

CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:96 (message):
    Command failed: /usr/bin/bash -c "V=1 ./../src/freexl-1-0b9ac2177e.clean/configure  \"LIBS=-liconv $LIBS\" \"--disable-silent-rules\" \"--verbose\" \"--disable-shared\" \"--enable-static\" \"--prefix=/home/ankurv/devel/vcpkg.test/installed/x64-linux/debug\" \"--bindir=\\${prefix}/../tools/freexl/debug/bin\" \"--sbindir=\\${prefix}/../tools/freexl/debug/sbin\" \"--libdir=\\${prefix}/lib\" \"--includedir=\\${prefix}/../include\" \"--datarootdir=\\${prefix}/share/freexl\""
    Working Directory: /home/ankurv/devel/vcpkg.test/buildtrees/freexl/x64-linux-dbg

vcpkg-tool version: 2022-09-01-dfb82802c8cc562ce3b665a904a65b22314de724
vcpkg-scripts version: 4dbb7578c 2022-09-18 (3 days ago)
cat       /home/ankurv/devel/vcpkg.test/buildtrees/freexl/config-x64-linux-dbg-err.log
configure: error: in `/home/ankurv/devel/vcpkg.test/buildtrees/freexl/x64-linux-dbg':
configure: error: C compiler cannot create executables
See `config.log' for more details

 cat       /home/ankurv/devel/vcpkg.test/buildtrees/freexl/config-x64-linux-dbg-out.log
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports the include directive... yes (GNU style)
checking for gcc... /usr/bin/cc
checking whether the C compiler works... no

 cat       /home/ankurv/devel/vcpkg.test/buildtrees/freexl/config-x64-linux-dbg-out.log

 ....
 configure:4199: $? = 1
configure:4219: checking whether the C compiler works
configure:4241: /usr/bin/cc -fPIC -g  -L/home/ankurv/devel/vcpkg.test/installed/x64-linux/debug/lib conftest.c -liconv  >&5
/usr/bin/ld: cannot find -liconv
collect2: error: ld returned 1 exit status

I have the development packages
glibc-devel
along with glibc-gconv-extra and glibc-utils too

Is there a reason libiconv is turned off for x64-linux.
I'm unblocked with the changes I suggested but i'm wondering why that isnt the default behaviour ?

AFAIU the reason is that iconv (the features) is present on most POSIXish systems, even without a distinct iconv (the library).
configure:4219: checking whether the C compiler works
configure:4241: /usr/bin/cc -fPIC -g  -L/home/ankurv/devel/vcpkg.test/installed/x64-linux/debug/lib conftest.c -liconv  >&5
/usr/bin/ld: cannot find -liconv
collect2: error: ld returned 1 exit status

The check for a working C compiler shouldn't use -liconv (which requires an iconv library), and it doesn't on my linux machine. At this early point, environment variable LIBS seems to be the only potential source for this flag.
It might be easier if we had the full config-x64-linux-dbg-out.log.

config-x64-linux-dbg-config.log

Configurations starts with
$ ./../src/freexl-1-0b9ac2177e.clean/configure 'LIBS=-liconv ' ...

This is what I expected. There are two possible sources:

your environment (check with echo $LIBS)
your CMake installation, via CMAKE_C_STANDARD_LIBRARIES (cf. cmake-vars-x64-linux-dbg.cmake.log)

In either case, it is outside of vcpkg: vcpkg is explicitly told to use -liconv.

LIBS is empty and i thought vcpkg downloads and uses its own cmake
cmake-vars-x64-linux-dbg.cmake.log
dont see liconv in the file you mentioned.
Also if my environment were the issue, i would get failures compiling pretty much everything.
Pretty much everything except freexl compiles fine on my environment

Never mind .. Found the issue. It was indeed my environment. I made changes to fix freexl compilation on android.
I'll close this one .


fix: don't add tests module to runtimepath

The tests folder was getting added automatically to &rtp since it was under lua/. This is problematic for other plugins that would like to also perform tests while lualine is loaded.
Solution: move tests folder outside of lua/ and explicitly tell Neovim to add it as a runtimepath.

To test the effect, try this before and after:
print(vim.inspect(require "tests.helpers"))

As far as I remember we moved tests/ in to lua/ because hoob3rt was having trouble running locally on his machine with tests/  folder outside of lua/ . We kind of just followed location telescopes test dir. Can you tell me why a plugin will run it's tests with other plugins loaded ?

As far as I remember we moved tests/ in to lua/ because hoob3rt was having trouble running locally on his machine with tests/ folder outside of lua/

that's why I added that test-runner wrapper

We kind of just followed location telescopes test dir.

what I'm suggesting is inline with "core" plugins, see: https://github.com/nvim-treesitter/nvim-treesitter/tree/master/tests and https://github.com/neovim/nvim-lspconfig/tree/master/test

Can you tell me why a plugin will run it's tests with other plugins loaded ?

in this case it's Lunarvim, but this is still polluting the global namespace regardless. I ended up doing this to fix the issue: LunarVim/LunarVim@94ed25c (#2351)

Ok . That's reasonable . Since all tests are passing I think we can merge it.


Merge asof time

What changes were proposed in this pull request?
(Please fill in changes proposed in this fix)
How was this patch tested?
(Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests)
(If this patch involves UI changes, please attach a screenshot; otherwise, remove this)
Please review https://spark.apache.org/contributing.html before opening a pull request.

Can you update the title to better reflect that this PR is about?


BIO Stream can work with any IO (not just TCPSocket)

on_bio_stream_read and on_bio_stream_write can use any IO (not just TCPSocket)
http server works fine

I restricted this to just TCPSocket because that's the only actual use I'm aware of and it helps w/ performance and avoiding a dynamic dispatch. Do you have a use-case other than tests where you're relying on using some other IO?

Self signed cert. Also writing and reading from the socket is just ugly.
What is the overhead of dynamic dispatch here ?

Codecov Report

Merging #27 (bfd3373) into main (3a20f19) will decrease coverage by 1.90%.
The diff coverage is 60.00%.

@@            Coverage Diff             @@
##             main      #27      +/-   ##
==========================================
- Coverage   76.80%   74.90%   -1.90%
==========================================
  Files           2        2
  Lines        1095     1096       +1
==========================================
- Hits          841      821      -20
- Misses        254      275      +21

Impacted Files
Coverage Δ

src/ssl.jl
71.95% <60.00%> (-6.83%)
:arrow_down:

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

@grlap any plan to merge this? :)

I'm still waiting for sign off.


More config options for the user

It would be nice to have options for the scope and sensitivity of the statuses for a user. I could implement this in a PR if you like.
ps. I am also happy to help with other issues & TODOs

I appreciate the help @zoenglinghou !
I've added the scope and sensitivity option to be set on a user per user basis or globally on the config file:
Allow visibility and sensitivity to be set in the config file
And has been merged into master: #5
If you're up to it I was thinking of also adding support for polls. I'll create the issue and if you feel like you can work on it.

I would study the poll APIs a bit and see if I can implement it over the weekend.

Sounds great!
Closing this issue as resolved 😉


Deepen the color of the highest price

Thanks for the contribution! I've gone with a different PR I'm afraid, but I hope it gives you what you're looking for.
Keep enjoying the app, and may your turnips sell high!


32bit detection error

I wrote a post 3 years ago with this bug, but still was not resolved.
I'm using a 64 bit Windows 10, but the script detects it as 32 bit system (it happens from v11.1 to 12.0.4):

Because this error, the USB DriveCleanUp is not working:

Can you please post the results of running: "tron.bat -c"

There you go:

  Loading...

   Updating SMART drive database, please wait...

   Done.

   Detecting disks...

   Done.

   Checking repo for updated Tron version...

   Done.

 Tron v12.0.4 (2022-10-23) config dump

 Command-line switches:
  -c

 User-set variables:
   AUTORUN:                no
   AUTORUN_IN_SAFE_MODE:   no
   AUTO_REBOOT_DELAY:      0
   AUTO_SHUTDOWN:          no
   CONFIG_DUMP:            yes
   DEV_MODE:               no
   DRY_RUN:                no
   EMAIL_REPORT:           no
   EULA_ACCEPTED:          no
   LOGFILE:                tron.log
   LOGPATH:                C:\logs\tron
   NO_PAUSE:               no
   PRESERVE_METRO_APPS:    no
   PRESERVE_POWER_SCHEME:  no
   PRESERVE_MALWAREBYTES:  no
   QUARANTINE_PATH:        C:\logs\tron\quarantine
   SELF_DESTRUCT:          no
   SKIP_ANTIVIRUS_SCANS:   no
   SKIP_APP_PATCHES:       no
   SKIP_CUSTOM_SCRIPTS:    no
   SKIP_DEBLOAT:           no
   SKIP_DEBLOAT_UPDATE:    no
   SKIP_DEFRAG:            no
   SKIP_DISM_CLEANUP:      no
   SKIP_EVENT_LOG_CLEAR:   no
   SKIP_KASPERSKY_SCAN:    no
   SKIP_MBAM_INSTALL:      no
   SKIP_ONEDRIVE_REMOVAL:  no
   SKIP_PAGEFILE_RESET:    no
   SKIP_SOPHOS_SCAN:       no
   SKIP_TELEMETRY_REMOVAL: no
   SKIP_WINDOWS_UPDATES:   no
   SKIP_WSUS_OFFLINE:      no
   UNICORN_POWER_MODE:     off
   UPLOAD_DEBUG_LOGS:      no
   VERBOSE:                no

 Script-internal variables:
   BAD_RUNPATH:            no
   CUR_DATE:               2023-02-13
   DTS:<PHONE_NUMBER>0251.853000+060
   FIND:                   C:\WINDOWS\System32\find.exe
   FINDSTR:                C:\WINDOWS\System32\findstr.exe
   FREE_SPACE_AFTER:       0
   FREE_SPACE_BEFORE:      0
   FREE_SPACE_SAVED:       0
   HELP:                   no
   NETWORK_AVAILABLE:      yes
   REG:                    C:\WINDOWS\System32\reg.exe
   SAFE_MODE:              no
   SAFEBOOT_OPTION:
   SMART_PROBLEM_CODE:     undetected
   SYSTEM_LANGUAGE:        es
   TEMP:                   C:\Users\isabe\AppData\Local\Temp
   TARGET_METRO:           no
   TIME:                   10:02:55,44
   TIME_ZONE_NAME:         Romance Standard Time

   TRON_DATE:              2022-10-23
   TRON_VERSION:           12.0.4
   PROCESSOR_ARCHITECTURE: AMD64
   REPO_TRON_DATE:         2023-02-02
   REPO_TRON_VERSION:      12.0.5
   RESUME_DETECTED:        no
   RESUME_SWITCHES:        0
   RESUME_STAGE:           0
   WIN_VER:                Windows 10 Home
   WIN_VER_NUM:            6.3
   WMIC:                   C:\WINDOWS\System32\wbem\wmic.exe

By the way, it's windows 11

PROCESSOR_ARCHITECTURE: AMD64

It successfully and correctly detected you are running AMD64
Can you send me the full log set for the run and I'll dig into this for you?

I verified the code executing is correct
@echo off echo %PROCESSOR_ARCHITECTURE% if /i '%PROCESSOR_ARCHITECTURE%'=='AMD64' ( 		echo "AMD64" 	) else ( 		echo "X86" 	) pause
returns
AMD64 "AMD64" Press any key to continue . . .
The only way you could be seeing what you are seeing, is that if the exe files are swapped or misnamed.
And I cannot recreate that either, I received different files and ran the 64 bit one directly via cli and it performed the action as expected.
64Bit Hash
DFD1F048CF9EEFE96A1266139D3683DE86ED25346300A0392EB5B2C10F4C78D1
32Bit Hash
C16B5CB963FFF0FC74CE725B14E2833FF00EB069B6E42C50B0C0FF6E4E36BD4C

PROCESSOR_ARCHITECTURE: AMD64

It successfully and correctly detected you are running AMD64
Can you send me the full log set for the run and I'll dig into this for you?

There you go:
https://nextcloud.tel/s/NKFM82Wz54CR5Cn

I know you mentioned that you are running a 64 bit version of windows, but please run this and paste the output. It needs to be ran in powershell with admin rights
`
$computer = Get-WmiObject -Class Win32_ComputerSystem
$processor = Get-WmiObject -Class Win32_Processor
$os = Get-WmiObject -Class Win32_OperatingSystem
$registry = [Microsoft.Win32.RegistryKey]::OpenBaseKey("LocalMachine", "CurrentUser")
$regKey1 = $registry.OpenSubKey("System\CurrentControlSet\Control\Session Manager\Environment")
$regKey2 = $registry.OpenSubKey("System\CurrentControlSet\Control\Session Manager\Environment")
$CPUArchitecture = $processor.AddressWidth
$OSArchitecture = $os.OSArchitecture
$RegistryValue1 = $regKey1.GetValue("PROCESSOR_ARCHITECTURE")
$RegistryValue2 = $regKey2.GetValue("PROCESSOR_ARCHITEW6432")
$EnvVariable1 = [Environment]::GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
$EnvVariable2 = [Environment]::GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")
$results = @{
"CPU Architecture (x86 or x64)" = $CPUArchitecture
"OS Architecture (x86 or x64)" = $OSArchitecture
"Registry key value for CPU architecture" = $RegistryValue1
"Registry key value for OS architecture" = $RegistryValue2
"System Environment Variable for CPU architecture" = $EnvVariable1
"System Environment Variable for OS architecture" = $EnvVariable2
}
$results | Format-Table
`

PS C:\WINDOWS\system32> $computer = Get-WmiObject -Class Win32_ComputerSystem
PS C:\WINDOWS\system32> $processor = Get-WmiObject -Class Win32_Processor
PS C:\WINDOWS\system32> $os = Get-WmiObject -Class Win32_OperatingSystem
PS C:\WINDOWS\system32> $registry = [Microsoft.Win32.RegistryKey]::OpenBaseKey("LocalMachine", "CurrentUser")
No se puede convertir el argumento "view", con el valor: "CurrentUser", para
"OpenBaseKey", al tipo "Microsoft.Win32.RegistryView": "No se puede convertir
el valor "CurrentUser" al tipo "Microsoft.Win32.RegistryView". Error: "No se
puede hacer coincidir el nombre de identificador CurrentUser con un nombre de
enumerador válido. Especifique uno de los siguientes nombres de enumerador e
inténtelo de nuevo:
Default, Registry64, Registry32""
En línea: 1 Carácter: 1
+ $registry = [Microsoft.Win32.RegistryKey]::OpenBaseKey("LocalMachine" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

PS C:\WINDOWS\system32> $regKey1 = $registry.OpenSubKey("System\CurrentControlSet\Control\Session Manager\Environment")
No se puede llamar a un método en una expresión con valor NULL.
En línea: 1 Carácter: 1
+ $regKey1 = $registry.OpenSubKey("System\CurrentControlSet\Control\Ses ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

PS C:\WINDOWS\system32> $regKey2 = $registry.OpenSubKey("System\CurrentControlSet\Control\Session Manager\Environment")
No se puede llamar a un método en una expresión con valor NULL.
En línea: 1 Carácter: 1
+ $regKey2 = $registry.OpenSubKey("System\CurrentControlSet\Control\Ses ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

PS C:\WINDOWS\system32> $CPUArchitecture = $processor.AddressWidth
PS C:\WINDOWS\system32> $OSArchitecture = $os.OSArchitecture
PS C:\WINDOWS\system32> $RegistryValue1 = $regKey1.GetValue("PROCESSOR_ARCHITECTURE")
No se puede llamar a un método en una expresión con valor NULL.
En línea: 1 Carácter: 1
+ $RegistryValue1 = $regKey1.GetValue("PROCESSOR_ARCHITECTURE")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

PS C:\WINDOWS\system32> $RegistryValue2 = $regKey2.GetValue("PROCESSOR_ARCHITEW6432")
No se puede llamar a un método en una expresión con valor NULL.
En línea: 1 Carácter: 1
+ $RegistryValue2 = $regKey2.GetValue("PROCESSOR_ARCHITEW6432")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

PS C:\WINDOWS\system32> $EnvVariable1 = [Environment]::GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
PS C:\WINDOWS\system32> $EnvVariable2 = [Environment]::GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")
PS C:\WINDOWS\system32> $results = @{
>> "CPU Architecture (x86 or x64)" = $CPUArchitecture
>> "OS Architecture (x86 or x64)" = $OSArchitecture
>> "Registry key value for CPU architecture" = $RegistryValue1
>> "Registry key value for OS architecture" = $RegistryValue2
>> "System Environment Variable for CPU architecture" = $EnvVariable1
>> "System Environment Variable for OS architecture" = $EnvVariable2
>> }
PS C:\WINDOWS\system32> $results | Format-Table

Name                           Value
----                           -----
Registry key value for CPU ...
System Environment Variable... AMD64
System Environment Variable...
Registry key value for OS a...
OS Architecture (x86 or x64)   64 bits
CPU Architecture (x86 or x64)  64

I'm unable to reproduce on my machine (win10 22h2) or VMs (win7 through 2019). Are you still experiencing this?

Yes; actually last week happened again (on Windows 11):
**2023-06-21 14:19:58,78**    Launch job 'USB Device Cleanup'... DriveCleanup V1.6.3 (Win32) Uninstalls non present USB hubs, USB storage devices, Disks, CDROMs, Floppies, storage volumes and WPD devices and deletes their registry items Freeware by Uwe Sieber - www.uwe-sieber.de Error: The Win32 release of DriveCleanup does not work on x64 Windows -> abort
By the way, languaje code is es_ES. IDK if it helps

What is the output of this command if you run it in a command-prompt? (NOT PowerShell)
echo %processor_architecture%

What is the output of this command if you run it in a command-prompt? (NOT PowerShell)
echo %processor_architecture%

@borekon
If you feel comfortable in editing a file. We might be able to fix this issue for you. I know vocatus  & TylersComputersKC  will probably state this edit doesn't make any sense or difference in the code, but read what borekon wrote "... By the way, languaje code is es_ES. IDK if it helps"
The command prompt (cmd.exe) interpreter is written, tested, and updated in English (en_US). I am suspecting that the Spanish (es_ES) culture code is interpreting the code of '%variable%'=='something' literally. Tronscript uses this code style many times, but this is the ONLY time it is used as the primary decision.
Now back to what file and code that needs to be changed. The file  "tron\resources\stage_1_tempclean\stage_1_tempclean.bat" needs to have (line 202 in the current code)
if /i '%PROCESSOR_ARCHITECTURE%'=='AMD64'
changed to read
if /i %PROCESSOR_ARCHITECTURE%==AMD64
You will be removing the single quotes or comillas simples from the line.
This is only a TEST to see if the command prompt interpreter on your (es_ES) system is reading the code literally.
The result of this TESTwill determine the course of action needed for the code of the stage_1_tempclean.bat file.

@borekon If you feel comfortable in editing a file. We might be able to fix this issue for you. I know vocatus & TylersComputersKC will probably state this edit doesn't make any sense or difference in the code, but read what borekon wrote "... By the way, languaje code is es_ES. IDK if it helps"
The command prompt (cmd.exe) interpreter is written, tested, and updated in English (en_US). I am suspecting that the Spanish (es_ES) culture code is interpreting the code of '%variable%'=='something' literally. Tronscript uses this code style many times, but this is the ONLY time it is used as the primary decision.
Now back to what file and code needs to be changed. The file "tron\resources\stage_1_tempclean\stage_1_tempclean.bat" needs to have (line 202 in the current code) if /i '%PROCESSOR_ARCHITECTURE%'=='AMD64' changed to read if /i %PROCESSOR_ARCHITECTURE%==AMD64 You will be removing the single quotes or comillas simples from the line.
This is only a TEST to see if the command prompt interpreter on your (es_ES) system is reading the code literally. The result of this TEST will determine the course of action needed for the code of the stage_1_tempclean.bat file.

Hi @RedBaron2 ,
Writting both in cmd (just testing) appears to work:

I'll modify that file and test in a VBOX machine.
Thanks for your time :)

Hi @RedBaron2 and @borekon , did removing the single quotes change the outcome? I've been following this thread and would like to get a fix in before the next version goes out if possible.

Hi @RedBaron2 and @borekon , did removing the single quotes change the outcome? I've been following this thread and would like to get a fix in before the next version goes out if possible.

It seems to be working now:

Taking a look in the file that i've been modified, i saw that the singles quotes are not present, for example, when calling CCleaner:

@vocatus
I suggest for the next release taking out the single quote in this section of code.
@borekon
Your discovery of the missing quotes is what made me suggest the edit. I'm glad it is working now.

@RedBaron2 removed the single quotes from the section that calls the USB cleanup
@borekon Updated file is going out with new release today. Thanks for reporting!


Daily Energy v. Total Energy

Hi, I managed everything working and I think it's great. My only issue is that the "Total Energy" values are not matching the "Daily Energy" ones.
Total energy matches perfectly with the consumption my meter shows, Daily Energy seems to be growing at a much faster rate and not matching or even proportional to the total energy.
Attached my code (at least the part I think it's relevant) and some captures of the values. Can anybody help me to spot where the issue is?

  # Pulse meter
  - platform: pulse_meter
    name: '${friendly_name} - Power Consumption'
    id: sensor_energy_pulse_meter
    unit_of_measurement: 'W'
    state_class: measurement
    device_class: power
    icon: mdi:flash-outline
    accuracy_decimals: 0
    pin: ${pulse_pin}
    #internal_filter: 100ms
    on_value:
      then:
        - light.turn_on:
            id: led_red
        - delay: 0.5s
        - light.turn_off:
            id: led_red
    filters:
      # multiply value = (60 / imp value) * 1000
      # - multiply: 60
      - lambda: return x * ((60.0 / id(select_pulse_rate).state) * 1000.0);
    total:
      name: '${friendly_name} - Total Energy'
      id: sensor_total_energy
      unit_of_measurement: 'kWh'
      icon: mdi:circle-slice-7
      state_class: total_increasing
      device_class: energy
      accuracy_decimals: 3
      filters:
        # multiply value = 1 / imp value
        # - multiply: 0.001
        - lambda: return x * (1.0 / id(select_pulse_rate).state);
  # Total day useage
  - platform: total_daily_energy
    name: '${friendly_name} - Daily Energy'
    id: sensor_total_daily_energy
    power_id: sensor_energy_pulse_meter
    unit_of_measurement: 'kWh'
    icon: mdi:circle-slice-3
    state_class: total_increasing
    device_class: energy
    accuracy_decimals: 3
    filters:
      # Multiplication factor from W to kW is 0.001
      - multiply: 0.001

# Enable time component to reset energy at midnight
# https://esphome.io/components/time/homeassistant.html
time:
  - platform: homeassistant
    id: homeassistant_time

I think it's a distorted view because your total entity already had a value at midnight (what was the value at that time?), then it might be correct.

I think it's a distorted view because your total entity already had a value at midnight (what was the value at that time?), then it might be correct.

To check if we are in the same page: if I take a measurement for total entity at any time of the day minues the value at midnight it should be the same as daily energy, right? It's not working like that for me:
Total Energy @ 00:00: 33.74 KWh
Daily Energy @ 00:00: 0 KWh
Total Energy @ 10:00: 41.06 KWh
Daily Energy @ 10:00: 33.78 KWh
ΔTotal Energy: 7.32 KWh
ΔDaily Energy: 33.78 KWh

I do see what you mean now, has it improved in the meantime?

Thanks for the comments. I checked with the logged consumption and the actual meter and I could not detect any power spikes. Also, after it ran several days values started to increase at a similar rate (still not as expected but better).
I reset the ESP32 and started from scratch with new names/entities and have been monitoring for the last 4 days, then both values report the same rate. I suspect that wonky values while setting up for the first time adjusting LED sensitivity could be the culprit here. Either way, thanks for the ideas and support!


AppSource is no longer at home.dynamics.com

This statement is no longer correct:
Users can now run the app by using Power Apps Mobile on a mobile device or from AppSource on Dynamics 365 in a browser. Co-owners can edit and share the app in Power Apps.
When I navigate to home.dynamics.com, I get an error saying this is not available.  It would be nice to see an update to where this has moved to.
Thanks!
[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 55c12582-519a-606c-1f2e-8fe1f6ac5d2a
Version Independent ID: 537b3097-4aa4-f3e5-b252-ffb832ecb1dc
Content: Share a canvas app with your organization - Power Apps
Content Source: powerapps-docs/maker/canvas-apps/share-app.md
Service: powerapps
GitHub Login: @alaug
Microsoft Alias: alaug

Thank you for reaching out. It's been replaced with https://www.office.com/apps, documentation is updated and will reflect this change soon.


SSDP matching improvements

Breaking Change:
ssdp in manifest.json has changed; it is now a list of dicts, and as we now match using the UPnP device description fields directly, device_type has to be renamed to deviceType. Not sure if custom integrations support this stuff in the first place, but if they do, they need to adjust accordingly. No included integrations use it at the moment, nor are they broken by this change.
Description:
Per discussion in https://github.com/home-assistant/home-assistant/pull/28214#discussion_r339291851

support multiple match groups per domain
require matches on all, not any item in a group
support matching on all UPnP device description data

Matching on all UPnP device description data is consistent with providing all of it, ditto the ssdp data structure in manifest.json to the corresponding provided discovery_info, see #28197
Related issue (if applicable): #28214
Pull request with documentation for developer docs: https://github.com/home-assistant/developers.home-assistant/pull/341
Example entry for configuration.yaml (if applicable):

Checklist:

[ ] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass
[x] There is no commented out code in this PR.
[x] I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[x] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[ ] Untested files have been added to .coveragerc.

If the code does not interact with devices:

[x] Tests have been added to verify that the new code works.

This has some issues still, will address, marking as WIP meanwhile.

WIP lifted, hopefully got it right now.

🎉

Thanks!


resolved all warnings and conflicts

Fixes #431, Fixes #432, Fixes #419, Fixes #422

@sanjay-kv Sir please have a look on this


ClientSecretCredential

The access to the landing and admin page is working properly. but when a customer tries to configure his subscription on the landing page he gets this error. What is the cause of this error?

Hi @bassamalasadi This most likely means the single tenant app reg secret is not set in the appsettings.

Hi @bassamalasadi This most likely means the single tenant app reg secret is not set in the appsettings.

Thank you @santhoshb-msft

I'm getting the same issue , but I'm new to saas accelertor , can you explain me steps to take exactly ?
there is many appsettings files.
How to redeploy the saas accelerator with the right secret ?
Error 500 : ClientSecretCredential authentication failed: A configuration issue is preventing authentication - check the error message from the server for details.You can modify the configuration in the application registration portal. See https://aka.ms/msal-net-invalid-client for details. Original exception: AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app '150ad515-7985-45b3-900a-fec1626e06d3'. Trace ID: 6395b8c2-897a-4ea0-a713-c97501ef7100 Correlation ID: 474c5797-76fb-4749-b45f-8d9dbae0ce66 Timestamp: 2023-11-17 19:42:04Z


savedFeedsPrefV2 is not implemented

The API: https://docs.bsky.app/docs/api/app-bsky-actor-get-preferences
Calling it returnsATRecord items most of which are implemented however app.bsky.actor.defs#savedFeedsPrefV2 has not been implemented. The JSON for it looks like:
{    "$type":"app.bsky.actor.defs#savedFeedsPrefV2",    "items":[       {          "id":"3ksozirjyzc2u",          "type":"feed",          "value":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot",          "pinned":true       },    ] }
if you can give me some guidance on how I can add this feature I think I can do a PR. Right now FishyFlip code is a bit more advanced for me mostly because I have not done library dev before

seems like v3 will have this


Online version "Websocket connection failed" on chrome

WebSocket connection to 'wss://localhost:14251/' failed: WebSocket opening handshake was canceled
This is caused do to the "Allow invalid certificates for resources loaded from localhost." flag in chrome.
This can be tested/fixed by toggling the flag in chrome://flags/#allow-insecure-localhost to enabled/disabled.

Could you try goiing in the config and modifying it to ws://localhost:14252 ?
(no change on the bot side, but you have to be using necrobot latest source code)

mixed content error
Mixed Content: The page at 'https://nicoschmitt.github.io/pogo.webui/index.html' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://localhost:14251/'. This request has been blocked; this endpoint must be available over WSS.
Uncaught SecurityError: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

So since the online version is being hosted on a webserver, localhost wont work. To use an online version like that you'd need to use your external IP address and port forward the port.

If you don't want to enable the chrome localhost certs, yea your right

@nicoschmitt the most recent necroBot websocketinterface is suppose to accept both secure and insecure connections right?

Uh no, because the webserver is trying to connect to its own localhost not yours. If it's a remote connection it has to use your external IP through a forwarded port.

@torin555 wrong. chrome://flags/#allow-insecure-localhost set to enabled. You can test yourself

That isn't what that does.

@torin555

@Fawsum Wether or not I set this flag to true I get this error (at the chrome debug console): "WebSocket connection to 'wss://localhost:14251/' failed: WebSocket opening handshake was canceled"
Any idea why?

@theloser make sure that when you enable chrome://flags/#allow-insecure-localhost that you restart chrome. There should be a big blue button at the bottom of the window that pops up after you alter the flag that says "Relaunch Now".
If you are still having the issue I am currently testing necrobot's end to see what errors I can produce

@Fawsum Wow! I didn't see the really big blue button, sorry :-)
After restarting Chrome it's working fine!
Thanks!

@theloser alright great! We are trying to get this working without having to modify chrome's security policies

it works if the bot is running locally, but my setup looks like this: Chrome on OS X and bot is running on Parallels VM with my bootcamp, so i have to listen on wss://windowsip:14252 which gives me also an certificate error handshake

Great news! But what's about multiple windows/tabs for multiple bots? All tabs are always connected to the same bot. Changing the port in one tab changes the port on all tabs, and all tabs are "switching" to the same bot.

Therefore u can use private browsing, which will give u clean configs

@Fawsum Well that's some magic right there... It should be completely impossible to connect remotely to anywhere at all with "localhost" since all that means is the local IP of the applications computer. It's not even referring to the external IP address of you computer it refers to the internal IP which is completely useless to anything not connected on your internet network.
Beyond even that issue is that for anything to remotely connect to any port on your router, the router needs to allow access to that port. And for anything other then some common ports such as 80 the router will block the connection unless the port is forwarded. (Keep in mind this is all before the connection even touches your computer let alone google chrome.)
Once the connection reaches your computer it needs to get past your computer's firewall. Most firewalls are set to block all uncommon external ports just like the router's firewall does, so you'd need to add an exception for the port to your computer's firewall before it would allow the connection.
After all of that the connection finally reaches chrome, where the unsecured localhost connection setting is irrelevant because the connection isn't coming from localhost, it's coming from the external webserver (in this case nicoschmitt.github.io).
So I'm completely baffled as to how it's connecting to your computer with nothing other then "localhost" (meaningless) and an unopened port.

the server don't connect, everyting is client based so localhost is fine. but certificate is an issue.
@Epinikion : it should work better with ws://[name]:14252 (either wss + 14251 or ws + 14252)

@nicoschmitt How can it be client based when the file is on nicoschmitt.github.io? If it was a local file it would make sense, but it isn't.

it is just a HTML hosted file. then the javascript executed in your brower connect to your computer.

BTW, on my PC, using ws://localhost:14252 work well. but it does not seem to be like that for everyone. I don't know why.

Ah I see it's using javascript. That makes a whole lot more sense. That's actually a vulnerability in javascript, which is why chrome is blocking it. Since the site forces https, you wont be able to use javascript to connect to localhost like that in chrome.

you can. the thing is it's either HTTP to HTTP or HTTPS to HTTPS.
I have to find a HTTP hosting

Well yes, but I was saying that because most people don't have HTTPS localhost certs lol.

there is one embed into necro but as it self signed you still get the error. trusting it would work

Yeah self signed HTTPS certificates are basically the same as no certificate. Which is good because otherwise HTTPS would be meaningless.

Current guidance here: https://github.com/nicoschmitt/pogo.webui.
I'll close this for now.

a had the same problem , and i found that using
var ws =  new WebSocket('wss://www.xxxxxxx/yyyy/');
ensted to new WebSocket('wss://xxxxxxx/yyyy/');
did the JOB, and the connection not fail after while as befor


[🐛] - Enable the gh-pages settings

Describe the bug
Based on this log: https://github.com/depapp/IndoGitHubers/actions/runs/12000456396/job/33449607750

We need to enable the gh-pages settings under https://github.com/depapp/IndoGitHubers/settings/pages. Only the owner can set this config.

Set the Source from "Github Actions"

i have enable it mas @mazipan
but the workflow still failed https://github.com/depapp/IndoGitHubers/actions/runs/12000456396

Help to update the Source from "branch" and select gh-pages @depapp

I've been success deploying in https://mazipan.github.io/IndoGitHubers/

it's works mas @mazipan 🙇🏻
https://depapp.github.io/IndoGitHubers/


Correction in tutorial for thymeleaf-spring4 fixes this issue: https://github.com/thymeleaf/thymeleaf/issues/601

Correction in the Spring's Template resolver class, I have update the class from "org.thymeleaf.templateresolver.SpringResourceTemplateResolver" to "org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver".

Merged and changes uploaded to site. Thanks!


feat(home-manager): add support for waybar

This currently only works if style is defined inline and not a separate css file.
Closes #126

Just added two options to control the module's behavior.


Implementing a dvtm-editor script?

What about having both:

.
config.h
environment variable
keybinding

text-only editor
static Editor editors[]
DVTM_EDITOR
Mod + e

color pager
static Editor pagers[]
DVTM_PAGER
Mod + E

I may be able to try it after my exams if you are short on time.

As an example, we could add another argument to copymode, which is the array of editors to look into:
 ...
 static void
-copymode(const char *args[]) {
+copymode(const char *args[], Editor editor) {
        ...
 }
 ...

Then in config.h:
 ...
 static KeyBinding bindings[] = {
         ...
         { { MOD, 'e',          }, { copymode,       { NULL, editors }           } },
         { { MOD, '/',          }, { copymode,       { "/" }                     } },
+        { { MOD, 'E',          }, { copymode,       { NULL, pagers }            } },
         ...
 }
 ...
 static Editor editors[] = {
	{ .name = "vis",         .argv = { "vis", "+%d", "-", NULL   }, .filter = true,  .color = false },
	{ .name = "sandy",       .argv = { "sandy", "-d", "-", NULL  }, .filter = true,  .color = false  },
	{ .name = "dvtm-editor", .argv = { "dvtm-editor", "-", NULL  }, .filter = true,  .color = false },
	{ .name = "vim",         .argv = { "vim", "+%d", "-", NULL   }, .filter = false, .color = false },
-	{ .name = "less",        .argv = { "less", "-R", "+%d", NULL }, .filter = false, .color = true  },
-	{ .name = "more",        .argv = { "more", "+%d", NULL       }, .filter = false, .color = false },
};
+
+static Editor pagers[] = {
+	{ .name = "less",        .argv = { "less", "-R", "+%d", NULL }, .filter = false, .color = true  },
+	{ .name = "more",        .argv = { "more", "+%d", NULL       }, .filter = false, .color = true },
+};

Could you motivate your changes a bit? We have limited scroll back history anyway so your editor should generally also be a reasonable pager.
This issue reminded me that I should dig out and review a patch for a standalone dvtm-editor utility which would invoke $EDITOR and at least in theory work for any editor.

The idea is that less is a color-capable pager, and scrolling and searching is very pleasant with it.  But less it can not output text, and can not paste text for dvtm.
Now I remember that dvtm has a scroll keybinding in addition of the pager.  This will fix my issue.
In addition, less, if input comes from a file (i.e: not from stdin), pressing v opens the editor.
We I could even make a dvtm-editor script that does this:

dumps stdin from dvtm to a file
open it with $DVTM_EDITOR (less which can now open an editor, or any editor)
"$DVTM_EDITOR" edit the file (i.e. remove everything but the word to copy, with VISUAL + :w) and quit.
It gets saved to DVTM clipboard.

Any editor can edit and save a file, while not can read and write to and from stdin.

In the end, the script could check availability (with command -v):

DVTM_EDITOR,
VISUAL,
EDITOR,
ALTERNATE_EDITOR
PAGER
vis (because it handles input the right way and because we can),
vim (because it is popular and still better than bare vi
vi
less (fallingback to pagers)
more (last resort).

For all pager, we would not output anything, for all editors, we would output the remaining content of the text file, unless it has not been saved (comparison of mtime or some other trick), we did just have a look and not copy.
This chunk could eventually leave be simplified: copymode()

I merged a dvtm-editor and dvtm-pager utility which more or less does what you described. Hope this covers your use cases.

This works very well.


ESLint v6 was released yesterday.

ESLint v6 was released yesterday. https://github.com/eslint/eslint/releases/tag/v6.0.0
Yet create-react-app has yet not released a new version, which includes the https://github.com/facebook/create-react-app/pull/7219 PR which fixes the https://github.com/facebook/create-react-app/issues/7218 issue.
Just wanted to let you know, that this fix should be released asap. As ESLint v6 is now the latest version on https://www.npmjs.com/package/eslint and a lot of people are going to experience this https://github.com/facebook/create-react-app/issues/7218 issue pretty soon.

Our users will still be using ESLint 5 until we bump the version, so #7218 shouldn't be an issue. Thanks for the heads up though!
@mrmckeb we may want to test v6 with your ESLint PR?

Our users will still be using ESLint 5 until we bump the version, so #7218 shouldn't be an issue. Thanks for the heads up though!

I may quote @ivan-aksamentov at this point:

Please note that this issue affects users beyond create-react-app, because many projects use eslint-config-react-app as a starting points for their eslint configurations. These users are unable to try Eslint 6 until this is sorted out.

A lot of projects make use of the npmjs.com/package/eslint-config-react-app eslint conf, as well does our project; therefore, the fix to be able to upgrade to ESLint v6 would be much appreciated.

@ndrsllwngr this is on our radar.  Once we do appropriate tests have been done we'll do the upgrade.  The expectation that we upgrade within 24 hours is not reasonable.

@ndrsllwngr as @bugzpodder said, we're working on this.
With all dependencies, we need to consider breaking changes. In this case, we're worried about a change to one specific rule and are currently discussing that.
Hopefully we can get this in with #7036 - as I want to merge that PR in the next few days.

Also overrides in the config / eslintrc should be wrapped in an array.
Error: ESLint configuration in .eslintrc.js » eslint-config-react-app is invalid:
	- Property "overrides" is the wrong type (expected array but got `{"files….

I’m happy to send a PR but couldn’t find my way to the file I’d need to change…

Yes, this was fixed @Primajin - don't worry, I also spotted it yesterday and also went "Oh, already fixed!".

Date of release fix ?

@ndrsllwngr "The expectation that we upgrade within 24 hours is not reasonable."  commented 15 days ago
Any update?

@lonewarrior556 not yet.  3.0.2 should be released soon but no firm date yet.

Is it possible to just minor bump https://www.npmjs.com/package/eslint-config-react-app with the fix? And not wait on 3.02 of https://www.npmjs.com/package/create-react-app release?
It's a minor change that fixes a bug, It should be enough to unblock anyone trying to use eslint 6.0

Hi @lonewarrior556, we're waiting for this to be resolved... https://github.com/typescript-eslint/typescript-eslint/issues/644
It's still listing v5 a the dependency. Please feel free to help push that through.

But couldn't we just push out the change from https://github.com/facebook/create-react-app/pull/7219 wich should be backwards compatible so both v5 and v6 users could use it? And then do everything else later in a higher version bump?

It seems like every issue that was mentioned in here as a dependency/blocker has been resolved. Any update on the matter?

It seems like every issue that was mentioned in here as a dependency/blocker has been resolved. Any update on the matter?

Yes, it's resolved, but new version is not released yet, so we all are waiting for release.

Correct, I hope this will be out in the next week :)


Better documentation for payload-hash-sha1 and payload-hash-sha256

None of the documentation for payload-hash-sha1 references that it refers to a HMAC and not something else such as a plain sha1 hash. Documentation of support for payload-hash-sha256 is also missing entirely.
Depending on the level of backwards compatibility you wish to maintain, I might suggest that payload-hash-sha1 (and sha256) be renamed to payload-hmac-sha1, possibly leaving the old names as an alias for backward support.

I always forget GitHub doesn't send notifications for reactions...
I completely agree with you. :+1:


Control.TransformFeature issue on deactivate() / activate()

To reproduce the issue:

http://openlayers.org/dev/examples/transform-feature.html
in the js console: control.deactivate(); control.activate()
drag the feature with the handles

Results: the handles are not at the correct place.

see #175


Rename SSH3 => SSHH3 ?

This project is not an iteration of SSH as it does not extend the SSH protocol itself and is not compatible with existing clients nor tooling and runs on a completely different port and server architecture.
Which leads me to assume that the number 3 was acquired from the use of http/3 proposals.
As such the long form description is "SSHv2 over HTTP/3" so my question is:
Wouldn't it be more correct to shorten it to sshh3 or sshh ?
-- You've created something cool but completely different :-)

/cc: @francoismichel it'd be great to have your opinion on this.

Short:  Please do s/ssh3/sshh3/g,  global substitute "ssh3" with "sshh3".
Several years ago there was use SSH2, because SSH1 has security flaws. Today I heard about ssh3 and was thinking "O chips, need to update all SSH2 stuff". Then I learnt this actual sshh3.  :-/
The it is a poor name is also expressed in https://lists.debian.org/debian-devel/2023/12/msg00213.html and it's follow-up messages.
And in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1059618#26 is stated:

I share these concerns, so I'll delay the upload for now.  I'm hoping
upstream will rename the project to something less confusing.

Another option could be soh for "SSH over HTTP" or "Shell over HTTP".
Waiting on the final decision to package this for Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=2256027

Please do s/ssh3/sshh3/g, global substitute "ssh3" with "sshh3".

It became h3sh, inspired by https://lists.debian.org/debian-devel/2023/12/msg00225.html

something as simple as naming it h3sh would have avoided the brand confusion

There are merge request #85, #86 and #87. That last one:
stappers@paddy:~/xkcd386/h3sh
$ git show
commit 22b6ac4b4be0f8203e6103ef8c4ebe038239f5ba
Author: Geert Stappers<EMAIL_ADDRESS>Date:   Sun Dec 31 13:38:15 2023 +0100

    Explaining the name.

    Because we can't afford ourselfs the effort to explain
    all the SSH users that this is not SSH3.

    Signed-off-by: Geert Stappers<EMAIL_ADDRESS>
diff --git a/README.md b/README.md
index bb767ae..a81f99b 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ Among others, H3SH allows the following improvements:
 > [!TIP]
 > Quickly want to get started ? Checkout how to [install H3SH](#installing-h3sh). You will learn to

-*H3SH* stands for the concatenation of *SSH* and *H3*.
+*H3SH* stands for *HTTP/3* and *shell*.

 ## ⚡ H3SH is faster
 Faster for session establishment, not throughput ! H3SH offers a significantly faster session
stappers@paddy:~/xkcd386/h3sh
$

And regarding the "appears to be intentional" from

Even something as simple as naming it h3sh would have avoided the brand confusion while communicating the purpose of the package. This does not appear to be a case of "unknowing infringement." It appears to be intentional.

Younger versions of me also did intentional "this will be funny" and got back "not funny" that made me better.

IMHO typing h3sh at the command line is not that pleasant.  I suggest not using a digit in the name.  Let's use a name that is unique and where typing and tab-completion is simple and package naming doesn't conflict or confuse with existing projects.

On Sun, Dec 31, 2023 at 05:46:24AM -0800, Simon Josefsson wrote:

IMHO typing h3sh at the command line is not that pleasant.  I suggest
not using a digit in the name.  Let's use a name that is unique and
where typing and tab-completion is simple and package naming doesn't
conflict or confuse with existing projects.

s/3/e/   gives   hesh.  Yes, much more pleasant to type as h3sh.
https://duckduckgo.com/?q=hesh  didn't show conflicts with software
projects, nor with SSH.
-H3SH stands for the concatenation of SSH and H3.
+HESH stands for the 3 in HTTP/3 mirrorerd into E and shell.
Happy New Year
Geert Stappers
Silence is hard to parse

Sorry for the delay, I am currently out of office.
I have no problem with rethinking the name, and I am also okay with distros renaming the binaries
however they want right now. I am happy with people discussing this here and I take note of the suggestions. We however may want to wait a little bit before applying renaming on the whole project. I think the question about naming will become clearer once we get to discuss the project at IETF in March. We discussed
a few alternative name ideas. shh is one of the candidates that I like, the only thing I don’t like in it is that it looks like an ssh typo. shs can be cool as well.
I am a bit less convinced with names with the « 3 » in it as one of the goals could also be to make it support HTTP/2 (again, this might become clearer after a few IETF discussions).
I think waiting until March-April would help us coming up with a more solid name, and that would also give time to other people for discussing names here as well. In the mean time, distros naming it how they want if they don’t like ssh3 is okay to me, the packages would probably be proposed for unstable distribution releases anyway.
Meanwhile, Happy New Year and thank you for the thoughtful comments and the momentum you give to the project ! I am really looking forward to the release 0.1.5 that includes a lot of cool improvements that will make it great for day-to-day use :-)
I let the issue open right now as I would like to keep getting more feedback in the meantime.

My 2 bits here as a random small open source developer. March is 3 months away. Keeping ssh3 for another 3 months especially as "3" should not be in the name (per your comment) doesn't make sense.
Just rename it to a random, even long name for now - ssh-over-http3, and in March once the future goals are clearer, find a good, proper name.

Maybe if someone can create a pull request with ONE proposed naming, and if we distributors can all agree to use that, pending a final decision?  I'm preparing packages for Debian.  If some other packagers can agree on a name, we can get consistency even if upstream wants to delay the decision (which is entirely reasonable).
I've done some typing tests, and my prefer is shs because it is fast to type on a keyboard.  Repeating the same character on a keyboard as in ssh or shh is slower than alternating characters like shs.  The acronym would be Secure Hypertext Shell which actually makes a lot of sense.
Thoughts?  For packaging purposes, I think it is sufficient to rename the binaries /usr/bin/shs and /usr/bin/shsd, as I'm thinking the ssh3-server binary would eventually be extended to implement daemon-like functionality.  I think shsd should not be in /usr/sbin as users may want to run it too, as a non-root setup. Project documentation and golang name stays the same.  Thoughts?

Maybe if someone can create a pull request with ONE proposed naming, and if we distributors can all agree to use that, pending a final decision? I'm preparing packages for Debian. If some other packagers can agree on a name, we can get consistency even if upstream wants to delay the decision (which is entirely reasonable).

I like this idea, enabling us to have common package names without renaming in a hurry. Time will also tell us if the common package names is a good candidate for being the potential long-term name. I like soh and shs, I am just a little scared of shs being close to an ssh typo. It might be worth having the opinion if several people involved in distros packaging.

I like soh and shs, I am just a little scared of shs being close to an ssh typo. It might be worth having the opinion of several people involved in distros packaging.

Yeah, the acronym for shs is less good as @CameronNemo noted.  I did some typing tests for soh and for me it involves using either three fingers (which cognitively takes more resources than two fingers) or movement of one finger (which also takes resources).   Overall shs feels faster to type though.  Yes, I am doing premature optimizations =)

Iterating on this, what do we explicitly need in such pull request for distro packages ? I am not sure we need to rename every file, every object and package, we could stick to changing the binaries names, logging and readme for now, that would make the PR a lot lighter and probably a lot easier to maintain up-to-date with upstream.
Thoughts ?

[ ] Rename binaries /usr/bin/ssh3 and /usr/bin/ssh3-server
[ ] Rename ~/.ssh3/ naming?  for consistency with the binaries
[ ] ?

I think settling on naming is going to be the main challenge to get this packaged, at least for Debian.  Doing an upload, even to experimental, only to later have to rename it requires some manual steps, so I'm reluctant to do that just now.

I don't think the optimisation here should be fast typing. shs or soh is almost the same. Yes, there's a difference, but IMO it's way more likely that one will mistype ssh as shs or viceversa, than be bothered by the slow soh typing.
I would vote for moving ahead with soh.

I don't think the optimisation here should be fast typing. shs or soh is almost the same. Yes, there's a difference, but IMO it's way more likely that one will mistype ssh as shs or viceversa, than be bothered by the slow soh typing.
I would vote for moving ahead with soh.

Works for me if we can agree on it -- any other packagers here?  Which distributions are interested?

Fedora and potentially EPEL packager here, fine with soh (I proposed it :sweat_smile:).

Great. I can make an soh release based on version 0.1.5-rc3 (or rc4). I think the new ProxyJump support (#44) makes it more usable so let's include it in the release.

I'm very fine with soh for all the reasons discussed here :)

There is now #96 which has

Two main reasons:
Dropped the 3 to be ready for HTTP/2
Avoiding confusion with OpenSSH. ( We don't want to panic SSH users to update their SSH. And we don't want to keep explaining this project is not next OpenSSH release.)

in the commit message.
Regarding

Iterating on this, what do we explicitly need in such pull request for distro packages ? I am not sure we need to rename every file, every object and package, we could stick to changing the binaries names, logging and readme for now, that would make the PR a lot lighter and probably a lot easier to maintain up-to-date with upstream.
Thoughts ?

I think the name "ssh3" did serve it's purpose, it did bring this project attention.  Now the project deserves a better name.  The sooner, the better.

Reverse it?
hss

Thanks for the PR, I'll have a look at it at the beginning of next week.
As I said, I am fine if the binaries get named something else than ssh3. For the protocol in itself, we'll see after a few IETF discussions if it becomes a version of SSH or something else, but it will probably be presented as an SSH version: it really implements the SSH connection protocol.

Reverse it?
hss

We kind of agreed on a package name but I am okay if people want to continue to propose, I just think we'll stick to soh for packaging right now. It would be great to have a place easing propositions and votes.

Reverse it? hss

Think this is quite good, HTTP Secure Shell, or HTTPS Shell.

hsh


Ant-Dir Environment

Hi! When I generate the offline dataset corresponding to Ant-dir, I can only generate the data of goal1, and the data in the goal0 folder is always empty, how should I solve this problem?
Moreover, in the offline dataset corresponding to the cheetah-vel I generated, there is no data with train epoch 6e5, I changed the config to null in order to run it successfully, is this change correct?

@LanqingLi1993 Hi! I saw the complete dataset zip you shared and compared it to the one I generated which does have issues, thanks for sharing. I would also like to ask if I can delete the npy data files for the rest of the epochs when the train epoch and eval epoch set in config are not null, it doesn't seem to affect loading the corresponding data.

@Folly135 Hi, if you specify an epoch number rather than null in the train epoch and eval epoch, the program will load all trajectories corredponding to that epoch for training/testing. If you are certain that we will never use other npy data files, it's fine to delete them.
Just be aware that the data loading utilities (e.g. init_buffer() in https://github.com/LanqingLi1993/FOCAL-ICLR/blob/master/rlkit/core/rl_algorithm.py) were only designed for my own workflow and certainly not perfect. Feel free to re-invent them for your own projects. =)

@Folly135 FOCAL needs to sample a batch of tasks (meta_batch) to compute the metric loss. replace=False means it cannot sample duplicate task indices, therefore meta_batch cannot be greater than the population (i.e., n_train_tasks or  n_eval_tasks). Indeed you should set mb_replace=1 which means duplicate tasks can be samples, otherwise there won't be positive pairs (latent z from the same task) in the metric loss. I have revised the mb_replace in https://github.com/LanqingLi1993/FOCAL-ICLR/blob/master/configs/default.py to reflect this change.
For the reproduction issue, we did receive several reports and will provide an updated version of codebase at https://github.com/LanqingLi1993/FOCAL-latest, please check it out in a few days. Thank you for following our work!

 Yes, you should be able to successfully reproduce Ant and HalfCheetah Envs using our latest code: https://github.com/LanqingLi1993/FOCAL-latest. Please let us know if you encounter any further issues. Thank you!


UI: Filter in service discovery page has a weird behaviour

What did you do?
We were trying to filter some targets in the service discovery page, when we found that using a pattern shouldn't match anything, is still returning/displaying the dropped target

What did you expect to see?
When the pattern doesn't match any target, then it shouldn't display anything
Environment

Prometheus version:
v2.33.5

/cc @AntoineThebaud

Hmmm, it's unclear what the expected behavior should be. I can well imagine that for some people it might be useful to search dropped ones as well, especially if they want to confirm whether they existed at all before dropping if they are unexpectedly missing.

That's actually the point of this proposal @juliusv, today you can not easily search among dropped targets because the filter is ignored, so when you have thousands of dropped targets like in the example above & pagination applying, it's really difficult to narrow down to a specific dropped target.

Ah I misunderstood. Sounds good!

Hello from the bug scrub,
is this still relevant for the new UI @juliusv  @Nexucis  ?

This all works a bit differently in the new UI, but as far as I can see it works as I would expect at least :) So closing this.


[11.x] Add in-memory cache support to Blade

I working on a Filament  based project and experiencing slow performance on pages including tables, and realized the issue is that Filament uses lots of components to render resources.
I have seen Taylor's recent tweet about the Blade component's performance and tried to optimize it by converting Blade compiled codes to returning functions and caching it inside memory instead of reading the component from disk on each render.
I tried to keep PHP engine working on non-callback returns to prevent any breaking changes while rendering old compiled views.
Performance results:

I would suggest testing your solution on a server with and without opcache enabled... then test Laravel 11.x without your PR with opcache enabled and see if there is much of a difference. Other PRs I've seen attempt attempt to take a similar approach do not see any speed benefit once Opcache is enabled because it eliminates the file I/O penalty for you.

@taylorotwell
I tried each one 10 times and captured the best time.

Without opcache
With opcache

Without Blade Caching

With Blade Caching

I think calling a function has less overhead than using require on each render.
Code used to benchmark:
Route::get('/', function () {
    $a = array_map(
        fn () => Benchmark::measure(fn() => view('home')->render()),
        range(0, 10)
    );

    return 'OPCache Enabled: ' . (is_array(opcache_get_status()) ? 'Enabled' : 'Disabled') .
            '<br>With caching: ' . (array_sum($a) / count($a));
});

home.blade.php:
@foreach (range(1, 20000) as $id)
    <x-avatar :name="'Taylor'" class="mt-4" />
@endforeach

Got it - so 299ms vs 280ms. It's a small improvement but not quite as big of an impact as I would like to make on this part of the stack. I think most of the improvements we are looking for should probably be outside of file I/O since Opcache gets rid of that concern for the most part.

@taylorotwell
Another overhead is making a new instance of View on each render. I tried to cache the view instance and just update data inside it in the next calls and here is the result but I'm not sure if it's a breaking change or not.
Without view instance caching:

With view instance caching:

I did a quick change just for testing:
public function make($view, $data = [], $mergeData = [])
    {
        $path = $this->finder->find(
            $view = $this->normalizeName($view)
        );

        // Next, we will create the view instance and call the view creator for the view
        // which can set any data, etc. Then we will return the view instance back to
        // the caller for rendering or performing other view manipulations on this.
        $data = array_merge($mergeData, $this->parseData($data));
        if ($view == 'components.avatar') {
            if ($this->cachedView) {
                return $this->cachedView->with($data);
            }
            $this->cachedView = $this->viewInstance($view, $path, $data);
            return $this->cachedView;
        }

        return tap($this->viewInstance($view, $path, $data), function ($view) {
            $this->callCreator($view);
        });
    }

That's fairly interesting. A 20% reduction isn't bad.

I think another area of improvement is we are calling callComposer and callCreator in ManagesEvents for every instance of a component we create, even if there are no composers or creators for that view.

It's not Filament only but LiveWire applications in general would benefit as these are often view heavy, even if it's only ~7-10% improvement... it's still an improvement. Thank you for the PR and good luck in squeezing even more performance!

@taylorotwell
I opened another PR for view instance caching. #51152

I think another area of improvement is we are calling callComposer and callCreator in ManagesEvents for every instance of a component we create, even if there are no composers or creators for that view.

I do believe #51143 PR is trying to improve on these areas.

@taylorotwell Another overhead is making a new instance of View on each render. I tried to cache the view instance and just update data inside it in the next calls and here is the result but I'm not sure if it's a breaking change or not (Like nested components including self inside content).
https://github.com/laravel/framework/blob/6da5093aa672d26d0357b3569d8b3b426673dc61/src/Illuminate/View/Factory.php#L146
Without view instance caching:
With view instance caching:
I did a quick change just for testing:
public function make($view, $data = [], $mergeData = [])
    {
        $path = $this->finder->find(
            $view = $this->normalizeName($view)
        );

        // Next, we will create the view instance and call the view creator for the view
        // which can set any data, etc. Then we will return the view instance back to
        // the caller for rendering or performing other view manipulations on this.
        $data = array_merge($mergeData, $this->parseData($data));
        if ($view == 'components.avatar') {
            if ($this->cachedView) {
                return $this->cachedView->with($data);
            }
            $this->cachedView = $this->viewInstance($view, $path, $data);
            return $this->cachedView;
        }

        return tap($this->viewInstance($view, $path, $data), function ($view) {
            $this->callCreator($view);
        });
    }

Playing around with this: this improvement is 100% because of the call to $this->callCreator. If you comment out that line then the rest stays the same.
You also gain marginal improvements from anything else happening in loops. E.g. getEngineFromPath, normalizeName. Nothing as high as 20%, but if you do enough caching of these repeated processes then it'll shave off ms combined.

Closing for other PR you have open.

@amir9480 I'm not seeing any performance improvement here locally. 🤔

Maybe I use an old laptop and a big range number (10 x 20,000) for testing 🤔.
@mpociot could you please run your perfomance test with this PR too?

Going to close this one as I'm not seeing much benefit.


Minimum Deployment Target iOS 9 on Xcode 11.3.1 and Swift 5

Hi fellas,
I'll cut to the chase,
Why is the minimum deployment being set to iOS 10 ? :(
I have a concern regarding the current minimum iOS on the latest version that supports Swift 5.
The current project that I have has been running using Moya for the last 2 years.
TLDR;
I have no choice but to stay at minimum iOS 9 + I need to keep the project compiled on Xcode 11 + Swift 5 as the App Store requires all submitted app need to do so starting April 2020.
Is there any chances to still maintain the latest App Store policies and still run the project on minimum iOS 9 ? :(
I'm quite desperate here.
Any info would help :(

Sadly there is nothing we can do about that :/
Moya is based on Alamofire which does supports only iOS 10 since Alamofire 5.

:(
......
So basically there's no alternative to maintain iOS 9 ?
Is it possible to fork repo and set the deployment to iOS 9 though ?

There are a few possibilities that come in my mind:

fork Alamofire to make an alternative version supporting iOS 9.
fork Moya to make an alternative version using Alamofire 4.

Both will be more and more complex tasks as time passes.


Dockerfile: download go libraries before copy vendor

When ever something vendor/ changes the go dependencies have to downloaded again,
which requires internet access and there for is potential slow. COPY and go install is much faster, while the git urls does not change not this often.

Can you please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "dockerfile" git@github.com:Mic92/docker.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

This will update the existing PR, so you do not need to open a new one.

its kinda harder to read now tho since it is not being cloned and installed on the same line :/
ping @tianon

I like this approach. The less external connections to get dependencies the better. :+1:
LGTM

Yeah, I'm also not a huge fan of the split, especially since vendor shouldn't be changing all that often, but it does seem reasonable (by the logic of minimizing the amount of things that happen after a COPY which helps cut down on unnecessary duplicated work).

LGTM