Fix compilation on GCC with -Wold-style-cast, -Wsign-conversion and -Wzero-as-null-pointer-constant

This has been tested locally on Ubuntu 17.10 with GCC 7.2 (all 64-bit).

Please rebase and double check that it's still warning free. I merged a big PR. Thank you for contributing.

Thanks, I rebased the commits.

I noticed that on Clang 5 when you use C++98 mode and enable -Weverything then a warning -Wnon-literal-null-conversion appears in lines where I replaced zeroes with details::null_ptr. What do you want me to do with it? I see these options:

Ignore it and merge the pull request.
Don't merge until it is fixed, maybe using ifdefs?
Split the pull request into fixes for each warning, then merge the ones for -Wold-style-cast and -Wsign-conversion, wait for fix for -Wnon-literal-null-conversion.
Something else?

Here are the files I used for testing from C++98 to C++17 for reference:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0)
project(backward-cpp-fork-example LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)  # change to test other standards: 98, 11, 14, 17
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")

    add_compile_options(
        -Werror
        -Wpedantic
        -pedantic-errors
        -Wall
        -Wextra
        -Wchkp
        -Wdouble-promotion
        -Wformat=2
        -Wformat-overflow=2
        -Wformat-signedness
        -Wformat-truncation=2
        -Wnull-dereference
        -Wimplicit-fallthrough=5
        -Wmissing-include-dirs
        -Wshift-overflow=2
        -Wswitch-enum
        -Wsync-nand
        -Wunused-parameter
        -Wunused-const-variable=1
        -Wunknown-pragmas
        -Wstrict-overflow=5
        -Wstringop-overflow=4
        -Wsuggest-attribute=pure
        -Wsuggest-attribute=const
        -Wsuggest-attribute=noreturn
        -Wsuggest-attribute=format
        -Wmissing-format-attribute
        -Wsuggest-final-types
        -Wsuggest-final-methods
        -Walloc-zero
        -Walloca
        -Warray-bounds=2
        -Wduplicated-branches
        -Wduplicated-cond
        -Wtrampolines
        -Wfloat-equal
        -Wshadow
        -Wunsafe-loop-optimizations
        -Waligned-new=all
        -Wplacement-new=2
        -Wundef
        -Wunused-macros
        -Wcast-qual
        -Wcast-align
        -Wconditionally-supported
        -Wconversion
        -Wdate-time
        -Wuseless-cast
        -Wsign-conversion
        -Wsized-deallocation
        -Wlogical-op
        -Wmissing-declarations
        -Wnormalized=id
        -Wpacked
        -Wredundant-decls
        -Wrestrict
        -Winvalid-pch
        -Wvector-operation-performance
        -Wdisabled-optimization
        -Wstack-protector
        -Wno-unknown-pragmas
        # Additional warnings for C++ dialect
        -Wctor-dtor-privacy
        -Wnoexcept
        -Wnon-virtual-dtor
        -Wstrict-null-sentinel
        -Wold-style-cast
        -Woverloaded-virtual
        -Wsign-promo
    )

    if (NOT CMAKE_CXX_STANDARD EQUAL 98)
        add_compile_options(
            -Wsuggest-override
            -Wzero-as-null-pointer-constant
        )
    endif()

elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")

    add_compile_options(
        -Weverything
        -Werror
        -Wno-padded
        -Wno-weak-vtables
    )

    if (CMAKE_CXX_STANDARD EQUAL 98)
        add_compile_options(
            -Wno-non-literal-null-conversion
        )
    else()
        add_compile_options(
            -Wno-c++98-compat
            -Wno-c++98-compat-pedantic
        )
    endif()

endif()

list(APPEND CMAKE_PREFIX_PATH external/backward-cpp)
find_package(Backward REQUIRED)
add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME} PUBLIC Backward::Backward)

main.cpp:
#include <csignal>
// below is required when using libbfd library because of its macros
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"
#pragma clang diagnostic ignored "-Wdisabled-macro-expansion"
#include "external/backward-cpp/backward.hpp"
#pragma clang diagnostic pop

int main()
{
    backward::SignalHandling signalHandling;
    raise(SIGSEGV);
    return 0;
}

I fixed the problem with -Wnon-literal-null-conversion by adding a macro #define nullptr NULL only for C++98 mode and replacing usages of details::null_ptr with nullptr.

I also now silenced on Clang:

-Wzero-as-null-pointer-constant warning in macro from libbfd
-Wdisabled-macro-expansion warning in macro from signal.h

I've used the online editor to merge master back.


[YUNIKORN-971] Implement YuniKorn as a Kubernetes scheduler plugin.

What is this PR for?
This PR implements a new build mode for YuniKorn which allows it to run as a set of plugins on top of the default Kubernetes scheduler. This should allow for closer behavior to the default scheduler as well as the ability to bypass YuniKorn-specific functionality for pods which are not annotated with an applicationId label.
This PR makes no functional changes to the default YuniKorn build, but adds new Makefile targets to support build / running YuniKorn as a scheduler plugin:

build_plugin Build the plugin code.
run_plugin Run the plugin code locally.
plugin_image Create a Docker image from the plugin code. this should mostly be a drop-in replacement for the default YuniKorn image.

This feature should be considered experimental at this stage. Hopefully we can provide it as a tech-preview for 1.0.
What type of PR is it?

[ ] - Bug Fix
[ ] - Improvement
[x] - Feature
[ ] - Documentation
[ ] - Hot Fix
[ ] - Refactoring

Todos

[ ] - Task

What is the Jira issue?
https://issues.apache.org/jira/browse/YUNIKORN-971
How should this be tested?
Some unit tests added for configuration, remainder is covered via e2e tests (all passing).
Questions:

[ ] - The licenses files need update.
[ ] - There is breaking changes for older versions.
[ ] - It needs documentation.

Rebased on latest master (post 0.12.1).

@wilfred-s, @yangwwei, can you review?

Changes in latest version:

Rebased PR on master
Fixed event recorder changes after YUNIKORN-937
Implemented --plugin flag for scripts/run-e2e-tests.sh. E2E tests can be run using the plugin implementation with something like:

scripts/run-e2e-tests.sh -a test -n "yk8s" -v "kindest/node:v1.21.2" --plugin

Rebased on master.

Added additional documentation to the scheduler_plugin.go and scheduler_cache.go files. Hopefully this is now clear.

@pbacsko can you review again?

@pbacsko can you re-review? I've addressed the comments you made on the last revision.


Update licensing-a-repository.md

Fixed the spelling of ShareAlike.

Why: When talking about Creative Commons specifically, ShareAlike shouldn't have a space in it.
Closes: #27387

What's being changed (if available, include any code snippets, screenshots, or gifs): Fixing the spacing of a part of the license name from Share Alike to ShareAlike.

Check off the following:

[x] I have reviewed my changes in staging, available via the View deployment link in this PR's timeline.

For content changes, you will also see an automatically generated comment with links directly to pages you've modified. The comment won't appear if your PR only edits files in the data directory.

[x] For content changes, I have completed the self-review checklist.

@46009361 Thank you for opening a PR and linking it to your issue! ✨
I'll get this triaged for review! :zap:


Multiline TextField cursor is misplaced when regain focus & textAlign is end, right, or center

flutter cursor isn't placed correctly when tapping TextField as show in the following gif:

Steps to Reproduce
create a simple app containing a Multiline TextField widget with TextAlign center or right and type several lines.
I created with a simple main.dart file as follows:
import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: new MyApp(),
  ));
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Center(child: Text('input test'))),
      body: Center(
        child: TextField(
          textAlign: TextAlign.right,
          minLines: 3,
          keyboardType: TextInputType.multiline,
          maxLines: null,
        ),
      ),
    );
  }
}

flutter doctor result
[✓] Flutter (Channel stable, v1.12.13+hotfix.8, on Linux, locale en_US.UTF-8)
• Flutter version 1.12.13+hotfix.8 at /home/alideb/flutter
• Framework revision 0b8abb4724 (6 weeks ago), 2020-02-11 11:44:36 -0800
• Engine revision e1e6ced81d
• Dart version 2.7.0
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /home/alideb/Android/Sdk
• Android NDK location not configured (optional; useful for native profiling
support)
• Platform android-29, build-tools 29.0.2
• ANDROID_HOME = /home/alideb/Android/Sdk
• Java binary at: /home/alideb/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build
1.8.0_212-release-1586-b4-5784211)
• All Android licenses accepted.
[✓] Android Studio (version 3.6)
• Android Studio at /home/alideb/android-studio
• Flutter plugin version 44.0.2
• Dart plugin version 192.7761
• Java version OpenJDK Runtime Environment (build
1.8.0_212-release-1586-b4-5784211)
• No issues found!

I figured out that the problem is related to TextAlign not Direction

Having the same issue
please guys its basic and important functionality

Having the same issue
please guys its basic and important functionality.
Guys, it's supercritical. I'm on production.
this kind of bugs really damages the trust of people to use flutter, let's fix it :) @digiter @jmagman

I Already have a hotfix for it. @dvird
Goto your flutter sdk folder and change this file: packages/flutter/lib/src/painting/text_painter.dart
  Rect _getRectFromUpstream(int offset, Rect caretPrototype) {
...
      double dx = box.direction == TextDirection.rtl ? caretEnd - caretPrototype.width : caretEnd;
      if(
        (flattenedText.length == offset && offset > 0 && flattenedText[offset - 1] == '\n') ||
        (flattenedText.length > offset && flattenedText[offset] == '\n')
      ){
        dx = _paragraph.width - dx;
      }
...
  }

  Rect _getRectFromDownstream(int offset, Rect caretPrototype) {
...
      double dx = box.direction == TextDirection.rtl ? caretStart - caretPrototype.width : caretStart;
      if(
        (flattenedText.length == offset && offset > 0 && flattenedText[offset - 1] == '\n') ||
        (flattenedText.length > offset && flattenedText[offset] == '\n')
      ){
        dx = _paragraph.width - dx;
      }
...
  }

It is not a perfect solution but fixed problem for now :)

