Check that Container Name passed to createContainer is an uppercase String without -

Hi Thomas,
after quite some time I'm using the hana-cli again. Thank you for the great work you've done here.
I've used the createContainer command on my HANA Express Edition. But I only got RETURN_CODE  0 when I've used all uppercase characters and no -. Otherwise I've got this:
hana-cli createContainer TEST-CONTAINER -a
Using Connection Configuration loaded via default-env-admin.json

key          value
-----------  -----
RETURN_CODE  -1
REQUEST_ID   68

Even when the RETURN_CODE was -1 still a default-env.json was created. I would suggest to either check the RETURN_CODE or the input.
Best Regards
Gregor

Will have a look at it later this week. I have some work in progress to update the tool to include CAP 7.0 features and support. Will try and address this issue in the release update.

Took me too long to get back to this one, but updated now.  I correct some common errors (like converting name to upper case automatically.  And report errors for other illegal characters. I used this list here for user names https://help.sap.com/docs/SAP_HANA_PLATFORM/b3ee5778bc2e4a089d3299b82ec762a7/55d3b5a01166494582cc12f70ccfa17f.html
But I'm about 99% sure the same applies for container and group names.  Hopefully I've not checked too aggressively.

Thank you.


Automatically mark users idle

ISSUE
closes #412
PROBLEM
We have to change the flow of marking users idle on my SITE. Previously users can update their idle status manually. Now, the user status will be added automatically.
SOLUTION
A User has three STATUS shown on my site's home page.

Based on each status we are shown other status buttons, we have removed the idle buttons from each case.
CASE 1: If the current user status is IDLE
In this case, we can mark the user status as either Active or OOO.

If the user selects OOO, then the flow will be like before and the USER status will be changed to OOO.
If the user selects ACTIVE, then we will check whether the user tasks list has any ASSIGNED or IN_PROGRESS tasks
i. If yes, We will update the status to active
ii. If no, we will show the user a modal asking if the user has no IN_PROGRESS and ASSIGNED task, once the user fills in the skills the user is willing to learn then we will show an error message saying You are already Idle.

CASE 2: If the current user status Is OOO
In this case, we can mark user status only as ACTIVE

If the user selects active then, we will check if the user has any IN_PROGRESS or ASSIGNED tasks
i. If yes, the user status will be changed to active.
ii. If no, the user status will be changed to Idle after showing the user a modal asking for the skills the user wants to learn.

CASE 3: If the current user status is ACTIVE
we can only change the status to OOO, and it will be changed like before.
CASE 4: If the user assigned a task using one-click task conversion then,
In this case, the status of the task given is AVAILABLE and we don't need to update the user status with the click of a button in the status site.
CASE 5: If the User marks his task completed by changing the percentage completed,

If the percentage is below 100 then, tasks will update as usual
If the percentage complete is 100 then, first it shows a modal that will mark your tasks completed and after that, we will check
i. After completing the task if the user has any other IN_PROGRESS or ASSIGNED tasks
a. If yes, then we will check if the user Is OOO then we will not update the status and leave it to OOO, If not OOO we will update the status to ACTIVE
b. If no, then we will mark the user IDLE if the current status is not OOO.

Can you attach a video @manish591 showing the flow. that will be helpful

@manish591 I think once the user is assigned a task then too we need to change the status to active on the backend. Since on completion we are changing their status to idle


Project MMO doesn't give wood cutting xp when chopping

...as realized in #34.

Fixed in 0.12.0

Fixed in 0.12.0


python3.pkgs.cheroot: fix build

Motivation for this change
python3.pkgs.backports_functools_lru_cache is null,
so we cannot require this for python3
Things done

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

[x] NixOS
[ ] macOS
[ ] other Linux distributions

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

@GrahamcOfBorg build python2.pkgs.cheroot python3.pkgs.cheroot

Success on x86_64-linux (full log)
Attempted: python2.pkgs.cheroot, python3.pkgs.cheroot
Partial log (click to expand)
XFAIL cheroot/test/test_conn.py::test_Chunked_Encoding
  Server does not correctly read trailers/ending of the previous HTTP request, thus the second request fails as the server tries to parse b'Content-Type: application/json\r\n' as a Request-Line. This results in HTTP status code 400, instead of 413Ref: https://github.com/cherrypy/cheroot/issues/69
XFAIL cheroot/test/test_conn.py::test_598
  Sometimes this test fails due to low timeout. Ref: https://github.com/cherrypy/cherrypy/issues/598
SKIP [1] cheroot/test/test__compat.py:40: This code path only appears in Python 2 version.
SKIP [1] cheroot/test/test_server.py:102: Abstract sockets don't work currently
SKIP [1] cheroot/test/test_server.py:129: Test HTTP client is not able to work through UNIX socket currently
=============== 54 passed, 3 skipped, 2 xfailed in 40.52 seconds ===============
/nix/store/9lxnmghss2ni5x61h43rfv4fggilj86l-python2.7-cheroot-6.3.3
/nix/store/65yfq4363v295w1lf5xpmynar76i05xn-python3.6-cheroot-6.3.3

Success on aarch64-linux (full log)
Attempted: python2.pkgs.cheroot, python3.pkgs.cheroot
Partial log (click to expand)
XFAIL cheroot/test/test_conn.py::test_Chunked_Encoding
  Server does not correctly read trailers/ending of the previous HTTP request, thus the second request fails as the server tries to parse b'Content-Type: application/json\r\n' as a Request-Line. This results in HTTP status code 400, instead of 413Ref: https://github.com/cherrypy/cheroot/issues/69
XFAIL cheroot/test/test_conn.py::test_598
  Sometimes this test fails due to low timeout. Ref: https://github.com/cherrypy/cherrypy/issues/598
SKIP [1] cheroot/test/test__compat.py:40: This code path only appears in Python 2 version.
SKIP [1] cheroot/test/test_server.py:102: Abstract sockets don't work currently
SKIP [1] cheroot/test/test_server.py:129: Test HTTP client is not able to work through UNIX socket currently
=============== 54 passed, 3 skipped, 2 xfailed in 40.63 seconds ===============
/nix/store/lm1aygyg5yd23232cjkgpgp21rixjx4z-python2.7-cheroot-6.3.3
/nix/store/2rvlgm3ddf2dng25cdmb02k8flziwb3f-python3.6-cheroot-6.3.3


fix memleak

Fix memory leak.

Class defer seems to be duplicating the function of std::unique_ptr. I don't know how @serizba feels about it.

Emm... It's not really the same thing. defer is more general.

I am mostly neutral (though slightly negative) on the defer class here,
because it can be implemented using std::unique_ptr without too much
complication. However, I like defer as a general cleanup as in golang.
On Sat, Nov 7, 2020, 03:00 Allen<EMAIL_ADDRESS>wrote:

Class defer seems to be duplicating the function of std::unique_ptr. I
don't know how @serizba https://github.com/serizba feels about it.
Emm... It's not really the same thing. defer is more general.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/serizba/cppflow/pull/69#issuecomment-723415541, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AALDTHWKZDK4GO6SQK75NEDSOT5A3ANCNFSM4TNPMYCA
.

@ivanallen @ljn917
I do not have a strong opinion on the topic either. I will accept the request if you both agree on it. If you think that just using unique_ptr may work, that would be perhaps cleaner.

@ivanallen I am sorry that I didn't get much time to test this, my apologies. The other span PR may take some time too...
@serizba I think this is good to go. Although gcc's leak sanitizer still shows leaks in libcuda.so, I think it is false positive. cuda-memcheck --leak-check full ./example did not show any leak with the load_model example. I attached the leaks reported by gcc's leak sanitizer at the end to avoid further confusion.
If you still prefer std::unique_ptr over defer. We can define std::vecotr<std::unique_ptr<TF_Tenosr, decltype(&TF_DeleteTensor)>> inp_val_ptr;, then emplace_back each elements of inp_val into inp_val_ptr as @ivanallen suggested. Again, both solutions are acceptable in my opinion.
=================================================================
==685408==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 896 byte(s) in 16 object(s) allocated from:
    #0 0x7f60ce44c587 in __interceptor_calloc (/lib64/libasan.so.6+0xab587)
    #1 0x7f60a8f0a128  (/lib64/libcuda.so.1+0x1c8128)

Indirect leak of 1536 byte(s) in 16 object(s) allocated from:
    #0 0x7f60ce44c587 in __interceptor_calloc (/lib64/libasan.so.6+0xab587)
    #1 0x7f60a8f0a14a  (/lib64/libcuda.so.1+0x1c814a)

Indirect leak of 345 byte(s) in 16 object(s) allocated from:
    #0 0x7f60ce44c3cf in __interceptor_malloc (/lib64/libasan.so.6+0xab3cf)
    #1 0x7f60a90b99dd  (/lib64/libcuda.so.1+0x3779dd)

Indirect leak of 300 byte(s) in 15 object(s) allocated from:
    #0 0x7f60ce44c3cf in __interceptor_malloc (/lib64/libasan.so.6+0xab3cf)
    #1 0x7f60a901d654  (/lib64/libcuda.so.1+0x2db654)

Indirect leak of 83 byte(s) in 4 object(s) allocated from:
    #0 0x7f60ce44c3cf in __interceptor_malloc (/lib64/libasan.so.6+0xab3cf)
    #1 0x7f60a901d984  (/lib64/libcuda.so.1+0x2db984)
=================================================================

Thanks, @ljn917 @serizba!
I list the difference between defer and unique_ptr. Both solutions are okay for me, but we need to reach a consensus.

use defer

    std::vector<TF_Tensor*> inp_val(inputs.size());

+   defer d([&inp_val]{
+       for (auto* tf_tensor : inp_val) TF_DeleteTensor(tf_tensor);
+   });

use unique_ptr

+   std::vecotr<std::unique_ptr<TF_Tenosr, decltype(&TF_DeleteTensor)>> inp_val_ptr;
    std::vector<TF_Tensor*> inp_val(inputs.size());

    //...
    for (...) {
       // ...
       auto inp_tensor = TFE_TensorHandleResolve(std::get<1>(inputs[i]).tfe_handle.get(), context::get_status());
+      inp_val_ptr.emplace_back(inp_tensor, TF_DeleteTensor);
+      inp_val[i] = inp_tensor; // copy raw pointer to anther vector
    }

   //...

I think @serizba should be the person to make he final decision here :)

Thanks for showing both options @ivanallen,
Now I think that perhaps using defer is cleaner. It adds a nice way of cleaning an object, and the class may be convenient in other future occasions too. Having a duplicate vector just to store the deleters seems a bit confusing.


GET /api/v1/system/ca does not return a list of CAs

