A3C: Questions

Dear Juliani
Excellent work!
I would like to know for how long you trained the A3C? and Number of frames used?
How do you find your your results compared to the original paper?   (Denny code did Not achieve the results of the original paper)
Did you  use the same A3C code for Atari games(openai/gym)? Is it easy to be done?
In case of breakout Atari game, do we still need the LSTM layer? and why?
Regards

Hi Ibrahim,

The amount of training time depends on the task at hand. Simple tasks would train very quickly (minutes), while more complex tasks may take days of training.

I haven't attempted to reproduce the results of the Mnih paper. However, I expect like Denny that without a large amount of hyperparameter optimization it would be difficult to achieve the results provided in their paper. I would instead recommend attempting to optimize for your own task, rather than for the ALE.

Reusing the A3C code for ALE or openAI gym is really simple, as I have built it to be modular.

The LSTM layer captures temporal dependencies. Any situation in which there are temporal dependencies you will either need an RNN layer, or stack enough frames to capture all the dynamics of the environment.


Crate docs should mention the logging levels and corresponding macros

Just a small overview of what's possible.

Hi, I would like to help with this

Great! Let us know if you get stuck.

Thanks for letting me help.
I will let you know :-)
Also, I'm new to Rust so any type of guidance is very welcome and appreciated.

@jesusbv How's it going?

Well, I started checking all code but dont know where to start really
any hint about what the goal or output should be, that would help me a lot
P.S: Sorry for any inconvenience, i want to help but im new to this

The levels are "error", "warn", "info", "debug", and "trace", in that order.
I think it would be appropriate for the "Use" section of the documentation, before it talks about the differences between libraries and executables, to explain that basic use of the libarary is through the error!, warn!, etc macros, linking to their definitions, that these macros accept formatting strings similarly to println!, linking to that macro.

@brson Thanks for the response and help, that gives me some guidance.


Estimate effort for high priority issues

@SPlanzer, am adding these effort labels. If you are in on Friday can you review please?
Roughly use this as a guideline, but don't get too caught up in trying to make it accurate.
small = < 2 hours
medium = 2 - 8 hours
large = > 8 hours

On Tuesday @Deb-Jones , @linzbjones  and I went over all open issue in this repo and reassessed these.
Acting on this ticket only three issues that are of milestone 1.0 were without effort labels. All of these are with deb to retest and have now been  given  "effort/small"


User Education -- tab navigation

This ticket involves organize learn and about pages to match the URL's here. The routes follow the folder structure, so /learn/role-of-testimony corresponds to pages/learn/role-of-testimony.tsx.
When the user switches tabs, we should update the tab query parameter. And when the page loads, we should show the appropriate tab based on the query parameter, if present. We should show about if it's missing.
(outstanding from issue 592 - rest (creating tabs) merged in PR Learn Tabs #613)

Hi


Example templateTAS and derived instruments are wrong

Examine the most-recent output.html file under https://new-nightly.mcstas.org/todays-datafiles/ to see that the templateTAS result parsed with mccode-antlr is ~44% too much.
This seems to be due to a parsing problem for the component parameter reflect on the Monochromator_curved components.
Both of the following result in the string being set to '\0'

reflect=(fabs(machine_hkl.dm-3.355) < 0.2 ? "HOPG.rfl" : ""))
reflect=machine_hkl.refl_file (with an appropriate redefinition of the struct and its new member)

This would seem to point to errors parsing struct members, at least for string component setting parameters.

The parsing error is confirmed and a new test exercises the problem. Once the error is fixed and the test passes, merging the branch issue-83-parse-error will resolve this issue.


Add some text about how a theme looks

Add a requirements about "two lines about how the theme looks" in the description field for a new theme.
See https://discuss.gohugo.io/t/theme-recommendations/5816/4

I had a look at this issue and the associated (old) discussion in the forum.
Also I had a look at the Web Content Accessibility Guidelines (WCAG) 2 of W3C that state the following:

Decoration, Formatting, Invisible: If non-text content is pure decoration, is used only for visual formatting, or is not presented to users, then it is implemented in a way that it can be ignored by assistive technology.

Since this issue is about describing the layout of the various themes it seems to me that this goes beyond the aforementioned WCAG 2 guidelines.
I am closing this issue for the above and the following reasons:
The original poster in the forum also acknowledged the such a description was not expected.
It's been 2 and a half years since this issue was opened and since then hundreds of themes have been added to the Hugo showcase.
Most themes already feature descriptions about their use case and also describe the layout i.e. minimal, restaurant showcase etc.
If the need arises again for us to provide assistance to a visually impaired person for selecting a theme based on aesthetic requirements then we can do so either in the issue tracker of this repo or in the Hugo forum.


Stack traces from Flutter web app don't deobfuscate function names

Continuing from here: https://github.com/getsentry/sentry-dart/issues/897#issuecomment-1539666926
Platform
Flutter Web
Obfuscation
Disabled
Debug Info
Disabled
Doctor
Flutter 3.7.12 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 4d9e56e694 (3 weeks ago) • 2023-04-17 21:47:46 -0400
Engine • revision 1a65d409c7
Tools • Dart 2.19.6 • DevTools 2.20.1
Version
7.5.1
Steps to Reproduce

flutter create sentry_flutter_web_stacktraces_repro

cd sentry_flutter_web_stacktraces_repro

flutter pub add sentry_flutter

flutter pub add dev:sentry_dart_plugin

Configure sentry_dart_plugin:
sentry:
  upload_debug_symbols: false
  upload_source_maps: true
  org: ...
  project: ...
  auth_token: ...
  commits: false

Replace lib/main.dart with the following:
void main() {
  SentryFlutter.init(
    (options) {
      options.dsn = '...';
    },
    appRunner: () => runApp(const MainApp()),
  );
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              throw Exception('Test exception');
            },
            child: const Text('Throw exception'),
          ),
        ),
      ),
    );
  }
}

Configure DSN in main.dart

flutter build web --source-maps

dart run sentry_dart_plugin

cd build/web

Start a web server to serve the files, e.g. caddy file-server

Open the web app in a browser, wherever it is served, e.g. http://localhost.

Click on the "Throw exception" button

Expected Result
The stack trace for error events sent to sentry should contain deobfuscated funtion names.
Actual Result
While the correct line and column numbers have been recovered, function names are not deobufscated:
minified:Gi: Exception: Test exception
  at A.c(org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart:1128:37)
  at A.Tt.prototype.$0(../../../lib/main.dart:24:15)
  at A.v6.prototype.Em(../../../../../../fvm/versions/stable/packages/flutter/lib/src/widgets/framework.dart:921:26)
  at A.akv(org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart:2105:9)
  at A.cN.prototype.EC(../../../../../../fvm/versions/stable/packages/flutter/lib/src/gestures/recognizer.dart:253:16)
  at A.cN.prototype.fG(../../../../../../fvm/versions/stable/packages/flutter/lib/src/gestures/recognizer.dart:239:6)
  at A.fA.prototype.Eo(../../../../../../fvm/versions/stable/packages/flutter/lib/src/gestures/tap.dart:627:11)
  at A.xl.prototype.zd(../../../../../../fvm/versions/stable/packages/flutter/lib/src/gestures/tap.dart:306:5)
  at A.xl.prototype.El(../../../../../../fvm/versions/stable/packages/flutter/lib/src/gestures/tap.dart:239:7)
  at A.nF.prototype.i4(../../../../../../fvm/versions/stable/packages/flutter/lib/src/gestures/recognizer.dart:615:9)

Link to an example event: https://gabriel-59.sentry.io/issues/4170223115/events/234cd5801ab546e3a8812316462ebda4/?project=4505149812834304
Are you willing to submit a PR?
None

Thanks @blaugold , will test it out.

Image:

JSON event:
event.txt
Uploaded bundle:

Bundle:
main.txt
For some reason, I don't see the uploaded main.dart.js.map on the Bundle page.
Either the generated source maps changed something or there's a regression in our system, I will check this internally.

@loewenheim should we close this as done? re https://github.com/getsentry/symbolic/pull/786

Actually I meant to post the corrected stacktrace here for feedback, thanks for reminding me :)
With the linked symbolic change, we now get this stacktrace for the provided example program:

Frame #0
     Function:  wrapException
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart
  Line/Column:  1128:37

Frame #1
       Module:  lib/main
     Function:  MainApp.build.<anonymous function>
         File:  ../../../lib/main.dart
  Line/Column:  23:15

Frame #2
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/widgets/framework
     Function:  _InkResponseState.handleTap
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/widgets/framework.dart
  Line/Column:  921:26

Frame #3
     Function:  A.aku
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart
  Line/Column:  2105:9

Frame #4
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/recognizer
     Function:  GestureRecognizer.invokeCallback
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/recognizer.dart
  Line/Column:  253:16

Frame #5
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/recognizer
     Function:  A.cN.prototype.fG
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/recognizer.dart
  Line/Column:  239:6

Frame #6
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/tap
     Function:  TapGestureRecognizer.handleTapUp
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/tap.dart
  Line/Column:  627:11

Frame #7
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/tap
     Function:  BaseTapGestureRecognizer._checkUp
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/tap.dart
  Line/Column:  306:5

Frame #8
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/tap
     Function:  BaseTapGestureRecognizer.handlePrimaryPointer
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/tap.dart
  Line/Column:  239:7

Frame #9
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/recognizer
     Function:  PrimaryPointerGestureRecognizer.handleEvent
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/recognizer.dart
  Line/Column:  615:9

Frame #10
     Function:  A.aku
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart
  Line/Column:  2115:9

Frame #11
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/pointer_router
     Function:  PointerRouter._dispatch
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/pointer_router.dart
  Line/Column:  98:7

