Cannot customize size of SegmentedButton

Steps to Reproduce

Execute flutter run on the code sample

Expected results:
SegmentedButton and OutlinedButton should be the same height.
Actual results:
SegmentedButton height is unchanged from the default style.
I believe the root of the issue is that minimumSize, maximumSize, and fixedSize are omitted from here. From local testing, even that change might not be sufficient though.
While I was looking into the implementation, I also noticed that there's a bug on this line as well. It should specify enabledState instead of disabledState.

Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.light(useMaterial3: true).copyWith(
        visualDensity: VisualDensity.standard,
      ),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: MyWidget(),
        ),
      ),
    );
  }
}

class MyWidget extends StatefulWidget {
  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  var value = true;

  static const buttonStyle = ButtonStyle(
    minimumSize: MaterialStatePropertyAll(
      Size(48, 32),
    ),
  );

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        SegmentedButton<bool>(
          style: buttonStyle,
          showSelectedIcon: false,
          selected: {value},
          onSelectionChanged: (selected) {
            setState(() {
              value = selected.single;
            });
          },
          segments: const [
            ButtonSegment<bool>(
              value: true,
              label: Text('True'),
            ),
            ButtonSegment(
              value: false,
              label: Text('False'),
            ),
          ],
        ),
        const SizedBox(width: 8),
        OutlinedButton(
          style: buttonStyle,
          onPressed: () {
            setState(() {
              value = !value;
            });
          },
          child: const Text('Button'),
        ),
      ],
    );
  }
}

Logs
I created and demo'ed the example code in DartPad. I don't have actual logs.