Describe the bug
Identified in #355. The /api/v1/system/ca endpoint returns the ca section of the config with the ca parent key included. This endpoint should only return the list nested under `ca.
To Reproduce
Steps to reproduce the behavior:

Ensure CAs are present in the config
Make a GET request to /api/v1/system/ca
Notice how the data field is an associative array that includes the ca parent key.

Expected behavior
The data section of the response should be a list of CA objects without the ca parent key present`
pfSense Version & Package Version:

pfSense Version: 2.6.0
Package Version 1.5.3

Affected Endpoints:

URL: /api/v1/system/ca

oh if thats a bug... The same happens with URL: /api/v1/system/certificate ... I try to look into code to find solution

Yep that looks like the same issue, thanks for pointing that out. I'll get a patch for that one as well.


add google analytics

I agree with @lgierth's suggestion that we should make GA only load when you're viewing the content through ipfs.io gateway but in the meantime I think we need these metrics.
This is a straight copy from https://github.com/ipfs/website/blob/534c4cee29f41ff49cfbcc1196bf45cde6eb6809/ipfs.io-theme/templates/base.html#L132-L139
I'm pretty sure it will work as-is but someone should double-check.

analytics tracking number looks good!


fix REGEXP_LIKE, CONTAINS_STRING, ICONTAINS_STRING for correct 3vl behavior

Description
Fixes regexp_like, contains_string, and icontains_string to return null instead of false in SQL compatible null handling mode to have correct three-value logic behavior. I did not put this behavior behind a flag, though if we are worried about the bug fix changing behavior I suppose we could associate it with NullHandling.useThreeValueLogic(), though kind of weird since that is currently tied to use for native filters, or ExpressionProcessing.useStrictBooleans() which traditionally controls the other expression related 3vl stuff.
Release note
REGEXP_LIKE, CONTAINS_STRING, and ICONTAINS_STRING correctly return null for null value inputs in SQL compatible null handling mode (the default configuration).

This PR has:

[x] been self-reviewed.
[x] a release note entry in the PR description.
[x] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[x] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[x] been tested in a test Druid cluster.

let's put it behind one of these feature flags, please :) My experience is that long-time users often adjust to this weird behavior and then complain about their workflows breaking.

The problem is that neither of these feature flags seem very appropriate. druid.generic.useThreeValueLogicForNativeFilters definitely seems not right because it has 'native filters' in the name.  druid.expressions.useStrictBooleans also doesn't really feel right because the primary thing that config does is make 'LONG' be the standard boolean type, instead of a mix of boolean-ish types. It by side-effect has some three-value logic stuff that it fixed with AND and OR filters, but doesn't fully control SQL compatible three-value logic behavior for the rest of expressions, for the most part, that just happens by default if druid.generic.useDefaultValueForNull=false.
I'm pretty strongly opposed to adding yet another feature flag for a bug fix, it isn't really sustainable. This fix already only has any effect if druid.generic.useDefaultValueForNull=false...


keep plugins dir as deps dir when compiling plugins+deps

Fixes https://github.com/rebar/rebar3/issues/662


SMS Notifications - sms notifications was coming with strange symbols [&quot] instead quotes.

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:
Prerequisites: Set one of your account with quotes

Open App for 1 account has quotes in the name
Start chat with SMS account
Sent 2-3 message
Check the SMS message on iPhone

Expected Result:
The text in the message is showing as Account name
Actual Result:
The text message is showing as &quet;LastFirst&quet
The issue did not occur on Mac/Chrome.
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: Yes
Email or phone of affected tester (no customers):<PHONE_NUMBER><EMAIL_ADDRESS>Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation

Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

Looks like we're not unescaping html entities, gonna take a look when I'm back from lunch.

Issue not reproducible during KI retests. (First week)

Already has a PR deployed to production and QAd, closing.


Silently Fail onRequestPermissionsResult for Invalid Activities

Summary
react-native-permissions causes crashes to android users in different situations that are hard to replicate, but are clearly visible through crashlogs and analytics, affecting up to 15% of users on different devices and OS versions, with different versions of react-native-permissions in the past 6+ months.
Crash report
com.zoontek.rnpermissions.RNPermissionsModule.onRequestPermissionsResult
java.lang.NullPointerException: Attempt to invoke interface method 'void com.facebook.react.bridge.Callback.invoke(java.lang.Object[])' on a null object reference

Similar reported issues / topics
The issue has been fixed by react-native in a previous release, based on this PR and it's changed files. Current PR only aligns react-native-permissions with the main fix released on react-native.

https://github.com/facebook/react-native/issues/29056

The impact of the change is minimal.
Compatibility

OS
Implemented

iOS
✅

Android
✅

Checklist

[X] I have tested this on multiple devices and simulators

Thanks, merged!

Hi @zoontek , we have also faced this issue recently but we can't update the library directly to 3.9.1 as our current app is made with 3.8.0. Just wanted to know that if we just add the try catch fix done in 3.10.1(latest version) in our app before releasing. So will that work or it can create any problem.

@SunnyBalani92 Just update, it's easier.


Do not use DELETE_ON_CLOSE with file locking

The StandardCache.withStructureLock method opens the lock file using the StandardOpenOption.DELETE_ON_CLOSE. The implementation of that functionality is highly system dependent. On Ubuntu 20.04 using OpenJDK 21, the implementation uses an old Unix trick of opening a file and immediately deleting it. The fact that the file is still open means that the underlying file descriptor is completely usable for writing and reading. However, as soon as that descriptor is closed, the file is gone. Where this becomes a problem for file locking is that any other process attempting to lock the file will succeed because as far as the OS is concerned, the file does not exist even though it is "open" by another process. I have tested this with a unit test that creates two child JVM processes and attempts to lock the same file. Using DELETE_ON_CLOSE, it fails (i.e. no blocking), whereas without it, the test succeeds. The fix is to remove DELETE_ON_CLOSE and use a finally block to call deleteIfExists on the file.

Would you mind making a PR with that unit test?

Unfortunately, the test is for a different code base and heavily tied to it so a PR would not be practical. Here are the relevant sections that should give you an idea of how I do the test.
    @Nested
    class WithFileLockTest {

        private static final String JAVA = System.getProperty("java.home") + "/bin/java";
        private static final String CLASSPATH = System.getProperty("java.class.path");

        @Test
        public void testLockFileCreation(@TempDir final Path rootDir) throws IOException {
            final MvnRepositoryCache.CacheLoader loader = dependencyId -> Optional.empty();
            final MvnRepositoryCache cache = new MvnRepositoryCache(() -> rootDir, loader);
            final Path lockFile = rootDir.resolve("lock.txt");

            final MutableBoolean called = new MutableBoolean();
            cache.withLock(lockFile, () -> {
                called.setTrue();
                assertThat(lockFile).exists();
            });
            assertThat(called.isTrue()).isTrue();
            assertThat(lockFile).doesNotExist();
        }

        @RepeatedTest(5)
        @SuppressWarnings("resource")
        public void testSingleProcess(@TempDir final Path rootDir) throws IOException, InterruptedException {
            final String main = MvnRepositoryCacheTest.class.getName();
            final Path lockFile = rootDir.resolve("lock.txt");

            // Start a process that will acquire the file lock and terminate.
            final Process process = new ProcessBuilder(JAVA, "-cp", CLASSPATH, main, lockFile.toString(), "0").start();
            final BufferedReader reader = process.inputReader(StandardCharsets.UTF_8);
            assertThat(reader.readLine()).isEqualTo("READY");

            // Verify the process terminates.
            assertThat(process.waitFor(10, TimeUnit.MILLISECONDS)).isTrue();

            // Process should be dead by now.
            assertThat(process.isAlive()).isFalse();
        }

        @RepeatedTest(5)
        @SuppressWarnings("resource")
        public void testMultipleProcesses(@TempDir final Path rootDir) throws IOException, InterruptedException {
            final String main = MvnRepositoryCacheTest.class.getName();
            final Path lockFile = rootDir.resolve("lock.txt");

            // Start a process that will acquire the file lock and sleep for a very long time.
            final Process process1 =
                    new ProcessBuilder(JAVA, "-cp", CLASSPATH, main, lockFile.toString(), "7200").start();
            final BufferedReader reader1 = process1.inputReader(StandardCharsets.UTF_8);
            assertThat(reader1.readLine()).isEqualTo("READY");

            // Start two more processes that should block attempting to acquire the lock. If they acquire
            // the lock, they will complete quickly because they will not sleep. The expected behavior
            // is that these processes will remain alive, blocked on acquiring the lock, until the first
            // process is terminated, in which case they will each run to completion.
            final Process process2 =
                    new ProcessBuilder(JAVA, "-cp", CLASSPATH, main, lockFile.toString(), "0").start();
            final BufferedReader reader2 = process2.inputReader(StandardCharsets.UTF_8);

            final Process process3 =
                    new ProcessBuilder(JAVA, "-cp", CLASSPATH, main, lockFile.toString(), "0").start();
            final BufferedReader reader3 = process3.inputReader(StandardCharsets.UTF_8);

            // Give plenty of time for process 2 and 3 to terminate if they erroneously obtained the file lock.
            Thread.sleep(Duration.ofMillis(200L));

            // Process 1 should be alive and sleeping. Processes 2 and 3 should be blocked waiting to
            // acquire the file lock.
            assertThat(process1.isAlive()).isTrue();
            assertThat(process2.isAlive()).isTrue();
            assertThat(process3.isAlive()).isTrue();

            // Terminate the sleeping process. This should allow the two blocked processes to obtain
            // the lock and terminate of their own.
            process1.destroy();
            final int exitCode1 = process1.waitFor();
            assertThat(exitCode1).isNotEqualTo(0);

            // Verify 2 and 3 acquired the lock.
            assertThat(reader2.readLine()).isEqualTo("READY");
            assertThat(reader3.readLine()).isEqualTo("READY");

            // Give a small amount of time for process 2 and 3 to terminate.
            assertThat(process2.waitFor(10, TimeUnit.MILLISECONDS)).isTrue();
            assertThat(process3.waitFor(10, TimeUnit.MILLISECONDS)).isTrue();

            // Every process should be dead by now.
            assertThat(process1.isAlive()).isFalse();
            assertThat(process2.isAlive()).isFalse();
            assertThat(process3.isAlive()).isFalse();
        }
    }

    /**
     * Run by the {@link WithFileLockTest#testMultipleProcesses(Path)} as a separate process to apply a file
     * lock to the specified file. After the lock is acquired, the process will sleep for the specified number
     * of seconds.
     *
     * @param args Command line arguments. First argument is the pathname of the file to lock. Second argument
     *      is the number of seconds the process should sleep after acquiring the lock.
     * @throws IOException if there was a problem locking the file
     */
    public static void main(final String[] args) throws IOException {
        final Path lockFile = Path.of(args[0]);
        final Path lockDir = lockFile.getParent();
        assert lockDir != null;

        final long delay = Long.parseLong(args[1]);

        final MvnRepositoryCache.CacheLoader loader = dependencyId -> Optional.empty();
        final MvnRepositoryCache cache = new MvnRepositoryCache(() -> lockDir, loader);

        cache.withLock(lockFile, () -> {
            System.out.println("READY");
            System.out.flush();
            try {
                if (delay > 0) {
                    Thread.sleep(Duration.ofSeconds(delay));
                }
            } catch (final InterruptedException ex) {
                throw new RuntimeException(ex);
            }
        });
    }

The implementation for the withLock method is:
    /**
     * Protects the specified lambda from access by multiple threads or processes when contending for the
     * same artifact.
     *
     * @param lockFile File on which to synchronize and apply locking
     * @param proc Lambda to execute within the context of the synchronization and file lock
     * @throws IOException if there was a problem applying the lock
     */
    @AccessForTesting
    void withLock(final Path lockFile, final IOOperation proc) throws IOException {
        withSynchronized(lockFile, () -> withFileLock(lockFile, proc));
    }

    private void withSynchronized(final Path lockFile, final IOOperation proc) throws IOException {
        final Object syncObject = SYNC_OBJECTS.computeIfAbsent(SYNC_PREFIX + lockFile, String::intern);

        synchronized (syncObject) {
            proc.run();
        }
    }

    private void withFileLock(final Path lockFile, final IOOperation proc) throws IOException {
        try (FileChannel channel = FileChannel.open(lockFile,
                                                    StandardOpenOption.CREATE,
                                                    StandardOpenOption.WRITE)) {
            FileLock lock = null;
            try {
                lock = channel.lock();

                try {
                    proc.run();
                } finally {
                    lock.release();
                    lock = null;
                }
            } finally {
                if (lock != null) {
                    lock.release();
                }
            }
        } finally {
            Files.deleteIfExists(lockFile);
        }
    }


Can we have 'block date' value stored in transactions collection in MongoDB database

Yielding opinion on the idea of adding a new property in transactions collection.

Legacy issue from <=0.8.1.


Feature/#47

Description: 概要

Changes: 変更内容

Changes

feat: add sample front (421aaaf81b7d42013c3d0abec4c56e43269f2bed)
feat: change directory structure (f2ea704a9d613262b99cdd5cd4c24e9670647c2c)
fix: check roles (658fb508eff698bcd5ac536a11b836fe3dd86f56)
fix: eslint (dc564b4ae840800bbf8fb680cbfe56a89916a968)
chore: remove unused code (0fab05380400f4cc89422a1d5e03f702fb291681)
chore: remove some snapshot tests (5bb2b3d06787b85a9b09a79be3387a1467bff53b)
chore: tweaks (e45d06300f7b2391bedf76f83354e6ac390215cd)

Expected Impact: 影響範囲

Operating Requirements: 動作要件

Additional context: 補足

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/next-v0.5.1@7a5c23f). Click here to learn what that means.
The diff coverage is n/a.

@@                   Coverage Diff                   @@
##             release/next-v0.5.1       #59   +/-   ##
=======================================================
  Coverage                       ?   100.00%
=======================================================
  Files                          ?        95
  Lines                          ?      1478
  Branches                       ?       148
=======================================================
  Hits                           ?      1478
  Misses                         ?         0
  Partials                       ?         0

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 7a5c23f...e45d063. Read the comment docs.

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/next-v0.5.1@7a5c23f). Click here to learn what that means.
The diff coverage is n/a.

@@                   Coverage Diff                   @@
##             release/next-v0.5.1       #59   +/-   ##
=======================================================
  Coverage                       ?   100.00%
=======================================================
  Files                          ?        95
  Lines                          ?      1478
  Branches                       ?       148
=======================================================
  Hits                           ?      1478
  Misses                         ?         0
  Partials                       ?         0

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 7a5c23f...e45d063. Read the comment docs.


Feature: Limit permissions for the extension to GitHub

Type of feature
🍕 Feature
Current behavior

Suggested solution
By default these settings is marked for "all sites"
Additional context
No response
Code of Conduct

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

Contributing Docs

[ ] I agree to follow this project's Contribution Docs

@diivi this is not quite a good first issue until it provides the solution. https://opensauced.pizza/blog/good-first-issues-dont-exist

@Anush008 can the authentication really function without having access to websites other than GitHub? I tried changing the host_permissions, and couldn't log in anymore.
If so,
"host_permissions": ["https://github.com/*,"the_url_we_use_for_auth"]


Extending the idea to stack level too deep

Hi @schneems
I recently got tired of the message we get for stack level too deep (just a long backtrace). There is an ellipsis already making it more readable.
On my local stack I've added a more concise message:
Most frequent loop (3374 times):                 <----- the addition
/Users/u.buonomo/Dev/loop.rb:10:in `c'
/Users/u.buonomo/Dev/loop.rb:6:in `b'
/Users/u.buonomo/Dev/loop.rb:2:in `a'