Frame #12
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/pointer_router
     Function:  PointerRouter._dispatchEventToRoutes.<anonymous function>
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/pointer_router.dart
  Line/Column:  143:9

Frame #13
     Function:  JsLinkedHashMap.keys.dn.prototype.P
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart
  Line/Column:  190:7

Frame #14
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/pointer_router
     Function:  PointerRouter._dispatchEventToRoutes
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/pointer_router.dart
  Line/Column:  141:5

Frame #15
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/pointer_router
     Function:  PointerRouter.route
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/pointer_router.dart
  Line/Column:  127:7

Frame #16
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding
     Function:  GestureBinding.handleEvent
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding.dart
  Line/Column:  460:5

Frame #17
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding
     Function:  GestureBinding.dispatchEvent
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding.dart
  Line/Column:  440:15

Frame #18
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/rendering/binding
     Function:  _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding&SemanticsBinding&RendererBinding.dispatchEvent
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/rendering/binding.dart
  Line/Column:  336:11

Frame #19
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding
     Function:  GestureBinding._handlePointerEventImmediately
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding.dart
  Line/Column:  395:7

Frame #20
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding
     Function:  GestureBinding.handlePointerEvent
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding.dart
  Line/Column:  357:5

Frame #21
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding
     Function:  GestureBinding._flushPointerEventQueue
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding.dart
  Line/Column:  314:7

Frame #22
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding
     Function:  GestureBinding._handlePointerDataPacket
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/packages/flutter/lib/src/gestures/binding.dart
  Line/Column:  295:7

Frame #23
     Function:  A.aku
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart
  Line/Column:  2115:9

Frame #24
     Function:  A.a6K
         File:  org-dartlang-sdk:///lib/async/zone.dart
  Line/Column:  1414:12

Frame #25
     Function:  _rootRunUnary
         File:  org-dartlang-sdk:///lib/async/zone.dart
  Line/Column:  1404:3

Frame #26
     Function:  _CustomZone.runUnary
         File:  org-dartlang-sdk:///lib/async/zone.dart
  Line/Column:  1306:34

Frame #27
     Function:  _CustomZone.runUnaryGuarded
         File:  org-dartlang-sdk:///lib/async/zone.dart
  Line/Column:  1216:7

Frame #28
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/platform_dispatcher
     Function:  invoke1
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart
  Line/Column:  1185:9

Frame #29
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/platform_dispatcher
     Function:  PointerBinding._onPointerData
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart
  Line/Column:  243:5

Frame #30
     Function:  A.aku
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart
  Line/Column:  2115:9

Frame #31
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/pointer_binding
     Function:  _PointerAdapter.setup.<anonymous function>
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart
  Line/Column:  689:20

Frame #32
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/pointer_binding
     Function:  _PointerAdapter._addPointerEventListener.<anonymous function>
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart
  Line/Column:  620:7

Frame #33
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/pointer_binding
     Function:  _BaseAdapter.addEventListener.loggedHandler
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart
  Line/Column:  303:9

Frame #34
       Module:  usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/pointer_binding
     Function:  _Listener.register.<anonymous function>.a3C.prototype.$1
         File:  /usr/local/Caskroom/flutter/3.7.12/flutter/bin/cache/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart
  Line/Column:  188:73

Frame #35
     Function:  Primitives.applyFunction
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart
  Line/Column:  851:11

Frame #36
     Function:  Function.apply
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart
  Line/Column:  84:23

Frame #37
     Function:  _callDartFunctionFast
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_patch.dart
  Line/Column:  545:3

Frame #38
     Function:  _convertDartFunctionFast
         File:  org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_patch.dart
  Line/Column:  523:1

Errors during symbolication
        Path:  http://localhost/main.dart.js
       Error:  Missing source contents for source file org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart and sourcemap file http://localhost/main.dart.js.map

        Path:  http://localhost/main.dart.js
       Error:  Missing source contents for source file org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart and sourcemap file http://localhost/main.dart.js.map

        Path:  http://localhost/main.dart.js
       Error:  Missing source contents for source file org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_patch.dart and sourcemap file http://localhost/main.dart.js.map

        Path:  http://localhost/main.dart.js
       Error:  Missing source contents for source file org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart and sourcemap file http://localhost/main.dart.js.map

        Path:  http://localhost/main.dart.js
       Error:  Missing source contents for source file org-dartlang-sdk:///lib/async/zone.dart and sourcemap file http://localhost/main.dart.js.map

As you can see, most function names are now resolved, but we don't have source contents for all files.

@loewenheim is this deployed and live already? If so, @blaugold mind testing once more? Thanks!

It's not live yet, I'll get it ready ASAP

Closed this prematurely. The fix is now live.

Thanks for the swift fix! For synchronous code, I now get the correct function names. 🎉  Unfortunately, it does not solve the issue for async code. 😅
If you change the function that throws the exception to the code below, the throwing frame is reported like this:   at $async$$0(../../../lib/main.dart:25:15).
onPressed: () async {
  await Future(() {});
  throw Exception('Test exception');
},

Here is an example of how the source_map_stack_trace  package can be used to unminify even async code:
import 'dart:convert';
import 'dart:io';

import 'package:source_map_stack_trace/source_map_stack_trace.dart';
import 'package:source_maps/source_maps.dart';

const stackTraceString = r'''
minified:GR: Exception: Test exception
    at Object.b (main.dart.js:4293:3)
    at <fn> (main.dart.js:56371:16)
    at a45.a (main.dart.js:5603:62)
    at a45.$2 (main.dart.js:31015:14)
    at a2X.$1 (main.dart.js:31009:21)
    at Object.a3Z (main.dart.js:5858:19)
    at Ed.<fn> (main.dart.js:57768:68)
    at Gh.jD (main.dart.js:31819:12)
    at a0i.$0 (main.dart.js:31350:11)
    at Object.p3 (main.dart.js:5729:40)
''';

void main() {
  final mapping = SingleMapping.fromJson(jsonDecode(File('build/web/main.dart.js.map').readAsStringSync()));
  final stackTrace = StackTrace.fromString(stackTraceString);
  final mappedStackTrace = mapStackTrace(mapping, stackTrace, minified: true);
  print(mappedStackTrace.toString());
}

And this is its output:
org-dartlang-sdk:///dart-sdk/lib/_internal/js_runtime/lib/js_helper.dart 1195:37   wrapException
../../../lib/main.dart 25:15                                                       MainApp.build.<anonymous function>
org-dartlang-sdk:///dart-sdk/lib/_internal/js_runtime/lib/async_patch.dart 306:19  _wrapJsFunctionForAsync
org-dartlang-sdk:///dart-sdk/lib/_internal/js_runtime/lib/async_patch.dart 331:23  _wrapJsFunctionForAsync.<anonymous function>
org-dartlang-sdk:///dart-sdk/lib/_internal/js_runtime/lib/async_patch.dart 282:19  _awaitOnObject.<anonymous function>
org-dartlang-sdk:///dart-sdk/lib/async/zone.dart 1407:46                           _rootRunUnary
org-dartlang-sdk:///dart-sdk/lib/async/zone.dart 1405:3                            _rootRunUnary[function-entry$5]
org-dartlang-sdk:///dart-sdk/lib/async/zone.dart 1307:34                           _CustomZone.runUnary
org-dartlang-sdk:///dart-sdk/lib/async/future_impl.dart 112:29                     _FutureListener.handleValue
org-dartlang-sdk:///dart-sdk/lib/async/future_impl.dart 813:13                     _Future._propagateToListeners

Looking at how source_map_stack_trace and source_maps work, there does not seem to be anything special, as far as I can tell with my limited knowledge of source maps.
For reference, here is how source maps are parsed and here how a location is looked up.

Running the source map from the example through symbolic I can see that a useful function name is available in the name field of a source location.
#[test]
fn dart_debug() {
    let minified = std::fs::read_to_string(fixture("sourcemapcache/dart/main.dart.js")).unwrap();
    let map = std::fs::read_to_string(fixture("sourcemapcache/dart/main.dart.js.map")).unwrap();

    let writer = SourceMapCacheWriter::new(&minified, &map).unwrap();

    let mut buf = vec![];
    writer.serialize(&mut buf).unwrap();

    let cache = SourceMapCache::parse(&buf).unwrap();

    let sl = cache.lookup(SourcePosition::new(56371, 16)).unwrap();
    println!("{:?}", sl);
}

   Compiling symbolic-sourcemapcache v12.1.5 (/Users/terwesten/dev/symbolic/symbolic-sourcemapcache)
    Finished test [unoptimized + debuginfo] target(s) in 0.40s
     Running tests/integration.rs (target/debug/deps/integration-9650d2080c26a134)

running 1 test
SourceLocation { file: Some(File { name: Some("../../../lib/main.dart"), source: None, line_offsets: [LineOffset(0)] }), line: 25, column: 13, name: Some("MainApp.build.<anonymous function>"), scope: NamedScope("$async$$0") }
test dart_debug ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 1.91s

Would it be a problem to use the mapped name for function names of Dart stack traces when available instead of scope?

@loewenheim can you take a look at this use case as well?

Thanks @blaugold for debugging this with us.
I've raised the issue https://github.com/getsentry/symbolic/issues/791
Let's track the linked issue there, closing this one since the original bug is resolved.


Improve test debugability, fix race condition in set_initial_connect_string_test

Fixes #6669

Test failure unrelated: let's get this in soon though, since it's an open wound that's starting to fester.

LGTM.


Review and add sample grant CSV (from NCAR) to PASS to share via local machine