@alimahdiyar We accept pull requests, if you're interested in contributing.

@alimahdiyar We accept pull requests, if you're interested in contributing.

I am interested for sure. But I'm working on a more clear solution and also I'm busy now with another PR on the engine that is mentioned above my last comment

Hi, thanks and I already solve it. but I care from the community I also don't have to pull a clear solution right now but asking someone to do that because problems of textfield/text or other basic widgets its really critical for the trust of the people.

Hi, thanks and I already solve it. but I care from the community I also don't have time to pull a clear solution right now but asking someone to do that because problems of textfield/text or other basic widgets its really critical for the trust of the people.
one question @alimhdiyar
not getting why we "_getRectFromUpstream" i think the problems is only on down

That was for another time. now I figured out that _getRectFromDownstream is enough and edited my comment.
Can you please post your solution?

hi same as you have updated.. but without regarding to textalign because for me i dont need now ltr support

hi
I made a pull request in the engine for fixing this. @dvird @jmagman
flutter/engine#17665


VCTemplateService does not respect configured location

The Service provider should probably work like this ...
    companion object : ServiceProvider {
        override fun getService() = ServiceRegistry.getService(VcTemplateService::class)
        ...
    }

instead of ...
    companion object : ServiceProvider {
        override fun getService() = object : VcTemplateService() {}
        ...
    }

otherwise it cannot respect a configured resource path in service-matrix.properties

PR: https://github.com/walt-id/waltid-ssikit/pull/277


EDU-167 create room data model

There is room-service, but rooms-controller, rooms-store and room-invitations-store. I think that all services, stores and controllers so far use the singular, while the collection specs (and the collection names) use the plural, maybe we should keep that consistent.

There is room-service, but rooms-controller, rooms-store and room-invitations-store. I think that all services, stores and controllers so far use the singular, while the collection specs (and the collection names) use the plural, maybe we should keep that consistent.

Fixed


I got base64 encoded Subject (title) string, How to resolve this?

given string (from sender) : "Официальное сотрудничество с PPP Global Europe"
Used:    $mail["subject"] = mb_convert_encoding($message->getSubject(), 'UTF-8', 'UTF-8');
Result: "=?UTF-8?B?RndkOiDQntGE0LjRhtC40LDQu9GM0L3QvtC1INGB0L7RgtGA0YPQtNC90LjRh9C10YHRgg==?= во с PPP Global Europe"
Pls, help. How to fully correctly decode it

Hi @donilearn ,
thanks for your report. Please update your "webklex/php-imap" dependency to the latest version > v2.1.3 and try again :)
Best regards,

I'm sorry, but I mean for this -> Webklex/laravel-imap

Yes I know, but webklex/laravel-imap has a dependency to webklex/php-imap. Take a look at the composer.json. However I was able to reproduce the problem and supplied a fix. In order for you to get the fix, you have to update the dependency. The easiest way is probably to just run composer update.


fix: resize is causing scroll on mobile

Hi @gfazioli, I saw someone mention an issue on the mantine discord channel that on mobile when we resize the panel the mobile scroll is not blocked. this PR fixes that issue
link to discord message
https://discord.com/channels/854810300876062770/890965830727241785/1269563613816029194
let me know what you think

@Muhammad-Arsalan31 hey, yep it works! Thank you so much for reporting and fixing 👏


Add test GH Action job

Description
Changes proposed in this pull request:

Add manually-ran GH Action workflow which runs Cypress tests to check if we hit limit with 20 concurrently running jobs

Related issue(s)

/assign


Stop Rerender on Refresh

Traced a re-rendering problem in our app to this line. isLoading will be false for a moment and then become true when refreshing and already authenticated. Updating line 119 to check for the routeIsAuthenticated variable to be true and the isLoading variable to be false stopped our unnecessary re-renders.
By submitting a PR to this repository, you agree to the terms within the Auth0 Code of Conduct. Please see the contributing guidelines for how to create and submit a high-quality PR for this repo.
Description

Describe the purpose of this PR along with any background information and the impacts of the proposed change. For the benefit of the community, please do not assume prior context.
Provide details that support your chosen implementation, including: breaking changes, alternatives considered, changes to the API, etc.
If the UI is being changed, please provide screenshots.

References

Include any links supporting this change such as a:

GitHub Issue/PR number addressed or fixed
Auth0 Community post
StackOverflow post
Support forum thread
Related pull requests/issues from other repos

If there are no references, simply delete this section.

Testing

Describe how this can be tested by reviewers. Be specific about anything not tested and reasons why. If this library has unit and/or integration testing, tests should be added for new functionality and existing tests should complete without errors.
Please include any manual steps for testing end-to-end or functionality not covered by unit/integration tests.
Also include details of the environment this PR was developed in (language/platform/browser version).

[ ] This change adds test coverage for new/changed/fixed functionality

Checklist

[ ] I have added documentation for new/changed functionality in this PR or in auth0.com/docs
[ ] All active GitHub checks for tests, formatting, and security are passing
[ ] The correct base branch is being used, if not master

Hi @Sami-M - closing due to inactivity
Feel free to ping me if you'd like me to reopen it


[BEAM-12411] Cherry-pick #14888: Update Tensorflow to version 2.5.0 & grpcio to 1.34.0

Update Tensorflow to version 2.5.0 & grpcio to 1.34.0 from: #14888
Why cherry-pick? it is a security related upgrade.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

Run Python PreCommit


ClientModel: Add null checks for non-nullable arguments in public methods

Even though nullability annotations are enabled in System.ClientModel, projects using the library may have annotations disabled so won't get compiler warnings/errors if they pass null to a method with a non-nullable parameter.
This PR adds null checks for arguments that were previously missed, and throws ArgumentNullException where the method implementation is relying on the parameter value to be non-null.
Fixes https://github.com/Azure/azure-sdk-for-net/issues/42964

Closing in favor of https://github.com/Azure/azure-sdk-for-net/pull/43004


Add pbkdf2 encode/decode for credential sensitive field

Fixed #558

@WangLiNaruto we are only encoding the value and storing. How/where are we handling the decoding?

@swaroopar Yes, we just encoded sensitive fields and stored

@WangLiNaruto we are only encoding the value and storing. How/where are we handling the decoding?


diffusion connection manager valid transitions  test failure