Traceback (most recent call last):               <----- the original message
        11911: from t.rb:1:in `<main>'
        11910: from /Users/u.buonomo/.ruby/stack_level_too_deep.rb:54:in `require'
        11909: from /Users/u.buonomo/.rbenv/versions/2.7.5/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
        11908: from /Users/u.buonomo/.rbenv/versions/2.7.5/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
        11907: from /Users/u.buonomo/Dev/loop.rb:14:in `<top (required)>'
        11906: from /Users/u.buonomo/Dev/loop.rb:2:in `a'
        11905: from /Users/u.buonomo/Dev/loop.rb:6:in `b'
        11904: from /Users/u.buonomo/Dev/loop.rb:10:in `c'
         ... 11899 levels...
            4: from /Users/u.buonomo/Dev/loop.rb:10:in `c'
            3: from /Users/u.buonomo/Dev/loop.rb:2:in `a'
            2: from /Users/u.buonomo/Dev/loop.rb:6:in `b'
            1: from /Users/u.buonomo/Dev/loop.rb:10:in `c'
/Users/u.buonomo/Dev/loop.rb:2:in `a': stack level too deep (SystemStackError)

Not sure if it is the best place to talk about such an idea. But I figured it is also a matter of having nicer error messages for ruby.
Of course I'm not saying this should be part of dead_end (I've called this thing StackLoop for now).
I'd be glad to have your opinion's on such an idea, and maybe other members of the community to see if there is somehow an interest for such an improvement
Cheers

Ahh, gotcha. Yeah. I'm open to putting this or something like it in the zombocom namespace. What would you need from me? I'm not totally sure what permissions others have over here.
Looking at the code

I would say that for dead_end monkeypatching require is a not great interface. It causes some confusion like https://github.com/zombocom/dead_end/issues/124. But looking into ruby/ruby I can't easily see where that exception is defined. I see it referenced in https://github.com/ruby/ruby/blob/9e0a91d0640600f2dfd7fc1d5fae6667019c9ca5/error.c#L2822. It's not a dealbreaker, just mentioning that experience.
A Set is actually a Hash under the hood, you might be able to combine those two (or maybe not, just mentioning as it was surprising to me when I learned that).
If it's that relatively simple it might be able to be patched into Ruby directly, but it would be good to prove out with a gem first to have some room to play and get feedback.
I took a stab at monkeypatching SystemStackError and it does look possible:

class SystemStackError
  def message
    puts "lol"
    super
  end
end

def foo
  foo
end

foo

gives me:
scratch.rb:9:in `foo': stack level too deep (SystemStackError)
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	 ... 10908 levels...
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	from scratch.rb:9:in `foo'
	from scratch.rb:12:in `<main>'

Also it does compress the stacktrace a little already (though not as nice as you're mentioning. It might be worth looking into where that message comes from (perhaps search "levels..." on ruby/ruby) maybe there's already a place for logic to be extended, maybe a blame on that code will give you some context and extra details of concerns or other attempts others have made.
It looks like if you make the stack trace longer it cuts it off after a point:
class SystemStackError
  def message
    puts "lol"
    super
  end
end

def blerg
  foo
end

def baz
  blerg
end

def bar
  baz
end

def foo
  bar
end

foo

$ ruby scratch.rb
lol
scratch.rb:21:in `foo': stack level too deep (SystemStackError)
	from scratch.rb:9:in `blerg'
	from scratch.rb:13:in `baz'
	from scratch.rb:17:in `bar'
	from scratch.rb:21:in `foo'
	from scratch.rb:9:in `blerg'
	from scratch.rb:13:in `baz'
	from scratch.rb:17:in `bar'
	from scratch.rb:21:in `foo'
	 ... 11901 levels...
	from scratch.rb:13:in `baz'
	from scratch.rb:17:in `bar'
	from scratch.rb:21:in `foo'

Ahh, gotcha. Yeah. I'm open to putting this or something like it in the zombocom namespace. What would you need from me? I'm not totally sure what permissions others have over here.

Well I could create the repository, push a commit to the main branch of an existing repository and push force to that same commit after seing I made a typo. So the scope is pretty wide!

I can't easily see where the error is referenced / perhaps search "levels"

It is the rb_eSysStackError, and I've seen some work on it in this commit, it seems like what has been done is just reducing the stack as you've shown. I think there is still some room for improvement since most conversations were more focused on the overall backtrace size/the order of the backtrace rather than on this specific error (conversation here)

If it's that relatively simple it might be able to be patched into Ruby directly, but it would be good to prove out with a gem first to have some room to play and get feedback.

Yeah I've already seen where the patch could be, but feedback will be mandatory on that since I'm far from being sure which is the best way of showing loops (or recurring stack calls)
Anyway I've started the thing, I think I'll sleep on it a few days, improve, loop and introduce that to project when I'll have a clearer idea of what the message should be.
Thanks for your time 🙂
To all, any feedback would be really appreciated! Open an issue here to discuss 👀

It's also one of the reasons why I wanted to get some extra people with commit on some of these projects so there's not a single blocker for moving things forwards when I occasionally drop the ball.

Makes sense, I'm not actively looking at issues on derailed or here since I already have the rgeo codebase to look after. However, if something feels important and you don't have the time feel free to ping me :)


Python 3 migration & refactoring: Move entrypoint to doozerlib/main.py #77

This PR