What?
Add NCAR sample grant data to PASS on dev local machine to share in demo.
Per NCAR:
NCAR receives a lot of grants from other federal agencies, but I was not able to find all of the relevant information for any funders beyond NSF. Also, I am not sure what the funder codes should be, so these are left blank even though you indicated that they are mandatory.
Why?
We want as much sample data from our community institutions as possible to see how the simple grant data loader will work. Would like to be able to share PASS demo w/ group in Feb 28 meeting.
How?
Reference
Link to data
Related tickets
n/a

@markpatton @dkriethof I was able to import the ncar csv after making the following updates:

Set PRIMARY_FUNDER_CODE and DIRECT_FUNDER_CODE to 1 for all the rows (these are required).
Changed the AWARD_START and AWARD_END to include the time (00:00:00), the time part is required.

After that, I was able to import all three rows and look at the data using the /data/... URLs.
Output from grant loader running locally:
14:40:34.986 [      main] WARN  [AbstractDefaultPassUpdater] - Processing result set with 3 rows
14:40:36.437 [      main] WARN  [ GrantLoaderApp] - 3 grant records processed; the most recent update in this batch has timestamp 2023-02-01 13:10:02
3 Pis and 0 Co-Pis were processed on 3 grants

Pass Activity

3 Grants were created; 0 Grants were updated
2 Users were created; 0 Users were updated
1 Funders were created; 0 Funders were updated

I did find a small bug in the grant loader related to updating grants with null award start and end timestamps.  It has been there since day 1; I will open a issue to fix it.

Added note here for the exception I hit: https://github.com/eclipse-pass/main/issues/813#issuecomment-1967481819
It is related to the award start and end date logic that needs review in general.


Update exec-env for change in asdf current output

This change now properly selects the version field and deals with excess whitespace between fields

@bram2000 I'm not sure if it's necessary to support output from previous versions of asdf, I'm unsure when this breaking change to the output of asdf current occurred.

Merged, thank you!


Support feteching T, (T, U), (T, U, P)..etc where they impl TryGetableMany

Resolve #180
This is not the best API for sure! but we can start with this. One blocker that I got was SelectorTrait::from_raw_query_result is a function, which doesn't help when I want to store some data into SelectGetableValue, so I used generic type C to work around this, but yeah we don't get very ergonomic API.

if we could convert SelectorTrait::from_raw_query_result to be a method instead of function, that would help us have way better API in this PR.
But I think this is breaking change API.

Thanks!! @MuhannadAlrusayni

if we could convert SelectorTrait::from_raw_query_result to be a method instead of function, that would help us have way better API in this PR.

I think this is worth doing as this enable us to store metadata that is useful when performing from_raw_query_result.  And it's potentially useful for downstream types that implement SelectorTrait.


fix git clone link, add load_data jupyter

nice

This PR seems to primarily rename a number of directories that we don't want to rename.  It also changes the org from neo4j-partners to a personal org.  It looks like this may have been submitted by accident.  If I'm mistaken, please let me know.


Greetings from Xarray-Spatial

Hello udfs,
This is xarray-spatial stopping by to say we've recently updated to work with Python 3.12 which was an overdue change.
I see here that xarray-spatial is a dependency for udfs, feel free to reach out if you'd like to bounce around ideas or feature requests for xrspatial.
Hope all is swell with y'all and keep up the great work!
Sincerely,
Xarray Spatial

We appreciate the shoutout @brendancol! I sent a request to connect and converse. 😊


New version: HDF5 v0.12.5

Registering package: HDF5
Repository: https://github.com/JuliaIO/HDF5.jl
Created by: @musm
Version: v0.12.5
Commit: 59b27c3d1433373c401e888495579e851c2eb5c0
Reviewed by: @musm
Reference: https://github.com/JuliaIO/HDF5.jl/commit/59b27c3d1433373c401e888495579e851c2eb5c0#commitcomment-35766373

Please fix the compatibility bounds for the next release such that it will be automatically merged.


After getSecret is called, unwind the stack so that nodecredstash's .…

…catch doesn't catch exceptions thrown within the callback

Going to just switch to promises instead.


Balance string representation lacks information

Representing a balance by just showing the total amount leaves out important information. The balance is more accurately represented as a cash portion and a bank portion, since the total can be calculated by adding, whereas the opposite cannot. You can still put the total in the string representation, but leaving out the cash and bank makes it much harder to distinguish between someone with 500 cash or 500 bank, or -2000 cash and 2500 bank.

Alright, initially i removed this information because it seemed unnecessarily long, but i understand your point so i added the info with commit a4a432a .


Remove log warning from cache component when the key is greater than 64 characters.

Hi,
In the hyperf/cache component, when the key is greater than 64 characters, outputs a log line like this:
[WARNING] The cache key length is too long. The key is<PHONE_NUMBER>8,11002058127,11002389746,11002595422,11003362481,11001832828
Taking into account that redis can handle very very very big keys without impact in perfomance I think that 64 characters is very low to show a warning. The warning is shown in:
hyperf/cache/src/AnnotationManager.php:
    protected function getFormatedKey(string $prefix, array $arguments, ?string $value = null): string
    {
        $key = StringHelper::format($prefix, $arguments, $value);

        if (strlen($key) > 64) {
            $this->logger->warning('The cache key length is too long. The key is ' . $key);
        }

        return $key;
    }

To show unneeded information in the logs can hide what is really relevant.
Thanks a lot for your fantastic work!
Bye.

It will be removed in v3.0

Thanks  😄


[Cluster Object Model] change data node template files

data node don't need its own config items,  ignore parser

Coverage remained the same at 51.762% when pulling d9587a5b7e337c8b5bbdeb218bb74b6bbc42fc11 on zimiao/hadoop_datanode_parser into 1cf840a666afa09b05d02e74b489ea3f11e7fa2b on yuye/improve-com.


[Feature] SliceSampler

In this PR I propose a new sampler that samples slices of data in a storage.
To keep the batch-size unchanged, the user has to specify how many slices she wants out of the batch-size. Alternatively, we could ask for a trajectory length (or one of these but not both).
The idea is that given a storage of size [N] split in M trajectories which lengths sum to N, we can sample trajectories when we know the start and stop signals. To gather these, users can pass either the key pointing to the trajectory indicators or a done state.
Note: passing "done" can be dangerous since if one gets an incomplete trajectory it will not be marked as "done" at the last step! Using the "truncated" signal from the collector could be an alternative, but in general it should be safer to use the trajectory indicator. The user is responsible of making sure that two consecutive trajectories do not share the same indicator.
Computing the start and stop signals can be expensive, and for static datasets one could cache the start and stop signals. This speeds up sampling by an important factor (0.3 ms with caching vs 1ms on my computer)
Example code:
import timeit
import torch
import tqdm

from tensordict import TensorDict
from torchrl.data.replay_buffers import LazyMemmapStorage, \
    TensorDictReplayBuffer
from torchrl.data.replay_buffers.samplers import SliceSampler

prefetch = 0
for cache in [True, False]:
    rb = TensorDictReplayBuffer(
        storage=LazyMemmapStorage(1_000_000),
        sampler=SliceSampler(cache_values=cache, num_slices=10),
        batch_size=320,
        prefetch=prefetch
        )
    episode = torch.zeros(1000, dtype=torch.int)
    episode[:300] = 1
    episode[300:550] = 2
    episode[550:700] = 3
    episode[700:] = 4
    data = TensorDict(
        {
            "episode": episode,
            "obs": torch.randn((3, 4, 5)).expand(1000, 3, 4, 5),
            "act": torch.randn((20,)).expand(1000, 20),
            "other": torch.randn((20, 50)).expand(1000, 20, 50),
        }, [1000]
    )
    for _ in tqdm.tqdm(range(1000)):
        rb.extend(data)

    print(prefetch, min(*timeit.repeat("rb.sample()", globals={"rb": rb}, number=1000)))

Results in 0.3468737329999989 ms with caching, 1.150314997999999 without
This PR paves the way for a new API to store trajectories, where one can flatten the data coming from the collector and extend the RB with it. Storing trajectories of different lengths will be easy, and sampling trajectories should be cheaper. This will also participate in making the dataset and dymanic RB APIs uniform.
Pseudocode:
for data in collector: # data is of shape [N, T]
    replay_buffer.extend(data.view(-1)) # adds the N consecutive trajectories of length T
    samples = replay_buffer.sample(M) # M elements divided in N slices
    samples = samples.view(N, -1)

Ultimately, we will be able to deprecate the hacky "_data" key in TensorDictReplayBuffers that is bothering us so much!
cc: @matteobettini @albertbou92 @BY571 @skandermoalla @nicklashansen @truncs @btx0424 @smorad @vikashplus
Question

Should batch_size indicate the number of slices (ie, trajectories) sampled?
Related: Should we return batches of size [M, N] where M is the number of slices and N the trajectory lengths?
Last one: what do we do if some trajectories have an insufficient length? Should they be considered (and possibly padded)? IMO we should just return an exception or a warning but i'm open to other suggestions.

Related issues
https://github.com/pytorch/rl/issues/1671
https://github.com/pytorch/rl/issues/1079
TODO:

[x] Doc
[x] Tests

This is great! Some thoughts -

I think sampling in just trajectories would be great but I can see how some API users would like to have more control of how to convert the chunks to trajectories.
Trajectories of insufficient chunk length should be padded up to the chunk size and saved IMHO. Another option could be to let API users pass a function to handle this case where they can decide if they want to throw an exception or just pad the insufficient chunks.

I'm not sure to understand the use case of this. Could you put in more context?
It seems useful to methods that use full episodes.

Should batch_size indicate the number of slices (ie, trajectories) sampled?

Yes, it seems a bit odd and error prone to have hald the information in the slice variable and the other half in the batch size.

Related: Should we return batches of size [M, N] where M is the number of slices and N the trajectory lengths?

This would allow to have a determinitic batch size, but would be lots of zeros. I would prefer a determinitic batch size by default, and if there's a way to save memory on the tail it'd be great.