*** Failed! Falsified (after 4 tests and 3 shrinks):
AbsBearerInfo {abiConnectionDelay = SmallDelay, abiInboundAttenuation = NoAttenuation FastSpeed, abiOutboundAttenuation = NoAttenuation FastSpeed, abiInboundWriteFailure = Nothing, abiOutboundWriteFailure = Nothing, abiAcceptFailure = Nothing, abiSDUSize = LargeSDU}
DiffusionScript {dsToRun = [(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen<PHONE_NUMBER>244723755<PHONE_NUMBER>9639777313}, saQuota = 2, saMbTime = Just 135s, saRelays = [RelayAccessAddress <IP_ADDRESS> 65534,RelayAccessAddress ::1:0:0:0:2 3,RelayAccessAddress 0:1:0:2::4 65533,RelayAccessAddress 0:2:0:1:0:1:0:1 4,RelayAccessAddress <IP_ADDRESS> 5], saRng = StdGen {unStdGen = SMGen 0<PHONE_NUMBER>6658607535}, saDomainMap = fromList [("test5",[0:2:0:1:0:1:0:1])], saAddr = TestAddress <IP_ADDRESS>:2, saLocalRootPeers = [(10,fromList [(RelayAccessDomain "test5" 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65535,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoAdvertisePeer),(RelayAccessAddress ::1:0:0:0:2 3,DoNotAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 10, targetNumberOfKnownPeers = 17, targetNumberOfEstablishedPeers = 15, targetNumberOfActivePeers = 15}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.283s} :| [DNSTimeout {getDNSTimeout = 0.379s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.024s} :| [DNSLookupDelay {getDNSLookupDelay = 0.094s}])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen<PHONE_NUMBER>373801447<PHONE_NUMBER>5756348111}, saQuota = 2, saMbTime = Just 269s, saRelays = [RelayAccessDomain"test5" 2,RelayAccessAddress 0:1::2:0:2 65533,RelayAccessAddress ::1:0:0:0:2 3,RelayAccessAddress 0:1:0:2::4 65533,RelayAccessAddress <IP_ADDRESS> 5], saRng = StdGen {unStdGen = SMGen<PHONE_NUMBER>414464289<PHONE_NUMBER>6968443937}, saDomainMap = fromList [("test5",[0:1::2:0:2,0:2:0:1:0:1:0:1,0:1:0:2::4])], saAddr = TestAddress <IP_ADDRESS>:65535, saLocalRootPeers = [(9,fromList [(RelayAccessDomain "test5" 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoNotAdvertisePeer),(RelayAccessAddress ::1:0:0:0:2 3,DoAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoNotAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoNotAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoNotAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 1, targetNumberOfKnownPeers = 14, targetNumberOfEstablishedPeers = 14, targetNumberOfActivePeers = 14}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.13s} :| [DNSTimeout {getDNSTimeout = 0.298s},DNSTimeout {getDNSTimeout = 0.38s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.111s} :| [])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen<PHONE_NUMBER>06614222<PHONE_NUMBER>003139053}, saQuota = 2, saMbTime = Just 135s, saRelays = [RelayAccessAddress <IP_ADDRESS> 2,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress 0:1:0:2::4 65533], saRng = StdGen {unStdGen = SMGen<PHONE_NUMBER>414464289<PHONE_NUMBER>6968443937}, saDomainMap = fromList [("test5",[0:2:0:1:0:1:0:1,<IP_ADDRESS>,0:1::2:0:2])], saAddr = TestAddress <IP_ADDRESS>:65534, saLocalRootPeers = [(10,fromList [(RelayAccessDomain "test5" 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65535,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoAdvertisePeer),(RelayAccessAddress ::1:0:0:0:2 3,DoNotAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoNotAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 20, targetNumberOfKnownPeers = 23, targetNumberOfEstablishedPeers = 22, targetNumberOfActivePeers = 13}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.122s} :| [DNSTimeout {getDNSTimeout = 0.388s},DNSTimeout {getDNSTimeout = 0.21s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.081s} :| [])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen 0<PHONE_NUMBER>6658607535}, saQuota = 2, saMbTime = Just 269s, saRelays = [RelayAccessDomain "test5" 2,RelayAccessAddress <IP_ADDRESS> 2,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress 0:1::2:0:2 65533,RelayAccessAddress 0:2:0:1:0:1:0:1 4,RelayAccessAddress <IP_ADDRESS> 5], saRng = StdGen {unStdGen = SMGen<PHONE_NUMBER>373801447<PHONE_NUMBER>5756348111}, saDomainMap = fromList [("test5",[<IP_ADDRESS>])], saAddr = TestAddress <IP_ADDRESS>:3, saLocalRootPeers = [(10,fromList [(RelayAccessDomain "test5" 2,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65535,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoNotAdvertisePeer),(RelayAccessAddress ::1:0:0:0:2 3,DoNotAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoNotAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoNotAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 3, targetNumberOfKnownPeers = 20, targetNumberOfEstablishedPeers = 18, targetNumberOfActivePeers = 14}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.111s} :| [DNSTimeout {getDNSTimeout = 0.302s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.12s} :| [DNSLookupDelay {getDNSLookupDelay = 0.052s}])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen<PHONE_NUMBER>6227106604<PHONE_NUMBER>9200822465}, saQuota = 2, saMbTime = Just 224s, saRelays = [RelayAccessAddress <IP_ADDRESS> 2,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress 0:2:0:1:0:1:0:1 4], saRng = StdGen {unStdGen = SMGen 0<PHONE_NUMBER>6658607535}, saDomainMap = fromList [("test5",[<IP_ADDRESS>,<IP_ADDRESS>])], saAddr = TestAddress <IP_ADDRESS>:65535, saLocalRootPeers = [(9,fromList [(RelayAccessDomain "test5" 2,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoNotAdvertisePeer),(RelayAccessAddress ::1:0:0:0:2 3,DoAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoNotAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 11, targetNumberOfKnownPeers = 16, targetNumberOfEstablishedPeers = 14, targetNumberOfActivePeers = 14}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.379s} :| [DNSTimeout {getDNSTimeout = 0.395s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.119s} :| [DNSLookupDelay {getDNSLookupDelay = 0.123s}])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen<PHONE_NUMBER>373801447<PHONE_NUMBER>5756348111}, saQuota = 2, saMbTime = Just 90s, saRelays = [RelayAccessAddress <IP_ADDRESS> 2,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress <IP_ADDRESS> 65534,RelayAccessAddress ::1:0:0:0:2 3,RelayAccessAddress 0:1:0:2::4 65533,RelayAccessAddress 0:2:0:1:0:1:0:1 4], saRng = StdGen {unStdGen = SMGen 0<PHONE_NUMBER>6658607535}, saDomainMap = fromList [("test5",[<IP_ADDRESS>,<IP_ADDRESS>,::1:0:0:0:2,5cab:5b2:c503:10b9:8d55:c100:4439:c4af,<IP_ADDRESS>])], saAddr = TestAddress 0:1::2:0:2:65533, saLocalRootPeers = [(10,fromList [(RelayAccessDomain "test5" 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65535,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoAdvertisePeer),(RelayAccessAddress ::1:0:0:0:2 3,DoAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 16, targetNumberOfKnownPeers = 22, targetNumberOfEstablishedPeers = 18, targetNumberOfActivePeers = 14}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.252s} :| [DNSTimeout {getDNSTimeout = 0.26s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.045s} :| [DNSLookupDelay {getDNSLookupDelay = 0.09s},DNSLookupDelay {getDNSLookupDelay = 0.128s}])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen<PHONE_NUMBER>6227106604<PHONE_NUMBER>9200822465}, saQuota = 2, saMbTime = Just 224s, saRelays = [RelayAccessAddress <IP_ADDRESS> 2,RelayAccessAddress <IP_ADDRESS> 3,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress 0:2:0:1:0:1:0:1 4], saRng = StdGen {unStdGen = SMGen<PHONE_NUMBER>373801447<PHONE_NUMBER>5756348111}, saDomainMap = fromList [("test5",[<IP_ADDRESS>,<IP_ADDRESS>])], saAddr = TestAddress ::1:0:0:0:2:3, saLocalRootPeers = [(10,fromList [(RelayAccessDomain "test5" 2,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65535,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoNotAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoNotAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoNotAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 25, targetNumberOfKnownPeers = 29, targetNumberOfEstablishedPeers = 24, targetNumberOfActivePeers = 22}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.224s} :| [DNSTimeout {getDNSTimeout = 0.171s},DNSTimeout {getDNSTimeout = 0.353s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.037s} :| [DNSLookupDelay {getDNSLookupDelay = 0.125s},DNSLookupDelay {getDNSLookupDelay = 0.069s}])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen<PHONE_NUMBER>06614222<PHONE_NUMBER>003139053}, saQuota = 2, saMbTime = Just 180s, saRelays = [RelayAccessAddress <IP_ADDRESS> 65534,RelayAccessAddress <IP_ADDRESS> 3,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress 0:1::2:0:2 65533,RelayAccessAddress 0:2:0:1:0:1:0:1 4,RelayAccessAddress <IP_ADDRESS> 5], saRng = StdGen {unStdGen = SMGen 0<PHONE_NUMBER>6658607535}, saDomainMap = fromList [("test5",[::1:0:0:0:2,<IP_ADDRESS>,<IP_ADDRESS>])], saAddr = TestAddress 0:1:0:2::4:65533, saLocalRootPeers = [(10,fromList [(RelayAccessDomain "test5" 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65535,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoNotAdvertisePeer),(RelayAccessAddress ::1:0:0:0:2 3,DoAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoNotAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 8, targetNumberOfKnownPeers = 24, targetNumberOfEstablishedPeers = 20, targetNumberOfActivePeers = 14}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.241s} :| []), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.093s} :| [])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen 0<PHONE_NUMBER>6658607535}, saQuota = 2, saMbTime = Just 180s, saRelays = [RelayAccessDomain "test5" 2,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress 0:1::2:0:2 65533,RelayAccessAddress ::1:0:0:0:2 3,RelayAccessAddress <IP_ADDRESS> 5], saRng = StdGen {unStdGen = SMGen<PHONE_NUMBER>414464289<PHONE_NUMBER>6968443937}, saDomainMap = fromList [("test5",[<IP_ADDRESS>,<IP_ADDRESS>])], saAddr = TestAddress 0:2:0:1:0:1:0:1:4, saLocalRootPeers = [(10,fromList [(RelayAccessDomain "test5" 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65535,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 5,DoNotAdvertisePeer),(RelayAccessAddress ::1:0:0:0:23,DoNotAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 19, targetNumberOfEstablishedPeers = 19, targetNumberOfActivePeers = 14}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.401s} :| [DNSTimeout {getDNSTimeout = 0.167s},DNSTimeout {getDNSTimeout = 0.125s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.037s} :|[DNSLookupDelay {getDNSLookupDelay = 0.07s},DNSLookupDelay {getDNSLookupDelay = 0.072s}])},[JoinNetwork 0s Nothing]),(SimArgs {saSlot = 1s, saSeed = StdGen {unStdGen = SMGen 0<PHONE_NUMBER>6658607535}, saQuota = 2, saMbTime = Just 180s, saRelays = [RelayAccessAddress <IP_ADDRESS> 2,RelayAccessAddress <IP_ADDRESS> 65535,RelayAccessAddress 0:1::2:0:2 65533,RelayAccessAddress ::1:0:0:0:2 3], saRng = StdGen {unStdGen = SMGen<PHONE_NUMBER>414464289<PHONE_NUMBER>6968443937}, saDomainMap = fromList [("test5",[<IP_ADDRESS>])], saAddr = TestAddress <IP_ADDRESS>:5, saLocalRootPeers = [(10,fromList [(RelayAccessDomain "test5" 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 3,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65535,DoAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 2,DoNotAdvertisePeer),(RelayAccessAddress <IP_ADDRESS> 65534,DoAdvertisePeer),(RelayAccessAddress ::1:0:0:0:2 3,DoNotAdvertisePeer),(RelayAccessAddress 0:1::2:0:2 65533,DoAdvertisePeer),(RelayAccessAddress 0:1:0:2::4 65533,DoAdvertisePeer),(RelayAccessAddress 0:2:0:1:0:1:0:1 4,DoNotAdvertisePeer)])], saLocalSelectionTargets = PeerSelectionTargets {targetNumberOfRootPeers = 18, targetNumberOfKnownPeers = 18, targetNumberOfEstablishedPeers = 15, targetNumberOfActivePeers = 15}, saDNSTimeoutScript = Script (DNSTimeout {getDNSTimeout = 0.186s} :| [DNSTimeout {getDNSTimeout = 0.354s}]), saDNSLookupDelayScript = Script (DNSLookupDelay {getDNSLookupDelay = 0.115s} :| [DNSLookupDelay {getDNSLookupDelay = 0.032s}])},[JoinNetwork 0s Nothing])]}

connection:
UnknownConnectionSt            → ReservedOutboundSt
ReservedOutboundSt             → UnnegotiatedSt Outbound
UnnegotiatedSt Outbound        → UnnegotiatedSt Inbound
UnnegotiatedSt Inbound         → InboundIdleSt Duplex
UnnegotiatedSt Outbound        → OutboundDupSt Ticking
InboundIdleSt Duplex           → InboundSt Duplex

Unexpected transition: UnnegotiatedSt Outbound → UnnegotiatedSt Inbound
Use --quickcheck-replay=453169 to reproduce.
Use -p '/diffusion connection manager valid transitions/' to rerun this test only.

Turns out this is just a bug introduced in a PR I am working on


Ensure forward compatibility for http1 -> grpc conversions (e.g. Datastore)

Specifically, look at the setup required to initialize the service object.

The following can be set in HttpServiceOptions:

http transport factory
connect timeout
read timeout

The following can be set in GrpcServiceOptions:

executor factory
initial timeout
timeout multiplier
max timeout

The following can be set for both (inherited from ServiceOptions):

service factory
clock
project id
host
credentials
retry params
service rpc factory

Since there are disjoint options needed for http vs grpc, there is not a way to transparently switch the transport underneath a user. Thus, one of the following would have to be done for Datastore when we support grpc:

Fork datastore to a new path, with a new identity, that supports Grpc. Unfortunately we wouldn't be able to remove the old one for quite a while (until a new major version).
Support both http and grpc options in the same surface.

The second is less disruptive for users.

Current chain of inheritance:

DatastoreOptions -> HttpServiceOptions -> ServiceOptions

This chain is not compatible with introducing GrpcServiceOptions in the future.
I think what needs to be done is that DatastoreOptions should extend ServiceOptions directly, and the http vs grpc distinction should live underneath that, e.g. HttpDatastoreOptions and GrpcDatastoreOptions. (The GrpcDatastoreOptions class won't exist for a while.) It probably makes sense to have an HttpServiceOptions interface and GrpcServiceOptions interface which can be shared for concrete http and grpc service options classes.
Or maybe some other arrangement could be done. The key thing is that an interface/class for a specific service shouldn't have http vs grpc baked in.
This rearrangement would touch all current services.

The PR #1723 will remove the hard class types HttpServiceOptions and GrpcServiceOptions out of the hierarchy, but the ServiceRpcT parameterization needs to be removed too, since the concrete Rpc types are tied to http vs grpc also. That will be in a following PR.


remove <IP_ADDRESS> due to bug

WIP (updating tests)

oh it was reverted... so I guess this can be closed then


Update golang.org/x/crypto commit hash to 32db794

This PR contains the following updates:

Package
Type
Update
Change

golang.org/x/crypto
require
digest
0a44fdf -> 32db794

Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box.

This PR has been generated by Renovate Bot.

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you check the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: go.sum
Command failed: docker pull docker.io/renovate/go:1.17.0
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


The website is down

for whatever reason it shut down itself... it's back up now, thanks for reporting

Thank you for your time!

Still doesn't working for me :(

ok i know what I'll do I'll just deploy it on some service instead of hosting it on VPS
it keeps crashing for whatever reason :(
please wait a little till I re-deploy it elsewhere

Thank you soooo much!!

it's deployed on Render now, if it crashes I'll see logs immediately

TYSM ♥
I can now beggins building my tiny app :)

it's deployed on Render now, if it crashes I'll see logs immediately

sorry it's down again...


WebSocket support

WebSocket support for the client and server would allow for multiplayer when the client is running from HTML/WASM.
This would allow people to play from a web browser.

https://docs.godotengine.org/en/stable/tutorials/networking/websocket.html

Done! The web build now works


Allow snakefmt executable path to be defined per mult-root workspace project folder

Many devs organize use multi-root workspaces, where each top-level folder in a workspace is a GitHub repository, and each of these will have it's own python interpreter version/build and software library environment (typically conda, pip, poetry, etc). Therefore, each top-level folder in a multi-root workspace will can have it's own snakemake and snakefmt version/build. So I need to define snakefmt.executable per multi-root workspace project folder.

Should be fixed with v0.2.0. Happy to re-open if not.

Sorry that I just got around to testing this, but is this supposed to work transparently? Meaning, if I'm already specifying a conda environment and Python interpreter per top-level folder in a multi-root workspace, and in that sonda environment snakefmt is installed, shouldn't things work with this extension without specifying any settings at all? This would be ideal

Sorry nevermind! I didn't see that you added the snakefmt.importStrategy setting with useEnvironment works transparently with the snakefmt binary in each of my conda environments


Thank you

I just wanted to say thank you for this nice WebRTC SIP client
you actually did good work

Thanks Mancy, I appreciate it.


Hints are not visible with failOnHint == true

Hi, thanks for the great package!
The failOnHint option is very handy for me, because it prevents people from shipping production builds with errors. Although, when the build fails due to a hint, I am unable to see the hint (not very convenient for solving the problem :)
10% 0/1 build modulesModuleBuildError: Module build failed: Error: Module failed in cause of jshint error.
    at Object.jsHint (/var/app/node_modules/jshint-loader/index.js:127:9)
    at Object.<anonymous> (/var/app/node_modules/jshint-loader/index.js:146:11)
    at /var/app/node_modules/jshint-loader/index.js:52:5
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)
    at DependenciesBlock.onModuleBuildFailed (/var/app/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:315:19)
    at nextLoader (/var/app/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:270:31)
    at /var/app/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:292:15
    at context.callback (/var/app/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:148:14)
    at Object.<anonymous> (/var/app/node_modules/jshint-loader/index.js:149:11)
    at /var/app/node_modules/jshint-loader/index.js:52:5
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)

Am I missing any config options?
Thanks!

Hi @xbill82.  I'm trying to help maintain this loader.
You should see the warnings above the error in the webpack output with just the failOnHint option.
Are you using the webpack cli or a build wrapper to run webpack?  If you're using gulp, for example, you can get the warnings from  the stats parameter in the webpack compile callback.
I can look into what it would take to get the warning inside the error output as well, but you should be able to get the warnings for fixing them.

Hi @jvmccarthy thanks for the help (btw in the meanwhile I switched to ESLint, but it doesn't matter).
I actually use webpack CLI for my production build.


Using a styled(Grid) results in an error from 'RegularBreakpoints'

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯
import { styled, Grid } from '@mui/material';

export const StyledGrid = styled(Grid)(({ theme }) => ({}));

Doing the above is resulting in the following error
Exported variable 'StyledGrid' has or is using name 'RegularBreakpoints' from external module "{project_path}/node_modules/@mui/material/Grid/Grid" but cannot be named.
Expected behavior 🤔
If I export RegularBreakpoints the error goes away so I'd expect that or a similar solution.
Steps to reproduce 🕹
Steps:

Create a project with 5.8.4 of @mui/material
Create a file in the project that has the following code:

import { styled, Grid } from '@mui/material';

export const StyledGrid = styled(Grid)(({ theme }) => ({}));

Context 🔦
No response
Your environment 🌎
.tsconfig
{
  "compilerOptions": {
    "target": "ES2015",
    "outDir": "./dist/esm/",
    "strictNullChecks": true,
    "moduleResolution": "node",
    "allowJs": true,
    "strict": true,
    "esModuleInterop": true,
    "jsx": "react",
    "baseUrl": "./src",
    "lib": ["es2015", "dom.iterable", "es2016.array.include", "es2017.object", "dom", "esnext"],
    "module": "ESNext",
    "removeComments": true,
    "alwaysStrict": true,
    "allowUnreachableCode": false,
    "noImplicitAny": true,
    "noImplicitThis": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "forceConsistentCasingInFileNames": true,
    "importHelpers": true,
    "sourceMap": true,
    "declaration": true,
    "declarationDir": "./dist/typings/",
    "downlevelIteration": true,
    "typeRoots": ["./src/typings", "./node_modules/@types", "../../node_modules/@types"],
    "types": ["jest", "node"],
    "skipLibCheck": true
  },
  "files": ["./src/index.tsx"],
  "include": ["./src/**/*"]
}

I can confirm this (recent) problem. For the moment I'm workarounding it by forcing the type as ReactElement.

@rejetto good idea 👍🏻, much better than just reverting to 5.8.3
I ended up going with export const StyledGrid = styled(Grid)(({ theme }) => ({})) as typeof Grid; which worked a little better for me.

Thanks for the report, I suppose this diff would solve the issue and help with using unique names for the types:
index b9914ac72d..af3d39ae88 100644
--- a/packages/mui-material/src/Grid/Grid.d.ts
+++ b/packages/mui-material/src/Grid/Grid.d.ts
@@ -19,7 +19,7 @@ export type GridWrap = 'nowrap' | 'wrap' | 'wrap-reverse';

 export type GridSize = 'auto' | number;

-interface RegularBreakpoints {
+export interface GridRegularBreakpoints {
   /**
    * If a number, it sets the number of columns the grid item uses.
    * It can't be greater than the total number of columns of the container (12 by default).
@@ -72,15 +72,15 @@ interface RegularBreakpoints {
   xs?: boolean | GridSize;
 }

-type CustomBreakpoints = Partial<Record<Breakpoint, boolean | GridSize>>;
+export type GridCustomBreakpoints = Partial<Record<Breakpoint, boolean | GridSize>>;

 interface BreakpointOverridesEmpty {}

-type Breakpoints = IfEquals<
+export type GridBreakpoints = IfEquals<
   BreakpointOverrides,
   BreakpointOverridesEmpty,
-  RegularBreakpoints,
-  CustomBreakpoints
+  GridRegularBreakpoints,
+  GridCustomBreakpoints
 >;

 export interface GridTypeMap<P = {}, D extends React.ElementType = 'div'> {
@@ -149,7 +149,7 @@ export interface GridTypeMap<P = {}, D extends React.ElementType = 'div'> {
        * @default false
        */
       zeroMinWidth?: boolean;
-    } & Breakpoints;
+    } & GridBreakpoints;
   defaultComponent: D;
 }

diff --git a/packages/mui-material/src/Grid/Grid.spec.tsx b/packages/mui-material/src/Grid/Grid.spec.tsx
index 83e6063587..2bb757f300 100644
--- a/packages/mui-material/src/Grid/Grid.spec.tsx
+++ b/packages/mui-material/src/Grid/Grid.spec.tsx
@@ -1,7 +1,10 @@
 import * as React from 'react';
+import { styled } from '@mui/material/styles';
 import Paper from '@mui/material/Paper';
 import Grid from '@mui/material/Grid';

 function ResponsiveTest() {
   <Grid item xs={12} sm={8} md={5} component={Paper} elevation={6} square />;
 }
+
+export const StyledGrid = styled(Grid)(({ theme }) => ({}));

Would anyone want to create a PR and verify that the fix is working?

Hmmm... I have created react project using vite.js (NOT create-react-app).
and I write the below code
import { styled, Grid } from '@mui/material';

export const StyledGrid = styled(Grid)(({ theme }) => ({}));

BUT, there are no error.

@jooohyun you are right, I can't repro - https://codesandbox.io/s/charming-colden-qgvwx5?file=/src/App.tsx

I'm using CRA

@rejetto please share a codesandbox with a reproduction

Sorry, I didn't notice I was quite inaccurate.
My use case is a monorepo, containing a CRA app, but the problem is inside a lib that's actually built simply by tsc.
So this is where I hade to force the type
https://github.com/rejetto/hfs/blob/208df4891044728fa4de94e05492fe996227135e/mui-grid-form/src/StringStringField.ts#L93
And these are related configurations
https://github.com/rejetto/hfs/blob/main/mui-grid-form/package.json
https://github.com/rejetto/hfs/blob/main/mui-grid-form/tsconfig.json
Version of mui is actually found here, which I just checked it was 5.8.4
I'm sorry I'm not providing better information, but it may take long before I find the necessary time.
Any help is appreciated, nothing expected, and I can actually live with my workaround.
Thanks for all the rest, by the way

Sorry, but this is not enough info for us to look into. Please re-open the issue when there is a reproduction that we can look into.

Sure!
I discovered the error disappears on my side when I disable declaration in my tsconfig.json.
This way I was able to give you this: https://codesandbox.io/s/dry-shadow-x950wv?file=/src/App.tsx
It may take a while before the problem appears, so I'm adding also a screenshot, just in case

Typescript needs the exported type to generate a valid .d.ts .
This makes me think the problem doesn't apply to building apps (generates js only), while applies to building libraries (js + d.ts).
Anyway, disabling declaration files doesn't seem to be an option for libraries.
At this very moment I ran out of time (rushing to work), and cannot proceed testing your proposed solution, but it seems fine to me.

@rejetto is exactly right. You will not see this error if you don't also update your tsconfig.json to have "declaration": true
All that would need to be done to address this issue would be export interface RegularBreakpoints

@achendrick is exactly right!
All that needs to be done to fix this is to export the RegularBreakpoints interface.
https://github.com/mui/material-ui/blob/master/packages/mui-material/src/Grid/Grid.d.ts#L22

I've created a PR for it - #33751


commit package-lock.json

Any reason it's not already in git?

Codecov Report

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

@@           Coverage Diff           @@
##           master      #85   +/-   ##
=======================================
  Coverage   97.97%   97.97%
=======================================
  Files          13       13
  Lines         444      444
=======================================
  Hits          435      435
  Misses          9        9

Continue to review full report at Codecov.

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

No particular reason...I don't usually use npm when I am behind the Chinese GFW so didn't notice this...


Update the wikipedia pages of scikit-learn

We could probably improve the scikit-learn wikipedia pages in terms of update and structure/content.
Why?

I reckon it is a very important place for people don't knowing much about scikit-learn and I am sure we can do better
I believe we could also better emphasize on the packaging and maintenance efforts.
We could talk more about the community and its governance, give some key figure...

Action: Having in mind the different persona of readers, I think we could also come up with a new plan and structure with high to low level of information granularity.

I believe we could also better emphasize on the packaging and maintenance efforts.

I am worried Wikipedia is the place for this and we should refrain ourselves to using Wikipedia to promote scikit-learn but keep a very neutral, informative tone. The Wikipedia page of scikit-learn does not belong to the scikit-learn project.

But it's true that the contents of this page deserves an update and corrections:

French Institute for Research in Computer Science and Automation in Rocquencourt, France

For instance, Inria Parietal team started in Saclay and was never based in Rocquencourt as far as I know.

But it's true that the contents of this page deserves an update

Also, it's currently very short with little on it. This gives the impression of a project that is minor, not very active, and not very used. It's important that we convey more dynamism (actor such as Microsoft use this impression on scikit-learn to convey the message to decision makers that it is a dead projects, and that they should focus on AzureML, I've seen this happening just yesterday in a private meeting)

Wikipedia is legit and an open source project.  The number of users is staggering. It is considered a credible source by many users, including Funders!
Also, it's super important to keep in mind that people who make funding decisions or doing research on potential projects to fund are not often users of the tool, and so even if scikit-learn is the number 1 python machine learning library, not everyone knows that. (Another reason why open source projects suffer from lack of funding.)
scikit-learn doesn't need to own the page to utilize and benefit from it.  It's referred to as "earned media", which is quite beneficial.
scikit-learn is 10+ years old and our blog is < 1 year old.  An important question to ask if how would everyone (or maximum number of people) hear about it?
Example: we don't own NY Times, or other sites, yet if they were to publish about scikit-learn (or in my case, Data Umbrella), it's incredibly valuable.
I recommend checking out these videos:

[How Data Scientists Can Contribute to Wikimedia Projects] (https://youtu.be/mrHp3wc_6DQ)
[Editing Wikipedia: Because Someone Has to... ] (https://youtu.be/s5kUSMUaZLM)

I have two suggestions to add onto this:

We can look into the pages of other open source packages and tools to see the average length and content.
We should also search Wikipedia for any pages that reference scikit-learn to ensure that all of those references are blue-linked. Improving this could also raise our placement in related search results.

Lauren

On Nov 8, 2022, at 8:50 AM, Reshama Shaikh @.***> wrote:

Wikipedia is legit and an open source project. The number of users is staggering. It is considered a credible source by many users, including Funders!
Also, it's super important to keep in mind that people who make funding decisions or doing research on potential projects to fund are not often users of the tool, and so even if scikit-learn is the number 1 python machine learning library, not everyone knows that. (Another reason why open source projects suffer from lack of funding.)
scikit-learn doesn't need to own the page to utilize and benefit from it. It's referred to as "earned media", which is quite beneficial.
scikit-learn is 10+ years old and our blog is < 1 year old. An important question to ask if how would everyone (or maximum number of people) hear about it?
Example: we don't own NY Times, or other sites, yet if they were to publish about scikit-learn (or in my case, Data Umbrella), it's incredibly valuable.
I recommend checking out these videos:
[How Data Scientists Can Contribute to Wikimedia Projects] (https://youtu.be/mrHp3wc_6DQ)
[Editing Wikipedia: Because Someone Has to... ] (https://youtu.be/s5kUSMUaZLM)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.

In the meantime, we should also add any Press links that people know of in a list here to add as references.

Alright - I've gone through any and all pages that refer to or link to scikit-learn. I corrected any missing links on any referencing scikit-learn, updated any sklearn references to scikit-learn, and corrected the spelling to all be aligned with the lowercase name.


Push to subfolder

Hi,
I would like to push a folder with it's contents into a subfolder in drive.
Source: /initfolder/2015/test
So with a push in this folder, the folder named 'test' is created in drive's root, but not 2015/test. Init folder is set to /initfolder
How can I achieve this?
Regards,
Bastiaan

Hello @BasvanH, welcome to drive and thank you for reporting this issue!
If I may ask, is this literally /initfolder/2015/test' relative to your filesystem's root '/' or '/initfolder/2015/test' relative to your Google Drive point e.g ~/my_drive/initfolder/2015/test'.

If the answer is the first case, I'd advise you to either make a symlink into your drive or check out push option -m (but -m is a bit flaky).
If the answer is the second case, then please let me know your version because the desired behaviour is to maintain the hierarchy. I also can't seem to replicate your description.

To bundle information and get the version of drive running
$ go get github.com/odeke-em/drive/drive-gen && drive-gen && drive --version

Closing this issue as it was answered.


Support execute transactions from Trezor.

What is needed?
Add support to send transactions from Trezor.
Background
Currently we can sign transactions with Trezor, but send transactions from Trezor is not supported.
Related issues
#325

It seems that the following is needed:

[ ] implement get_signed_raw_transaction() in safe_cli/operators/hw_wallets/trezor_wallet.py
[ ] change load_hw_wallet() in safe_cli/operators/safe_operator.py so that self.hw_wallet_manager.set_sender() is called not just when hw_wallet_type == HwWalletType.LEDGER but also when hw_wallet_type == HwWalletType.TREZOR

Is there anything else?

@aspiers you are right, it was implemented here #337

Looks good to me, thanks!


deprecate /servers/checks and move functionality to /servercheck

What does this PR (Pull Request) do?

[x] This PR is not related to any Issue

This PR deprecates /servers/checks and moves functionality to /servercheck
Which Traffic Control components are affected by this PR?

Documentation
Traffic Ops
Traffic Portal

What is the best way to verify this PR?

Verify that GET /api/1.5/servers/checks now has an appropriate deprecation alert
Verify that GET /api/2.0/servers/checks does not exist
Verify that GET /api/2.0/servercheck returns the same information that /api/1.5/servers/checks does but without the alert
Verify that Traffic Portal Cache Checks link still works (requires TP to use api 2.0)
If this is a bug fix, what versions of Traffic Control are affected?

The following criteria are ALL met by this PR

[x] This PR does not need testing updates
[x] This PR includes documentation
[x] This PR includes an update to CHANGELOG.md
[x] This PR includes any and all required license headers
[x] This PR does not include a database migration
[x] This PR DOES NOT FIX A SERIOUS SECURITY VULNERABILITY (see the Apache Software Foundation's security guidelines for details)

Additional Information

Also this endpoint is used in Traffic Portal at traffic_portal/app/src/common/api/ServerService.js:212:45 - can you update that to the new endpoint name?

Also this endpoint is used in Traffic Portal at traffic_portal/app/src/common/api/ServerService.js:212:45 - can you update that to the new endpoint name?

I'm not sure i follow. line 212 is caches/stats which is different right? the update at line 223 should have been enough?

Yeah, that'll do it.


Added Cache

Code formatting

Thanks, but please remove the code formatting. I intentionally have it the way it is.


DOC https://github.com/hyperledger/fabric/blob/master/docs/dev-setup/install.md Cancelling peer before starting behave tests

On this web page: https://github.com/hyperledger/fabric/blob/master/docs/dev-setup/install.md
This section: 3.2 Behave Tests
mentions that you can initialize docker containers for behave by running the unit tests described in section 3.1.
Development has advised me that if I run unit tests described in section 3.1 to set up behave, I need to cancel the peer mentioned in 3.1 before starting behave.  However, the web page doesn't mention this at all.
Suggestion:
3.2 Behave Tests
Behave tests will setup networks of peers with different security and consensus configurations and verify that transactions run properly. To run these tests:

Behave requires peer and member services docker images.  Choose one of these methods
to create the requisite docker images for behave:
Unit test method:
a. Run unit tests as described in section 3.1.
b. Cancel the peer you started when you ran the unit tests.
Go test method:
In a vagrant window, execute these commands:
go test github.com/hyperledger/fabric/core/container -run=BuildImage_Peer
go test github.com/hyperledger/fabric/core/container -run=BuildImage_Obcca

In a vagrant window, enter
a.	cd $GOPATH/src/github.com/hyperledger/fabric/bddtests
b.	behave
or
behave -D logs=Y  /* captures logs from Docker containers */

I already changed behave to stop the local running peer before launching the tests so this should no longer be an issue any longer. See PR #1251 and please confirm or close this issue.
Also, please, update your profile and disclose your name and affiliation. Thank you.


[new] 添加了dockerfile,帮助可以打skynet基础镜像。

可以直接打包skynet的docker基础镜像。
docker build . -t skynet
docker run -it --rm skynet

这个暂不合并，还没想好要维护这个，可以先去 wiki 加一个页面。

感觉没啥用，实际大家开发中，还会修改skynet，还要自己写makefile

既然清理了源代码，怎么不把gcc g++清理掉？ 最好的做法是二次FROM一个镜像，然后COPY必要文件到新的镜像。这样会减少image的大小。
用环境变量去设置 config文件文件，以及使用VOLUMN来存储 config文件以及具体的服务逻辑代码，方便进行文件更新。
另外就是一些PORT mapping的问题。将8000, 8888这些端口暴露一下

Dear fellow Americans,
     Today, I want to talk to you about one of the most important issues facing our country and the world today: sustainability. As we look at the state of our planet, we are faced with the harsh reality that our current way of living is not sustainable. We are using up resources at an alarming rate, polluting our air and water, and contributing to climate change.

     However, there is hope. We have the potential to come together as one conservative party, away from the self-implosive culture that has emerged from our two-party system, and work towards a more sustainable future. By doing so, we can not only protect our planet but also reestablish ourselves as the world's base currency.

     One area where we can start is by focusing on the Neo Arctic Region. As climate change continues, the arctic seas are evolving into cold-water trading ports. This presents both an opportunity and a challenge. We must ensure that this development is done sustainably, with a focus on protecting the environment and preserving this unique region for future generations.

To achieve this, we must learn to work together as one family. We must put aside our differences and come together with a shared vision for a sustainable future.
     This means setting aside our political affiliations and working towards common goals.

     As conservatives, we have a unique opportunity to lead on this issue. We can show the world that sustainability is not a partisan issue, but rather a shared responsibility that we all have as stewards of our planet.

     But we cannot do this alone. We need the support and participation of every American. We need to make sustainability a priority in our personal lives, in our businesses, and in our government policies. This means reducing our carbon footprint, conserving resources, and investing in renewable energy.

     In conclusion, let us come together as one conservative party and work towards a sustainable future. Let us embrace our responsibility as stewards of this planet and take action to protect it for future generations. Let us show the world that the United States is committed to being a leader in sustainability, and that we are ready to work together to achieve this goal.

Thank you.

Debug the terrorist mafia on the .js list.


[DCOS-38318] Revert "Update kafka 1.1.0"

Reverts mesosphere/dcos-commons#2509
cc @samvantran @mpereira

@porridge the CI is triggering the issue discussed in https://jira.mesosphere.com/browse/DCOS_OSS-3539. I have kicked-off a 1.11 strict nightly here to confirm that the tests failing there are now passing: https://teamcity.mesosphere.io/viewType.html?buildTypeId=DcosIo_DcosCommons_Kafka_Stri_DcOs111Strict&branch_DcosIo_DcosCommons_Kafka_Stri=pull%2F2533&tab=buildTypeStatusDiv


Disable form from Submission if data-remote is in action

I use data-remote="CheckName" to check the uniqueness of the username, however it takes roughly around 0.5 seconds to show "Conflict" message. That means if I type very fast in my "username" field, and hit enter immediately, the form is submitted. Is there anyway to block the form from submission while the data-remote is firing the ajax call?

Closing as dupe of #72


Determine which parts of code only work with 2D arrays and mitigate

Some parts of the code work with 2+ dimensions; other parts require exactly 2 dimensions. Determine which applies in each instance. Either extend the code to handle 2+ dimensions (future proofing) or document and add a validation step to ensure exactly two dimensions are present.

Would need to add lots of multidimensional tests.

Perhaps restrict the mission statement of Coreax to 2D. Add an example to show how you could use preprocessing to handle higher dimensions.


No animation on updating data

After releasing the tableView activity indicator should appear under the last cell. Sometimes it appears under the last one, sometimes it is inside the last cell and sometimes it may not appear at all. And when it does not appear you do not know if the tableView already updated or not.
I set userInteractionEnabled = NO when I start downloading new data and when I got it I call "end updating", [tableView reloadData] and userInteractionEnabled = YES all together. That is how I know when table is not updated yet but refresh control not appearing.
Do you know how to make it appear each time?

Does Example project work fine for you?

On 19 марта 2015 г., at 12:41, AlexanderZubkov<EMAIL_ADDRESS>wrote:
After releasing the tableView activity indicator should appear under the last cell. Sometimes it appears under the last one, sometimes it is inside the last cell and sometimes it may not appear at all. And when it does not appear you do not know if the tableView already updated or not.
I set userInteractionEnabled = NO when I start downloading new data and when I got it I call "end updating", [tableView reloadData] and userInteractionEnabled = YES all together. That is how I know when table is not updated yet but refresh control not appearing.
Do you know how to make it appear each time?
—
Reply to this email directly or view it on GitHub https://github.com/vlasov/CCBottomRefreshControl/issues/10.

Nikolay, thank you, it's working. It was wrong to set tableView.scrollEnabled = NO and tableView.userInteractionEnabled = NO inside (void)refreshBottom.


⚠ Bofrost.de has degraded performance

In f3833df, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 848 ms

Resolved: Bofrost.de performance has improved in 7d77dd7 after 6 minutes.


Extending Validator in DataAnnotations

I need to perform certain custom validations. I want to use attribute based validations as we have in DataAnnotations but when a validation fails,I would like to return a custom exception object instead a string. Any tips/guidance on how can  I extend it?

@hanu412  If you are having issues with the Full .NET Framework or .NET Runtime, the best way to file a bug is at Connect (http://connect.microsoft.com/VisualStudio) or through Product Support (https://support.microsoft.com/en-us/contactus?ws=support) if you have a contract.


try to run tests under podman inside centosCI

This is the reason for the build failure:
Error:
 Problem: conflicting requests
  - nothing provides python3.7dist(libpagure) < 0.20 needed by python3-ogr-0.3.1-1.fc31.noarch

And yes, it's for rawhide.

Any ideas what's wrong in my case?
make check_in_container
...
podman exec packit bash -c "make check"
. tests/testlib.sh; test_install
...
Complete!
. tests/testlib.sh; run_tests
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
...
ImportError while loading conftest '/src/tests/conftest.py'.
py._path.local.LocalPath.ImportMismatchError: ('tests.conftest', '/home/jpopelka/git/packit-service/packit/tests/conftest.py', local('/src/tests/conftest.py'))
make: *** [Makefile:24: check] Error 4
Error: exit status 2
make: *** [Makefile:27: check_in_container] Error 2

I've also met this issue :-) it is caused by pycache. Pytest is very confused by pycache


Consider renaming / publishing adapter

As original sma-speedwire seems to be no longer to be maintained and you have already done some corrections, please consider contacting original dev to grant access to npmjs or to RENAME the adapter and providing it to public.
As the original adapter was never published at repositories and npmjs access has not been granted to ioBroker / bluefox a migration to eitehr ioboker-community-adapters or granting you access by bluefox override is not possible.

OK, just noticed your remark here:
https://github.com/ioBroker/AdapterRequests/issues/883
@mcm1957 Bin mir nicht sicher, ob es sinnvoll ist, den Adapter weiter zu verfolgen. Es gibt sbfspot, wo SpeedWire von SMA komplett supported wird. Eine Integration von sbfspot in ioBroker ist per sbfspot-Adapter oder direkt über MQTT möglich. Neue SMA-Wechselrichter sprechen von Hause aus modbus, sind also so einfach in ioBroker zu integrieren...
So I'll close as this adapter seems to be dead ...


Time Picker - Unable to Select Hour and/or minutes depending on browser used.

I'm having some issues with the Time Picker Component.

On Android Chrome: not possible to select Hour or Minutes. Touching an hour just moves to the minute selection, hour stays at 12. Clicking any minute does nothing.

On Chrome OS X: hour can be selected, but not the minutes.

On Safari OS X: All the hours and minutes are overlaid on each other.

I've also had the same exact problems.

Same here...

Problems 2 & 3 are fixed in recent commits. I'm now working on Android Chrome.

+1 safari.

@ldauksza With #831, #870 and #873 merged in master, I think this issue should be mark as resolved.

Thanks @martianboy :+1:

Is the demo on the site updated as well? Do you keep it in sync with master?
Thank you for all your hard work!

@ldauksza The docs site is only in sync with the current version on npm. I'll update the docs site when these changes get released this weekend.

@hai-cea OK good to know. Thank you again, great work!


fix for obs contents display

the contents in obs are not showing properly in below conditions
If no space in ling sentence
if there is less content , everything will be aligned at center

Attached Screenshots for the fixes

@vipinpaul, This PR working properly as expected. can be merged.

picture and the text are aligned properly when we import the OBS content offline through collections.


Master todo thread

I just want to list here quickly what could/should be done. Each topic could be its own issue/PR.
Janitorial
We'd love to have this repo in line with our other repos (see @Agenda) and that mostly includes

[x] using xo,
[x] codebase in ES6,
[x] tests with ava.
[x] Add this to our Travis CI

I already wrote at Slack:

just a reminder that since that project has been independent, they might be opinionated about coding style, libraries to use etc.
Nicer to have everything in line (xo etc) under the org, but should not become a blocker if they strongly prefer not to.

;-) Would love to hear your thoughts on that @keyvan-m-sadeghi
Bigger picture tasks / questions

[ ] map out what requirements Agendash has from the API and if this library matches them.
[ ] map out if this library works with the latest Agenda (1.x).
[ ] Write Agendash to use this package instead its built-in API
[ ] if we need to make breaking changes here, can we or do we need to maintain backwards compatibility (might not be much work)?
[ ] Should we add versioning to the API (/v1/ in routes etc)?

What do you think?

I'll take clean up. I've already got xo --fix running as we speak. Let's hope @keyvan-m-sadeghi is cool with that.

I'm always cool with progress, do anything you see fit

Renaming this project to agenda-api is a very neat idea.
Also, what's you opinion on renaming /api/new to /api/define?
It's more consistent with Agenda terminology, also semantically makes sense, since one can re-define an already existing job and change the URL with this endpoint.

If we're going to do REST properly we shouldn't really have a /new we should POST to /job for a new one, DELETE to remove, PUT for update, etc.

☝ I second @OmgImAlexis
If the API isn't going to be restful, we should indeed rename it. Making it restful would make it easier to reason about. REST kinda dictates routes and everything to us so we wouldn't need to spend time designing the API that much but building cool stuff with it instead. :-)

Alright, that makes perfect sense. Will rename to /api/job and also add PUT and DELETE tonight or tomo 👍

If we're going to do REST properly we shouldn't really have a /new we should POST to /job for a new one, DELETE to remove, PUT for update, etc.

Done. Only DELETE remains

linking: https://github.com/agenda/agenda-rest/pull/10

@keyvan-m-sadeghi it'd be a smart idea to allow /api/job/:jobId to be a specific show if you haven't already added that.

@OmgImAlexis you mean a GET for a specific job? Yeah, sounds good

Hmmm this last suggestion doesn't resonate with me. The way I see it, "to POST to job" reads as introducing a single job. If it was jobs I'd get it. Also I'm not sure who'd need a batch update on all jobs' URLs.

Another point, Agenda abstracts away implementation details such as Mongo IDs (e.g. jobId), the name for each job is the unique getter. So I guess /api/job/:name is more suitable. And we actually already have that since this would need to be a POST or PUT accompanied with a body, hence name could be moved to the body and that we already have. What do you think?

@keyvan-m-sadeghi This would be RESTFUL.
GET /api/job -> Return all jobs
POST /api/job -> Create a new job
PUT /api/job -> Update all jobs
DELETE /api/job -> Delete all jobs

GET /api/job/:jobName -> Return all jobs with this name
POST /api/job/:jobName -> Create a new job with this name
PUT /api/job/:jobName -> Update all jobs with this name
DELETE /api/job/:jobName -> Delete all jobs with this name

GET /api/job/:jobName/:jobId -> Return single jobs with this name and id
POST /api/job/:jobName/:jobId -> Create a new job with this name and id
PUT /api/job/:jobName/:jobId -> Update a single job with this name and id
DELETE /api/job/:jobName/:jobId -> Delete a single job with this name and id

Yep ☝  Tho it would be even more RESTFUL if URL path would be /api/jobs/* ;-D
Nice list, thanks @OmgImAlexis
I'll just throw in what Agendash seems to use currently:

GET /api
POST /api/jobs/requeue (takes multiple ids)
POST /api/jobs/delete (takes multiple ids)
POST /api/jobs/create

Agendash UI does these features currently:

Delete many jobs
Requeue many jobs
Requeue one job
Delete one job
Schedule a job
Read all the jobs (filtered by name)

Needs to be able to categorise jobs as:

Scheduled
Queued
Running
Completed
Failed
Repeating

I'll also list what Agenda does, more or less —
Define a job
Creating jobs:

every
schedule
now
create (+save)

Manually working with a job:

repeatEvery
repeatAt
schedule
priority
unique
fail
run
save
remove
touch
disable
enable

Managing multiple jobs:

jobs (query jobs)
purge (removes all jobs in the database without defined behaviors)
cancel

Now, out of all these lists we should be able to see how our API should look like. Should cover at least Agendash's needs. Suggestions? :-)

I'm good with adding versioning in the API as we can handle old traffic going to the API without a versioned number and then return a deprecated notice.
We may need to push a minor update to the old version that just checks if the endpoint returns a certain HTTP code(maybe 410?) and then errors out asking them to update.

@keyvan-m-sadeghi This would be RESTFUL.

OK now I understand.
I added these three:
GET /api/jobs -> Return all jobs
POST /api/jobs -> Create a new job
PUT /api/jobs/:jobName -> Update all jobs with this name

And I'm done for this weekend ;)

+1 for versioning

Some good food for thought about multiple IDs: https://stackoverflow.com/a/9372278/1984644


How to use Requests ?

Hello,
I'm new to Laravel, but I know the fantastic Dynatable plugin, that's why I'm trying to use it in my project.
Into the view file, how should I use the dynatable function, and with which Request ? I thought requests were used to control forms... I don't understand why a Request is necessary if I want to display a list of elements from my database, and how to use this function.
Would it be possible to get an example of a view and its call to controller's dynatable function ?
Thank you !!

With Laravel you can insert dynamically usefull objects like the current http Request done by the client just by adding this into your method.
The Dynatable plugin require the Request object because he needs dynatable params such as ordering, searching passed into the http requests.
This plugin does not handle the javascript and the HTML, it just handle the json returned by the ajax target url.


Add DNS support for communication between VMs

This PR adds support for DNS name resolution between VMs running on the same nex host.
Nex node runs an embedded nameserver on an ephemeral port, which is provided to VMs by the agent via MMDS. The agent uses iptables to setup NAT OUTPUT chain rules for sending local DNS packets destined for port 53 (UDP or TCP) to the configured nameserver.
When a workload is deployed (or redeployed) to the Nex node, it's virtual interface is plugged in to the CNI bridge. If the workload is not configured to support DNS resolution, it still uses the CNI ptp plugin.
Workloads configured for name resolution and deployed in the default namespace are can be resolved by other VMs using <workload name>. Otherwise, workloads are resolved by <namespace>.<workload name>. It would be trivial to prevent name resolution of VMs deployed in one namespace by VMs deployed outside of that namespace, but that is not currently implemented.
DNS queries are handled by the nameserver if the hostname matches one of the configured workloads. Otherwise the nameserver acts as a recursive resolver, deferring to <IP_ADDRESS>.
This PR does not modify the local nameservers on the host, so name resolution only works within VMs at this time.
This PR is based on #121 but itself is only one commit.

Adds a divergence between root file systems that support DNS and root file systems that don't, which increases our support boundaries

The divergence here is quite tiny, simply adding iptables and sudo packages to the root filesystem and the nex user as a sudoer on the VM.

Adds a dependency on the bridge CNI plugin that we don't currently use

The bridge plugin replaces the ptp plugin for workloads that are configured to support it.

Adds a divergence between root file systems that support DNS and root file systems that don't, which increases our support boundaries

The divergence here is quite tiny, simply adding iptables and sudo packages to the root filesystem and the nex user as a sudoer on the VM.

All workloads currently adhere to the same machine config template. So if one workload needs DNS support, then all of them have to have it enabled on the machine. While we have a feature scheduled to make templates that can be supplied during the deploy command, that's not there now.
The size of the divergence doesn't matter so much as the fact that now the bridge plugin needs to be installed on the node machine just in case someone modifies the machine template to use bridge. and now precheck will have to be modified to vet the right bridge config.

Adds a dependency on the bridge CNI plugin that we don't currently use

The bridge plugin replaces the ptp plugin for workloads that are configured to support it.

Adds a divergence between root file systems that support DNS and root file systems that don't, which increases our support boundaries

The divergence here is quite tiny, simply adding iptables and sudo packages to the root filesystem and the nex user as a sudoer on the VM.

All workloads currently adhere to the same machine config template. So if one workload needs DNS support, then all of them have to have it enabled on the machine. While we have a feature scheduled to make templates that can be supplied during the deploy command, that's not there now.
The size of the divergence doesn't matter so much as the fact that now the bridge plugin needs to be installed on the node machine just in case someone modifies the machine template to use bridge. and now precheck will have to be modified to vet the right bridge config.
The impersonation attack vector is far higher up my list of concerns than the CNI plugins

Agreed, and we should probably support a much larger library of CNI plugins in the future, meaning many more should likely be present. This only matters for the host itself. The rootfs changes do not require awareness of any of these changes. The agent can be configured to conditionally enable the NAT OUTPUT chain rules.

I think the issue is that right now we support all of the CNI plugins, by virtue of us not being opinionated there. Every time we enforce an opinion we limit the options and are on the hook to support it.

I think the issue is that right now we support all of the CNI plugins, by virtue of us not being opinionated there. Every time we enforce an opinion we limit the options and are on the hook to support it.

We actually only support the CNI plugins enabled in preflight-- this PR adds the bridge CNI plugin to that list. To support other CNI plugins we simply need to update the firecracker initialization code to read the CNI configuration provided for a workload and apply it instead of the default template. If a workload doesn't supply a CNI configuration, then still fall back to the default ptp template.

Probably arguing semantics, but there's nothing stopping anyone from using a machine config that has plugins we don't verify via preflight. We only verify the defaults, not the entire world of supported scenarios.

Probably arguing semantics, but there's nothing stopping anyone from using a machine config that has plugins we don't verify via preflight. We only verify the defaults, not the entire world of supported scenarios.

We are probably both just being a bit pedantic at this point 😅
But currently we only pass the default template into the firecracker VM. Small amount of work to add CNI to the deploy request, read it and construct a dynamic CNIConfiguration -- or fallback to the default.
I am assuming we will want to keep the CNI plugins that can be applied at runtime to a workload in a whitelist of sorts though, to prevent nefarious things from happening to the host.

Yeah, pedantic mode aside, some of this is discussed in #117


Decky plug in doesn't have move to SD card option

It would be nice if you could move between SD and internal at any point.

This is true! Its not ready yet as i dont have an sd card anymore so i cant really test :/


Graceful-switchover to support automatically picking the replica to promote

Currently, graceful switchover requires the user to select a replica to promote to the new master, however it would be nice if orchestrator could automatically pick a (if not "best") replica to promote.
"Best" replica for promotion could take into account promotion rules and replication status, i.e. a replica with a lot of lag might not be the best to promote.

Addressed by #1165

fixed by #1165


Dynamic cuda wrapper

This is a proof-of-concept, quick and dirty, CUDA version independent, dymamic CUDA library wrapper fix.

[x] cuda_setup/main.py compatible with older libraries. (older libraries mean libs with cuda version tags)
[x] all used cublas*, cusparse*, cublasLt* functions are wrapped using dlsym()/GetProcessAddress()
[x] minimize cuda runtime functions that are linked with cudart_static lib.

ubuntu-20.04 + cuda11.8 environment.
$ ldd venv/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda.so
        linux-vdso.so.1 (0x00007ffc44cc9000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f858d075000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f858d052000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f858d04c000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f858ce6a000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f858cd1b000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f858cd00000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f858cb0c000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f858f3fc000)

windows 10 + cuda11.8 environment (mingw64 terminal)
ldd bitsandbytes/libbitsandbytes_cuda.dll
       	ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffd23ed0000)
       	KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffd23650000)
       	KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7ffd217c0000)
       	msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7ffd21f10000)
       	ucrtbase.dll => /c/WINDOWS/System32/ucrtbase.dll (0x7ffd21de0000)
       	VCRUNTIME140.dll => /c/WINDOWS/SYSTEM32/VCRUNTIME140.dll (0x7ffd0d890000)
       	MSVCP140.dll => /c/WINDOWS/SYSTEM32/MSVCP140.dll (0x7ffd0d8b0000)
       	ole32.dll => /c/WINDOWS/System32/ole32.dll (0x7ffd23710000)
       	RPCRT4.dll => /c/WINDOWS/System32/RPCRT4.dll (0x7ffd22730000)
       	combase.dll => /c/WINDOWS/System32/combase.dll (0x7ffd23a20000)
       	GDI32.dll => /c/WINDOWS/System32/GDI32.dll (0x7ffd22a20000)
       	win32u.dll => /c/WINDOWS/System32/win32u.dll (0x7ffd21ee0000)
       	gdi32full.dll => /c/WINDOWS/System32/gdi32full.dll (0x7ffd21c20000)
       	msvcp_win.dll => /c/WINDOWS/System32/msvcp_win.dll (0x7ffd21640000)
       	vcruntime140_1.dll => /c/Windows/System32/vcruntime140_1.dll (0x180000)
       	USER32.dll => /c/WINDOWS/System32/USER32.dll (0x7ffd23370000)
       	VCRUNTIME140_1.dll => /c/WINDOWS/SYSTEM32/VCRUNTIME140_1.dll (0x7ffd0d880000)
       	IMM32.DLL => /c/WINDOWS/System32/IMM32.DLL (0x7ffd22650000)

I'm a little worried that the API or ABI could have changed between 11 and 12, causing very weird runtime errors if we just use symbols from v12 and call them like they were v11, or vice versa. 🤔

Hey @wkpark @akx @matthewdouglas,
I'm hoping to merge this in the coming two weeks. One thing I feel we need to discuss is how we can test if this works as intended without introducing any issues:
Do you have any thoughts on that? I'm willing to do the work, but if you already have a few concrete things in mind, that would definitely help speed this up.
Thanks @wkpark on your initiative on this, really appreciated! Another thing needed would be to resolve the conflicts.

P.S. What's your opinion on how this goes together with #1052? I don't fully grok that yet. From what I understand #1052 determines major CUDA version. Is #1052 dependent on this one here?

I'm not sure how I feel about this one yet. I will think about it a little more but my initial thought is that it seems to be quite hacky feeling. Maybe this is a common thing in C++ world, but I'm not used to seeing it.

I also get a hacky/too-complex feeling here, but I'm not sure what the better option would be.

Thanks for your valuable inputs ❤ Really appreciated.

Thank you so much for this thoughtful PR. We were thinking about binary size over time and this is an important issue together with support for many different CUDA minor versions. Your work on this is truly appreciated.
Overall, this would be very nice to lead to a smaller binary size and support all kind of different cuda minor versions we are currently not supporting with a direct pip install. Your approach is clever and well-implemented. However, currently we are very limited in providing support and guidance for debugging installation issues that come from users that might have problems with their CUDA setup. In particular, in the past, we had a more dynamic installation and it cause problems if a user had multiple CUDA installations.
As such, we do not see us in the position at the moment to be able to support or switch to a dynamic CUDA wrapper since it would add additional maintenance burden. This means, we will only support a few CUDA options at this point.
We will evaluate the way we ship binaries and support binaries every now and then and it might be that we will come back to your PR if we decide to go with dynamic CUDA wrapping. Your contribution has certainly given us valuable insights to consider for the future.
We genuinely appreciate the time and effort you've put into this PR, and we hope you'll continue to be an active part of our open-source community.


add tutorial for source-git

TODO:

[x] wait for #65 to be merged

ready for review

I'm merging this, please open issues if you have concerns


Shouldn't arrays:sort() do in-place sorting?

import ballerina.lang.system;
import ballerina.lang.arrays;

function main (string[] args) {
    string[] a = ["C", "B", "A"];
    string[] res = arrays:sort(a);
    system:println(a);
    system:println(res);
}

Above sort() function uses an additional linear space allocation and does not support in-place sorting. I see sorting is still WIP. But shouldn't the default behavior of sort() function be in-place sorting, or is there some other sort function I've missed?

This functionality is removed.


Package Install Error in Laravel 6.3.0

uxweb/sweet-alert 2.0.0 requires illuminate/session ~5.0 -> satisfiable by illuminate/session[5.0.x-dev....

Add this in composer.json and update;
"uxweb/sweet-alert": "dev-master"
its working for me.

Same error here.  using the "uxweb/sweet-alert": "dev-master" worked

Using "uxweb/sweet-alert": "dev-master" in composer.json worked.

Add this in composer.json and update;
"uxweb/sweet-alert": "dev-master"
its working for me.

Gràcies, gràcies, gràcies!

dont show icons

Icons are not showing.

@AliEsmaili72  @stephan-v
A new release is out! There's no need to require dev-master anymore!
Thank you!


[Feature request] Resize images to prevent data usage

I've noticed that my backup is 10mb when I created 5 cars in the system where only 2 of them contain an image.
After looking inside the backup, I've noticed the images haven't been resized.
Maybe it's nice to resize the images to save storage space?

Awesome you're looking into this!
In my system, the image is 186 x 145

The original image size is now 4032 x 3024
I've now resized the image to 672 x 504
This is still looking perfectly:

The image size has changed from 4.43MB to 206kB.
What I do in PHP is using the following: https://www.php.net/manual/en/function.imagecopyresized.php
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

I input the uploaded image and the output (resized) image I save on disk to use for all future use.
I have no experience in C to do this unfortunately, but I've asked our big AI friend, if he can help us out. He came up with this:
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

#define STB_IMAGE_RESIZE_IMPLEMENTATION
#include "stb_image_resize.h"

#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb_image_write.h"

#include <stdio.h>
#include <stdlib.h>

int main() {
    int width, height, channels;

    // Load the image
    unsigned char *img = stbi_load("input.jpg", &width, &height, &channels, 0);
    if (img == NULL) {
        printf("Error loading image\n");
        return 1;
    }

    // New dimensions for the resized image
    int new_width = 200;
    int new_height = 200;

    // Allocate memory for the resized image
    unsigned char *resized_img = (unsigned char *)malloc(new_width * new_height * channels);

    // Resize the image
    stbir_resize_uint8(img, width, height, 0, resized_img, new_width, new_height, 0, channels);

    // Save the resized image
    stbi_write_jpg("output_resized.jpg", new_width, new_height, channels, resized_img, 100);

    // Free the memory
    stbi_image_free(img);
    free(resized_img);

    return 0;
}

Released.

Awesome! I'd love to update my installation, but I'm a bit scared of losing everything.
Is there somewhere a description on how to update a running configuration without loosing everything?
I know I can make a backup and reload it, but it feels like this isn't the way to go?
Is it posible we move all data to a volume maybe?
Sorry I'm new to docker....

The docker compose should include all the volumes that needs configured.

I have a docker-compose like this:
services:
  lubelogger:
    image: hargata/lubelogger
    ports:
      - "8080:8080"
    env_file:
      - /pathToEnvFile/lubelogger.env
    restart: unless-stopped
    volumes:
      - myapp:/home/node/app  # use named volume

volumes:
  myapp:

Note that I added a volume. However it doesn't matter if I add it or dont'. Whenever I run those commands:
docker stop <container>
docker rm <container>
docker compose up -d
It starts a container with an updated version of lubelogger (that's great)
But I have to reload the backup manually when I go to my browser at ipaddress:8080.
All settings are gone and also all vehicles etc.
When I restore a backup, everything is fine again.

Your volume does not map to the directories used by the app, refer to the docker-compose.yml file found in this repository.

That works alot better! Thanks alot!


Move Python tutorials from the PaleoHack workshop to a single module

Right now, we have all the Python tutorials into several modules. They need to go back into a single one so we can make room for R, Time Series analysis, Geoscience paper of the future

Done before the workshop


Initial back end in RUST

It is worth writing the back end of the project in RUST. This is because, in addition to greater mastery of the project, it will eliminate some performance problems that a programmer of dubious origin could implement (I put myself in this space). A minimum of knowledge of how the OS and Hardware works will be required.

Resolved in 45d1e38989b084dc189af761a8957ce0b5daab57