moves entrypoint to doozerlib/cli/__main__.py, so that you can run doozer with python2 -m doozerlib or python3 -m doozerlib. A new doozer script is created for local testing but will not be installed for production.
updates setup.py to create a launch script so that we don't need to worry about python interpretor path (/usr/bin/python or /usr/bin/python3). pip will handle it automatically during installation process.
sets classifiers attribute for PyPI.
moves dev dependencies (autopep8, coverage, flake8, ...) to requirements-dev.txt and makes tox.ini honor it.
updates dev container configuration accordingly.

Also fixed the flake8 issue.

Like https://github.com/openshift/elliott/pull/77, changed target branch to master for refactoring and will open other PRs for Python-3 migration.

@vfreex i like the changes, will be much easier to add tests for the main CLI entrypoint now!!!
apparently there are some conflicts that are preventing the merge ... apart from that, LGTM.

@thiagoalessio Thanks. I've done a rebase.

/lgtm


⚠ Bofrost.at has degraded performance

In 941b0a0, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 912 ms

Resolved: Bofrost.at performance has improved in 3060288.


implementation Android Presentation API for show Flutter Widget in a second screen

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Use case
On Android in Kotlin we have access to the Presentation class which allows us to display UI components on a second screen (before we need to recover a Display).
On Flutter we have no equivalent, it would be really great to have the same possibility
https://developer.android.com/reference/kotlin/android/app/Presentation
Proposal
With a plugin we are able to retrieve the connected screens and display native views. I also tried to launch a second Flutter Engine on a native view which extends Presentation but this very quickly becomes complex and even more so to communicate information between the 2 engines. It would be much better to have the possibility of building a Widget directly by telling it which screen to use

my bad, i just found this issue for the same problem: #134405

Thanks for filing this @elliotPopina.
I see this is similar to https://github.com/flutter/flutter/issues/134405. Closing this in favour of the already existing issue.
Kindly upvote, comment and follow up on that issue for updates.
Thank you!


update knative cncf incubating

Pre-submission checklist:
Please check each of these after submitting your pull request:

[x] Are you only including a repo_url if your project is 100% open source? If so, you need to pick the single best GitHub repository for your project, not a GitHub organization.
[x] Is your project closed source or, if it is open source, does your project have at least 300 GitHub stars?
[x] Have you picked the single best (existing) category for your project?
[x] Does it follow the other guidelines from the new entries section?
[x] Have you added your SVG to hosted_logos and referenced it there?
[x] Does your logo clearly state the name of the project/product and follow the other logo guidelines?
[x] Does your project/product name match the text on the logo?
[x] Have you verified that the Crunchbase data for your organization is correct (including headquarters and LinkedIn)?
[ ] ~15 minutes after opening the pull request, the CNCF-Bot will post the URL for your staging server. Have you confirmed that it looks good to you and then added a comment to the PR saying "LGTM"?

Related to https://github.com/cncf/toc/issues/794

we will need to update the knative crunchbase url to point to CNCF but can do that in another PR

Thank @caniszczyk for the review
I just noticed the crunchbase URL https://www.crunchbase.com/organization/cloud-native-computing-foundation
Will send another PR.


Background image repeats itself in 8.html

If the background image is smaller than the element, the image will repeat itself, horizontally and vertically, until it reaches the end of the element.
~ w3schools

Check https://www.w3schools.com/htmL/html_images_background.asp


Fix dead mob sprites rotating on death

About the PR

Sets mobs RotationVisuals default horizontal rotation to 0 (still allows rotation upon buckling)
Rotated the slime mob death sprites since they looked to be pre-rotated to work around this
Fixes #13743

Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

https://github.com/space-wizards/space-station-14/assets/89101928/7e36b231-96c3-4c8e-9f3f-37a9665d333d
Changelog

:cl:

fix: Mob sprites no longer rotate on death

Fixes https://github.com/space-wizards/space-station-14/issues/13743

Would this even fix the mobs persisting rotation upon becoming alive again.


Roll Engine from 57d13339997f to ee4d641e3f96 (1 revision)