Last one: what do we do if some trajectories have an insufficient length? Should they be considered (and possibly padded)? IMO we should just return an exception or a warning but i'm open to other suggestions.

What does insuffient lenght mean here?
It seems like sampling and giving a mask to user would be the easiest.

The transform?

I'm not sure to understand the use case of this. Could you put in more context?

Sure!
Currently, when people need to sample trajectories, we advise them to build RBs storages with shape [N, T], but that's clunky because it means that if I tell you "build a RB of 1M elements" you have to divide 1M by the traj length.
Also it means that you have to pad or use trajs that all have the same length. On top of that, getting sub-trajectories is hard and inefficient... Finally, because in general trajectory (episode) lengths cannot be assumed to be identical so we store them as [N x T], but people will eventually want to sample some trajectories or some parts of trajectories...

It seems useful to methods that use full episodes.

Should batch_size indicate the number of slices (ie, trajectories) sampled?

Yes, it seems a bit odd and error prone to have hald the information in the slice variable and the other half in the batch size.

On the other hand, you will get more elements than you asked for! Could be surprising too.

Related: Should we return batches of size [M, N] where M is the number of slices and N the trajectory lengths?

This would allow to have a determinitic batch size, but would be lots of zeros. I would prefer a determinitic batch size by default, and if there's a way to save memory on the tail it'd be great.

Why lots of zeroes? What I meant is: should this reshape happen within the transform?
https://github.com/pytorch/rl/blob/0d7631a1c6a86625d0d95d0dc1b18c7f9245a712/torchrl/data/replay_buffers/samplers.py#L539-L541

Last one: what do we do if some trajectories have an insufficient length? Should they be considered (and possibly padded)? IMO we should just return an exception or a warning but i'm open to other suggestions.

What does insuffient lenght mean here? It seems like sampling and giving a mask to user would be the easiest.

Say some trajectories in your buffer have length 10, and you ask for a batch of total 320, across 10 splits: you will want have traj length of 32, which is greater than 10 -> should we pad or jusy throw an exception?

The transform?

Sorry it's Friday, I meant the sampler!

This is very cool and it is much needed to have an easy way to sample trajectories!
I am a bit confused from the decrtiption though, it seems to me that N and M are overloaded in different parts of the text

for data in collector: # data is of shape [N, T]
    replay_buffer.extend(data.view(-1)) # adds the N consecutive trajectories of length T
    samples = replay_buffer.sample(M) # M elements divided in N slices
    samples = samples.view(N, -1)

Why is T trajectory length? in normal collectors T is just the number of collected frames divided by the batch size of collection

I think we might benefit from rewriting the description with clearer symbols and a recap of the current state of affairs prior to this change
My opinion

I think users should request a desired trajectory length rather than a number of slices (at construction of the sampler). this is more intuive as most people care how long the traj fragment is (leaving this as a byproduct of number_of_slices is counterintuitive to me ). Therefore I would prefer something like TrajectorySampler(cache_values=cache,traj_length=10). For this reason is also suggest naming the sampler TrajectorySampler
Regarding the batch size, when users request buffer.sample(n_samples) I think they should get a td with batch_size [n_slices,traj_length] where n_slices is computed as n_samples / traj_length (n_samples and traj_length are the user-defined quantities and n_slices is the byproduct)
If the actual episode length is different from the traj_length length provided at construction (longer for some episodes, shorter for some other). We should:

if shorter: pad and give a warning that some are padded
if longer: just cut it at  traj_length and put the overflowing bit in the next slice

Good points
I think we should raise an error if the length is shorter unless users explicitly set a pad arg to True, because literally everyone in RL disable warnings, and no one ever looks at the log.

if longer: just cut it at traj_length and put the overflowing bit in the next slice

I don't get that

if longer: just cut it at traj_length and put the overflowing bit in the next slice

I don't get that

If the user requests 100 samples and my buffer has one epsiode which is 100 steps long and the user asked to sample trajectory fragments of length 70, we should return 2 fragments in a td of batch size [2,70]:

the first fragment is the first 70 steps
the second fragment is the last 30 steps plus 40 padded steps (supposing pagging is reuqested)

That isn't the contract of this class, which is to sample randomly subsequences (this is why it isn't a trajectory sampler but a slice sampler - it samples incomplete episodes). This is also why we add a truncated signal at the end.
The implementation you're suggesting seems more constraining to me, and surprising: consecutive samples of a batch should not be correlated.
I don't see why we should complete the trajectory in the next batch, what's the advantage? If users want full trajectories of length 100 why not asking for that?
In this implementation, I could also expect a slice of length 70 without padding because all my trajectories are longer than 70, and here I'll get some trajectories that are padded. Pretty sure that will lead to issues on the repo!