Hi @math1man, segmented button and outlined button have different internal sizes, so the result is different, u can try to add a container with height and width which will come out with your result, please try this
SizedBox(
          width: 120,
          height: 50, // ! Must be same as OutlinedButton size
          child: SegmentedButton<bool>(
            showSelectedIcon: false,
            selected: {value},
            onSelectionChanged: (selected) {
              setState(() {
                value = selected.single;
              });
            },
            segments: const [
              ButtonSegment<bool>(
                value: true,
                label: Text('True'),
              ),
              ButtonSegment(
                value: false,
                label: Text('False'),
              ),
            ],
          ),
        ),
        const SizedBox(width: 8),
        SizedBox(
          height: 50, // this size
          width: 80,
          child: OutlinedButton(
            onPressed: () {
              setState(() {
                value = !value;
              });
            },
            child: const Text('Button'),
          ),
        ),
        ```

That correctly changes the size, but the text alignment is broken:

segmented button and outlined button have different internal sizes

From what I can tell, OutlinedButton has a customizable internal size and SegmentedButton doesn't. This issue is requesting feature parity so that you can control the size of SegmentedButton the same way as other material buttons.

Potential duplicate, or at least very related:

[ ] https://github.com/flutter/flutter/issues/121493

Other known SegmentedButton issue(s):

[ ] https://github.com/flutter/flutter/issues/123308

I agree with you @math1man, a very highly needed use case is to make SegmentedButton match whatever height (default/custom) you used on OutlinedButton, ElevatedButton and FilledButton.
With old ToggleButtons this is doable, but not with SegmentedButton. I noticed this issue as well when making FlexColorScheme and trying to use any kind of sizing (theme or widget props) on it. I was also unable to change the SegementedButton to anything.

Some more info about why that is so, can be found here https://github.com/flutter/flutter/issues/121493#issuecomment-1480138494

Looks like a valid proposal.Thanks @math1man for raising this and @rydmike for the additional information on it :)

I think it would be reasonable to duplicate this to https://github.com/flutter/flutter/issues/121493. That issue describes this issue in full and then some.


Mandatory change in licensing and legal documentation

Description
Due to a change in how we want to license Eclipse Tractus-X, there are a couple of changes
to legal documentation in our repositories.
This issue is created for every active repository in our GitHub org, to remind everyone
about the required changes and also to track the completion of if.
If there are any reasons, why you think this change should not be applied to this repository,
document them as comment on this issue, before closing it. Be aware, that there are most likely no
exceptions for our repositories.
If you have any questions, feel free to join the weekly Community Office Hour
and raise it there.
What has to be done?
The following steps have to be completed, to fully implement the licensing change:

[ ] Add a new file LICENSE_non-code in your repository root with the contents of the CC-BY-4.0 license
[ ] Remove the /LICENSES directory in case you previously stored the CC-BY-4.0 license there. Make sure there is no other CC-BY-4.0 License left, other than on root as LICENSE_non-code
[ ] Add the "Project Licenses" and "Terms of Use" sections to your CONTRIBUTING.md file. See eclipse-tractusx/sig-infra#476 for an example
[ ] Adapt "Declared Project License" section in NOTICE.md. See eclipse-tractusx/sig-infra#476 for an example
[ ] Please verify, your CONTRIBUTION.md does not have encoding issues. We found several occurences in repositories.

Additional information
You can find detailed information in our Release Guidelines section 7.
The changes have been introduces in eclipse-tractusx/eclipse-tractusx.github.io#856.
You can also see an example on how a repository was changed in eclipse-tractusx/sig-infra#476.
Overall progress tracked in eclipse-tractusx/sig-infra#477

I created a PR #5 : chore(legal documents): adapt legal documents (TRG7)
[x] Add a new file LICENSE_non-code in your repository root with the contents of the CC-BY-4.0 license
[x] Remove the /LICENSES directory in case you previously stored the CC-BY-4.0 license there. Make sure there is no other CC-BY-4.0 License left, other than on root as LICENSE_non-code
[x] Add the "Project Licenses" and "Terms of Use" sections to your CONTRIBUTING.md file. See https://github.com/eclipse-tractusx/sig-infra/pull/476 for an example
[x] Adapt "Declared Project License" section in NOTICE.md. See https://github.com/eclipse-tractusx/sig-infra/pull/476 for an example
[x] Please verify, your CONTRIBUTION.md does not have encoding issues. We found several occurences in repositories.
Additional:

added a requirements.txt and DEPENDENCY-file


Checkpoint: Counting CardsCheckpoint: Counting Cards

help please to solve the issue>>>
var count = 0;
function cc(card) {
// Only change code below this line
if(card==2 ||card==3 || card==4 || card==5|| card==6)
count++;
else if(card==7 || card==8 || card==9)
count+=0;
else if(card == 10 || card =='j'||card=='Q'||card=='K'||card=='A')
count-=1;
if(count<0){return count+"Hold";}
else if (count>0){ return count+"Bet";}
// Only change code above this line
}
// Add/remove calls to test your function.
// Note: Only the last will display
cc(2); cc(3); cc(7); cc('K'); cc('A');

@MariamShqair
Please ask for guidance at Help Chat, you will get instant help, github issues are for bugs.
Your code is correct, except just make the below changes to get this working.
In the check for the 10, 'J', 'Q', 'K','A' you have :
else if(card == 10 || card =='j'||card=='Q'||card=='K'||card=='A')
change that to :
else if (card == 10 || card == 'J' || card == 'Q' || card == 'K' || card == 'A')
The J needs to be in Upper Case.
Next in a condition check where you are creating the return string
if(count<0){return count+"Hold";}
change the condition check to :
    if (count <=0)
Need an = there.
Finally add some space in the string like below :
return count+" Hold"; instead of return count+"Hold";
Goodluck!

@raisedadead
Thanks..
^_^

var count = 0;
function cc(card) {
// Only change code below this line
switch(card) {
case 2:
case 3:
case 4:
case 5:
case 6:
  count++;
  break;

case 7:
case 8:
case 9:
  count += 0;
  break;

case 10:
case "J":
case "Q":
case "K":
case "A":
  count--;
  break;

}
if(count <= 0) {
return count + " Hold";
}else {
return count + " Bet";
}
// Only change code above this line
}
// Add/remove calls to test your function.
// Note: Only the last will display
cc(2); cc(3); cc(7); cc('K'); cc('A');
I think this code is make more sense. hope it will help you.

@BEBEDYDY
This place is not for put answer on here. You could help people at FreeCodeCamp Chat Room or Forum. GitHub Issues are for reporting bugs on the website only.
Happy Coding!

nice and clean ;-)
function cc(card) {
// Only change code below this line
switch(card){
case 2:
case 3:
case 4:
case 5:
case 6:
count++;
break;
case 7:
case 8:
case 9:
count+=0;
break;
case 10:
case 'J':
case 'Q':
case 'K':
case 'A':
count-=1;
break;
}
return count <= 0 ? ${count} Hold : ${count} Bet;
// Only change code above this line
}


JSP support via beautifying as XML in Pretty Diff

Issue #575

Thanks!

@Glavin001 Since this is already merged, when will it make it to the distributed plugin? Looks like beautifying JSP still does not work with atom-beautify.

This was merged in 2015. This should be available now. If it is not available then I recommend that you create an Issue and be sure to include your debug.md Gist that we can use to diagnose the problem.


Refactor inbound authentication

Purpose
$subject with object equivalency. This PR does not change any functionality.
Check List

[x] Read the Contributing Guide
[ ] Required Balo version update
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

Merging #15317 into master will not change coverage.
The diff coverage is 0%.

@@            Coverage Diff            @@
##             master   #15317   +/-   ##
=========================================
  Coverage     23.22%   23.22%
  Complexity     5096     5096
=========================================
  Files          1345     1345
  Lines         67972    67972
  Branches       9252     9252
=========================================
  Hits          15785    15785
  Misses        50437    50437
  Partials       1750     1750

Impacted Files
Coverage Δ
Complexity Δ

...lang/auth/ldap/nativeimpl/GetLdapScopesOfUser.java
2.02% <ø> (ø)
2 <0> (ø)
:arrow_down:

...uth/ldap/nativeimpl/InitLdapConnectionContext.java
1.19% <ø> (ø)
1 <0> (ø)
:arrow_down:

...llerinalang/auth/ldap/nativeimpl/Authenticate.java
5.4% <0%> (ø)
2 <0> (ø)
:arrow_down:

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 0bd8e8d...b17c6d5. Read the comment docs.


ROS on windows.  What's new hasn't been updated since May 2020.

Describe the bug
ROS on windows , what is new page was last updated ===>> May 2020.   Given it was updated monthly prior to that, makes it appear ROS on windows is slightly dead :}
https://ms-iot.github.io/ROSOnWindows/WhatsNew.html
Expected behavior
Update ROS on windows "entry page" each month [ even if nothing happened]
Environment information:

OS version: winver
Chocolatey Versions: choco list --local-only

Thank you for the ping on that page. I'll update with back dated items.

good news!

Here's the PR. There's some work that wasn't captured, but I need to collect that.
https://github.com/ms-iot/ROSOnWindows/pull/313

Fixed. I'll make sure to keep it updated. Thanks for the ping on that!


Relax pinned version of îles

Description 📖
Fixes #230 by @dhruvkb
Background 📜
This was happening because the version of iles pinned in the dependencies is older than the current version 0.9.x.
The Fix 🔨
By relaxing this pinning, we can allow the package to be installed in projects using the latest version of îles.

Peer dependencies are optional for the most part, but I think it makes sense to align this package with the rest now (it's been a long time since 0.7).
Thanks!


Independent logic for Partial and Full OrderValidation

Similar to the Pre-Order Validation introduced in #1169, we offload some of the order validation statements contained in Orderbook.add_order to a specialized struct PostOrderValidator. This makes it possible to test and maintain Order Validation without making changes to the orderbook logic itself.
Test Plan
Added new unit tests for all possible routes in PostOrderValidator.validate() along with tests for helper method min_balance

Codecov Report

Merging #1176 (85bf187) into main (46786c5) will decrease coverage by 0.05%.
The diff coverage is 8.20%.

@@            Coverage Diff             @@
##             main    #1176      +/-   ##
==========================================
- Coverage   66.76%   66.70%   -0.06%
==========================================
  Files         135      135
  Lines       27018    27050      +32
==========================================
+ Hits        18039    18045       +6
- Misses       8979     9005      +26

I could rename it back for now and just do the rename later if you prefer.

Its fine. It was mostly me complaining at the Github UI, which does it sometimes even when Git identifies changes as a file rename.

I could rename it back for now and just do the rename later if you prefer.

Its fine. It was mostly me complaining at the Github UI, which does it sometimes even when Git identifies changes as a file rename.

Too late... already renamed back... Will change again later.


Database Migration fails with Views.

DBFlow Version: 3.0.0-beta6
Issue Kind: Bug
Description:
In version 1, I create a @ModelView, as well as some @Models.  In version 2, I add a @Column to one of the @Models, and implement a @Migration for adding that column.  When onUpgrade of BaseDatabaseHelper occurs, during executeCreations, the view is attempted to be created again, throwing an exception.

submitted pull request: https://github.com/Raizlabs/DBFlow/pull/832

made it into 3.0.0 :)

great, thank you!


Let iree_cc_library mirror Bazel cc_library more faithfully.

In Bazel, in cc_library, copts and linkopts apply only to the library
itself, not its dependents. In a header-only cc_library, copts and linkopts
are ignored.
Note: I checked locally by adding a if() with a message() in this CMake code: there are currently no INTERFACES with COPTS or LINKOPTS.

Hang on, that's not true. linkopts are applied to library and its dependents. We deliberately make use of this with our default_linkopts Bazel rule:
https://github.com/google/iree/blob/a6e2d78338dda3be9455ca39666f3f6a7da6839b/build_tools/BUILD#L23-L37

Hang on, that's not true. linkopts are applied to library and its dependents. We deliberately make use of this with our default_linkopts Bazel rule:
https://github.com/google/iree/blob/a6e2d78338dda3be9455ca39666f3f6a7da6839b/build_tools/BUILD#L23-L37

Ah, thanks for catching this ! I didn't realize that there was such a dissymetry between copts and linkopts but the bazel documentation says so explicitly - thanks! Going to make a PR to fix that now.

Ah, thanks for catching this ! I didn't realize that there was such a dissymetry between copts and linkopts but the bazel documentation says so explicitly - thanks! Going to make a PR to fix that now.

PR #4476 is up.

PR #4476 is up.

Ah, thanks for catching this ! I didn't realize that there was such a dissymetry between copts and linkopts but the bazel documentation says so explicitly - thanks! Going to make a PR to fix that now.

How foolish of you to expect consistency :stuck_out_tongue:

Ah, thanks for catching this ! I didn't realize that there was such a dissymetry between copts and linkopts but the bazel documentation says so explicitly - thanks! Going to make a PR to fix that now.


Duck typing on anonymous object literals and class objects

Based on new duck typing concept fresh objects can not have access property.
Like this
let a = { name:"Bill"};
let b = {name:"Bill", age:20};

a = {name: "James", age:30 }; // Error - excess property not allowed
a = b; // No error - works fine

Now the questions is does this concept also applies to class objects
Like this:
class Human {
    name: string;
    constructor(name: string){
        this.name = name;
    }
}

class Animal {
    name: string;
    age: number;
    constructor(name: string, age: number){
        this.name = name;
        this.age = age;
    }
    eat(){
        console.log(this.name + " is a Human and is eating");
    }
}

let h1 = new Human("James");
let a1 = new Animal("Dog", 2);
h1 = new Animal("Cat", 1); //this is working -- But based on duck typing concept it should not because it has excess property and its fresh object

The error is same if I remove constructor.
Is there any difference in duck typing concept for anonymous objects and class objects OR may be I'm missing something?
Or is it really considered as fresh object?

I have the same question?

I also have the same question.

Object literals have an associated freshness before they're bound to a variable. The same doesn't apply for any other expressions.
The idea is that object literals are often used for option bags (where the user has to manually type out each property name at each use-site), and this behavior catches typos.
If you'd like to prevent Animal from being assigned to a Human, you can add a private property to Animal, since private and protected properties need to originate from the same declaration to be compatible.

Thanks its clear now


loader overrides not working in url(...) notation

The URL in the following code in my CSS file:
.label {
	background-image:url('!file!label.svg');
}

contains a loader prefix as described in the webpack core documentation.
I assume the CSS loader should now locate "label.svg" in the CSS file's directory, pass it through the file-loader, and then replace the url(...) contents accordingly.
Instead, I am getting the following error:
Module not found: Error: Cannot resolve module 'label.svg' in /home/user/project/css

It works when I remove the loader prefix from the filename and add a global loader definition to the webpack config instead:
loaders: [
	{
	   test: /label\.svg$/,
	   loader: "file"
	},

So it seems that the CSS loader doesn't handle loader prefixes properly. Or did I miss anything?

Maybe a bit weird but this should work:
background-image:url('~!file!./label.svg');

Works for me, but how come?

I also got bitten by this — why is the ~ necessary?

The ~ makes require calls respect the full path - otherwise anything not starting with a / is made relative to current location. Kind of demonstrated by the examples in the readme - could maybe use an additional example there.
The alternate/confusing require possibilities needs some more thinking - mentioned in https://github.com/webpack/css-loader/issues/217


Live scrobbling from Spotify suddenly not working. Backlog is, but is double scrobbling.

Please check the FAQ before submitting a bug report.
Describe the bug
multi scrobbler has stopped scrobbling from Spotify while running. It polls every 30-60s and no song is detected as playing, even when the poll happens during a song. All of these songs are then rescrobbled from backlog, including duplicates, when multi-scrobbler is restarted.
To Reproduce
Steps to reproduce the behavior:

Open multi-scrobbler with a previously working Spotify -> Maloja config
Play a song
No scrobble shows up
Ctrl-C multi-scrobbler and restart
A bunch of duplicate scrobbles are made

Expected behavior
Songs should be detected in a poll that runs during a song. Previous scrobbles should not be rescrobbled.
Logs
Startup:
Checking CONFIG_DIR for existing configs: /root/.var/app/io.github.foxxmd.multiscrobbler/config
Directory is not empty! Will not add default config/examples
2023-08-19T21:40:02+00:00 debug   : [App] Config Dir ENV: /root/.var/app/io.github.foxxmd.multiscrobbler/config -> Resol
ved: /root/.var/app/io.github.foxxmd.multiscrobbler/config
2023-08-19T21:40:02+00:00 info    : [App] multi-scrobbler can be run as a background service! See: https://github.com/Fo
xxMD/multi-scrobbler/blob/develop/docs/service.md
2023-08-19T21:40:02+00:00 debug   : [Scrobblers] Constructing maloja (unnamed-mlj) client...
2023-08-19T21:40:02+00:00 debug   : [Scrobblers] Attempting maloja (unnamed-mlj) initialization...
2023-08-19T21:40:02+00:00 info    : [Scrobblers] [Maloja - unnamed-mlj] Communication test succeeded.
2023-08-19T21:40:02+00:00 info    : [Scrobblers] [Maloja - unnamed-mlj] Maloja Server Version: 3.1.5
2023-08-19T21:40:02+00:00 info    : [Scrobblers] maloja (unnamed-mlj) client initialized
2023-08-19T21:40:02+00:00 debug   : [Scrobblers] Checking maloja (unnamed-mlj) client auth...
2023-08-19T21:40:02+00:00 info    : [Scrobblers] [Maloja - unnamed-mlj] Auth test passed!
2023-08-19T21:40:02+00:00 info    : [Scrobblers] maloja (unnamed-mlj) client auth OK
2023-08-19T21:40:03+00:00 debug   : [Sources] (unnamed) Constructing spotify source
2023-08-19T21:40:03+00:00 debug   : [Sources] Attempting spotify (unnamed) initialization...
2023-08-19T21:40:03+00:00 info    : [Sources] spotify (unnamed) source initialized
2023-08-19T21:40:03+00:00 debug   : [Sources] Checking spotify (unnamed) source auth...
2023-08-19T21:40:03+00:00 info    : [Sources] spotify (unnamed) source auth OK
2023-08-19T21:40:04+00:00 info    : [App] Server started at http://localhost:9078
2023-08-19T21:40:05+00:00 info    : [Sources] [Spotify - unnamed] Checking recently played API for tracks to backlog...
2023-08-19T21:40:05+00:00 info    : [Sources] [Spotify - unnamed] Discovered => [some songs]
2023-08-19T21:40:05+00:00 info    : [Sources] [Spotify - unnamed] Backlog complete.
2023-08-19T21:40:05+00:00 info    : [Sources] [Spotify - unnamed] Polling started
2023-08-19T21:40:05+00:00 debug   : [Sources] [Spotify - unnamed] Refreshing recently played
2023-08-19T21:40:05+00:00 info    : [Scrobblers] [Maloja - unnamed-mlj] Server reported database is built and status is
healthy
2023-08-19T21:40:05+00:00 debug   : [Scrobblers] [Maloja - unnamed-mlj] Refreshing recent scrobbles
2023-08-19T21:40:05+00:00 debug   : [Scrobblers] [Maloja - unnamed-mlj] Found 40 recent scrobbles
2023-08-19T21:40:05+00:00 error   : [Scrobblers] [Maloja - unnamed-mlj] Encountered error while refreshing scrobbles
2023-08-19T21:40:05+00:00 error   : [Scrobblers] Cannot destructure property 'name' of '{}' as it is null.
TypeError:
    at MalojaScrobbler.formatPlayObj (CWD/src/clients/MalojaScrobbler.js:285:84)
    at MalojaScrobbler.formatPlayObj (CWD/src/clients/MalojaScrobbler.js:18:69)
    at CWD/src/clients/MalojaScrobbler.js:171:61
    at Array.map (<anonymous>)
    at MalojaScrobbler.refreshScrobbles (CWD/src/clients/MalojaScrobbler.js:171:45)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async ScrobbleClients.scrobble (CWD/src/clients/ScrobbleClients.js:349:25)
    at async EventEmitter.<anonymous> (CWD/src/clients/ScrobbleClients.js:391:13)
2023-08-19T21:40:05+00:00 info    : [Scrobblers] [Maloja - unnamed-mlj] Scrobbled (Backlog) => [some songs]

Example of a poll that ran while a song was playing:
2023-08-19T21:52:15+00:00 debug   : [Sources] [Spotify - unnamed] Refreshing recently played
2023-08-19T21:52:16+00:00 debug   : [Sources] [Spotify - unnamed] No new tracks discovered
2023-08-19T21:52:16+00:00 debug   : [Sources] [Spotify - unnamed] Last activity was at 2023-08-19T21:40:05+00:00 which is 7 minutes outside of active polling period of (last activity + 300 seconds). Will sleep for max interval 60 seconds.
2023-08-19T21:52:16+00:00 verbose : [Sources] [Spotify - unnamed] Sleeping for 60s

Versions (please complete the following information):

multi-scrobbler: 0.4.4 flatpak
maloja next_minor_version branch combined with the Spotify extended listening history fix: https://github.com/duckfromdiscord/maloja/tree/import_fix

Additional context
maloja seems to occasionally glitch out until restarted, usually when trying to log in with the admin password. This has been happening even before upgrading to the new version, with no major scrobbling issue.

Additionally, it seems like maloja is actually auto-removing some but not all of the double scrobbles:
[database] Incoming scrobble [Client: default | API: native/v1]: { [some song data] 'scrobble_time':<PHONE_NUMBER>}
[dbcache] Invalidated 3 of 3 DB cache entries
[sqldb] 1 Scrobbles have not been written to database!
[dbcache] Invalidated 1 of 1 DB cache entries
[database] Incoming scrobble [Client: default | API: native/v1]: { [some song data] 'scrobble_time':<PHONE_NUMBER>}
[dbcache] Invalidated 3 of 3 DB cache entries

From maloja logs, it seems the first song is skipped and the second one is not.

Not happening right now, may have been a server issue?

Could have been. Spotify isn't 100% reliable, but i usually find it to be good enough. Has it happened since?

Yes, but I am not sure it’s the same issue. Now, it starts off working, but seems to randomly stop scrobbling after some unknown amount of time. Scrolling back in the logs I see “Access token was not valid, attempting to refresh” and then it continues to poll and receive nothing despite listening through multiple songs. Then when I restart it, it gets its backlog and works for another couple min/hr.

Similarly to the initial issue, some of the backlog does get double scrobbled but not all of it.

2023-08-19T21:40:05+00:00 error   : [Scrobblers] Cannot destructure property 'name' of '{}' as it is null.

This can be fixed by bumping your flatpak version to 0.4.8
I've got a potential improvement for spotify (logging more error messages) in develop. I only build official releases for flatpak, however, so you'll need to use docker/git install to test it.

Everything is updated now. Will re open if this issue reoccurs


Add solid-filemanager to solid-apps list

I've added the solid-filemanager to the solid-apps list. It's a project I've been working on the for the last two weeks, which allows navigating and managing the solid pod.

Is there anything missing from my side to get this PR merged?

LGTM ^_^

I don't want to stress you, but... lets get this merged? o.O

Since I included info from the wiki, this is also included in https://github.com/solid/solid-apps/pull/34

Added in https://github.com/solid/solid-apps/pull/34


Access assignments are not revoked when the corresponding document is deleted

When a document is deleted, it is expected that any access assignments that were created from its document definition should be revoked. However, currently that is not the case; all access assignments persist after the document is deleted. This presents a clear security vulnerability. Fix it.

Satisfied by #247


Unexpected bitcointalk domain in documentation

While browsing the SPF documentation I noticed that a link contained a reference to bitcointalk.org - I don't think the Dmarcian SPF survey requires a domain to be passed in the URL so I was surprised to see it prefilled. Is this intentional?
https://github.com/sendgrid/docs/blob/e07060b38afacf58b19240fda8a6966781f81b92/content/docs/glossary/spf.md#L68

Note: Make this a generic/sample URL.

@Whatthefoxsays , I'd like to help with this issue.
What do you mean by generic URL?

@TomerPacific Take a look at RFC 2606 which defines some URLs as safe for documentation:

example.{com,net,org}
*.example
*.test
*.invalid
*.localhost

IMO those should be safe and the RFC may have advice about which is best

@Whatthefoxsays ,
I have opened a PR.
According to RFC 2606, example.com was the suggested option in this case.


Issue 12: Add java 17 github actions workflow

Solves #12
I created a new maven profile to override the maven compiler properties, setting the source, target, and release to java 17.
Using this new profile, I created a new ci workflow just as discussed, activating the java 17 profile to compile & run tests with java 17.

To be fair, I didn't know other ways to override the java 11 version which was already set in the pom. I did some research and found some clues, but the easiest way that I found (IMHO) was to create this new profile. Maybe there are better ways to do it.

@dearrudam You asked to link the issue on the "development" section of GitHub, but the options don't show up here :/

@viniciusbrg this option is available once the PR or issue is opened... sorry, I forgot to mention it. :+1:


ResponsiveGridLayout not working!!!

I'm using RGL but the ResponsiveGridLayout version does not work. I am sending the data correctly as they say in the documentation but it is modified automatically when the component starts.
const ResponsiveGridLayout = WidthProvider(Responsive);

const layout = {
     lg: [
         {"i":"5cc4e4a705116723f41eb6c9","x":0,"y":0,"h":1,"w":6,"minH":4,"minW":4},
         {"i":"5cc4e4a705116723f4reb6c9","x":6,"y":0,"h":1,"w":6,"minH":4,"minW":4}
     ],
     md: [
         {"i":"5cc4e4a705116723f41eb6c9","x":0,"y":0,"h":1,"w":6,"minH":4,"minW":4},
         {"i":"5cc4e4a705116723f4reb6c9","x":6,"y":0,"h":1,"w":6,"minH":4,"minW":4}
     ],
     sm: [
         {"i":"5cc4e4a705116723f41eb6c9","x":0,"y":0,"h":1,"w":6,"minH":4,"minW":4},
         {"i":"5cc4e4a705116723f4reb6c9","x":6,"y":0,"h":1,"w":6,"minH":4,"minW":4}
     ],
     xs: [
         {"i":"5cc4e4a705116723f41eb6c9","x":0,"y":0,"h":1,"w":6,"minH":4,"minW":4},
         {"i":"5cc4e4a705116723f4reb6c9","x":6,"y":0,"h":1,"w":6,"minH":4,"minW":4}
     ],
     xxs: [
         {"i":"5cc4e4a705116723f41eb6c9","x":0,"y":0,"h":1,"w":6,"minH":4,"minW":4},
         {"i":"5cc4e4a705116723f4reb6c9","x":6,"y":0,"h":1,"w":6,"minH":4,"minW":4}
     ],
}

<ResponsiveGridLayout
                className="layout"
                onLayoutChange={this.onLayoutChange}
                layout={layout}
                isDraggable={true}
                isResizable={true}
                breakpoints={{lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0}}
                cols={{lg: 12, md: 10, sm: 6, xs: 4, xxs: 2}}
            >
                {layout && layout.lg && layout.lg.map(item =>
                    <div key={item.i}>
                        {this.selectWidgetRender(item.chartItem)}
                    </div>
                )}
            </ResponsiveGridLayout>

All widgets are show in one column no in row how specify layout. Help !!!!! Greetings

@yanielbf I think it's because the property is called layouts (plural) and not layout

@yanielbf Can you please confirm that this solved your issue? Thanks!

Ohh, I am sorry, all OK. Greetings!!

Nice. Could you then please close this issue? Thanks!

@kessler bless u

@olgn live long and prosper :)


Add azure-sdk-for-rust to utility pipelines

@hallipr please add rust to https://github.com/Azure/azure-sdk-tools/blob/main/eng/pipelines/eng-workflows-sync.yml as well so the workflows sync also. After this PR gets merged then do a sync.

/check-enforcer override


Go API: Get value attributes as a slice

Is your feature request related to a problem? Please describe.
I'd like to retrieve all the attributes for a value as a slice for further processing within my application. The current API does not allow this and requires knowing the key (https://pkg.go.dev/cuelang.org/go@v0.3.0-alpha6/cue#Value.Attribute). The same applies for retrieving the key/value pairs from an attribute, which is of more interest to extract actually. The POC returns the key/value pairs for an attribute as a Go map.
My users can specify a regex so I cannot know the keys beforehand and thus the need for extra processing.
Describe the solution you'd like
https://github.com/cuelang/cue/pull/529 is a POC
Describe alternatives you've considered
The API does not support this. I currently maintain a small patch to expose the above.

@mpvl would the query proposal (#165) support searching attributes?

@mpvl would the query proposal (#165) support searching attributes?

@verdverm Very likely not. By doing so attributes would matter for evaluation. The whole purpose of attributes is that they are not part of the language.
The only thing imagine is that one could analyze CUE in the tooling layer, including getting attributes. But they should not influence regular evaluation.

@verdverm Very likely not. By doing so attributes would matter for evaluation. The whole purpose of attributes is that they are not part of the language.
The only thing imagine is that one could analyze CUE in the tooling layer, including getting attributes. But they should not influence regular evaluation.

This issue has been migrated to https://github.com/cue-lang/cue/issues/670.
For more details about CUE's migration to a new home, please see https://github.com/cue-lang/cue/issues/1078.


"buffer" is a built-in python function - we should not overwrite it

There are some variables named "buffer". We should change these to "reaction_buffer" or something similar.

I have commented it out in my latest commit, so should be fine with my next PR. This is for the CRNLab class only, I am not 100% sure if there is a buffer function defined elsewhere too.
@WilliamIX  : Did you create any function named buffer? If not, we should be good to go with my PR.

I do not believe I created anything called buffer.

I did a global search and renamed buffer to txtl_buffer in the CRNLab, no other instance was found.
I'm closing this now.


Tidy styling of “Change the Reclaim Policy of a PersistentVolume”

This is a Bug Report

Problem:
Change the Reclaim Policy of a PersistentVolume puts Kubernetes resource names such as PersistentVolume in backticks, for example:
policy. With the "Retain" policy, if a user deletes a `PersistentVolumeClaim`,
the corresponding `PersistentVolume` is not be deleted. Instead, it is moved to the

The style guide recommends writing resource names
in UpperCamelCase with no backticks.
Proposed Solution:
Find the Kubernetes resource namesin the Markdown source for Change the Reclaim Policy of a PersistentVolume: (PersistentVolume and PersistentVolumeClaim), and remove the backticks around them where these exist.
Page to Update:
https://kubernetes.io/docs/tasks/administer-cluster/change-pv-reclaim-policy/

Additional Information:
/good-first-issue
/priority backlog
/language en

/kind cleanup

/assign @Arhell

/assign @soniasingla

@sftim seems this bug has been already fixed (: We can close this issue.

/close


Documentation update and bug fix

Changes README.md to use Markdown command syntax for installation commands
Fixes FFXIVPREFIXLOCATION (solves #4 and possibly #6)
Adds instructions for user to re-launch the game after switching to Proton 6.21-GE-2

I was about to make a similar pull request but then noticed this was already here. In particular the change to fix the path formation for the FFXIVPREFIXLOCATION variable fixed a problem I had, which was caused by #4.


[Suggestion] Make crucial/fun things less exploration luck heavy (minor spoilers)

Sorry for rant. I love this mod. but this makes me a bit angry.
Ok here is my point. Many crucial things require specific rare resources to complete (see old Gauntlet recipe with rabbit skin). Main Point for me: Golem Seal Harvest. I searched 3+hours in SSP to find a jungle for cocoa beans. I ofter play MONTHS in a world without finding a single jungle (or melons/pumpkins/carrots/potatoes).
Please make crucial/fun/(or any) things not depend on fiding specific (rare) biomes, blocks, mobs etc.
Ideas:
Bring back boss mobs and add this stuff to the loot bags.
Golemancy can be unlocked with either redstone or a small clay golem you can craft earlier.
Seal: Harvest only needs normal seeds. (or make other seeds craftable (organic alchemy?))
Auromancy Projectile: Should not need llamas.
I'm sure there are more.

Villager golems are rather common, if you don't sit in your hole.
But in general, I agree with an observation.

I would agree for vanilla MC. Regarding cocoa beans specifically (and probably other items, but this one is obvious), Biomes O'Plenty is used, they are common in any tropical biome, which are common with BoP default settings. I know balancing for every mod out there is a monumental task but maybe the community can help.

I think he Is addin in a few boss mobs, I know the eldritch is still a wip... mut, I see your point. It's not really a rand (ok, technically it is) It is a good point!

I will note here that the Nature's Compass mod adds an item to reliably point to the nearest instance of any specified biome.
(Of course, that biome may be a Minecraft week's travel away on foot...)

True, true

Possibly make this a config option or something like that, as certain people like me completely love the system that's in place right now. Especially the hours I spent trying to figure out what the hell a 'sticky projectile' was, and then trying to find a Llama and get it to spit on me.

I agree that it can be troublesome to find some items.
Golems I don't really agree on though - both Iron and Snow golems are vanilla craftable with easy to obtain components. Finding llamas in my current world was quite troublesome though :)

This issue was moved to Azanor/thaumcraft-suggestions#387


Settings hooks fails sometimes

I'll just leave it here for now so in case anyone else will encounter this will know that this is a known issue.
Please add thumbs up to this issue if you have this problem too!
* [359/407] Processing: sddc/openstack-corosync-pacemaker
+++ Error while processing 'sddc/openstack-corosync-pacemaker'
Traceback (most recent call last):
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlabform/core.py", line 189, in process_all
    self.process_hooks(project_and_group, configuration)
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlabform/core.py", line 30, in method_wrapper
    return method(self, project_and_group, configuration)
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlabform/core.py", line 65, in method_wrapper
    return method(self, project_and_group, SafeDict(configuration))
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlabform/core.py", line 364, in process_hooks
    self.gl.post_hook(project_and_group, hook, configuration['hooks'][hook])
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlab/projects.py", line 96, in post_hook
    self._make_requests_to_api("projects/%s/hooks" % pid, 'POST', data, expected_codes=201)
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlab/core.py", line 46, in _make_requests_to_api
    response = self._make_request_to_api(path, method, data, expected_codes)
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlab/core.py", line 81, in _make_request_to_api
    raise e
gitlabform.gitlab.core.UnexpectedResponseException: Request path='projects/1780/hooks', method=POST, data='{'push_events': False, 'merge_requests_events': True, 'url': 'http://<IP_ADDRESS>:5000/hooks/merge-request'}' failed - expected code(s) 201, got code 500 & body: 'b'{"message":"500 Internal Server Error"}''
* [360/407] Processing: sddc/openstack-corosync-pacemaker-wrapper
! Branch 'master' not found when trying to set it as protected/unprotected
+++ Error while processing 'sddc/openstack-corosync-pacemaker-wrapper'
Traceback (most recent call last):
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlabform/core.py", line 189, in process_all
    self.process_hooks(project_and_group, configuration)
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlabform/core.py", line 30, in method_wrapper
    return method(self, project_and_group, configuration)
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlabform/core.py", line 65, in method_wrapper
    return method(self, project_and_group, SafeDict(configuration))
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlabform/core.py", line 364, in process_hooks
    self.gl.post_hook(project_and_group, hook, configuration['hooks'][hook])
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlab/projects.py", line 96, in post_hook
    self._make_requests_to_api("projects/%s/hooks" % pid, 'POST', data, expected_codes=201)
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlab/core.py", line 46, in _make_requests_to_api
    response = self._make_request_to_api(path, method, data, expected_codes)
  File "/srv/gitlab_tools/venv/lib64/python3.5/site-packages/gitlabform/gitlab/core.py", line 81, in _make_request_to_api
    raise e
gitlabform.gitlab.core.UnexpectedResponseException: Request path='projects/1781/hooks', method=POST, data='{'push_events': False, 'merge_requests_events': True, 'url': 'http://<IP_ADDRESS>:5000/hooks/merge-request'}' failed - expected code(s) 201, got code 500 & body: 'b'{"message":"500 Internal Server Error"}'"

Haven't seen that for a while, so I am guessing that it was a problem in some version of GitLab. Not happening with 10.1.x, so I am closing. Please reopen if anyone encounters this.


Push 24.1 and 25.0 tags to docker hub

Is there any chance we can have 24.1 and 25.0 pushed to dockerhub please?

Thanks @kroese . I'll close this as I opened https://github.com/ruimarinho/docker-bitcoin-core/pull/144 to try and fix it here, too.


python312Packages.cloudsplaining: 0.6.3 -> 0.7.0

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 342260 run on x86_64-linux 1

10 packages built:

checkov
checkov.dist
python311Packages.cloudsplaining
python311Packages.cloudsplaining.dist
python311Packages.policy-sentry
python311Packages.policy-sentry.dist
python312Packages.cloudsplaining
python312Packages.cloudsplaining.dist
python312Packages.policy-sentry
python312Packages.policy-sentry.dist


copy and copyDirectory do not update in real time with NPM RUN WATCH

Laravel Mix Version: 2.1.1
Node Version:  8.9.3
NPM Version: 5.5.1
OS: Windows 10

Description:
How can I copy a folder structure to the public/ folder in real time using the watcher npm run watch? Currently the files are copied only when you run npm run watch the first time.
Steps To Reproduce:

Create a folder img inside resources/assets/
Create a laravel mix with: mix.copy('resources/assets/img/', 'public/img', false) or mix.copyDirectory('resources/assets/img/', 'public/img')
Add an image inside resources/assets/
Run  npm run watch
The image is correctly copied inside  public/img
Now add another image inside inside resources/assets/ (with the watcher still running)
The image is not copied inside  public/img in real time until you stop the watcher and run  npm run watch again

Same here.

Same here.

I created the plugin to resolve this issue.
laravel-mix-copy-watched
The copyWatched and copyDirectoryWatched methods has the same usage as the copy and copyDirectory methods.
mix.copyWatched(from, to);
mix.copyWatched('from/regex/**/*.txt', to);
mix.copyWatched([path1, path2], to);
mix.copyDirectoryWatched(fromDir, toDir);

With the base option, it is also possible to keep a hierarchical structure (like Gulp).
mix.copyWatched('resources/images/**/*', 'public/images', { base: 'resources/images' });

Try it !

Nice work @dsktschy! I would like to see this feature in the main package as well...

This topic should not be closed yet

Any progress on this? I think Laravel Mix should really has to copy files on watch. I tried laravel-mix-copy-watched plugin but it doesn't work that well.

Still having this issue

laravel-mix-copy-watched is not a real solution, as it doesn't take sub-subfolders into accout, e.g. files from there get copied to subfolder. That's a complete mess.


postgres container uses trust authentication

Describe the bug
It was a surprise to us when starting to use this that the postgres container is setting POSTGRES_HOST_AUTH_METHOD - this breaks negative path tests that expect to be able to fail to connect , and the example code uses a password when it doesn't need to!
What makes this a potential problem though is the apparenty lack of a mutable interface to remove the env vars in the testcontainers-modules interface - instead we need to reproduce everything to avoid this initial injection. (The absence of a variable is not the same as "" as the value)
To Reproduce
This does work in this particular case, but if the pg docker entrypoint were stricter about values rather than stringifying it wouldn't:
let pg = RunnableImage::from(Postgres::default())
    .with_tag("14-alpine")
    .with_env_var(("POSTGRES_HOST_AUTH_METHOD", ""))
    .with_env_var(("POSTGRES_PASSWORD", "postgres"));
docker.run(pg)

Expected behavior
No response

Agree, it should be explicitly enabled by user. With something like with_host_trust.
Postgres has been ported from core crate of testcontainers (before splitting) and it was intentionally AFAIR - pretty common for testing purposes. So I'd consider this not as bug, but enchantment and breaking change.
You actually can set another value to ENV variable to make it working as you want.
Based on https://hub.docker.com/_/postgres it defaults to:

If unspecified then scram-sha-256 password authentication is used (in 14+; md5 in older releases)

So
POSTGRES_HOST_AUTH_METHOD=md5
# or
POSTGRES_HOST_AUTH_METHOD= scram-sha-256

Should work for you(use RunnableImage to customize).
Hope it will help, and after releasing new version you will be able to switch (or even use as is, this way won't be broken)

mutable interface to remove the env vars in the testcontainers-modules interface

This is a good point, but should be supported in testcontainers

Hi @rbtcollins,
Thanks for filling the issue!
New version with disabled host auth method by default and enriched builder methods has been merged and released!
https://github.com/testcontainers/testcontainers-rs-modules-community/releases/tag/v0.3.0


Font size for single cell

How to make font style (size, type) for the single cell?
Thanks

1.3.10 not supported

When will be supported?

we are very much waiting, we really need it

if u have time and knowledge, then write and share code for individual fonts
if u have money, support project https://opencollective.com/simplexlsx for my motivation
else
wait (may be next week) or try alternative library

I have starred the project, everyone that use the library must do it. I'll wait the next week, i like your library so we want to use it

@shuchkin any news? Thanks again for your work!

News?

Have added a font-size style attribute into my fork and submitted a pull request.
https://github.com/mrjemson/simplexlsxgen
Works for my purposes, by YMMV.

<style font-size="32">Big Text</style>
1.3.12


Can you add an option to hide old live stream video?

I want it show only the videos on video tab when we surf the channel

No, but feel free to submit a PR


Improve test_linux_webapp_multicontainer_create()

#6255
Improve hard coded assert in this test. Build config from scratch and test local path as well.

this is fixed already


NoArbitrary is seen as an empty set

Currently, NoArbitrary is seen as an arbitrary that is not inhabited. This is akin to the empty set in classical mathematics, in the sense that, given the NoArbitrary A, ∄x(x ∈ A). Under this interpretation, the NoArbitrary is consistent with the existence of vacuous truths, w.r.t. quantifiers (see #116):

Any property P yields true under an universal quantification, that is ∀x∈A:P(x), which makes the following satisfiable:

forall('empty', fc.empty()).then(_ => false)   // satisfiable = true

Any property P yields false under an existential quantification, that is ∄x∈A:P(x), which makes the following unsatisfiable:

exists('empty', fc.empty()).then(_ => true)    // satisfiable = false

We do not expect the NoArbitrary to be directly used by the end-user, and if it is, then the end-user ought to expect this behavior. However, NoArbitrary can be constructed by either (a) passing constructor arguments that violate sensible interpretations of what constitutes a valid arbitrary (e.g. negative-sized Arrays), or (b) more often, during the shrinking process. The latter would most likely lead to correct behavior.
But the former might become a source of confusion. Right now an user might construct such proposition and not be warned that this will happen. For example:
forall('a', fc.integer(10, 0)).then(({a}) => a >  0)   // satisfiable = true
forall('a', fc.integer(10, 0)).then(({a}) => a <= 0)   // satisfiable = true

Mathematically, 100% correct. But as an end-user, I would really appreciate a warning saying that the scenario I've written leads to a fixed conclusion. This mechanism is similar to warning given by IDEs for always true/false if statements, common comparisons, and even unreachable code.

As a side note, my intuition (a common mechanism of human error, for sure), tells me that we might want to construct an Arbitrary that makes a proposition to always be true or false (under any quantifier). This exists in classical logic: its called Top and Bottom. The later is specially used to signal a contradiction.

(a) I think we should throw an exception when constructing an invalid arbitrary.
(b) The behavior of the NoArbitrary that is constructed during the shrinking process is the correct one.
This puts me on the fence again on fc.nat(-3,3) returning fc.nat(0.3), or if it should throw an exception.

I had this discussion yesterday with @ruippeixotog, but I'll let him lay over his claims. The discussion involved these points:

We don't want exceptions to be thrown during the shrinking process; but I wasn't able to promptly provide a scenario where this would happen;

@ruippeixotog convinced me that there are different levels of "invalid"; there's the "array of negative size" type of invalid, and then there's the "give me a natural number between -10 and 10" type. The former is meaningless. The latter is inhabitable and intersects the range [0..10] (for N0).


[request] Slack Bot Integration (Notification Plugin)

To further improve the notication possibilities a slack-bot would be nice plugin:
https://www.npmjs.com/package/slackbots

Hi @askmike i did work on this yesterday and think it would be at a useable state already... but one important question/possible bug.
Why is the loading of the plugins different if you start it as in cli mode vs. --ui mode.
I did a quick test and had some console.log('hello from slackbot') in my slackbot.js.
Running some Stuff in CLI mode prints "Hello from slack" -> loads the plugin.
Starting the same Backtest, Watcher ... in --ui mode does not load the plugins.
The reason for this is https://github.com/askmike/gekko/blob/feature/ui-trader/gekko.js#L43.
Did you intentionally exit at Line 43 ?
This results in a state where there are only some of the installed plugins loaded.

hey,
I have to give some context first:
When you start a gekko (live gekko, trader, backtester, whatever) you start a pipeline.
Gekko used to be CLI focussed (there was no UI), so a lot of plugins were added that do things like sending messages (email, telegram, etc) whenever something happens (price, advice, etc).
Under the hood all gekkos that you run have a pipeline, which mean they have a config that specifies what plugins are ran over what market. But the UI is a "wrapper": when you run node gekko --ui you don't actually start any pipeline, you start a small webserver that allows you to later run pipelines through the interface.

So two important things:

Plugins used to be the most exciting things you can do with Gekko, but ever since the UI the main goal has shifted as a "tool" to test / measure / try strategies. If you want to use gekko as a slackbot, emailbot, telegrambot, etc. you are better off running a CLI version on a server that runs 24/7.
If you want to add a plugin to gekkos that are ran through the UI, you need to make sure that the right config ends up being used. The easiest place for this is this default config that all UI gekkos use:

https://github.com/askmike/gekko/blob/feature/ui-trader/web/routes/baseConfig.js

Hi @askmike,
thanks for the Info, i think this would be an important information for the readme/wiki (Configuration Section).
I'll try to implement my use-case : cloud or raspberry hosted notification center focused on several TA based strategies.
I will most likely get back to you here - or maybe you would consider opening a slack community for gekko to have a plattform where devs can ask questions, share informations without opening "discussion"-issues.
br.
Johannes

@askmike wouldn't it be more convenient to have the cli and ui config extend a root-config, so that you could run the same system state either with UI or headless.

I see your point, but that would require users to understand the concept of config files and what role they play in a gekko. I am not sure everyone would expect editing one config file to run a chat bot 24/7 having an impact on everything else they do through the UI.
The way I am thinking about Gekko now is that the CLI is really a way to do different things with Gekko:

UI: if you want to experiment with a strat, or if you want to trade and watch the strat & results closely (in a chart with statistics).

So in that way I also want to keep the configs seperated, as to reflect that they serve different purposes.

I am closing this as I don't see this as an existing issue. I am very open to a PR and if you have questions let me know!

Hi @askmike,
don't get me wrong, but where is the point in closing feature requests for upcoming versions and also flagging them as open-for-pulls.
If i would see a closed issue like this with "open-for-pulls" i would consider it already done, which this and the other issues arent.
Open Issues with "open-for-pulls" would signal to other developers that this would be a point to start off and extend the project.
br.

Hey @JohannesFerner
I am just trying to get rid of the backlog of ~90 open "issues" which are not actually issues. This issue is a feature request, and the "open-for-pulls" tag means that I am open into accepting pull requests. I assume that before people actually start coding they would read the issue (and not just the tag + title), in which case the second sentence reads:

Hi @askmike i did work on this yesterday and think it would be at a useable state already (...)

If someone who wants to add slack stumbles across that sentence in combination with the open-for-pulls they can for themselves decide to create a new PR or not (what if that person reads it ~6 months from now and there is still no slack plugin)?

What my train of thought is:

an issue describing a feature request is an open question whether something can be added to Gekko. Once it is clear if/how/by whom the issue can be closed and:
someone can start working on a PR (just propose a WIP PR once you have code like #793) where the implementation discussion can be moved to.
once implementation is done (and accepted) the PR can be merged which closes that PR.

If I don't stick to this I run into "feature requests" that people are supposedly working on for years and clogging up the "issues" bug tracker.


Add hashrate.no extension

Description
Seeing the recent PRs for crypto related extensions, here's one I made in July for some https://hashrate.no/ functions.
Screencast
https://github.com/user-attachments/assets/15a27795-1818-49c7-8be0-da2c3569123a
Checklist

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

I would be on board with renaming but the only factor is that "Hashrate" or "Hash rate" is also a term in blockchain so I wouldn't want one to conflate "Hashrate the term" and "Hashrate the API".


Same reaction for two check-boxes in indeterminate samples

When clicked on the first or the forth the two check boxes change the same which I think should not be like this at least according the fluent ui samples.

Besides the button "Make Checkbox Indeterminate" has a very bad UX; it doesn't specify which button it is going to change.

Closing this since I mention it in issue #3210


add "native" typescript support

I wish to add proper typescript support to the container via the protoc-gen-ts plugin (the code js_out produces is from the previous century).
At first I started to add this module in a custom dockerfile that extends from this one, but I quickly realized that most of the "magic" is done in this shell script.
So in order to help everyone and not just myself I made this PR. I am super new to Docker and also not very experienced with shell scripting, so any help is more than welcome :D

I've just tested the patch, and it seems to work like a charm :D

working example:
docker pull chriskruining/protoc-all:dev
docker run -v ``pwd``:/defs chriskruining/protoc-all:dev -o ./gen -d ./src -l typescript
assuming you are in a directory with your protofiles in a sud-dir called src

I switched to a custom plugin for my ts generator, so I am closing this as it is no longer relevant to me


Get Parent from related query builder

is it possible to access parent model from related query builder ?
for example
blog.$relatedQuery('tags').sync(ids);

while sync is my custom query builder act like relate method
In query builder
sync(ids: any[]) {
//
}

in the sync method on query builder , this will refer to tags right? and can i access the blog model / query too ?
because i console.log the this.context() there is a _relatedQueryFor property there but i dont know how to access it

There's no way to do that I'm afraid.


log when a job object is created in JobRunner.

The time difference between when FlowRunner logs when a job is started,
and when the job object is created in JobRunner, can serve as a proxy
of how much overhead it is to set up a job.

Pull Request Test Coverage Report for Build 5596

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
21 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.06%) to 42.908%

Files with Coverage Reduction
New Missed Lines
%

azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackRequestMaker.java
21
56.25%

Totals

Change from base Build 5563:
-0.06%

Covered Lines:
14465

Relevant Lines:
33712

💛  - Coveralls


congr regression

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Checked that your issue isn't already filed.
Reduced the issue to a self-contained, reproducible test case.

Description
congr is behaving differently than in Lean 3; I'm not sure whether this is intended or not.
Steps to Reproduce
open Function

def Set (α : Type u) := α → Prop

example {α : Type u}
  (f : α → Type (max u v))
  (U : α) (hU : f U = Set (Sigma f)) :
    let g : Set (Sigma f) → Sigma f := fun (s : Set (Sigma f)) => ⟨U, cast hU.symm s⟩
    ∀ ⦃s t : Set (Sigma f)⦄,
        g s = g t → cast hU (g s).snd = cast hU (g t).snd :=
by
  intros g s t h
  congr -- reduces to `(g s).snd = (g t).snd`, not `g s = g t`
  assumption

Expected behavior:
Proof succeeds, as in the corresponding Lean 3 proof:
universes u v
open function

example {α : Type u}
  (f : α → Type (max u v))
  (U : α) (hU : f U = set (sigma f)) :
       let g : set (sigma f) → sigma f := λ (s : set (sigma f)), ⟨U, cast hU.symm s⟩
       in ∀ ⦃s t : set (sigma f)⦄,
            g s = g t → cast hU (g s).snd = cast hU (g t).snd :=
begin
  intros g s t h,
  congr,
  assumption,
end

Actual behavior:
congr reduces the goal to (g s).snd = (g t).snd, not g s = g t
Versions
Lean (version 4.0.0-nightly-2022-10-27, commit 23ba495205f8, Release)
Additional Information
This arose in https://github.com/leanprover-community/mathlib4/pull/511, in the proof of
theorem not_surjective_Type {α : Type u} (f : α → Type max u v) : ¬Surjective f

@semorrison I pushed the fix above.
I noticed that the Lean 4 congr tactic is applying assumption to new goals, but Lean 3 version does not. Is this an issue?

The mathlib congr' tactic does use assumption on new goals, so I don't think it is a major issue. I don't think we actually want to have two versions of the congr tactic, this is just legacy stuff.


[BUG] Custom tool is not working

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Try using any custom tool, it never returns anything.
Expected behavior
Return the value defined by the custom tool in the javascript function.
Screenshots

Flow
test1 Chatflow.json
Setup

Installation docker swarm
Flowise Version 1.8.1
OS: Debian 12 bookworm

Try Tool Agent - https://docs.flowiseai.com/use-cases/webhook-tool#flowise

@HenryHengZJ I think we need to change the default SYSTEM MESSAGE from Coversational Agent, because it is only a descriptive text.
@OtrisX try to change the SYSTEM MESSAGE for a "You are a helpful assistant.", for example, and try again.

Is this issue solved? I still can't get custom tools working on non-OpenAI models

The issue still there. Is there any solution?

Does the custom tool support non-OpenAI models? it's not working for me either.


integrating js9 into jupyter

Hi Gijs,
When you are ready to work on integrating/packaging, please see:
http://python.6.x6.nabble.com/embedding-js9-into-a-notebook-tp5173096p5178697.html
where Nicholas Bollweg says:

Let me know when you are thinking you've advanced to the point where you want to try to package the whole thing in a repo. It would be easier to start collaborating on code, and then be able to get a binder (mybinder.org) going, then consider how to proceed: pure js nbextension, python backend (widgets), etc.

The following now also works in a jupyter notebook:
%%html

Cross-site framing was blocked on the js9 web site, but it works now.
So another option we have is to create a number of static Web pages that users can utilize, e.g.:

js9 + menubar
js9 +menubar + panner + magnifier
two js9 instances
.... etc ....

Not sure how I feel about this, but the iframe does immediately give you full access to JS9 functionality.
A lot depends on how you think users will want to interact with JS9.

I'd like to pick this up again: https://github.com/ratt-ru/radiopadre-devel/issues/2

@ericmandel, would you mind if we added you to that repository? I think we could use really your help on the JS9 side.

Yes, of course. Are you aware of this effort? https://github.com/mgckind/jjs9, with some relatively status discussed here: https://github.com/ericmandel/js9/issues/30
I think Matias is still interested, so maybe you all should talk as well? (My knowledge of Jupyter is essentially null, though I'm very interested in have a JS9/Jupyter connection working well.)
cc: @mgckind @DougBurke

My knowledge of Jupyter is essentially null

Which nicely complements my knowledge of Javascript and web programming in general. :) Fortunately there's bright young people like @gijzelaerr and @Mulan-94 to figure it out for us.
The scenario I'd like to use it in is as follows. We're developing Jupyter notebooks to visualize the results of data processing pipelines. This often means looking at a lot of FITS images sitting on a remote machine, with network lag making X11 forwarding not very practical. JS9 looks like the answer.
I think this fits the last scenario described by @mgckind on https://github.com/mgckind/jjs9, so we're going to give that a try first. I have to say I'm a little confused what a "JS9 server" actually does. I assume in the last scenario ("users who run Jupyter notebook remotely on a server") I still need to run js9_web.py and js9Helper.js on that same server?
Ideally, I'd like this thing to be "installation-free", i.e. requiring nothing more than ssh access to the remote server. For our notebooks this is already pretty smooth and automatic (ssh in, create a virtualenv, pip install Jupyter into it, run it, and forward its port over ssh), so maybe I need to ask @gijzelaerr and @Athanaseus to package JS9 and https://github.com/mgckind/jjs9 into KERN and/or PyPI.

I have to say I'm a little confused what a "JS9 server" actually does.

In this context, the JS9 helper is facilitating the communication between Python (or the shell) and JS9, since its not possible for an external program to communicate directly with a browser. JS9 inside the browser connects to the server-side helper (when available) when the web page loads. The pyjs9.JS9() routine connects to the same helper so that it can send JS9 requests when you call an API routine. Subsequently, the helper relays API requests to the connected browser and returns the results to Python.
Additionally, the LoadProxy()  API call referenced in @mgckind's example requires a JS9 helper so that the server can retrieve the remote FITS file and then tells JS9 its location so that JS9 can make a request to load it.
The JS9 helper also supports server-side analysis and some other things ...

OK, so the helper is run server-side with node js9Helper.js, correct? And how exactly does the JS9 on my local browser talk to the remote JS9 helper? Do I need to specify ports/etc.?
When I naively try to JS9.LoadProxy() on the client, I get a popup saying JS9 ERROR: no JS9 helper available. If I try JS9.Load(), I get JS9 ERROR: no FITS module available to process FITS file. If I try @mgckind's last example, I also get the "no FITS module" error.
I did configure, build and install JS9 with cfitsio support, and I'm running node js9Helper.js on the server.  I see this has a port set up (2718) -- does this need to be known on the browser side somehow?

I'm seeing this in the JS console when setting up a JS9 display. Don't know if this is related:
VM404:240 Uncaught ReferenceError: io is not defined
    at Object.success (eval at globalEval (jquery.min.js:2), <anonymous>:240:67)
    at i (eval at globalEval (jquery.min.js:2), <anonymous>:18:28017)
    at Object.fireWith [as resolveWith] (eval at globalEval (jquery.min.js:2), <anonymous>:18:28783)
    at A (eval at globalEval (jquery.min.js:2), <anonymous>:20:14035)
    at HTMLScriptElement.c (eval at globalEval (jquery.min.js:2), <anonymous>:20:17354)
    at HTMLScriptElement.dispatch (eval at globalEval (jquery.min.js:2), <anonymous>:19:10316)
    at HTMLScriptElement.q.handle (eval at globalEval (jquery.min.js:2), <anonymous>:19:8343)

OK, so the helper is run server-side with node js9Helper.js, correct? And how exactly does the JS9 on my local browser talk to the remote JS9 helper? Do I need to specify ports/etc.?

When you build JS9, you have the option to specify what sort of helper (CGI also supported but not recommended), including no helper at all. You also can specify the  helper port. Configuration params are stored in js9prefs.js and js9Prefs.json. The latter's use of synchronous load is unfortunately deprecated by FF, so its use cannot recommended in the client. But it is loaded by the JS9 helper, so the two files should be consistent, at least for now (I know I have to deal with this at some point). If you look at them you should see something like this:
 "globalOpts": {"helperType":  "nodejs", "helperPort":  2718, ...

This info is loaded into the helper at startup and sent to the browser when the page is loaded, so they both know the protocol and the port. Once the browser knows this info, it will try to connect to the helper. If you choose File -> display pageid and see "none", you can be sure the connect failed. But I think we know that from this message:
VM404:240 Uncaught ReferenceError: io is not defined

I am guessing that you did not start the node js9 helper in the js9 install directory (or in the cloned directory), i.e., where the node_modules directory is located. As a result, node could not find the socketio modules when trying to respond to the browser's request for connection.
Documentation is here, and if you have already read it, that means I did not explain it clearly:
https://js9.si.edu/js9/help/helper.html

Thanks for mentioning me, I was very excited when it was working, then given the fast development on the Jupyter side it was hard to keep track of all changes and got busier in other things . We still do want this to work again, so I'll try to follow this conversation very closely.

Thanks @ericmandel. Indeed "Display pageid" comes back with None, so I guess there's something wrong with the helper. I do start nose js9Helper.js in the install directory (i.e. what I configured via --with-webdir -- that is the one you mean? In any case I see node_modules/socket.io under it).
My js9Prefs.json looks like this.
{
  "globalOpts": {"helperType":	     "nodejs",
  		 "helperPort":       2718,
		 "helperCGI":        "./cgi-bin/js9/js9Helper.cgi",
		 "fits2png":         false,
		 "debug":	     0,
		 "loadProxy":	     true,
		 "workDir":	     "./tmp",
		 "workDirQuota":     100,
		 "dataPath":	     "$HOME/Desktop:$HOME/data",
		 "analysisPlugins":  "./analysis-plugins",
		 "analysisWrappers": "./analysis-wrappers",
                 "installDir":       "/files/js9-www"
		 },
  "imageOpts":  {"colormap":	     "grey",
  		 "scale":     	     "linear"}
}

I'm a bit uncertain about the installDir setting. What I have it set to is the path that the Jupyter webserver serves it up as. Should it be the real filesystem path instead?
Also, is there any way to get the helper to print any sort of debug or status messages? I tried bumping the debug setting above, but it remains completely silent.

I'm a bit uncertain about the installDir setting

I don't think you want to mess with the installDir property right now. It's a back door for cases where JS9 can't figure out how to get from the web page to the installation directory (usually then the js9.css file is manually installed somewhere other than the js9 install directory) . I'd recommend removing for now.

any way to get the helper to print any sort of debug or status messages

You can turn on more node.js debugging than you thought possible this way:
DEBUG='*' node js9Helper.js

A more nuanced view is described here (for example):
https://nodejs.org/api/debugger.html

OK, but I still need the installDir set in js9prefs.js, because without it I get all sorts of 404s in the JS console.
So I did enable debug messages. What I get is
(.radiopadre-venv) oms@jakob:~/radiopadre/js9-www$ DEBUG='*' node js9Helper.js
  socket.io:server initializing namespace / +0ms
  socket.io-parser encoding packet {"type":0,"nsp":"/"} +3ms
  socket.io-parser encoded {"type":0,"nsp":"/"} as 0 +2ms
  socket.io:server creating engine.io instance with opts {"maxHttpBufferSize":10000000000,"path":"/socket.io","initialPacket":["0"]} +0ms
  socket.io:server attaching client serving req handler +7ms

on startup, followed by
  socket.io:server serve client source +9s

every time I redisplay the Jupyter cell that creates a JS9 display. So it's talking to the helper at least. But on the browser side I still have Uncaught ReferenceError: io is not defined (as well as Uncaught TypeError: Cannot read property 'mouse' of undefined), and display pageid is still None.

OK, I was totally confused and thought you were not inside Jupyter anymore, but were testing the usual use of a browser directly. Can you please try a direct browser page load and make sure the helper connects successfully in that case? If the browser does work as expedcted, then I really have to try to reproduce this problem here at CFA and debug it.

OK, so if I load http://localhost:11003/files/js9-www/js9.html in a new browser tab, I get a JS9 window with a proper page ID (and all sorts of colorful debug output from the node helper).
So, indeed it seems that the problem only arises when displaying this under Jupyter.

then I really have to try to reproduce this problem here at CFA and debug it.

I'm happy to dig further, but I'm flying blind at this point. Let me know if it would be useful for me tro try anything else.

in a new browser tab, I get a JS9 window with a proper page ID

That said, there's still a few errors in the JS console. Perhaps unrelated:
Failed to load http://localhost:11003/files/js9-www/astroemw.wasm: Redirect from 'http://localhost:11003/files/js9-www/astroemw.wasm' to 'http://localhost:11003/login?next=%2Ffiles%2Fjs9-www%2Fastroemw.wasm' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
js9.min.js:413 Ignored call to 'alert()'. The document is sandboxed, and the 'allow-modals' keyword is not set.
b.error @ js9.min.js:413
g.onerror @ js9.min.js:402
XMLHttpRequest.send (async)
(anonymous) @ VM53:1
b.fetchURL @ js9.min.js:403
b.initEmscripten @ js9.min.js:472
b.init @ js9.min.js:564
(anonymous) @ js9.min.js:620
j @ js9support.min.js:18
k @ js9support.min.js:18
setTimeout (async)
(anonymous) @ js9support.min.js:18
i @ js9support.min.js:18
fireWith @ js9support.min.js:18
fire @ js9support.min.js:18
i @ js9support.min.js:18
fireWith @ js9support.min.js:18
ready @ js9support.min.js:18
S @ js9support.min.js:19
js9.min.js:413 Uncaught Error: cannot load: /files/js9-www/astroemw.wasm  .. please check the url/pathname
    at Object.b.error (js9.min.js:413)
    at XMLHttpRequest.g.onerror (js9.min.js:402)

js9.min.js:413 Uncaught Error: cannot load: /files/js9-www/astroemw.wasm  .. please check the url/pathname

This is very bad,  and is caused to your setting installDir. I think you should remove that line from your prefs, verify that this error goes away in the bowser, and let me try to reproduce the Jupyter problem.

and is caused to your setting installDir.

I removed installDir, same problem. What about the first line, something about CORS policy?

P.S. I should point out, Jupyter is still playing static webserver here (hence the /files prefix on the URL), so perhaps this is also contributing to the problem?

OK, perhaps I am wrong in my diagnosis, its hard to do this remotely ... so let's try turning off use of wasm by JS9, by setting this parameter in js9prefs.js:
globalOpts.useWasm: false

That will use asm.js instead.

Aside from turning off wasm, you can try avoiding Jupyter entirely by using the Python web server instead, something like:
python -m SimpleHTTPServer 8000

@o-smirnov @mgckind I have updated my  version of Jupyter and now I get all of the error messages mentioned above:

So, not sure how far I will get with the black-box that is Jupyter, but let me fiddle with JS9 for a while and see if I can get anything to work.

Thanks, I feel comforted it wasn't just me screwing up in ignorance. :)
I've clocked out for today, but happy to continue hacking on this tomorrow,
if I can help at all.
On Tue, 03 Jul 2018, 19:06 Eric Mandel<EMAIL_ADDRESS>wrote:

@o-smirnov https://github.com/o-smirnov @mgckind
https://github.com/mgckind I have updated my version of Jupyter and now
I get all of the error messages mentioned above:
[image: screen shot 2018-07-03 at 1 04 16 pm]
https://user-images.githubusercontent.com/3028875/42234171-9ea4ec14-7ec1-11e8-9361-a3813031d283.png
So, not sure how far I will get with the black-box that is Jupyter, but
let me fiddle with JS9 for a while and see if I can get anything to work.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/gijzelaerr/js9notebook/issues/2#issuecomment-402227698,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGK5v4OXWTNu0-SKI-tedcdTBKqCL2vLks5uC6SVgaJpZM4Gw5JX
.

@o-smirnov @gijzelaerr @mgckind
OK, I've debugged JS9 under Jupyter as far as I can go:
tl;dnr: iframe works, direct load of js9-allinone.js almost works (but no js9 helper in the latter case)
After re-familiarizing myself with the whole issue, I realized that direct loading of js9-allinone.js into a Jupyter cell never allowed connection to the js9 helper. The problem is that the browser makes a runtime request for the socket.io client javascript code from the js9 helper and Jupyter blocks the request. It gives no error but returns a null string instead of code. Since the request appears to be successful, JS9 goes ahead and tries to use the returned null result, which gives the "io is not defined" error shown above. If I modify the request to ask for the socket.io code as text instead of as javascript, I do get a CORS error from the Jupyter server. I have no idea why Jupyter throws a CORS erorr, since it is using localhost for its server and I am using localhost for the JS9 helper, so I think this is an issue best taken up by our Jupyter experts.
That said, loading js9-allineone.js works EXCEPT that, as @o-smirnov reported and I misunderstood, the menus are stuck in the upper left corner. I can look into this later.
To make use of a js9 helper on a remote server, it therefore is currently necessary to use an iframe, as was the case previously. This appears to work. I can load local files, then upload them into the server, and run back-end analysis on the uploaded file. The menus are almost in the right place (a little shifted to the right), and I will look into this later.
Why was @o-smirnov getting the "io is not defined" error when loading js9-allinone.js? I can only guess that js9prefs.js was being loaded as well, which overrode the default of not connecting to a helper.
Below is a summary of the code I entered into a Jupyter cell and the results I found. I will look into the menu problem in the next day or so. Assuming I can find the problem it will undoubtedly require code changes to JS9.
# direct load of local js9-allinone.js:
# results: open local file works, no remote analysis, menus stuck in upper left
%%html

<link type="text/css" rel="stylesheet" href="http://localhost/~eric/js9dev/js9-allinone.css">

# direct load of main web site js9-allinone.js:
# results: open local file works, no remote analysis, menus stuck in upper left
%%html

<link type="text/css" rel="stylesheet" href="https://js9.si.edu/jupyter/js9-allinone.css">

# iframe of local web page
# results: open local file works, remote analysis works, menus OK
%%html

# iframe of main web site web page
# results: open local file works, remote analysis works, menus OK
%%html

# iframe of main web site subsidiary web page
# results: open local file works, remote analysis works incl upload, menus OK
%%html

I have more or less fixed position of the JS9 menus. I'm not sure why Jupyter is processing the wrong position values, and so I had to use a more basic positioning technique. It seems to work OK. It's updated in GitHub as well as the main web site.
Just another thing for a Jupyter expert to look into ... some day ...

Thanks, @ericmandel. The iframe approach works for me -- at least to load JS9 from the main website -- and I confirm the menus are in the right place. The CORS error must be a Jupyter issue --  at your suggestion I tried SimpleHTTPServer, and my local install of JS9 starts up fine. So I'll take that up with the Jupyter people.
However, even with SimpleHTTPServer, I still can't get the helper to load up a server-side FITS file. The JS9 display just shows a spinning wheel, while the helper process prints out:
socket.io:socket dispatching an event ["loadproxy",{"cmd":"js9Xeq loadproxy ./3C147-CD-LO-spw0-s7-lwimager.fullrest.fits","cookie":"_xsrf=2|89506d0f|3a80c841be4330ee255e237b763d1d24|1530023674","dataPath":"$HOME/Desktop:$HOME/data:.:/.../../"},null] +0ms
ERROR:  uncaughtException: %s [%s] [TypeError: arr.includes is not a function] TypeError: arr.includes is not a function
    at getDataPath (/home/oms/radiopadre/js9-www/js9Helper.js:482:15)
    at execCmd (/home/oms/radiopadre/js9-www/js9Helper.js:608:26)
    at Socket.xfunc (/home/oms/radiopadre/js9-www/js9Helper.js:804:2)
    at emitTwo (events.js:87:13)
    at Socket.emit (events.js:172:7)
    at /home/oms/radiopadre/js9-www/node_modules/socket.io/lib/socket.js:514:12
    at nextTickCallbackWith0Args (node.js:419:9)
    at process._tickCallback (node.js:348:13)  [2018/07/04, 11:56:05]

3C147-CD-LO-spw0-s7-lwimager.fullrest.fits in there is the name of the FITS file, with the helper running in the same directory as that file...

OK, I worked around that error by adding "dataPathModify":   false to js9Prefs.json. Now stuck on:
  socket.io:socket dispatching an event ["loadproxy",{"cmd":"js9Xeq loadproxy 3C147-CD-LO-spw0-s7-lwimager.fullrest.fits","cookie":"_xsrf=2|89506d0f|3a80c841be4330ee255e237b763d1d24|1530023674","dataPath":"$HOME/Desktop:$HOME/data:.:/.../../"},null] +0ms
exec: /home/oms/radiopadre/js9-www/analysis-wrappers/js9Xeq [loadproxy,3C147-CD-LO-spw0-s7-lwimager.fullrest.fits]  [2018/07/04, 12:36:17]
  socket.io:socket sending ack [{"stdout":null,"stderr":"ERROR: could not retrieve: 3C147-CD-LO-spw0-s7-lwimager.fullrest.fits\n","errcode":1,"encoding":"ascii"}] +102ms

Reading the documentation (and looking at js9Xeq), it dawned on me that LoadProxy() doesn't quite do what I want anyway. I'm trying to do something simple -- my FITS files are already present server-side -- I don't need the helper to download them first (and I certainly don't want them removed afterwards). Is this a possibility at all?

OK I have a solution for the CORS error, only to run into another problem further on. I'm going to open separate issues for separate problems now, because this discussion is getting a bit too multithreaded....

[TypeError: arr.includes is not a function]

Your version of Node.js is very old and does not support newer javascript capabilities. If you upgrade to Node.js v6 or above (Node v8 is current), this error will go away.

OK, I worked around that error by adding "dataPathModify": false to js9Prefs.json

What you did was NULL out the data path used by JS9 to find the data file, so its expected that you will not find the data.

I'm trying to do something simple -- my FITS files are already present server-side -- I don't need the helper to download them first

Yes, if the files are already on the server, you can just use JS9.Load() to load them. No need for LoadProxy, which uses wget or curl to retrieve a file from a different server .... this technique is needed to avoid CORS problems, since the display software and the data must originate on the same server.

If you upgrade to Node.js v6 or above (Node v8 is current), this error will go away.

OK, that was simple enough. Turns out that on Ubuntu, node is the legacy v6 version, and nodejs is the v8 version. Running the helper under nodejs indeed makes this error go away.

Good, I'll update the documentation to reflect the minimum version needed.

Yes, if the files are already on the server, you can just use JS9.Load() to load them. No need for LoadProxy

Thanks! Looks like I've been labouring under some misapprehensions. I've realized now that what I'm really after is the fits2fits capability described in https://js9.si.edu/js9/help/repfile.html. Is there a way to ask the helper to start with a server-side FITS file (bypassing wget and curl), and generate a representation file?

Yes, you just have to turn on fits2fits. You can actually do this on a per-FITS basis in the JS9.Load command itself:
    JS9.Load("foo.fits", {fits2fits: true})

or you can add it to js9prefs.js to make it site-wide:
    "fits2fits": true

Using js9prefs.js in Jupyter, you'll need to turn off the helper and, as we are learning, probably turn off wasm as well (doesn't look like Jupyter deals with wasm properly, but I'm still looking).
You also might want to manipulate the global property that sets the size of the representation image:
image: {xdim: 2048, ydim: 2048, bin: 1},

Depending on what your data look like, you might want to change the image size (extraction from the center of the image) and/or binning factor. For example, Chandra X-ray data usually only needs the center, so we often leave the image dimensions alone and up the bin factor to make the transferred image smaller.

Using js9prefs.js in Jupyter, you'll need to turn off the helper and

I'm confused though -- if I turn off the helper, how do representation images get made? It has to happen on the server side, but without the helper, who's to initiate that process?

If I modify the request to ask for the socket.io code as text instead of as javascript, I do get a CORS error from the Jupyter server. I have no idea why Jupyter throws a CORS erorr, since it is using localhost for its server and I am using localhost for the JS9 helper, so I think this is an issue best taken up by our Jupyter experts.

Could you please try it with the workaround in #3?

If this is not the case, please let me know!

Not the case. Sorry, I'm pursuing so many leads at once that it has gotten quite confusing. Let me try to clarify. So, I have Jupyter's Tornado server running on port 8888, serving me a notebook. I also have a separate SimpleWebServer instance listening on port 12000. I have tried different ways to run JS9:

Starting JS9 inside an iframe, with localhost:12000 as the base URL, works perfectly fine, with or without the helper (but this means running a separate SimpleWebServer to support JS9, which is less than ideal). I still don't understand something about the helper, hence my earlier question, "Is there a way to ask the helper to start with a server-side FITS file (bypassing wget and curl), and generate a representation file from that?"

Starting JS9 inside an iframe with localhost:8888:/files as the base URL (so now it's Tornado serving the files) causes wasm errors, as discussed in #4.

Disabling wasm and the helper makes these errors go away, so it's definitely a case of Tornado screwing with wasm somehow.

Without wasm, I don't even need an iframe anymore -- I can load JS9 directly into a cell by replicating the directives from your js9.html. This is the ideal scenario, except now I don't have a helper...

So, as I understand  it, we have three problems remaining:

Tornado throwing CORS errors, for which I describe a workaround in #3. I'm not sure it's the right workaround long-term, but at least it works for now.

Tornado messing with socket.io -- if this can be resolved, I can get the helper going without needing a separate web server.  Earlier, you said: "If I modify the request to ask for the socket.io code as text instead of as javascript, I do get a CORS error...", which is why I suggested retrying this approach with the workaround of #3 in place -- just run jupyter notebook --NotebookApp.allow_origin='*'

Tornado messing with wasm (#4), which doesn't seem to be all that crucial anyway

@o-smirnov I am working on the Tornado server problems but it might take a while to get back to you. The use of --NotebookApp.allow_origin='*' did not allow the js9 helper's client socket io code to be retrieved by the Chrome or FF browser. I still get a CORS error, but I am now wondering whether this is an error from socket.io instead of Jupyter. I have to look into this and it will take a bit of time.
I have turned off wasm in the Jupyter environment but have not updated into GitHub. I need to understand all of this better before I commit. I don't understand what Jupyter is doing so that we get wasm errors in an iframe.

I still don't understand something about the helper, hence my earlier question, "Is there a way to ask the helper to start with a server-side FITS file (bypassing wget and curl), and generate a representation file from that?"

When fits2fits is enabled, either site-wide in js9prefs.js or by adding {fits2fits:true}) to a JS9.Load() call or a URL containing a JS9.Load() call, the browser knows to ask the js9 helper to extract a smaller file for display from the original file (which is one the server).
Have a look at the URLs in this demo:
https://js9.si.edu/js9/js9large.html

(The fits2fits property accepts conditional as well as true or false, but it sounds like you just want to set it for all files.)

Thanks very much! OK, I think I understand the helper side of things, and I've got the SimpleHTTPServer workaround to tide me over in the meantime. Let me know if there's anything I can do to help on the Tornado side, not that I understand much of it...

What would be useful, of course, is for a Jupyter expert to dig into how Jupyter handles javascript. I'm running Jupyter 4.4.0 (which miniconda recently installed for me) and I see on the first page of chapter 7 of the 4.4.1 doc:
https://media.readthedocs.org/pdf/jupyter-notebook/4.x/jupyter-notebook.pdf

the statement:
• Untrusted Javascript is never executed

Is that why we can't retrieve the client socketio javascript code from the js9 helper? And if so, is there any remedy? Or will we never be able to retrieve that script and connect to the helper? It would be most great if someone could look into the Jupyter side of things ...

Well, it also says later on, "Any output generated during an interactive session is trusted." So as far as I understand it, it doesn't (or doesn't mean to) sanitize any JS in our scenario. In fact no jupyter widgets or any such thing would would work if it did do that!
(Where the trust restrictions kick in is when you try to load an existing notebook that already contains saved output from its cells...)

But what we  are seeing is that JS9 makes a run-time XHR request of the js9 helper for the socket.io client javascript, and that request returns successfully ... but with a null string ... as if "someone" deleted the retrieved javascript. This is different from the cell loading some javascript, which we know does work.

the good news: I have made some minor changes to JS9 to trap a few CORS errors triggered by use of the Tornado web server and I can now enter the following into a cell and have everything work correctly:
%%html

To do this, you git pull the new code, and then manually turn off wasm in the js9Prefs.json file:
    useWasm: false

This requirement seems to be due to Jupyter doing something to the wasm file, but I have no idea what that is. I see very little mention of using wasm with Jupyter, so I don't know whether it is actually supported or not.
With this change, restart the helper, load the iframe into a cell, and ... in my case at any rate, the browser connects to the helper and I can load files, drag/drop files, do server-based analysis etc.
It would be good to verify that you can do this as well.
the bad news: when entering html/js/css directly into a cell, I simply cannot get Tornado to return anything but a null string when JS9 makes an XHR request for the socket.io javascript code. I added CORS to the helper so that I was running "allow CORS" at both ends, and the retrieved data is always null. I cannot  but believe that Jupyter is scrubbing the code for some reason and I don't know what do to about it.
Once you have a helper running successfully, we can tackle any fits2fits problems that arise. I know it's in use in the field, but of course there could be a bug ... or more Jupyter nuances.

Thanks, this is definite progress! I'll verify tomorrow when I'm back at a
keyboard.
On Wed, 04 Jul 2018, 21:39 Eric Mandel<EMAIL_ADDRESS>wrote:

the good news: I have made some minor changes to JS9 to trap a few CORS
errors triggered by use of the Tornado web server and I can now enter the
following into a cell and have everything work correctly:
%%html

To do this, you git pull the new code, and then manually turn off wasm in
the js9Prefs.json file:
useWasm: false

This requirement seems to be due to Jupyter doing something to the wasm
file, but I have no idea what that is. I see very little mention of using
wasm with Jupyter, so I don't know whether it is actually supported or not.
With this change, restart the helper, load the iframe into a cell, and ...
in my case at any rate, the browser connects to the helper and I can load
files, drag/drop files, do server-based analysis etc.
It would be good to verify that you can do this as well.
the bad news: when entering html/js/css directly into a cell, I simply
cannot get Tornado to return anything but a null string when JS9 makes an
XHR request for the socket.io javascript code. I added CORS to the helper
so that I was running "allow CORS" at both ends, and the retrieved data is
always null. I cannot but believe that Jupyter is scrubbing the code for
some reason and I don't know what do to about it.
Once you have a helper running successfully, we can tackle any fits2fits
problems that arise. I know it's in use in the field, but of course there
could be a bug ... or more Jupyter nuances.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/gijzelaerr/js9notebook/issues/2#issuecomment-402548545,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGK5vwxfo1O22XfRtZrbGQrCKWn-ro6Wks5uDRnlgaJpZM4Gw5JX
.

I opened an issue regarding wasm and jupyter here:
https://github.com/ipython/ipython/issues/11216

I'll do the same for the xhr/socket.io problem tomorrow, almost done with the illustrative test case.

It would be good to verify that you can do this as well.

Confirmed, this now works for me. In the interests of un-confusing this discussion, I'll open another issue for the xhr/socket.io problem. This way we have separate tickets to discuss the outstanding problems.

@ericmandel you can probably close this issue... all the remaining stuff has its own threads now.


Full blog posts show excerpt separator

When viewing a full blog post, the text '' is visible.
Example: https://velero.io/velero-is-an-open-source-tool-to-back-up-and-migrate-kubernetes-clusters/
The text '' should not be visible. This text is used to identify the end of a post excerpt shown in the blog-post-cards page.
https://github.com/heptio/velero/blob/master/site/_includes/blog-post-card.html
velero version 1.0

Closed by #1578


Weakness: duplicated path concatenation in the toolkit/dataset/vot.py

As the title describes, there exists two times path concatenations for the member variable named img_names belonged to the VOTVideo class.
One of them occurs at line 18 in toolkit/dataset/video.py , and the other one is  at  line 53 in toolkit/dataset/vot.py if the variable load_img is set to False.
Here are some examples.
absolute path
>>> a = '/home/username/test_dir'
>>> b = '/home/username/test_dir/test.py'
>>> c = os.path.join(a, b)
>>> print(c)
/home/username/test_dir/test.py # valid path

relative path
>>> a = './test_dir'
>>> b = './test_dir/test.py'
>>> c = os.path.join(a, b)
>>> print(c)
./test_dir/./test_dir/test.py # invalid path

Consequently, if users pass a relative path to the toolkit.datasets.DatasetFactory.create_dataset method, their programs will crash. So, please fix this weakness timely.

Thanks for pointing out
You are more than welcome to fix it and submit a pull request

Hi, I have a fix for this, but somehow don't have permission to open a PR. Are you guys still accepting contributions?

Hi, I have a fix for this, but somehow don't have permission to open a PR. Are you guys still accepting contributions?

Of course we are accepting contributions, could you please share the error message?

Yup, when I push my PR I get the following message:
"remote: Permission to STVIR/pysot.git denied to VishiNehra.
fatal: unable to access 'https://github.com/STVIR/pysot/': The requested URL returned error: 403"
Also, when I tried to make manually make a PR on github as a workaround, the "Create Pull Request" button was greyed out for me

Yup, when I push my PR I get the following message:
"remote: Permission to STVIR/pysot.git denied to VishiNehra.
fatal: unable to access 'https://github.com/STVIR/pysot/': The requested URL returned error: 403"
Also, when I tried to make manually make a PR on github as a workaround, the "Create Pull Request" button was greyed out for me

You should fork this repo first, which should appear as https://github.com/VishiNehra/pysot/, then, you should push your changes to that repo, and finally submit a pull request from your forked repo

Oops, totally forgot about forking the repo, thanks!

It leads to another BUG, that when I test on UAV123 after  "cd experiments/siamrpn_r50_l234_dwxcorr",
x == "group1/001333.jpg"
os.path.abspath(x) == "/home/pysot/experiments/siamrpn_r50_l234_dwxcorr/group1/001333.jpg"

However, the os.path.abspath(x) should be
os.path.abspath(x) == "/home/pysot/testing_dataset/UAV123/group1/001333.jpg"

When I test on UAV123 after "cd experiments/siamrpn_r50_l234_dwxcorr",
x == "group1/001333.jpg"
os.path.abspath(x) == "~/pysot/experiments/siamrpn_r50_l234_dwxcorr/group1/001333.jpg"

However, the converted x should be
"~/pysot/testing_dataset/UAV123/group1/001333.jpg"

In this situation, the code should be
self.img_names = [os.path.join(root, x) for x in img_names]

The "img_names" should be relative path starting from "root".

Hello, can i work on it?

@ZhiyuanChen There is a PR merged for this issue. Is this issue closed? If not, I would like to contribute