https://github.com/flutter/engine/compare/57d13339997f...ee4d641e3f96
2020-06-23<EMAIL_ADDRESS>Added experimental-emit-debug-metadata flag to flutter frontend server (flutter/engine#19168)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Commit queue failed; closing this roll.


Do we want to lint SCSS code?

Do we want to add a SCSS Linter? scss-lint has some pretty cool features to enforce BEM & keep the codebase clean. But it would add a rubygem to a JS project :(
@ajax-wcd @Malvar @salas-wcd

@sneakysneaky any way to do it without a gem?

@ajax-wcd Not that i've been able to find.

@sneakysneaky perhaps it could be an optional dependency which someone who is working on css adds. They are responsible for linting the scss they write? If we can add the linter then can make sure no bad scss is pushed.

Add the linter to Travis that is. Sorry mobile typing.

And then i may refactor the gem linter to js : i thibk it is a onr week job.

We have a linter, it's called a "pull request". I would recommend not using a linter and ensure people use pull requests correctly and enforce BEM or what not through that.

Another option to this, if you really feel you need it is to use it within CI like @ajax-wcd mentioned and only lint the output. If the CSS passes linting then you can assume the SCSS is done correctly, other than structural changes, which a linter may/may not pick up.

@ajax-wcd, I agree adding SCSS linting to CI would be ideal. Otherwise, we don't get any benefit. As you say, we could add the rubygem as an optional dependency, and then another argument to run_tests.sh (ie ./run_tests.sh --css-lint-tests or something).
@belairWCD, the linting rules will have to be awfully lax if we intend to enforce by manually reviewing pull requests alone. Sure, we could catch probably basic BEM violations, but we wouldn't be able to reliably detect poor practices (over-nesting, duplicate rules, etc).
We could lint the compile CSS, i suppose. We wouldn't be able to prevent poor SCSS practices (bad use of placeholders, variables, poor nesting etc). We'd also have to build CSS once for the linter, then again for meteor.

but we wouldn't be able to reliably detect poor practices (over-nesting, duplicate rules, etc).

I completely disagree, over-nesting should be easy to spot and duplicate rules comes down to better organised CSS files. I'm not completely against a linter, I just think that it should never be relied on and more often than not they're pains to get set up.

This is kinda what i had in mind. The linter was super easy to install & configure. I haven't tested CI, obviously.
As i say, my only real objection is that is adds a ruby dependency to a JS stack. That's reason enough to reject this proposal.

As i say, my only real objection is that is adds a ruby dependency to a JS stack. That's reason enough to reject this proposal.

As long as it's not a build or runtime dependency I don't really care. The way you've set that up in the PR is great imo, as it's easily left out and Travis can really help reviewing in the PR. Of course, it's not a replacement for manual review.

I feel this has gotten enough lukewarm feedback for a formal PR. Please share your thoughts, add recommendations for rules you don't like, etc.

@sneakysneakysneaky As long as ruby is a soft dependency, whatever you decide has my stamp of +1

Merged #159.


Add support for mongo 4.4

Current mongo integration is bundling pymongo 3.9 - mongo 4.4 require pymongo 3.11

Hey @jefimm
I'm curious if you see any agent issue with pymongo 3.9 and mongo 4.4, Mongo does a pretty good job at backward compatibility usually and I can't see any impact on my end.

I have tried the current agent and it did not work with mongo 4.4. I have upgraded the pymongo and installed ca-certificates into the agent (running on kubernetes) and now it is able to connect.
As a general note the mongo integration seems to be neglected - I'm struggling to make it work as even simple count queries return 0
The mongo atlas preferred method of connecting like mongodb+srv://XXX.mongodb.net is not supported well (possible to do with "server" parameter but designated as deprecated)

I have tried the current agent and it did not work with mongo 4.4

Would you mind providing an error log so we can investigate? We're still gonna bump pymongo because it's always a good thing to do, but I can't tell what's wrong.

As a general note the mongo integration seems to be neglected

If you have other issues please detail them, the mongo integration is actively maintained.

I'm struggling to make it work as even simple count queries return 0

Please open a support ticket if you need assistance for how to configure the integration.

The mongo atlas preferred method of connecting like mongodb+srv://XXX.mongodb.net is not supported well

As you can see on the docs here and in the example conf.yaml file here monitoring a mongo cluster is performed by connecting to each node independently. Most of the monitoring commands have to be performed "locally".
That's why the MongoDB integration requires you to configure one agent (or one check instance) for each node in your cluster, and that's why mongodb+srv is not really supported.

Support ticket was opened (#517393)
I'm trying to configure clustercheck to run several queries on mongo atlas cluster and make the result a metric.
This case is different from monitoring nodes in self-managed deployment.

We just upgraded pymongo: https://github.com/DataDog/integrations-core/pull/9608/s


Rancher UI defined roletemplate rules for nonResourceURLs incorrectly have apiGroups definition present, preventing creation of the role in clusters when granted to users

What kind of request is this (question/bug/enhancement/feature request):
Bug
Steps to reproduce (least amount of steps as possible):

Provision a Rancher v2.4.0+ instance with a single all role node custom cluster (I used https://github.com/superseb/tf-do-rancher2/)
Under Global -> Security Roles -> Clusters, click Add Cluster Role
Add a single Resource Grant with Get on the Non-Resource URL /metrics and remove the * in the API Groups field.
Grant this new cluster role to a user on the custom cluster.

Result:
The roletemplate generated by the UI has a blank, rather than absent "apiGroups": [""], entry, per the following example:
{

    "administrative": false,
    "annotations": {
        "cleanup.cattle.io/rtUpgradeCluster": "true",
        "lifecycle.cattle.io/create.mgmt-auth-roletemplate-lifecycle": "true"
    },
    "baseType": "roleTemplate",
    "builtin": false,
    "clusterCreatorDefault": false,
    "context": "cluster",
    "created": "2020-12-02T16:07:01Z",
    "createdTS":<PHONE_NUMBER>000,
    "creatorId": "user-cpgf6",
    "description": "",
    "external": false,
    "hidden": false,
    "id": "rt-h759b",
    "labels": {
        "cattle.io/creator": "norman"
    },
    "links": {
        "clusterRoleTemplateBindings": "…/v3/clusterRoleTemplateBindings?roleTemplateId=rt-h759b",
        "clusters": "…/v3/clusters?defaultClusterRoleForProjectMembers=rt-h759b",
        "projectRoleTemplateBindings": "…/v3/projectRoleTemplateBindings?roleTemplateId=rt-h759b",
        "remove": "…/v3/roleTemplates/rt-h759b",
        "self": "…/v3/roleTemplates/rt-h759b",
        "update": "…/v3/roleTemplates/rt-h759b"
    },
    "locked": false,
    "name": "kube-apiserver metrics",
    "projectCreatorDefault": false,
    "rules": [
        {
            "apiGroups": [
                ""
            ],
            "nonResourceURLs": [
                "/metrics"
            ],
            "type": "/v3/schemas/policyRule",
            "verbs": [
                "get"
            ]
        }
    ],
    "type": "roleTemplate",
    "uuid": "f12c71c5-2c80-44c9-9878-12a2be88e81c"

}

As a result of this incorrectly present apiGroups definition, for a nonResourceUrls rule the clusterole creation will fail when the custom role is granted to a user, with the following error in the rancher server logs:
2020/12/02 16:08:07 [INFO] [mgmt-auth-crtb-controller] Updating clusterRoleBinding clusterrolebinding-bnxwk for cluster membership in cluster c-dpvk7 for subject u-fqrkx
2020/12/02 16:08:07 [INFO] Creating clusterRole for roleTemplate kube-apiserver metrics (rt-h759b).
2020/12/02 16:08:07 [ERROR] ClusterRoleTemplateBindingController c-dpvk7/crtb-25kdp [cluster-crtb-sync] failed with : couldn't ensure roles: couldn't create clusterRole rt-h759b: ClusterRole.rbac.authorization.k8s.io "rt-h759b" is invalid: rules[0].nonResourceURLs: Invalid value: []string{"/metrics"}: rules cannot apply to both regular resources and non-resource URLs

Same error occurs if you leave the default API Group * definition in the form. Removing the apiGroups definition from the rule in the role via the API browser, the role and binding is successfully created in the custom cluster.
Other details that may be helpful:
When entering a Non-Resource URL in the Add Role UI form, the Resource field is automatically disabled. The same should occur the API Groups field and no apiGroups array should be submitted to the API by the UI for this rule.
The current workaround is to create the role via the API directly.
Environment information

Reproduced with Rancher v2.4.0, v2.4.10 and v2.5.3

This is still an issue at rancher 2.6.9

https://jira.suse.com/browse/SURE-6303

This issue is still reproduible with 2.7.3 and 2.6.11


MTU settings are now L3 rather than L2 based.

IE, an IPv6 MTU of 1500 is now 1500 bytes for the IPv6 header and payload,
rather than 1500 - (ethernet + possibly vlan) bytes.
All tests are updated accordingly and pass.
This also corrects the result packet for replying to attempt to fragment a
DF packet with a vlan: it's now 576 rather than 580 bytes, in accordance
with specifications on ICMP packet size.

I believe this should fully resolve https://github.com/Igalia/snabbswitch/issues/100

LGTM with just a couple nits.  Great stuff, thank you!

LGTM.

Merging without nits fixed; please fix nits on lwaftr_olive in a followup.  Thank you again :-))


Updates for Responsive web UI

Is your feature request related to a problem? Please describe.
The current web UI is clunky and looks old fashioned.
Describe the solution you'd like
Implement modern technologies like CSS variables, JavaScript and responsive document queries.
Use a minimalistic approach and include the sources as a gzipped document in the firmware.
These static CSS/JS files can be cached in the web-browser, leading to smaller/faster responses for each page.
Describe alternatives you've considered
Using standard templating engines would bloat the firmware size with unnecessarily big JavaScript libraries, or we would have to link to them on the internet, which would not work offline or in a restricted network environment.
Additional context

[x] Add style.css and vars.css. Gzipped in firmware which can be overridden in flash.
[x] Add script.js. Gzipped in firmware which can be overridden in flash.
[x] Update forms to use simple html code, leaving the styling to the CSS.
[ ] Use JavaScript to render JSON objects in the browser instead of serving full HTML from the MCU.
[x] Test web UI configuration in AP-mode.

Some results:
On mobile:

(needs buttons wider+centered)

(GPIO settings need brushing)

(same on desktop)

This is mostly complete.
GPIO forms need some work, but I will do these when updating that module with sensors later.
AP-mode has not yet been tested...

This came from a discussion on Discord.
I am currently working on a tool that - eventually - should be able to connect to a device and get a dump of all of it's state: every detail! What GPIO(s), syslog settings, is the telnet server on... mqtt user/pass/host ... etc.
The ultimate goal is to flash a device with openHasp and configure WiFi via UART before re-assembling / deploying the device in its intended location.
Once the device has an IP address, I should be able to run a simple tool that will:

set mqtt info
turn off Telnet
turn off mdns
set the syslog endpoint
adjust brightness / timeouts
adjust the default start page
configure GPIOs
sets the default theme
... etc.
upload misc jsonl and cmd files
Save all the changes and reboot

Basically automate all the clicking I'd do normally and ensure that the declared state and the actual device state match always.
I was having a miserable time trying to get this via telnet... at least partly because the telnetlib that python ships with does not appear to easily support "interactive" usecases like mine.  I pivoted to  HTML as scraping it does offer a predictable payload that can be parsed to get device info and device state - including files - can be managed this way.
I am able to get most of the device information with basic regex parsing but a more machine readable format would be simpler.
so instead of having to:
wifi_cfg_raw = urllib.get(http://<IP_ADDRESS>/config/wifi)
wifi_creds = re.match(.wifi_cfg_raw, r'...' )

I could just do this
dev_cfg_doc_str = urllib.get(http://<IP_ADDRESS>/api/config.json)

dev_cfg = json.parse(dev_cfg_doc_str)

// set new wifi name
dev_cfg['wifi']['ssid'] = 'someNetwork'

# or POST or whatever
urllib.patch(http://<IP_ADDRESS>/api/config.json, dev_cfg)

Depending on exactly how the web UI is revamped, it could be possible to have HTML make PATCH calls to /config.json or similar rather than the current method:
<form method="POST" action="/config">...</form>
It may also be easier to implement an API that works a bit more like the telnet interface: rather than PATCH calls to a singe file, a series of endpoints is implemented to 'mirror' the telnet:
to get/set GPIO config:
$ telnet <IP_ADDRESS>
<...>
Prompt > config/gpio
[15:58:34.999][65524/115604 43][42552/42872  1] MSGR: config/gpio
[15:58:35.022][65524/114740 42][42552/42872  1] CONF: {"config":[197658,263456,329249,655628,655886,656155,0,0]}
[15:58:35.048][65524/115208 43][42552/42872  1] MQTT PUB: config => {"gpio":{"config":[197658,263456,329249,655628,655886,656155,0,0]}}

Prompt > config/gpio {"gpio":{"config":[1,1,1,1,1,1,0,0]}}

So the /config/gpio page would load some bootstrap HTML/JS which would then send a GET to http://<IP_ADDRESS>/api/config/gpio and would get back a simple JSON doc like:
{"gpio":{"config":[197658,263456,329249,655628,655886,656155,0,0]}}

When the user saves the GPIO config, instead of POST the form directly to the endpoint, a small bit of JS would POST a body to http://<IP_ADDRESS>/api/config/gpio that looked like {"gpio":{"config":[1,1,1,1,1,1,0,0]}}

As of right now I have found that there is a http://<IP_ADDRESS>/config.json endpoint which is very helpful but it appears that there are a few issues with using that:

could go away/move
The only way to set a password for MQTT/HTTP/WiFi is via POST or telnet (or, once MQTT password is set, i guess it and the telnet interface behave the same so you could then set a HTTP password once MQTT connection works...)
There is no programmatic way to restart the device w/o first overriding the content of config.json with whatever values exist in memory. This means that I can't adjust the gpio:[] array in config.json and then upload a new config.json to the device and expect it to persist after calling /reboot I need to emulate the browser and send a POST to the config/gpio endpoint  to get the new values in memory and then call /reboot to get the changes saved
Files (online.cmd, for example) still need to be uploaded via /edit endpoint... But this is not so critical as the file editor and /edit endpoint already appear to be largely independent/distinct from the rest of the web UI as it is.

in short: (almost) all device state can be fetched by fetching the http://<IP_ADDRESS>/config.json file but any change to device state must be done by emulating the web browser or telnet/mqtt. For the purposes of my tool, am 'ignoring' telnet and MQTT because:

telnetlib was not playing nice
I would expect that 90% of openHasp users will only ever use HTTP and HTTP is 'default enabled' w/o credentials so it's almost a guarantee that my tool can work after the device has connected to WiFI

Tl;DR: making web/telnet behave identically would be very helpful :).

upload misc jsonl and cmd files

all files supported should be included in this list, like png or other image formats.

upload misc jsonl and cmd files

all files supported should be included in this list, like png or other image formats and zip.

Ahh good point. I am just mimicking the upload button on the web editor so these file types will probably "just work"

http://www.bx.psu.edu/~nate/pexpect/pexpect.html

The ultimate goal is to flash a device with openHasp and configure WiFi via UART before re-assembling / deploying the device in its intended location.

Note that for this kind or deployment you can also rely on the built-in user_config_override.h functionality, which also brings the advantage of predefining your own factory settings for the plate. This way even if for any reason at the location a hardware settings reset happens (flash storage data corruption for example), the factory default settings will still be yours, even with config.json lost.
I've learnt this the hard way using Tasmota: they have implemented a kind of weird recovery to factory defaults by power-cycling the device a few times within a time window. I've ran into a power outage caused by the energy company which fell exactly into this pattern - and found myself with about 30 IoT devices built in walls all returned to factory defaults.

Note that for this kind or deployment you can also rely on the built-in user_config_override.h functionality, which also brings the advantage of predefining your own factory settings for the plate.

Absolutely! I am trying to avoid that route specifically to make the tool accessible to other people that don't have a build env set up though.
You can disable the brownout -> reset functionality with Tasmota: https://tasmota.github.io/docs/Commands/#setoption65

You can disable the brownout -> reset functionality with Tasmota: https://tasmota.github.io/docs/Commands/#setoption65

Yes I know. Already done that...
I migrate everything to ESPHome as their architecture design is way more adequate for operating multiple dozens of devices. It doesn't really need to store any settings/config at runtime...

Endpoints proposed:

endpoint
GET
PUT
POST
DELETE

/api/info GET
✅

/api/config/wifi
🔲
🔲

/api/config/mqtt
🔲
🔲

/api/config/http
🔲
🔲

/api/config/gui
🔲
🔲

/api/config/debug
🔲
🔲

/api/config/gpio
🔲
🔲
🔲
🔲

I just wanted to leave this here: https://stackoverflow.com/questions/31089221/what-is-the-difference-between-put-post-and-patch
I don't think there is a ton of value in doing a fully pedantic implementation and arguing over which verb should be used for what and if you are updating an existing resource or if the server can only have a single resource of a given type so there is no such thing as "update" only "set the resource to this state" semantics.
TL;DR: I could totally understand removing the POST and DELETE column and just using GET for "give me" and POST for "use this" operations.  NO need to complicate things beyond that... even if it's not a "technically correct" implementation :/

hi everybody,
I'm not an electrician, I have no idea about Linux or Raspi, and I'm also not a programmer, like many consumers in general. The main problem is that you have no view of such people, and the description, such as installation ("flash") setup in such language, which a normal consumer hardly understands. (Translation is also scarce, Goggle a disaster)
The wall housing from Zihatec (sold on Amazon by AZ-Delivery) is really nice, you can replace the outdated "thermostats", it would probably also be a hit in terms of sales figures if there were a reasonable program for it.... Everyone knows Alexa but at least Google Home (Google Assistant on the phone) and NODEMCU doesn't start with OpenHAB, but with Arduino!!!!!! So Arduino= IDE, but there is hardly any setup for that. Tasmota is really great, especially because, like IDE or EasyESP, it loads the current version in the web browser!!!!!!!! BUT!!!!!!!
If you install Tasmota (no matter what kind, display or other) you have a problem with "Touch-Mod" and Toch-Mod" is NOT! the same as "Arduitouch"!!!! The GPIO can also be changed with difficulty, because too if ESP32 has 2SPI, Tasmota fails to pack properly!!!!
"AZ-Toch-Mod" has additional free pins for relay and sensors, because who cares about the board temperature on the wall instead of room or outside temperature (no way to define temperature sensors, although there is a connection) It might be a It's a matter of taste, but maybe you should consider writing the programs in such a way that it's also useful(?)
What do you screw a case to the wall for? = To read information, but not in mini format (that's why you buy a 2.8" display) such as the time (big!!!!, analog or digital) + to read temperatures, so the case is in a corresponding format, And if you're curious, you can "turn the pages" and look at other things, such as the outside temperature or the weather forecast, or watering the flowers on the windowsill... There are a few connections for that!!!!!!!!!! !
BUT IT ALL DOESN'T WORK!!!!!!!!!!!! SO HARDLY ANYBODY BUYS IT!!!!!!!!! As long as it stays that way, no one will buy it, stay with the Nextion, and also HomeAssistant (Nouve Casa) which ties everything together. Installation is easy, Alexa can take over the automation through the routines (timer/event etc) I've been trying to get this case to work for a few months, but it's NOT working, at least not to my liking!!!!!!!! ! (NOT the "pages.jasonl" either!) either you have the inputs through Tasmota (Board-ESP32 from AZ-Delivery gets too hot, so something doesn't fit) or you have an empty display (without connections) and the board doesn't work hot.
"override" in gitpod doesn't work either, shows error for "toch-mod" even though it is NOT! ArduiTouch is (as required) The piezze (GPIO 21) is also missing!!!!!!!!
Hompoint, on the other hand, works together with HomeAssistant.

You can delete the kommantera, still it's true!!!!!!!!!
Are you building for yourself or is the release for everyone??????? If it is supposed to be for everyone, then it must also be described accordingly... That is understandable for everyone!!!!!

 KEINE Notwendigkeit, die Dinge darüber hinaus zu komplizieren ... auch wenn es sich nicht um eine "technisch korrekte" Implementierung handelt :/POST``DELETE``GET``POST

The problem I see is that things are not used according to the original intentions... Who cares about the temperature of the board, why can't I install and display a "proper temperature sensor" if there is appropriate space on the board and disk are intended and free? Sensor for "movement" mounted on the wall???? That's ridiculous, instead of DHT, DS18b etc... Tasmota works with GPIOs, but not with the display... So Nextion + IDE remains, or you solder a corresponding board yourself, however, only for one can is the Zichetec ( AZ delivery) too expensive....

@beatagerger
You'll have to accomodate to the way it is, as long as it's still free for you.
Don't use this if you don't like it.

@beatagerger Please use the discussions board to vent your frustrations or ask questions.
The issue tracker is used to solve verified problems and new features only.
The reason your post was deleted is because it has nothing to do with Updates for Responsive web UI #246 and hence does NOT belong here.
If you don't want your posts deleted, please use the appropriate tools and appropriate language! Thank you.

Sorry but what do you mean by "appropriate language"??????????
I wrote in English through Google, like now...
"has nothing to do with update"????
then what please??????
you install Tasmota in the full version, since this is the prerequisite...... Well, all sensors...... Then update to "AZ-Touch" and apart from a black screen nothing works, not even on the web interface can the relays be switched, sensors have disappeared although they are connected!!!!!
Do you think it has nothing to do with update/upgrade???
In addition, the device sends the temperature value from the board to HomeAssistant via MQTT!?!?! For what reason???? I don't want to know

Nagyrobi

"for free"????
except IFTT all are free, but all others have correct description, just not here!!!!!
HASmota/Tasmota is offered in many languages, but the translation is a disaster, if you can't even speak a little English, can't even configure the GPIO, the other settings certainly can't... I still don't know how eg . the usual settings, such as "Berry language" or "Command" should be carried out under "az-touch-mod-esp32_ili9341_full_4MB_v0.6.3_497f611" ?????
How can I use my connected relays and sensors here?

@beatagerger This is not Facebook or Twitter but an Issue Tracker for code developers!
**HASmota/Tasmota ** is a completely different project with its own repository and maintainers. Tasmota has nothing to do with openHASP firmware. Again, your comments in this thread are misplaced and will be deleted. Use the appropriate repo and discussion threads provided.
Please visit https://github.com/tasmota/ for help using Tasmota, Berry and HASPmota.

I haven't used facebook for years.
you chat
You have problems (not just me) and if you don't know the answer, people block you.
For you this is a solution, for us users a "laughing stock"...
don't be surprised if

no donation

too few users!!!!

Yes, in the HASSIO (or Arduino) community you are in better hands if there are problems...
You don't want to swear, so "I wish you something" (not nice)
Gesendet von Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 für Windows

Von: fvanroie @.>
Gesendet: Saturday, June 25, 2022 3:16:40 PM
An: HASwitchPlate/openHASP @.>
Cc: beatagerger @.>; Mention @.>
Betreff: Re: [HASwitchPlate/openHASP] Updates for Responsive web UI (Issue #246)
@beatagergerhttps://github.com/beatagerger This is not Facebook or Twitter but an Issue Tracker for code developers!
**HASmota/Tasmota ** is a completely different project with its own repository and maintainers. Tasmota has nothing to do with openHASP firmware. Again, your comments in this thread are misplaced and will be deleted. Use the appropriate repo and discussion threads provided.
Please visit https://github.com/tasmota/ for help using Tasmota, Berry and HASPmota.
—
Reply to this email directly, view it on GitHubhttps://github.com/HASwitchPlate/openHASP/issues/246#issuecomment-1166283045, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AN6UJIAHOSY64HQT7R7V3ALVQ4BDRANCNFSM5HE4APLQ.
You are receiving this because you were mentioned.Message ID: @.***>

@beatagerger For the 3rd time: you are posting in wrong repository for the wrong project and you won't accept any help when pointing to the correct information. So, the problem is closed here.

look on the internet!!!!!
we, "other users" (Arduino, tasmota, HASSIO) "discuss" solution for AZ_Touch on many pages......
Your "commentator" advertises on countless pages:
"I suggest using openHASP"
I would have never had an idea because I've never used "openHAB" or Linux ("Pinquin")!!!!!!!!!!!
It was probably caused by the translation, my device is German, everything is translated automatically...
"HASmota" is as you wrote, is not the same as "openHASP"...
your version maybe "change name"???
under Tasmota (Github) finds countless posts, as well as on "Gitpod" ...
take a look...
Gesendet von Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 für Windows
Von: @.>
Gesendet: Samstag, 25. Juni 2022 15:35
An: @.>
Cc: @.>; @.>
Betreff: Re: [HASwitchPlate/openHASP] Updates for Responsive web UI (Issue #246)
@beatagergerhttps://github.com/beatagerger For the 3rd time: you are posting in wrong repository for the wrong project and you won't accept any help when pointing to the correct information. So, the problem is closed here.
—
Reply to this email directly, view it on GitHubhttps://github.com/HASwitchPlate/openHASP/issues/246#issuecomment-1166288211, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AN6UJIB4PKLRDPQMQV3BMTTVQ4DKHANCNFSM5HE4APLQ.
You are receiving this because you were mentioned.Message ID: @.***>

Hello beatagerger,
Sorry for bumping in, it is not that we dont want to help you there where a couple of issues with it in your first post that did not  part of this discussion. The second thing is that your post pointed a couple off things at once, that while reading where not understandable.  Also using CAPS is in most cases used for shouting and that is not wanted here.
I understand you have some problems with openHASP. But take a moment, read your first message, go to the discussion section.
Create a new topic there and explain what you are using as display and what steps you have tried and where not able to figure out.
I agree with you that the documentation could be better, but it is all done in spare time. And it helps when you explain where you get stuck.
Let's stop this overheated discussion here, it is already to warm outside.


[SPARK-12692][BUILD][CORE] Scala style: Fix the style violation (Space before "," or ":")

Fix the style violation (space before , and :).
This PR is a followup for #10643

Test build #49217 has started for PR 10719 at commit e2202c8.

Test build #49217 has finished for PR 10719 at commit e2202c8.

This patch fails to build.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class ComplexFutureAction[T](run: JobSubmitter => Future[T])
class RangePartitioner[K: Ordering: ClassTag, V](
class SequenceFileRDDFunctions[K <% Writable: ClassTag, V <% Writable: ClassTag](
class OpenHashMap[K: ClassTag, @specialized(Long, Int, Double) V: ClassTag](
class KVArraySortDataFormat[K, T <: AnyRef: ClassTag] extends SortDataFormat[K, Array[T]]

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49217/
Test FAILed.

Merged build finished. Test FAILed.

Test build #49221 has started for PR 10719 at commit fc95915.

Test build #49221 has finished for PR 10719 at commit fc95915.

This patch fails MiMa tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49221/
Test FAILed.

Merged build finished. Test FAILed.

Test build #49230 has started for PR 10719 at commit 5d4b1a9.

Test build #49234 has started for PR 10719 at commit e953d13.

Test build #49234 has finished for PR 10719 at commit e953d13.

This patch fails MiMa tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49234/
Test FAILed.

The additional mima exclusions are few so I'll add them.

Test build #49236 has started for PR 10719 at commit 9079c27.

Test build #49230 has finished for PR 10719 at commit 5d4b1a9.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49230/
Test PASSed.

Test build #49236 has finished for PR 10719 at commit 9079c27.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49236/
Test PASSed.

I responded here: https://github.com/apache/spark/pull/10685#issuecomment-171052858
Pasting the message here too:
@sarutak I actually reverted this change after talking more with Michael and looking at the diffs. The problem is that for colon, in some cases it is really useful to have a space before colon. In particular:
In many cases for type bounds, ti is good to have a space before the colon so it is more clear.
For type descriptions (e.g. variable : Int), it is also often useful to have a space.
I don't know whether it is feasible to actually implement the rules for the general colon, but exclude type description and type bounds. If yes, we should add this enforcement. Otherwise I'd prefer not to have it at all.
For comma, we should always have it (at least I haven't seen a case in which we don't want it yet).

Test build #49280 has started for PR 10719 at commit 284da4b.

Test build #49280 has finished for PR 10719 at commit 284da4b.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/49280/
Test PASSed.

Merged build finished. Test PASSed.

I've merged this.


Add support for recursively resolving inline modular content

Currently both the InlineContentItemsResolvers and TemplateEngineInlineContentItemsResolvers run a single pass through rich text.  Under certain scenarios, a resolver may provide in it's resolution an object element that would further need resolution.
An example would be, if the content type being resolved itself has a rich text element with modular content.  The default Thymeleaf template support is not able to resolve this adequately in it's response.

Completed with https://github.com/Kentico/delivery-sdk-java/pull/47


System namespace missing from .NET API browser

The documentation for the System namespace located in
https://docs.microsoft.com/en-us/dotnet/api/system?view=netcore-3.1
is not accessible from the .NET API Browser. There is no entry for just 'System' in any of the .NET product tables.
Had to open the Console class document and go back via the System namespace link.
Web search for "System namespace" provided link to
https://docs.microsoft.com/en-us/dotnet/api/system?view=dotnet-plat-ext-3.1
which is not the required information but is also inaccessible from API browser.
(Found could go directly from System in .NET Platform Extensions to System in .NET Core by selecting version drop down.)

Thanks for the feedback. Related to #3167, #3169. We have an internal bug tracking the issue.


Add Firefox Support for Lace Wallet Extension

Intention
This pull request aims to extend the Lace Wallet browser extension support to Firefox. The Lace Wallet, initially built and optimized for Chrome, now includes compatibility for Firefox. However, there are certain runtime issues that need addressing, particularly related to Content Security Policy (CSP) violations.
Current Status
The Firefox extension can be successfully loaded and installed as shown in the screenshot.

However, upon running, it encounters CSP-related runtime errors. Specifically, the following error is observed:
Content-Security-Policy: The page’s settings blocked a JavaScript eval (script-src) from being executed because it violates the following directive: “script-src 'self' 'wasm-unsafe-eval'” (Missing 'unsafe-eval')

Steps to Build

Navigate to the apps/browser-extension-wallet directory in your project.

Run the following command to build the Firefox extension:
yarn build:firefox

Upon successful build, an artifact is created in the directory:
apps/browser-extension-wallet/artifacts-firefox/lace-1.13.0.zip

Additional Notes

The build process involves reading specific environment variables defined in the .env file to configure the manifest file appropriately for Firefox.
Despite successful installation, the extension runs into CSP issues which need further investigation and resolution.
The provided screenshot (about:debugging#/runtime/this-firefox) shows the extension loaded in Firefox Developer Edition (129.0), with runtime errors available upon inspection.

what are the CSP errors you are facing?


ENH: add new trace groups

Issue #, if available:
Description of changes:

make direct mysql calls to initialize and cleanup DB.
add orderService into sample app python service stack
make client calls to create more traceGroup

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

traceGroup snapshot:

traceGroup snapshot:

HTTP GET  and mysql ?

@kowshikn So Http Get is due to waiting commands in the script:
until [[ $(curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8083) != 000 ]]; do
  echo "Waiting for databaseService to be ready"
  sleep 1
done

Checking mysql origin...


sum.golang.org: set a useful User-Agent string

I was looking through some suspicious traffic on my git hosting service and it took me a while to understand that it was coming from sum.golang.org.
The code here:
https://github.com/golang/mod/blob/master/gosumcheck/main.go#L187
Should be updated to set a meaningful User-Agent so that admins like me are less confused when reading our access logs.
Aside: the page at sum.golang.org should include a link to the source code, it was not easy to find.

That is an example program to check the go.sum file against go.sum database like sum.golang.org, not the git host.
And sum.golang.org isn't using the code. sum.golang.org & proxy.golang.org access source hosting services using the go commands (they invoke go mod download and go list).
https://github.com/golang/go/issues/35699 has prior discussion about adding User-Agent string to go commands.

I ultimately blocked these IPs because they appeared to be wantonly crawling the server. This is poor behavior for a crawler. It caused service issues for Go users as a result. sum.golang.org is being a poor citizen of the web.
Another aside: it really frustrates me that all discussions are locked after they're "decided", this isn't the first time that I've had a new perspective or new information to contribute and couldn't because the decision was already made.

A solution which would respect the privacy of the user is adding a GOUSERAGENT environment variable or some such similar thing and then just setting it appropriately on the proxy servers, and to a generic value for end-users.

If go command allows setting the User-Agent, I think proxy.golang.org and sum.golang.org can consider setting the User-Agent field - I think we internally discussed this at some point in the past to help small git hosting services but can't find it in the issue tracker (maybe we never filed an issue for discussion?)
By the way, blocking all the traffic from sum.golang.org or proxy.golang.org will prevent all Go users of your package from getting the sum data. I suspect the traffic to refresh the latest and list information is too aggressive for some git hosting services. @ddevault can you tell us more about the traffic pattern you've seen? (logs are appreciated if possible).
cc @katiehockman @heschik @bcmills @jayconrod @matloob @rsc
This issue isn't locked or closed. We appreciate your input and new information.

By the way, blocking all the traffic from sum.golang.org or proxy.golang.org will prevent all Go users of your package from getting the sum data

Right. And we would not have blocked it if we had any idea what the clients were, i.e. if they set their User-Agent properly. As far as we could tell, it was just some skiddie on GCP running a scraper written in Go. The aggressiveness is fine (though you should obey robots.txt!), given the utility - supporting the Go ecosystem - but without knowing what it's being used for, we have no context and have to consider it a violation of our terms of service, which prohibits scraping outside of a few specific purposes.

can you tell us more about the traffic pattern you've seen? (logs are appreciated if possible).

I'll update this if I see it again later, but I didn't see the logs and we get a lot of traffic - and because it's not easily distinguished from any other kind of traffic, it's hard to find the activity again.

Setting a user agent string for the go command seems reasonable, as long as it doesn't contain the version: we want to avoid different content being served to different versions of the go command.
Note however that the fetch service backing proxy.golang.org fetches modules using go mod download with GOPROXY=direct, so that's mostly downloading repos with Git and VCS tools. Go's user agent wouldn't apply there.
I'm not at all sure where the scraping is coming from though. The go command doesn't scrape. If you share logs we can look into whether there's a bug here.

@jayconrod I am guessing that's part of import paths resolving traffic https://golang.org/cmd/go/#hdr-Remote_import_paths

Could be... those requests will all have the query string ?go-get=1. Should be easy to identify in logs.

 At the moment I'm getting several requests per second in this shape from Google IP blocks.

This crawling is actually starting to get out of hand. Is there someone on the infrastructure team I can escalate to?

@ddevault Thanks for sharing the example. They look like requests triggered by git remote calls from a go list or go mod download command. To help users who want to investigate and analyze the git traffic from our service, we are going to specify  GIT_HTTP_USER_AGENT.
If packages and modules hosted in your site are popular and actively used by Go users, the aggregated volume of traffic originated from us may be significant. If it is causing an issue in your service, can you please file a separate issue with specific details of requests you are seeing and what problem the traffic has caused? The problem doesn't seem like an issue about missing User-Agent string any more.

I wonder if the latest Go release, with its changes to modules, is causing a larger burden on hosting services. In any case, I may follow-up in a second ticket later on, but for infrastructure issues I would prefer to be contacted directly by the sysadmins responsible<EMAIL_ADDRESS>

@ddevault Can you please file a separate issue to discuss the issue? Other code hosting service owners may be interested in the  topic and we'd like to keep our conversation in public.

See https://github.com/golang/go/issues/44577

The change that sets GIT_HTTP_USER_AGENT="GoModuleMirror/1.0 (+https://proxy.golang.org)" is now deployed.
@ddevault can you please verify git http requests coming from proxy.golang.org now have the User-Agent string? Thank you!

I can verify that I'm receiving requests with that User-Agent now. Thanks!


⚠ Bofrost.lu has degraded performance

In 5e927a6, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1178 ms

Resolved: Bofrost.lu performance has improved in d7b5098 after 6 minutes.


feat(mobile): add extended wd commands for appium

Had to add a lot of types to promises to get everything to compile

Can we split this into two PRs, one to add the promise types and one to actually do the extend webdriver business?

https://github.com/angular/protractor/pull/3333

I believe this is unblocked now, changing labels.

Yeah, it was broken, not blocked.  Should be fixed now.  We'll see what travis says in the morning.

But honestly it's probably gonna need some cleaning regardless

Just gonna make sure I didn't screw up doc generation and then this PR will be good to go

@juliemr ready for review

All comments addressed

@cnishina I need to to look at this and tell me if there are any typing-related issues

LGTM, make sure typings are good with Craig.

I'll take a look at this today...

@cnishina can I get a re-review?

This is what everything looks like btw:

Please rebase with changes.

All comments addressed

Closed in favor of https://github.com/angular/protractor/pull/3860


DELETE EDGE in the SQL batch occurres wired warning log.

Expected behavior and actual behavior
Expected
Executes a transaction that contains DELETE EDGE X TO {something}. And it works without any warnings nor problems.
Actual
It works anyway, but a warning occurred like this:

WARNI {db=test} Auto transaction starting is turned off for the graph, but already started transaction is left open.Commit it manually or consider disabling auto transactions while creating the graph or its factory. [OrientGraph]

Steps to reproduce the problem
/* turn off the SQL Graph transaction */
ALTER DATABASE custom txRequiredForSQLGraphOperations=false;

/* prepare some items. */
CREATE CLASS Foo EXTENDS V;
CREATE CLASS Bar EXTENDS V;
CREATE CLASS Goes EXTENDS E;

CREATE VERTEX Foo SET name='Foo';  /* it produces #21:0 */
CREATE VERTEX Bar SET name='Bar';  /* it produces #25:0 */
CREATE EDGE Goes FROM #25:0 TO #21:0;
/* now #25:0 is connected to #21:0 via `Goes` edge. */

/* run following commands as a single batch in the Studio */
BEGIN;
LET $bar = CREATE VERTEX Bar SET name=uuid();
/* delete all previous `Goes` edge to the #21:0 */
DELETE EDGE Goes TO #21:0;
CREATE EDGE Goes FROM $bar TO #21:0;
COMMIT;
SELECT FROM $bar;

Something wired one is, when I set txRequiredForSQLGraphOperations=true, then the warning occurs twice. Both DELETE EDGE and CREATE EDGE.
Important Questions
I've never seen those behavior until 2.1.x.
It looks like the CREATE EDGE and/or DELETE EDGE commands break the transaction into separated transactions.
What this warning exactly means?
Is there any limited sql commands in the batch operation?
Runninng Mode

[ ] Embedded, using PLOCAL access mode
[ ] Embedded, using MEMORY access mode
[x] Remote

Misc
I'm using single, local Community Edition.
OrientDB Version

[ ] v2.0.x - Please specify last number:
[ ] v2.1.x - Please specify last number:
[x] v2.2.x - Please specify last number:

Operating System

[ ] Linux
[ ] MacOSX
[x] Windows
[ ] Other Unix
[ ] Other, name?

Java Version

[ ] 6
[ ] 7
[x] 8

Hi @gongdo it was only a bug in logging.
I've fixed here
https://github.com/orientechnologies/orientdb/commit/f7bd2d52ec808616610bf15bcdb431766c8cec1b
It will be available in 2.2.4
Thanks
Enrico


Update to spoolman 0.21

Update to spoolman 0.21

Thank you. I had to disable the automatic update because "0.20.0" would not work for whatever reason; I've re-enabled it now.


added better example to show option useage

Awesome koa module.  I found your examples lacking a basic demonstration of how to customize your options.  I quickly added a new file demonstrating a very simple configuration to help others along.

Thanks


Can't create new incident type in UI

Describe the bug
Unable to create incident type via UI
To Reproduce
Steps to reproduce the behavior:

Go to /configuration/incidentTypes
Click on "New"
Define type with required fields.
"Save" button grayed out.

Expected behavior
Expect to be able to save
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

Browser Chromium 88.0.4324.182 & Firefox 85.0.1 same behavior.
dispatch running latest release (v20210224)

Additional context
No errors in dev tools/console or in the logs with debug enabled. Document & Service are created before incident type. I am able to create the types directly in postgres table incident_type and they show up in the UI after that, but I am unable to edit any values. Same symptom where the "save" button remains grayed out. I am able to create every other type in the UI that I have tried, including service, document, individuals, teams, tags, terms, priorities, etc.
In the create incident type screen, both the service & document get autopopulated from already created items.

My bad. Was accidentally running on latest instead of a release. I guess maybe a bug report for https://github.com/Netflix/dispatch/commit/fc89881d47f3ef3c248ea89e6e7b8fcbc83f0e8b?
And I'll close.


Import Excel Documents

Please use the form below, leaving the prefilled data to help us. Thank you.
Page link: Import Excel Documents
Document link: _index.md
My Issue/Suggestion
The link of Download Sample button is only for image, not excel file.

Hi @kobamasa1 , thanks for opening this issue. I just tried it on Chrome and Firefox, and for me it downloads 18581949.xlsx. Can you try again and let me know what happens?

Hi @kobamasa1 , as I could not find a problem I will close this issue. But if you run into anything else that we on the documentation team can help with, please let us know! You can also try the Mendix forum or support if you run into other kinds of errors. Thanks again!

@kobamasa1 OK, no worries! It still works for me...wonder why it happens sometimes.

I could download it. Thank you for your support.


Regex numéro non français

Bonjour
J'essaye de rajouter une règle qui interdit les numéros qui ne sont pas français mais cela ne semble pas marcher.
Voila le regex :
^(?!(+33|0033|0)(?:[1-9])\d{8}$).*$
Merci

Just do:
33.*
Or
33.{8,}
33.=+33|0033|033

I do like you and if test with number +447362040858 it pass....

@Paul75 Can you export your setting through "Backup and Restore" and paste here?

{"global":{"enabled":true,"callEnabled":true,"smsEnabled":true},"theme":{},"language":{"lang":"fr"},"contacts":{"enabled":true},"stir":{"enabled":true},"repeatedCall":{"times":1,"inXMin":5},"dialed":{"inXDay":3},"recentApps":{"inXMin":5},"blockType":{},"offTime":{},"numberRules":{"rules":[{"id":1,"pattern":"33.{8,}","patternFlags":{"value":5},"patternExtraFlags":{"value":5},"description":"Hors francais","flagCallSms":{"value":3},"schedule":",00:00-00:00,false"}]},"contentRules":{},"quickCopyRules":{}}

33.{8,}
Would block +3312345678
But not. +331234567
44.*
Would block: +447362040858

To block non-French numbers, you can set two regex,

blacklist rule .* priority 1, this blocks all numbers
whitelist rule 33.* priority 2, this allows numbers start with 33

Adjust the second rule to make it more precise.

But does this mean that you have to manually block the numbers? So the program is not the type to block from a list of fraudulent or something else?

But does this mean that you have to manually block the numbers? So the program is not the type to block from a list of fraudulent or something else?

Do you mean a database contains spam numbers, like what YetAnotherCallBlocker does?  There isn't such database in this app, you need to block or allow numbers manually.

Thanks

Hi, If you want to block all call bots ("Démarchage") like your energy provider etc., you can block all officially assigned numbers with this rule
(?:33|0)?(1(?:62|63)|2(?:70|71)|3(?:77|78)|4(?:24|25)|5(?:68|69)|9(?:48|49)).*
I'm using it successfully.

Thanks, the UI was driving me nuts!
Especially the hint on "Number Rules" tells it ignores leading + and zeroes. Based on your regex I guess the part about zeroes is not true?

@Gwened There could be one or two leading 0s, they would've made the regex a lot more complex, so I removed them before the regex matching, so just keep in mind that there are no leading zeroes.
This part (?:33|0)? matches either leading 33 or 0, but actually it will only match leading 33. The |0 here is redundant but it would still work.

For French plan de numérotation démarchage, I would enhance it to
(?:33)?(1(?:62|63)|2(?:70|71)|3(?:77|78)|4(?:24|25)|5(?:68|69)|9(?:48|49))\d{6}


max block cache metrics shows uncorrectly

Bug Report

A user uses different block cache for TiKVs, e.g. for one TiKV, he sets 23 GB for write, but another is less than 15 GB(maybe), but for the metric, we can see the max cache is just 13.8 GB. I can ensure that the all TiKV servers use whole cache.
I think we need to adjust metrics if TiKV has different configs.

We now share cache between cf and db.


False positive on CC0049 ("You can remove this comparison")

Consider this code in a WPF app:
        var dlg = new OpenFileDialog {Filter = "GIF files|*.gif"};
        if (dlg.ShowDialog() == true)
        {
            ...
        }

CodeCracker seems to think that the == true is redundant, but it's not, because ShowDialog() returns a Nullable<bool>, not a bool. Removing the comparison would cause a compile error.

It shouldn't. by

It shouldn't.

should'nt cause a compiler error, you mean? Well it does... and that's not something new in Roslyn, it was the same in the old compiler.

the if condition accepts an expression whos evaluation is bool or castable to bool.

Yes, if it is implicitly castable to bool... it's not the case for Nullable<bool>, it only has an explicit conversion to bool.

So it'll need to check if the first parameter is Bool? and the second parameter Bool. To skip it.
The Bool is being implicitly widened (upcast) to Bool?

So it'll need to check if the first parameter is Bool? and the second parameter Bool. To skip it.

Better yet: check that both operands are of type bool, and nothing else. Otherwise it can get ugly pretty fast...The condition of an if statement doesn't actually need to be of type bool. According to the C# 5 spec, it has to be a boolean-expression (§7.20):

A boolean-expression E is required to be able to produce a value of type bool, as follows:
•	If E is implicitly convertible to bool then at runtime that implicit conversion is applied.
•	Otherwise, unary operator overload resolution (§7.3.3) is used to find a unique best implementation of operator true on E, and that implementation is applied at runtime.
•	If no such operator is found, a binding-time error occurs.

So you have several cases to consider :
(assuming the right-hand-side operand is a compile-time constant of type bool)

if the left-hand-side operand is of type bool: you can remove the comparison
if the LHS is implicitly convertible to bool: you can remove the comparison
if the LHS overloads the == operator for bool: you cannot remove the comparison (unless you're in case 2)
if the LHS overloads the true operator, you can remove the comparison

Actually, in cases 2 and 4 it's not even safe to do it. There are contrived cases where if (foo) isn't the same as if (foo == true), or other similar surprises. It can happen if operators (equality/inequality with bool, implicit conversion to bool, true/false operators) are not implemented consistently. See this evil code for instance.
IMO, trying to cover all those cases would be a good way to lose your sanity ;). So, the safest option is probably to keep it simple and only handle the case where both operands are bool.
Also, I noticed that the current implementation is not symmetric. it should work if the operands are reversed: if (true == myBoolVariable) can be simplified to if (myBoolVariable).

if( res?.Value )

No, this is not valid. When you use ?. on a nullable value type, you access the value directly if there is one. So it would mean the same as : if (res.HasValue ? res.Value.Value : null), which is not valid.
Another valid way to write it would be if (dlg.ShowDialog() ?? false), but it's more confusing than if (dlg.ShowDialog() == true) IMO...
(wow, this comment got a lot longer than I intended...)

I have confirmed the bug. It is ready and up for grabs. I will create another issue about the simetry problem.

@giggio go take some rest you maniac! :)

It is ready and up for grabs.

I see what needs to be changed; I'll take it if you want (and #238 as well; since it affects the same analyzer, I might as well kill two birds with one stone)


Concurrency as a limit

Fantastic package! I just want to propose a feature change which involves specifying a concurrent tasks limit rather than simply passing in true.
This feature would be beneficial to large tasks as they hog memory. Limiting them into chunks saves this memory allowing large tasks to run uninterrupted.
Much like in bluebird's map function
{ concurrency: 3 } // Limit the async chain to run 3 at a time

Check this PR https://github.com/SamVerschueren/listr/pull/56
Had to implement a throttle control on the amount of tasks being executed in parallel and it did its job.

Friendly bump

Released in 0.12.0


Ignore commands when no active text editor

This will fix #669 by ignoring commands invoked while the active pane is not an ordinary text editor (e.g. a console.
@lgeiger and I talked about various ways of doing this including the possibility of registering commands directly to DOM elements of "real" text editors to avoid invoking the command in the wrong context. I will be experimenting with that, but for now this is the simplest fix I could find.

Since this fixes a bug, I think we should ship a new version soon.

:shipit:


Include multiplicity in mapping files

See highsource/jsonix#33.

This should be implemented in 2.3.7, please test. I'd be grateful for feedback if it works for you.