Another issue with this is that it seems to be that it assumes that all trajectories have the same length. Say this is not the case (eg, all our datasets) and you want sub trajs of length 100. One trajectory may be 101 transitions long so you will get 2 batches, one of 100 and another padded of 1. Users will never see the second batch contiguously with the first (it will appear like this one element alone isn't part of the same trajectory). Also it's not clear what's the batch size here: 200? 101? What if users wanted only 100 transitions? What if they wanted 200, should they get samples from another trajectory too, thereby having a varying output size from the buffer?

I updated the description!

Thanks for the update! The new descriptions clears a lot of things and the choice of leaving to the users if they want to give S or U is great imo!
I guess the point I got confused about is if sampling is handled with or without replacement.
Ideally, both on policy algos (like PPO) and off policy algos may want to use this, so maybe the replacement strategy of this sampler might be important.
What I understand from your answers is that this sampler samples with replacement (so the data of 2 slices sampled in the same call could be the same)
I still think though I am not getting some API details of this sampler, so here are some examples that would be helpful for me to clarify:

from what i understand, data from different episodes will never be present in the same slice. I.e. a slice will always contain a fragment from the same episode
Are we sampling from trajectories independently? For example, if i have a buffer containing 2 episodes: one of length 30 and the other of length 70, and the users asks for 100 samples in 2 slices of length 50 each, can you explain what would be given to the user?

Are we going to sample 2 slices of 50 from the episode with length 70?
Are we going to sample one slice from the episode with length 70 and one padded one from the episode with length 30?
Are we going to sample in a random way and pad if there are not 50 steps after the selected starting indices?

What I understand from your answers is that this sampler samples with replacement (so the data of 2 slices sampled in the same call could be the same)

yes but that can be edited

from what i understand, data from different episodes will never be present in the same slice. I.e. a slice will always contain a fragment from the same episode

yes that is the point, but we could also loosen that (RNNs and value estimators allow mixed trajectories in torchrl so that wouldn't be an issue for them)

Are we sampling from trajectories independently? For example, if i have a buffer containing 2 episodes: one of length 30 and the other of length 70, and the users asks for 100 samples in 2 slices of length 50 each, can you explain what would be given to the user?

We sample first the episodes, then within the episodes. So each element does not have the same probabilty of ending up in the batch. Not sure how to implement the other option mathematically: perhaps sample items from the buffer and then sample a slice around these samples. That will mean that some trajectories have a higher priority than others, which is as opinionated as the first.

if i have a buffer containing 2 episodes: one of length 30 and the other of length 70, and the users asks for 100 samples in 2 slices of length 50 each

Currently, you would have one sample of 50 from trajectory 1 and a sample of length 30 + 20 pads from trajectory 0.

@matteobettini What does sampling without replacement mean?
If I have a trajectory of length 101 and ask for length 100, the second time I sample from it I will have only 1 sample. This means that the samples at the end of the epoch will be degenerated. If we samples another slice that contains that element, longer trajectories will have less repetitions across samples (and it won't be truly without replacement). The only option I see would be so sample each trajectory only once (that makes more sense to me) but then we would end up with a different likelihood per transition in the buffer (which I don't think is an issue).
Remember that in some settings people allocate themselves a number of "episodes" rather than a number of "transitions", which kind of make sense: for cartpole for instance, if you solve it in 100 episodes and not 200 it's way more impressive than 1000 samples and not 2000 (since success = longer episode)

Are we sampling from trajectories independently? For example, if i have a buffer containing 2 episodes: one of length 30 and the other of length 70, and the users asks for 100 samples in 2 slices of length 50 each, can you explain what would be given to the user?
We sample first the episodes, then within the episodes. So each element does not have the same probabilty of ending up in the batch. Not sure how to implement the other option mathematically: perhaps sample items from the buffer and then sample a slice around these samples. That will mean that some trajectories have a higher priority than others, which is as opinionated as the first.
if i have a buffer containing 2 episodes: one of length 30 and the other of length 70, and the users asks for 100 samples in 2 slices of length 50 each
Currently, you would have one sample of 50 from trajectory 1 and a sample of length 30 + 20 pads from trajectory 0.

Now I got it! Thanks for clarifying!
To me it was not clear that we first sample episode indeces and then slices.
So the sampling with replacement happens at 2 levels: for episodes (first) and trajecotries (second).
Or is the first sampling of episodes with replacement?
Yes I guess this has some implications. Basically each episode will be weighted equally (so if you have an episode of length 1 where the agent committed suicide in one step) this will have a dedicated slice of length U (potentially polluting the data)
The other implementation I was referring to is that you sample S indeces at random in the buffer flattened data and then you look U steps in the future from that index (if you do not have U steps in the future, you pad the remaining ones).
This implementation removes the hierarchical sampling (of episodes first and then trajs), but (as you said) gives less weight to shorter trajectories.

@matteobettini added SliceSamplerWithoutReplacement, which simply inherits from both parent classes in a rather simple way.

Sorry for being late to the party. This is really cool and much clearer now!
Raising a broader question: the description of the PR seems outdated again, so for recent features do we want to rebuild the documentation and serve it somewhere? or rely on the PR descriptions for the temporary documentation?

Good point I can update it! But the doc should be accurate


Add more customizations to Crystal::Config.description

Allow passing in git sha and date to Makefile
Remove empty parens when date is ""
Add message when compiler was not compiled in release mode

When building in a nix derivation, there is no git directory, so you have to pass in the sha manually. Also, all the file modification times are set to epcoh, and I think it'd be nicer to just have the builds not have a date rather than the obviously wrong 1970-01-01.
I don't think we need to always have release mode information, but it would be useful I think to have a way to see when you're working with a non-release compiler.

I would prefer to only add a note about release mode when the compiler is not built in release mode.
Most regular users have a production compiler in release mode and shouldn't have to worry about that.
Such a note is helpful if you use a development build of the compiler, so it's sufficient to to mention in that case.

@straight-shoota that was my initial thought as well and it was that way with the first patch, before I applied @Sija's suggestions. I can put it back to only when not release.

Maybe make it a normal sentence, though? "The compiler was not built in release mode."

Ok I put it back to only in development mode and with a message. I figured an extra empty line makes it look nicer than with the two things with labels and colons.
bin/crystal --version
Using compiled compiler at .build/crystal
Crystal 1.8.0-dev [cafe86ee6]

LLVM: 15.0.7
Default target: aarch64-apple-darwin22.3.0

The compiler was not built in release mode

Also fixed the extra trailing space by using join.
I realized that I should have done the first review patch as a git fixup, so I fixed that with a force push, but it's otherwise the same commit to make it easier to track what changed. Then the second review fixes as a second fixup commit. Sorry about the force push, but I think it woudld have been more weird to have one review patch as a fixup and the other not.

Maybe make it a normal sentence, though? "The compiler was not built in release mode."

Using a sentence would make it harder to parse by a 3rd party tools.

crystal --version is in general not meant to be parsed other than that it begins with Crystal x.y.z. If a tool needs to query whether a Crystal compiler was built in release mode or not, it should do so via crystal env or a suitable crystal eval on the predefined constants under the Crystal namespace.
On a related note, IMO Crystal programs themselves should be able to know whether they are compiled under a release build of the compiler via {{ host_flag?(:release) }}. Currently host_flag contains only flags related to the host target triple though.

In my case (raven.cr) I need to query these information from within the Crystal program, so using CLI is not an option.

I don't think it makes any difference for machine readability if you grep the version config for the compiler was not built in release mode or release mode: false.
Exposing this information internally to the program is a different story, let's start a new feature discussion about this.. It's definitely available at compile time via {{ flag?(:release) }}, though.

{{ flag?(:release) }} returns whether the current program is to be compiled in release mode, not whether the current compiler was compiled in release mode.

crystal --version is in general not meant to be parsed other than that it begins with Crystal x.y.z.

The compiler spec failure on CI proves my point, as the failing spec expects that the last line of crystal --version's output contains the host target. (That should really be fixed as part of #13156 though)


Setup Unit Test Environment

Update karma.conf.js
Add Lib for unit test.
Add .mocha.opts for mocha option
Change test.js to spec.js
Remove test.html
Remove js folder in unit, manual

ping @kishu


An fix for Thorium updates on Windows 10/11.

Is your feature request related to a problem? Please describe.
Windows doesn't have auto-update.
Describe the solution you'd like, including relevant patches or source
Winget and Microsoft store is an idea or you can replicate the chrome method by make the browser check for updates and install automatically from the git. Brave, Edge and all others have their own updater integrated from the browser himself.
Winget is similar to sudo apt wich Winget is a package manager maintained by Microsoft running on CMD. Wich is useful for people who install software for developping stuffs such React apps has example.
Microsoft Store is another one where any developper could publish and let's user have their apps stay updated on the time. Somehow you may comply with the TOS of Microsoft to keep the app available.
Has i know, currently only Linux users can keep their browsers up to date. Soo i guess there a lot to do for it. Maybe you can check your browser source code and find the chrome updater system and try to figure out if you can link your git for the browser to check updates and automatically install updates. This could help a bit.
Did you read the FAQ?
https://thorium.rocks/faq

You can try using scoop. In addition, the auto-update module in Chrome is closed source and not open to Chromium.

For auto-update module you have to code it like Microsoft and Brave did for their browser and link it to the appropriate git repo. But i understand what's you think. Unfortunately this seem not enough user friendly for people who try to degoogolize their experience. Has i remember, Thorium executablae installation  file seem have the necessary to integrate the auto-update if Alex could figure out if his installer executable could has well update the browser in same time. I think this could work. Just make the installer on each startup of the browser to check the git repo updates, download and automatically install it. This can save times. DIscord and others electrons clients have their own auto-update in seperate executable. Just needs a solution for this.

I also recommend adding the automatic update detection function


HA - Unable to update charging_profile

Describe the issue
Within my home assistant I am seeing a lot of errors like that:
Logger: bimmer_connected.vehicle.vehicle
Source: components/bmw_connected_drive/coordinator.py:58
First occurred: 21:16:43 (8 occurrences)
Last logged: 21:51:48

Unable to update charging_profile - (TypeError) argument of type 'NoneType' is not iterable

It is X3 diesel version, so no any charging there or hybrid etc.
Maybe it should be reported to HA directly? Not sure, sorry...
Expected behavior
No erros
Which Home Assistant version are you using?
2024.5.5
What was the last working version of Home Assistant Core?
No response
What is your region?
Rest of world
MyBMW website

[X] I can still successfully login to the BMW MyBMW website and the car status is available there.
[X] I have MyBMW enabled for my vehicle.

Number of cars

[ ] I have 2 or more cars linked to the MyBMW account.
[ ] I have a Mini vehicle linked to my account.

Output of bimmer_connected fingerprint
No response
Anything in the logs that might be useful for us?
No response
Additional information
No response

Already fixed (https://github.com/home-assistant/core/pull/118179) and will be included in 2024.6.


adminrouter: Use dual certificate TLS setup

High-level description
Configure Admin Router with 2 certificates for both RSA and ECC type based keys. This will offer modern TLS clients to connect with ECDSA based cipher suites while keeping compatibility with old clients that can only do RSA based cipher suites.
Corresponding DC/OS tickets (obligatory)
These DC/OS JIRA ticket(s) must be updated (ideally closed) in the moment this PR lands:

DCOS-22050 tls: Admin Router should be configured with both RSA and EC type certificates

Checklist for all PRs

[ ] Added a comprehensible changelog entry to CHANGES.md or explain why this is not a user-facing change:
[ ] Included a test which will fail if code is reverted but test is not. If there is no test please explain here:
[ ] Read the DC/OS contributing guidelines
[ ] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[ ] Change log from the last version integrated (this should be a link to commits for easy verification and review): example
[ ] Test Results: [link to CI job test results for component]
[ ] Code Coverage (if available): [link to code coverage report]

@mesosphere-mergebot bump-ee

@mesosphere-mergebot bump-ee

@mesosphere-mergebot bump-ee

@mesosphere-mergebot bump-ee

@mesosphere-mergebot bump-ee

teamcity/dcos/test/aws/cloudformation/simple - https://jira.mesosphere.com/browse/DCOS_OSS-2310
To override please run:
@mesosphere-mergebot override-status teamcity/dcos/test/aws/cloudformation/simple https://jira.mesosphere.com/browse/DCOS_OSS-2310

@mesosphere-mergebot label Ready For Review

@jgehrcke @vespian please review

@mesosphere-mergebot bump-ee

@jgehrcke @vespian this one is ready to be reviewed again.


Correct typo in swift_build_support product.py file when cross-building

This is a very simple fix for a small typo in utils/swift_build_support/swift_build_support/products/product.py. I noticed it when cross-compiling Swift for armhf. The error the script gives when running is as follows:
Traceback (most recent call last):
  File "/workspaces/swift-armv7/workspace/swift/./utils/build-script", line 800, in <module>
    exit_code = main()
  File "/workspaces/swift-armv7/workspace/swift/./utils/build-script", line 795, in main
    return main_normal()
  File "/workspaces/swift-armv7/workspace/swift/./utils/build-script", line 740, in main_normal
    invocation.execute()
  File "/workspaces/swift-armv7/workspace/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py", line 734, in execute
    self._execute(pipeline, all_host_names)
  File "/workspaces/swift-armv7/workspace/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py", line 794, in _execute
    self.execute_product_build_steps(product_class, host_target)
  File "/workspaces/swift-armv7/workspace/swift/utils/swift_build_support/swift_build_support/build_script_invocation.py", line 855, in execute_product_build_steps
    product.build(host_target)
  File "/workspaces/swift-armv7/workspace/swift/utils/swift_build_support/swift_build_support/products/llvm.py", line 212, in build
    toolchain_file = self.generate_linux_toolchain_file(platform, arch)
  File "/workspaces/swift-armv7/workspace/swift/utils/swift_build_support/swift_build_support/products/product.py", line 403, in generate_linux_toolchain_file
    maybe_sysroot = self.get_linux_sysroot(platform, arch)
  File "/workspaces/swift-armv7/workspace/swift/utils/swift_build_support/swift_build_support/products/product.py", line 373, in get_linux_sysroot
    sysroot_arch, abi = self.get_linux_target_components(arch)
ValueError: too many values to unpack (expected 2)

I checked the Swift main branch and other pull requests and did not see anyone addressing this yet, so I figured pull requesting this small typo fix would be useful. For now, on our cross-build we created a simple patch for this file to fix the error, but it would be good to include in Swift main for the next release.

@swift-ci smoke test

@swift-ci please test


yaml, grid search mnist

Yes, this already works on the master branch

@lisab00 ,I have merged the shared parameter branch into master, and master into this branch,  when you get time, maybe you can test if your yaml file works. I would say it is better to test this yaml file than the pacs. the pacs can be done on Friday so the week after we get the results.

there seems to be a problem with jigen
2023-09-14T163129.952669.snakemake.log

So the conclusion is 3 epochs are not enough to get a good result ?
On Fri, 15 Sep 2023 at 09:24, Lisa @.***> wrote:

[image: bench_mnist_grid_graphic]
https://user-images.githubusercontent.com/73993822/268207167-bc31c13c-3b3c-4830-bc25-44e33a15580d.png
—
Reply to this email directly, view it on GitHub
https://github.com/marrlab/DomainLab/pull/348#issuecomment-1720802953,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAELKRSN4W5RSYNUIOVAAY3X2P7BJANCNFSM6AAAAAA4KPBLXQ
.

All algorithm please
On Fri, 15 Sep 2023 at 09:51, Lisa @.***> wrote:

Should I run this file with 100 epochs on master to compare with fbopt
(like you told me on slack)
or should I create a new file contaning all algorithms?
—
Reply to this email directly, view it on GitHub
https://github.com/marrlab/DomainLab/pull/348#issuecomment-1720835458,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAELKRWZSXCKQFPPYQFOYKLX2QCJBANCNFSM6AAAAAA4KPBLXQ
.
You are receiving this because you commented.Message ID:
@.***>

I added another file with more algos, but it's not working yet

I took a look at the file, shouldn't the file be based on the yaml file Carla has generated yesterday? Since that already include a lot of algorihtms and one only need to change the task and neural network?

Which file did Carla create yesterday?

Which file did Carla create yesterday?

maybe she did not push to any branch. But i think we could start using your new yaml file to make it work first, if a small one does not work, a big one won't work neither.

I added another file with more algos, but it's not working yet

would be great to have the error message so i can look into it as well.

Also, I based my file on this one: https://github.com/marrlab/DomainLab/blob/master/examples/benchmark/benchmark_pacs_resnet.yaml

Which file did Carla create yesterday?

maybe she did not push to any branch. But i think we could start using your new yaml file to make it work first, if a small one does not work, a big one won't work neither.

@lisab00 , I was wrong, actually she pushed the changes to the master already
https://github.com/marrlab/DomainLab/blob/master/examples/benchmark/benchmark_pacs_resnet.yaml

Which file did Carla create yesterday?

maybe she did not push to any branch. But i think we could start using your new yaml file to make it work first, if a small one does not work, a big one won't work neither.

@lisab00 , I was wrong, actually she pushed the changes to the master already
https://github.com/marrlab/DomainLab/blob/master/examples/benchmark/benchmark_pacs_resnet.yaml

but the file is not grid search, so there is distribution

I thought you need distribution for grid search as well
https://github.com/marrlab/DomainLab/blob/master/examples/benchmark/benchmark_mnist_shared_hyper_grid.yaml

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (0f5c7e4) 95.14% compared to head (8e546d3) 95.14%.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #348   +/-   ##
=======================================
  Coverage   95.14%   95.14%
=======================================
  Files         124      124
  Lines        4862     4862
=======================================
  Hits         4626     4626
  Misses        236      236

Flag
Coverage Δ

unittests
95.14% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Login not possible when using IDS4 together with ASP.NET Identity following the quickstart example

I want to build a Identity Server OIDC service, having an additional simple ui for registration/profile/email-notification of the users.
So I followed the official quickstart manual to achieve this: http://docs.identityserver.io/en/release/quickstarts/6_aspnet_identity.html

first I built the ui with the Visual Studio 2017 default template for ASP.NET Core Identity (.NET Core 2.1.2), so I can perfectly register new users and can login/logout with it, incl. storage to database.
I didnt change the hosting, so hosting is via IIS Express, using HTTPS: https://localhost:44348 - works great so far.

Then I added IdentityServer4 2.1 (via Nuget) to that project additionally - and the steps described in that manual. After that I can start the service and still can register a new user with ASP.NET Identity - but when I try to login in the login dialog and pressing OK, the home page (!) will be shown again (with register/login upper right) - instead that the user is logged-in as expected (-> I cannot see the logged in email/username in the navigation and no logout-button is shown - which worked nice before in step 1). The same happens when registering a new user - the user credentials are stored correct in the database, but is not logged in after registration!

I attached my project:
IDS4ASPI.zip
Issue / Steps to reproduce the problem

build the attached project (it uses a local MSSQL-database and .NET Core 2.1.2!)
prepare the database tables via console with: dotnet ef database update -c ApplicationDbContext
start the project with visual studio -> service and browser should open
press "register" to register a new user -> ERROR: user will not logged in afterwards - even he is in the database! Homepage is shown instead.
try to login the new user -> ERROR: login not possible. Homepage is shown istead.

Relevant parts of the log file
2018-08-03 17:23:12.189 +02:00 [INF] You are using the in-memory version of the persisted grant store. This will store consent decisions, authorization codes, refresh and reference tokens in memory only. If you are using any of those features in production, you want to switch to a different store implementation.
2018-08-03 17:23:12.246 +02:00 [DBG] Using idsrv as default scheme for authentication
2018-08-03 17:23:12.249 +02:00 [DBG] Using Identity.External as default scheme for sign-in
2018-08-03 17:23:12.249 +02:00 [DBG] Using Identity.External as default scheme for sign-out
2018-08-03 17:23:12.250 +02:00 [DBG] Using idsrv as default scheme for challenge
2018-08-03 17:23:12.250 +02:00 [DBG] Using idsrv as default scheme for forbid
2018-08-03 17:25:53.726 +02:00 [INF] AuthenticationScheme: Identity.Application signed in.
2018-08-03 17:28:54.676 +02:00 [INF] You are using the in-memory version of the persisted grant store. This will store consent decisions, authorization codes, refresh and reference tokens in memory only. If you are using any of those features in production, you want to switch to a different store implementation.
2018-08-03 17:28:54.716 +02:00 [DBG] Using idsrv as default scheme for authentication
2018-08-03 17:28:54.719 +02:00 [DBG] Using Identity.External as default scheme for sign-in
2018-08-03 17:28:54.719 +02:00 [DBG] Using Identity.External as default scheme for sign-out
2018-08-03 17:28:54.719 +02:00 [DBG] Using idsrv as default scheme for challenge
2018-08-03 17:28:54.719 +02:00 [DBG] Using idsrv as default scheme for forbid
2018-08-03 17:28:57.880 +02:00 [INF] AuthenticationScheme: Identity.External signed out.
2018-08-03 17:29:06.275 +02:00 [INF] AuthenticationScheme: Identity.Application signed in.

I tried this multiple times since two week and getting more and more frustrated - can anybody help me, to bring the offical quickstart demo to run?
THANKS in advance!
Patrick

I'm in the same boat, though I feel like this is probably a duplicate issue... just worded differently somewhere else.

Ha. As luck would have it, I think I just got it working. This post was extremely helpful.
I did scaffold Identity as instructed. Also, here's my full startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using StarkId7.Data;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using StarkId7.Core;

namespace StarkId7
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));

            services.AddIdentity<IdentityUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            // configure identity server with in-memory stores, keys, clients and scopes
            services.AddIdentityServer(options =>
                {
                    options.UserInteraction.LoginUrl = "/Identity/Account/Login";
                    options.UserInteraction.LogoutUrl = "/Identity/Account/Logout";
                })
                .AddDeveloperSigningCredential()
                .AddInMemoryPersistedGrants()
                .AddInMemoryIdentityResources(Config.GetIdentityResources())
                .AddInMemoryApiResources(Config.GetApiResources())
                .AddInMemoryClients(Config.GetClients())
                .AddAspNetIdentity<IdentityUser>();

            services.ConfigureApplicationCookie(options =>
            {
                options.LoginPath = $"/Identity/Account/Login";
                options.LogoutPath = $"/Identity/Account/Logout";
                options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
            });

            // using Microsoft.AspNetCore.Identity.UI.Services;
            services.AddSingleton<IEmailSender, EmailSender>();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseAuthentication(); // not needed, since UseIdentityServer adds the authentication middleware
            app.UseIdentityServer();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}

@alexdresko thank you for your post - this solved my problem! Even I needed to update your code with adjustments from the other thread you mentioned ... I am very happy now :)
Here is my complete running project (its just the running quickstart example without any other functionality) - so everybody with the same problem can look into it how we solved it:
IDS4ASPI_v2.zip
I hope the IDS4 team will update the official documentation with the needed adjustments for .NET Core 2.1.

I finally had a chance to look into this. The problem is that IdentityServer (build 2.3 and prior) requires the host to have configured a default authentication scheme. This is how we know who the user is. In ASP.NET Identity prior to their 2.1 changes, they set this in the call to AddIdentity. Well, in 2.1 for their self-contained UI they changed how they're doing it. Instead they only set a default scheme, and that's not sufficient. So if you were to simply have added this line:
services.AddAuthentication(IdentityConstants.ApplicationScheme);

after you register IdentityServer, then all would be well. Sorry for so many problems on this issue. As I indicated elsewhere, I agree with many of you that the new ASP.NET Core UI is a real problem and not terribly realistic for production use. Unfortunately it requires this sort of lower level tinkering.
Given that we now know the issue, we're going to make the IdentityServer configuration (when you use our AddAspNetIdentity API) to be more defensive in how it sets things up.

Part of this is already fixed here; https://github.com/IdentityServer/IdentityServer4.AspNetIdentity/commit/58b895052ec0b094439138643654c36847651e7b
The other part depends on this PR which is yet to be merged: https://github.com/IdentityServer/IdentityServer4/pull/2540

I'm going to close this, as the other two issues will provide resolution. Thanks.


javascript solution, nodejs (server) + react (client)

step1: export OPENAI_API_KEY="your API key"
step2: run both nodejs and react, steps are in the README.md

looks great! Impressive speed, HJ! :D


fixed empty line that broke the readme table

What this PR does / why we need it:
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md

@ambirag please sign the DCO and bump the chart version


Fields in model marked null/notnull or tag system for fields

I start with real example used in java language, https://gist.github.com/Tica2/e80b6849a11463c4d50a
To create similar model in Ecto I need to
schema "clients" do
field client_id,  :integer
field client_parent_id, :integer
field clientNumber
field  clientCode
field  clientTypeId
field  name
field  status
field  streetId
field  streetNumber
field  bloc
field  scara
field  etaj
field  apartament
field  address
field  contact
field  functia
....
and so on ..
To have consistent data we create a rule, that say all table columns are not null, only
if we have FK that require null, we accept null, or 1-2 exceptions with good reason.
This is my use case.
My problem is with template: ...
@required_fields ~w(....)
@optional_fields ~w(...)
where I need to rewrite this list of fields again.
To put here some fields, is fine, but I need also to maintain ...
(add new col, rename, I forget already 2-3 times)
Will be good to have a way to mark if field in ecto is null or not,
and to query this fields directly.
@default_notnull = true
schema "clients" do
field client_id,  :integer
field client_parent_id, :integer
field clientNumber
field  clientCode
field  clientTypeId      , :null  # Posible exception
field  name
field  status
field  streetId             , :null   # Posible exception
No  @required_fields, @optional_fields
@required_fields ~w(....)
@optional_fields ~w(...)
def changeset(model, params \ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
is rewrited in:
def changeset(model, params \ :empty) do
model
|> cast(params, schema(:notnull_fields), schema(:null_fields))
or
def changeset(model, params \ :empty) do
model
|> cast(params,  schema(:required_fields), schema(:optional_fields))
or similar ...
New idea is to have tag mechanism for fields
field name, :string, tags: [:require, :update]
And to query fields based on these tags.
Anyway I can write also now my own function
def required_fields ()
that
call schema(:fields) and remove some fields
But I prefer to have nice mechanism implemented in model/Ecto.
do not criticize too much :)
Thanks!

Please use the mailing list for feature discussions and not the issues tracker. :) THank you!

I ask you, if I can create a issue and you agree ... :D
Is fine also on discussions list.

@Tica2 if I agreed I was probably needing some sleep. Sorry. The ecto mailing list is the place to go with this.


TypeError

Alpaca successfully connected
Traceback (most recent call last):
File "C:\Users\louis\Desktop\SUPERAI\FinRL-master\FinRL-master\STOCK.py", line 179, in
train(
File "C:\Users\louis\Desktop\SUPERAI\FinRL-master\FinRL-master\finrl\meta\paper_trading\common.py", line 749, in train
trained_model = agent.train_model(
File "C:\Users\louis\Desktop\SUPERAI\FinRL-master\FinRL-master\finrl\meta\paper_trading\common.py", line 634, in train_model
train_agent(model)
File "C:\Users\louis\Desktop\SUPERAI\FinRL-master\FinRL-master\finrl\meta\paper_trading\common.py", line 426, in train_agent
agent.states = env.reset()[np.newaxis, :]
TypeError: tuple indices must be integers or slices, not tuple

Getting the same error. Were you able to solve this?

Getting the same error, I tried this:
agent.states = env.reset()[0][np.newaxis, :]
but does not work.... any help ?


[W5.11][T09-1]Sean Tan Rui Xiang

Ready for review

Nice to update the user guide and test cases. Would be better to integrate the new command with the help command.

@trufflepirate
Some comments added. Please close the PR after reading them.


zulip: 5.8.0 → 5.8.1

Motivation for this change
Upgrade Zulip Desktop from 5.8.0 to 5.8.1.
Things done

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

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

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase 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

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 132016 at 134bfd94 run on x86_64-linux 1

2 packages built successfully:

vk-cli
zulip


request : Options to trigger actions in the Cycle action window

Hello
I'm doing long cycle action, and sometimes (often) they don't work as expected. To find where the error is, I like to execute all action manually to find where it's not working. Right now, I have to - type each actions in the action list - find the action - clic "run". It's ok with 10 actions. With 200 actions, it's super super slow.
Could it be possible to trigger each steps of cycle actions from the Cycle action window instead ? A right clic, or a button at the top or bottom of the cycle action window ?
That would be super welcome :)
Thanks !
Louis

Closing as duplicate of #825.


[0.45+] Changing zIndex dynamically not working on Android

Is this a bug report?
Yes
Have you read the Bugs section of the Contributing to React Native Guide?
Yes
Environment

react-native -v:

react-native-cli: 2.0.1
react-native: 0.46.0

node -v: v8.1.3

npm -v: 5.0.3

yarn --version: 0.27.5

Target Platform: both

Development Operating System: macOS Sierra

Build tools: both

Steps to Reproduce
In RN 0.44, I can dynamically change zIndex layout prop for Views on both Android & iOS. But after upgrading to 0.46, only iOS can work as expected, can't make it work on Android.
Expected Behavior
zIndex could be changed dynamically on Android.
Actual Behavior
Here are screenshot on Android. By tapping on "Change top box" button, it's expected that red box will overlap green & blue boxes, another tap should make green box overlap the others, and so on. This works on iOS, but not on Android.

Reproducible Demo
Please see this gist.

I have the same issue here - with screencasts - and git clone'able super simple app - https://github.com/facebook/react-native/issues/8968#issuecomment-298992588
That comment links to stackoverflow - https://stackoverflow.com/questions/45021849/zindex-not-working-on-android-0-46-but-does-on-ios-and-even-uwp-windows
zIndex works perfectly as expected on iOS and even windows (UWP) but not on Android :(
I am using 0.46.1

hack
{left:0,zIndex:10} or {top:0,zIndex:10}

hack style:
{left:0,zIndex:10} or {top:0,zIndex:10}

Thanks @ruwusu very much for sharing a work around. I tried it but it didn't work. May you please help me understand the hack. I even tried zIndex of 999 but it still wouldn't work.

Thanks to @ruwusu, it seems that the elevation trick could work for now. There's only a problem with shadow effects with elevation, but that's better than not working.

I have this problem on 0.45.1 and 0.46.4.
I set zIndex of 100, position absolute. It work fine in iOS but not android.

elevation is certainly a decent work-around, thanks for that. It does not solve the problem with zIndex in Android. Defo a bug I can reproduce

we have the same issue on android (works on iOS). any news how to fix this on android?

I am waiting for this one too ..

Same here
Sent from my Google Nexus 5 using FastHub

+1

use elevation property, set it to 1 for example and you must put the container at the same level, elevation works at sibling level

@ethan605
Is there a fix for this? Why is this closed?

still not working, please can someone take care of this issue.

I think it was closed because I think the similar/same issue is addressed here - https://github.com/facebook/react-native/issues/8968

same here

@rtman
Firstly, it seems that the issue is no more active with RN team
Secondly, the workaround solution (using zIndex) is acceptable

@ethan605 this is an active issue, it's just a duplicate. The zIndex solution is also not a workaround, it is the actual bug here. The behavior differs greatly, especially when it comes to handling presses in the zIndexed views.

@Noitidart  right that's what I thought was happening. I just noticed in react-natiave 0.49 release there is a bugfix to zIndex, hopefully that fixes the issue. Will have a look soon.

I'm praying it's fixed in 0.49 too :) Long standing bug and never had a feasible workaround. :(

@Noitidart @rtman thanks for your feedbacks. I've closed this due to a long time of inactivity. Now reopen to raise it again. Hope that a proper fix will be provided soon.

Thank you sir. I think you were right to close this though as it's a duplicate of that issue. I don't know if that patch fixes this though, we'll know in a bit, as soon as that patch releases.

Hey all I just tried using 0.49.3 and a fix landed! Yahoo. Try it again it might work, let us know.

Agreed 0.49.3 fixes my issue
Sent from my Google Nexus 5 using FastHub


Add some screenshots to the readme

Hey there,
I think it would really help, to include some screenshots in the readme :)
Cheers

Hey there,
thanks for tuning in! This repository currently acts purely as a supporting library for AdamsLair/duality and thus it is not very well-documented or polished for third-party use. I might get around to this eventually, but it's not very high on my ToDo for that reason.
As you probably already found out (but mentioning for others who might come across), compiling and running the TestApp project will provide you with an interactive sample of the controls defined in this library.


Callhome mode .change remote IP, Is not effective immediately.

Hi Michal,
netopeer2 devel-server 1.1.20
libnetconf2 devel
After testing ,I found the issue, my steps as following.

Netopeer2-server connected to ODL in callhome mode .
callhome setting remote IP is <IP_ADDRESS>.(ODL ip).
Change the remote IP to <IP_ADDRESS>.
sysrepocfg --edit=/var/callhome.xml -d startup -f xml -m ietf-netconf-server -v2
sysrepocfg -C startup -m ietf-netconf-server -v2
The device still can set by ODL. Capture in ODL , Found the device still send keep-alive to it (<IP_ADDRESS>). So the device can't connect to <IP_ADDRESS>. No package send to it.

Hope to get your help,thanks!
callhome.txt

Hi Michal,
Is there this issue  in your environment?

Hi Michal,
For fix this issue,
My steps changed.

First ,Netopeer2-server connected to ODL in callhome mode .
Callhome setting with remote IP  <IP_ADDRESS>.(ODL ip),
Setting by ODL ,work fine.

Change the remote IP to <IP_ADDRESS>.
sysrepocfg --edit=/var/callhome.xml -d startup -f xml -m ietf-netconf-server -v2
sysrepocfg -C startup -m ietf-netconf-server -v2
/etc/init.d/netopeer2-server restart

The device can connect new IP soon, But after 1, 2 steps, setting several times will find new bugs.
LOG as following:
Tue Dec 17 11:04:33 2019 daemon.err netopeer2-server[7986]: Locking a mutex failed (sr_connect: Operation timed out).
Tue Dec 17 11:04:33 2019 daemon.err netopeer2-server[7986]: Connecting to sysrepo failed (Timeout expired).
Tue Dec 17 11:04:33 2019 daemon.err netopeer2-server[7986]: Server init failed.

Hi,
as for your original issue, this is meant to be a feature. It is not written anywhere (and I think it is not really expected) that you should forcefully terminate an established Call Home session if its configuration changed. It should only be applied on the next reconnect. I think you should change other connection parameters (persistent vs. periodic) to achieve what you want.
As for your other issue, I have no idea what it is exactly that you are doing so I cannot help you. Please try to provide more details and a way for me to reproduce it (best with netopeer2-cli client but it should not really matter).
Regards,
Michal

Hi Michal,
For first issue:
If callhome setting from persistent to  periodic,I don’t know if the controller（ODL)） can always set the device.
connection-type
persistent-->periodic
connection-type
For the second issue：
my steps as following:
1. Netopeer2-server connected to ODL in callhome mode .
Callhome setting with remote IP <IP_ADDRESS>.(ODL ip),
This time work fine .
2. Creat var/callhome.xml  ,just change remote IP to <IP_ADDRESS>.
The  following three lines CMD is  in a scripts.
#!/bin/sh
sysrepocfg --edit=/var/callhome.xml -d startup -f xml -m ietf-netconf-server -v2
sysrepocfg -C startup -m ietf-netconf-server -v2
/etc/init.d/netopeer2-server restart
(because my os is openwrt, /etc/init.d/netopeer2-server restart = /etc/init.d/netopeer2-server stop
/etc/init.d/netopeer2-server start)
3. Creat var/callhome.xml  ,just change remote IP to <IP_ADDRESS>.
The  following three lines CMD is  in a scripts.
#!/bin/sh
sysrepocfg --edit=/var/callhome.xml -d startup -f xml -m ietf-netconf-server -v2
sysrepocfg -C startup -m ietf-netconf-server -v2
/etc/init.d/netopeer2-server restart
4. Repeat steps 2 and 3，Will found the following log.
Tue Dec 17 11:04:33 2019 daemon.err netopeer2-server[7986]: Locking a mutex failed (sr_connect: Operation timed out).
Tue Dec 17 11:04:33 2019 daemon.err netopeer2-server[7986]: Connecting to sysrepo failed (Timeout expired).
Tue Dec 17 11:04:33 2019 daemon.err netopeer2-server[7986]: Server init failed.

Hi,
okay, I have not managed to reproduce this but I did discover a possibly serious issue of accessing freed memory when netopeer2 is being terminated. So please pull latest libnetconf2 devel for a fix. Other than that I am not able to reproduce this or debug it in any way.
But how exactly is the server being restarted? Is it properly terminated by being sent SIGTERM or forcefully by SIGKILL? Also, you can try using -w parameter for the second sysrepocfg call to make it wait for all the callbacks so that the server is not being terminated before that (although it should not matter to my knowledge).
Regards,
Michal

Hi Michal,
Thanks for your reply, I will implement according to your suggestion.
Is it properly terminated by being sent SIGTERM or forcefully by SIGKILL?
It's  SIGTERM .
In some case, We meet the following log, Could it help you reproduce?
1.
[11:10:19]Thu Apr 16 10:29:34 2020 kern.info kernel: [  346.512215] do_page_fault(): sending SIGSEGV to netopeer2-serve for invalid read access from 77f04000
[11:10:19]Thu Apr 16 10:29:34 2020 kern.info kernel: [  346.521495] epc = 77ece3e4 in libc.so[77e5c000+95000]
[11:10:19]Thu Apr 16 10:29:34 2020 kern.info kernel: [  346.526656] ra  = 77e852d0 in libc.so[77e5c000+95000]
[11:10:19]Thu Apr 16 10:46:44 2020 daemon.err netopeer2-server[3926]: Locking a mutex failed (sr_connect: Operation timed out).
[11:10:19]Thu Apr 16 10:46:44 2020 daemon.err netopeer2-server[3926]: Connecting to sysrepo failed (Timeout expired).
[11:10:19]Thu Apr 16 10:46:44 2020 daemon.err netopeer2-server[3926]: Server init failed.
[11:10:19]Thu Apr 16 10:46:44 2020 daemon.info procd: Instance netopeer2-server::instance1 s in a crash loop 7 crashes, 15 seconds since last crash
[11:10:19]Thu Apr 16 10:51:42 2020 daemon.info procd: Instance sysrepo::instance1 s in a crash loop 6 crashes, 16 seconds since last crash
[11:10:19]Thu Apr 16 10:52:26 2020 daemon.info procd: Instance sysrepo::instance1 s in a crash loop 7 crashes, 16 seconds since last crash
[11:10:19]Thu Apr 16 10:56:03 2020 daemon.err netopeer2-server[4139]: Locking a mutex failed (sr_connect: Operation timed out).
[11:10:19]Thu Apr 16 10:56:03 2020 daemon.err netopeer2-server[4139]: Connecting to sysrepo failed (Timeout expired).
[11:10:19]Thu Apr 16 10:56:03 2020 daemon.err netopeer2-server[4139]: Server init failed.
[11:10:20]Thu Apr 16 10:56:03 2020 daemon.info procd: Instance netopeer2-server::instance1 s in a crash loop 8 crashes, 16 seconds since last crash
2、root@gpn-000FE9001001:~#sysrepo-plugind -d -v 4 &
root@gpn-000FE9001001:~# [INF]: Scheduled changes not applied because of other existing connections.
[ERR]: Locking a mutex failed (sr_connect: Operation timed out).
sysrepo-plugind error: Failed to connect (Timeout expired)
[1]+  Done(1)                    sysrepo-plugind -d -v 4
3、root@gpn-000FE9001001:~#/etc/sysrepo# ls
root@gpn-000FE9001001:/etc/sysrepo# ls
data          sr_evpipe2    sr_evpipe4    sr_evpipe6    sr_main_lock
sr_evpipe1    sr_evpipe3    sr_evpipe5    sr_evpipe7    yang
root@gpn-000FE9001001:/etc/sysrepo#

Hi,
oh, so the server crashes and the timeout is just the result of that. In that case it would be great if you could run netopeer2 with gdb or even valgrind when it crashes, if possible. That would definitely provide some information about what is happening and may even be enough for me to fix it. Also, you are using sysrepo from current devel branch, right? You have mentioned only netopeer2 and libnetconf2.
Regards,
Michal

Hi Michal,

you are using sysrepo from current devel branch, right?
No. i am using  2020.03.18 sysrepo devel branch.
I will update all version to the last,and try to give you more info,

Offtop:
qjwu888,
Could you contact me?
<EMAIL_ADDRESS>

Hi  What  can  I  do  for  you?Qjwu-------- 原始邮件 --------发件人： vladique00<EMAIL_ADDRESS>2020年4月28日周二 下午3:55收件人： CESNET/Netopeer2<EMAIL_ADDRESS>qjwu888<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>  题： Re: [CESNET/Netopeer2] Locking a mutex failed (sr_connect: Operation timed out). (#589)
Offtop:
qjwu888,
Could you contact me?
<EMAIL_ADDRESS>—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.


Not saving, not returning

Issue Type: Bug
Hi there,
I am experiencing an issue with VSC, it keeps on deleting code when saving, go to the bottom of the page when pressing "command z" or save.
I explained it here:
https://www.useloom.com/share/1ef508026ab74981a7ffa223a29a984e
I hope this can be fixed as I am supposed to finish this project in the next 3 days.
Bes,t
Max
VS Code version: Code 1.28.2 (7f3ce96ff4729c91352ae6def877e59c561f4850, 2018-10-17T00:18:43.347Z)
OS version: Darwin x64 18.2.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz (12 x 2200)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: enabledrasterization: enabledvideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
2, 3, 2

Memory (System)
32.00GB (17.13GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (9)

Extension
Author (truncated)
Version

vscode-tidyhtml
anw
1.10.0

path-intellisense
chr
1.4.2

vscode-faker
dee
1.3.0

vsc-material-theme
Equ
2.6.3

beautify
Hoo
1.4.9

icon-fonts
idl
2.1.5

path-autocomplete
ion
1.13.1

LiveServer
rit
5.5.1

html5-boilerplate
sid
1.0.3

(1 theme extensions excluded)

This is almost certainly one of your extensions, vscode-tinyhtml and beautify sounds like they might be it


Live tracking and updating of the LastMessageID toggle option

Adding a toggle for the LastMessageID to update to contain the message of the last message that has been posted in real time when a new message is posted.

Just to clarify for the future :)  The idea here is to have the State track the last message ID received.  Since this would be a pretty consuming task for many bots it would default to off and be configurable with a bool similar to the other State options.

This can be done by setting State.MaxMessageCount to 1, and then checking the id of the only message in State.Channel().Messages.

@iopred Yes and no i try to code that and the problem is that actually State.Channel().Messages can be nil even if there is message in the channel (when all Message in State.Channel().Messages have been deleted)

So it does a while but do I need to load messages in the channel to keep tracking LastMessageID in all cases (will be nil if there is no message in the channel)

I feel @iopred answer above solves the initial issue request here.  For the secondary one raised here, I'll quote myself from it's PR.
I don't feel that this is a good fit for the goals of this library as a minimal wrapper over the Discord API.  Which, I guess is evident by how long it's sat here unmerged. So, I'm going to close it out.  However if anyoen finds this and has a specific need for it feel free to comment on why it's needed.