Using Annotorious Seadragon in Angular

I am trying to use Annotorious with its plugin for OpenSeadragon in Angular 15.
When running my demo app, I get errors when creating the OpenSeadragon viewer, so probably I'm just missing some basic setup.
As it seems this is a recurring issue, I'm trying to contribute here with some guidance to use this plugin with Angular, detailing the steps I followed up to this point. Eventually, I can provide my full sample code in a GitHub repository.
The main error just seems to point so some undefined object:
core.mjs:8506 ERROR TypeError: Cannot read properties of undefined (reading 'disableEditor')
    at new jc (annotorious.min.js:24:109315)
    at SdImgAnnotatorDirective.ngAfterViewInit (sd-img-annotator.directive.ts:127:17)
    at callHook (core.mjs:2488:22)
    at callHooks (core.mjs:2457:17)
    at executeInitAndCheckHooks (core.mjs:2408:9)
    at refreshView (core.mjs:10490:21)
    at refreshComponent (core.mjs:11480:13)
    at refreshChildComponents (core.mjs:10210:9)
    at refreshView (core.mjs:10469:13)
    at refreshEmbeddedViews (core.mjs:11434:17)

Additionally, I get a number of 404 as apparently the plugin is trying to load some UI image resources like GET http://localhost:4200/images/zoomin_rest.png 404 (Not Found) etc.
Procedure
To start simple, I'd like to create an essential directive, whose only purpose is using Annotorious Seadragon to annotate an image and get an event whenever an annotation is changed. In my sample project I'm using a legacy simple image as the source, following the configuration in the OpenSeadragon sample page for this scenario.
Also, as I learn from this page, performance reasons suggest to run Seadragon outside Angular zones. So, here is the procedure:
(1) create an Angular app and install the required packages:
npm i @recogito/annotorious @recogito/annotorious-openseadragon
npm i openseadragon
npm i @types/openseadragon --save-dev

Also add a types.ts file to your src folder with this content:
declare module "@recogito/annotorious";

and then import it where required.
(2) add the required Annotorious CSS to angular.json under projects/architect/build/options/styles:
"styles": [
<EMAIL_ADDRESS>  "src/styles.css"
]

According to the documentation, this is required at least when using OSD in fullscreen mode.

(3) add a directive like this:
// ...
import { Annotorious } from '@recogito/annotorious';
import * as OpenSeadragon from 'openseadragon';

@Directive({
  selector: '[sdImgAnnotator]',
})
export class SdImgAnnotatorDirective {
  private _tool: string;
  private _ann?: any;

  /**
   * The source image to annotate.
   */
  @Input()
  public source: string;

  /**
   * The initial configuration for the annotator.
   */
  @Input()
  public config?: AnnotoriousConfig;

  /**
   * The current drawing tool. The default available tools are rect and polygon,
   * but more can be available from plugins.
   */
  @Input()
  public get tool(): string {
    return this._tool;
  }
  public set tool(value: string) {
    if (this._tool === value) {
      return;
    }
    this._tool = value;
    this._ann?.setDrawingTool(this._tool);
  }

  /**
   * The optional initial annotations to show on the image.
   */
  @Input()
  public annotations?: any[];

  // ... events

  constructor(
    private _elementRef: ElementRef<HTMLImageElement>,
    private _ngZone: NgZone
  ) {
    this._tool = 'rect';
    this.source = '';
  }

  ngAfterViewInit() {
    const viewer = this._ngZone.runOutsideAngular(() => {
      OpenSeadragon({
        id: 'osd',  // hardcoded to make demo simpler
        tileSources: {
          type: 'image',
          url: this.source,
        },
      });
    });
    this._ann = new Annotorious(viewer, this.config || {});

    // initial annotations
    if (this.annotations?.length) {
      this._ann.setAnnotations(this.annotations);
    }
    // drawing tool
    if (this._tool !== 'rect') {
      this._ann.setDrawingTool(this._tool);
    }

    // events wiring...
  }
}

(4) add a sample image in the demo app assets, and a page using the directive like this:

Thank you!

Thanks so much for the detailed writeup. I'd love to convert this to an example on the Guides section of the website at some point if I may!
Just to confirm: it's not working yet, correct? Are you reading this._ann.disableEditor anywhere in your code? It looks like there might be a timing issue involved, with this._ann not yet initialized.
As far as the missing images are concerned: yes, that as a bit of a confusing issue. You need to bring your own copies of the OpenSeadragon navigation icons (plus, minus, fullscreen, etc.) - or you use the prefixUrl config option to point OSD to the images on their own website (or CDN). E.g.:
viewer = OpenSeadragon({
  // ...
  prefixUrl: 'http://openseadragon.github.io/openseadragon/images/',
  // ...
});

Thank you! Feel free to use this sample code as you prefer, I'll be happy to be useful, and this is part of an open source, Academic project, so no problem at all. Anyway, I confirm you that at present it does not work. This disableEditor code is not mine, it's from the library, and I constantly get it as the first error whenever I call the OpenSeadragon function.. If it can be useful, I can prepare a repro GitHub repository extracting it from my code (just because there things are more complex). Meanwhile, I'll try your suggestion about the image issues, and let you know.

Thanks, it seems that your first reply fixed the 404 errors about missing image resources. My demo code was updated accordingly.
As for the other issue, unfortunately it does not seem so straightfoward. I'm calling OpenSeadragon right in the after-view-init event, already wrapped in a runOutsideAngular call. If I try with a setTimeout, I would have to move inside it also all the following code, which depends on it; and in theory it should have no effect on Angular itself, as at this lifetime stage things are already initialized, so I'm not sure if there will be any benefit in letting it wait the "next turn". I have a single call to OSD, and this fails immediately; it's not the case that some later call fails. Anyway, I created a full repro repository to let everyone experiment: please find it here. If you have any suggestion, I'll be happy to have a try.
Finally, the project I was referring to (Cadmus) currently has its introductory site here. I've already created a basic Angular wrapper for the non-OSD version of Annotorious and you can play with it at the "bricks" demo site, under Image/Annotator. At present it's rather essential, but of course I'll welcome any suggestion. This component is supposed to be integrated into an annotation editor part inside the Cadmus framework, so that the annotations created there will be integrated with the rest of the data edited in it.

Hm, in that demo or looks like you're importing Annotorious standard version, not the version for OpenSeadragon.

Thank you, you mean that I have to uninstall @recogito/annotorious and just use @recogito/annotorious-openseadragon? I was supposing that the "base" library was required, OSD being a plugin, that's why I included it. Anyway, I tried uninstalling it (npm uninstall @recogito/annotorious), but this does not seem to change the error. I still get this:
get buttons @ openseadragon.js:8076
core.mjs:8453 ERROR TypeError: Cannot read properties of undefined (reading 'disableEditor')
    at new jc (annotorious.min.js:24:109315)
    at SdImgAnnotatorDirective.ngAfterViewInit (sd-img-annotator.directive.ts:159:17)
    at callHook (core.mjs:2487:22)
    at callHooks (core.mjs:2456:17)
    at executeInitAndCheckHooks (core.mjs:2407:9)
    at refreshView (core.mjs:10437:21)
    at refreshComponent (core.mjs:11427:13)
    at refreshChildComponents (core.mjs:10157:9)
    at refreshView (core.mjs:10416:13)
    at detectChangesInternal (core.mjs:11571:9)
handleError @ core.mjs:8453
core.mjs:23530 Angular is running in development mode. Call enableProdMode() to enable production mode.
openseadragon.js:17711 Tile constructor needs 'cacheKey' variable: creation tile cache in Tile class is deprecated. TileSource.prototype.getTileHashKey will be used.
push.3504.$.Tile @ openseadragon.js:17711
zoomout_hover.png:1          Failed to load resource: net::ERR_CONNECTION_RESET

As you can see from the stack, my directive is just under the call to annotorious code, which fails somewhere finding this undefined object supposed to have a disableEditor function.

Hi! Hope you don't mind me interjecting here.  I recently implemented Annotorious/OpenSeadragon in Angular, and everything is working great.  I skimmed your example code, and the main thing I noticed that I did differently was importing the Viewer class directly from the openseadragon library and using that instead of the top-level OpenSeadragon function:
import { Viewer } from 'openseadragon';

// ...

this.#viewer = this.ngZone.runOutsideAngular(() => {
    return new Viewer({
      // config
    });
});

I was also able to write some supporting code that allowed me to use angular components as annotorious editor widgets. I'm happy to share if anyone is interested.

After a second look-through, looks like @rsimon  was right about your annotorious import.
you're doing:
import { Annotorious } from '@recogito/annotorious';

and I have:
// @ts-ignore
import * as Annotorious from '@recogito/annotorious-openseadragon';

Thank you! Of course I'm interested in your supporting code, it will surely be much better than my raw wrapping :), so please feel free to share if you can. As for your suggestions, they fixed the issue even though now I find another error:
TypeError: _recogito_annotorious_openseadragon__WEBPACK_IMPORTED_MODULE_0__ is not a constructor
    at SdImgAnnotatorDirective.ngAfterViewInit (sd-img-annotator.directive.ts:154:17)

I have other deadlines now so I can't have a better look, but I'll inspect this asap. Meanwhile, I've updated the sample code so you can directly test it to reproduce the above issue if you want.

I sent over a PR with some changes that got it working locally for me.  Hope that helps!  I'll try and find some time to organize my code for the angular-based editor widgets and upload it so I can share.

Thank you very much, this fixed the issues! Eager to look at your code :)

If anyone is still listening on this issue: the next major release of Annotorious is getting closer to release-ready. It's a complete re-write, and I believe that it will make integration with different frameworks much easier.
As of now, v3 has practically no documentation, and it doesn't have feature parity with v2.7. (Most importantly, it's headless mode only for now.) But if anyone wants to look: I believe it will solve a lot of the tedious interoperability issues that you are facing.
As written above, I'm not an Angular person. Which means I can still not give any advice. But if you look at how integration is done for React and Svelte, you might find some inspiration on how to do it for Angular.

v3 is now a separate branch in this repository. Minimal documentation is in the Readme.
For reference & inspiration: the @annotorious/react bindings module is here.
The @annotorious/svelte bindings are here

Closing this, since there will not be Angular support for Annotorious v2.x.
Meanwhile, Annotorious v3 is available. Anyone interested in contributing to a potential future @annotorious/angular package, drop a line on this issue: https://github.com/annotorious/annotorious/issues/296


TextInput onSelectionChange() is fired before onChangeText() in IOS, and fired after onChangeText() in Android when letter typed

Description
TextInput onSelectionChange() is fired before onChangeText() in IOS, and fired after onChangeText() in Android when letter is typed
React Native Environment Info
System

OS: Windows 10
CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Memory: 3.35 GB / 15.89 GB

Binaries

Node: 12.9.0
Yarn: 1.22.4
npm: 6.10.2

SDK sdk-35.0.0
Steps To Reproduce

<TextInput
      multiline
      onChangeText={() => console.log('onChangeText')}
      onSelectionChange={() => console.log('onSelectionChange')} />

type letter on input

IOS
onSelectionChange
onChangeText

Android
onChangeText
onSelectionChange

Expected Results
In the same order

I've just come across this issue as well
System:
    OS: macOS 10.15.5
    CPU: (8) x64 Intel(R) Core(TM) i7-1068NG7 CPU @ 2.30GHz
    Memory: 7.69 GB / 32.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 14.4.0 - /usr/local/bin/node
    Yarn: Not Found
    npm: 6.14.4 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.9.3 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 13.5, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
    Android SDK:
      API Levels: 27, 28, 29
      Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.0
      System Images: android-27 | Google APIs Intel x86 Atom, android-29 | Google APIs Intel x86 Atom, android-R | Google APIs Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 4.0 AI-193.69<IP_ADDRESS>14223
    Xcode: 11.5/11E608c - /usr/bin/xcodebuild
  Languages:
    Java: 1.8.0_252 - /usr/bin/javac
    Python: 2.7.16 - /usr/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.9.0 => 16.9.0
    react-native: ^0.62.2 => 0.62.2
  npmGlobalPackages:
    *react-native*: Not Found

same issue!

Same issue here!

Same issue here, working on a project that needs mentions and this is tripping us up too.

This isn't a perfect solution but we ended up calculating the current selection in the onChangeText callback.
If it was IOS we could just use the current selection passed back from onSelectionChange (stored in a ref), and if it was android we would add / subtract the difference in length between the updated and previous value from the selection ref start and end values...there is some nuances for multi char removal etc. but that was the general idea

This isn't a perfect solution but we ended up calculating the current selection in the onChangeText callback.
If it was IOS we could just use the current selection passed back from onSelectionChange (stored in a ref), and if it was android we would add / subtract the difference in length between the updated and previous value from the selection ref start and end values...there is some nuances for multi char removal etc. but that was the general idea

@tomgransden
Have you already resolved this?

Same issue here, working on a project that needs mentions and this is tripping us up too.

I'm stucking on this in same situation, my mention tracking doesn't work for this issue....

same issues here, any solutions?


PLDM: BIOS attribute support for LINUX KVM

This commit adds new BIOS attributes to support Linux KVM

The CI checks are failing. Please fix them

Please elaborate the commit message and add the tested section too.
+1

Please address the pvm_default_os_type change

the changes are already there in file no need to add


Map out what the impact is of adding WoS double checks

Map out what the impact is on time, development, design and copy changes

In progress with Emily, UX drawn out and discussed, design started.


feat(fetcher/nvd): not use goroutine in convert

What did you implement:
Remove the goroutine speedup in convert, as it seems to have little effect on the complexity of the code.
I rewrote the goroutine in the convert part of NVD and JVN to a simple for. JVN is slower and NVD is faster, probably because JVN uses goroutine in the following part:collectCertLinks to access links.
https://github.com/MaineK00n/go-cve-dictionary/blob/c2acd34f77a7ab377701870885d706126e982c03/fetcher/jvn/xml/jvn.go#L301
Therefore, I changed only NVD to a simple for loop.
Type of change

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
JVN
// upstream/master: 7s
$ go-cve-dictionary fetchjvn --last2y
INFO[07-15|09:30:07] Fetching... https://jvndb.jvn.jp/ja/feed/checksum.txt
INFO[07-15|09:30:11] Fetched... https://jvndb.jvn.jp/ja/rss/years/jvndb_2020.rdf
INFO[07-15|09:30:18] Fetched 14590 CVEs

// not use goroutine(commit hash: ab27a04448b547a5f909f4fbc8d3071da3c3f0eb): 33s
$ go-cve-dictionary fetchjvn --last2y
INFO[07-15|09:28:22] Fetching... https://jvndb.jvn.jp/ja/feed/checksum.txt
INFO[07-15|09:28:26] Fetched... https://jvndb.jvn.jp/ja/rss/years/jvndb_2020.rdf
INFO[07-15|09:28:59] Fetched 14590 CVEs

NVD
// upstream/master: 21s
$ go-cve-dictionary fetchnvd --last2y
INFO[07-15|09:23:24] Fetching... https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2021.meta
INFO[07-15|09:23:28] Fetched... https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2020.json.gz
INFO[07-15|09:23:45] Fetched 26034 CVEs

// not use goroutine(commit hash: c2acd34f77a7ab377701870885d706126e982c03): 9s
$ go-cve-dictionary fetchnvd --last2y
INFO[07-15|09:24:48] Fetching... https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2021.meta
INFO[07-15|09:24:51] Fetched... https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2020.json.gz
INFO[07-15|09:25:00] Fetched 26034 CVEs

Checklist:
You don't have to satisfy all of the following.

[ ] Write tests
[ ] Write documentation
[x] Check that there aren't other open pull requests for the same issue/feature
[x] Format your source code by make fmt
[x] Pass the test by make test
[x] Provide verification config / commands
[x] Enable "Allow edits from maintainers" for this PR
[x] Update the messages below

Is this ready for review?: YES
Reference

// upstream/master: 6s
$ ./go-cve.old -v
go-cve-dictionary v0.6.1 2c0cfc5
$ ./go-cve.old fetchnvd --last2y
INFO[07-16|05:54:28] Fetched... https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2020.json.gz
INFO[07-16|05:54:34] Fetched 26244 CVEs

// not use goroutine(commit hash: c2acd34): 14s
$ ./go-cve.new -v
go-cve-dictionary v0.6.1 c2acd34
$ ./go-cve.new fetchnvd --last2y
...
INFO[07-16|05:55:20] Fetched... https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2021.json.gz
INFO[07-16|05:55:34] Fetched 26244 CVEs

CPU information

lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              6
On-line CPU(s) list: 0-5
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           6
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               63
Model name:          Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz
Stepping:            2
CPU MHz:             2294.704
BogoMIPS:            4589.40
Hypervisor vendor:   KVM
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            4096K
NUMA node0 CPU(s):   0-5
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt md_clear

I changed it to concurrency := runtime.NumCPU() and it's faster. I would like to change the PR to one that sets the concurrency appropriately.
$ go-cve-dictionary fetchnvd --last2y
INFO[07-16|06:23:57] Fetched... https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2020.json.gz
INFO[07-16|06:24:02] Fetched 26244 CVEs

$ lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              2
Core(s) per socket:              2
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           142
Model name:                      Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
Stepping:                        9
CPU MHz:                         2000.008
CPU max MHz:                     3500.0000
CPU min MHz:                     400.0000
BogoMIPS:                        5799.77
Virtualization:                  VT-x
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        4 MiB
NUMA node0 CPU(s):               0-3
Vulnerability Itlb multihit:     KVM: Mitigation: VMX disabled
Vulnerability L1tf:              Mitigation; PTE Inversion; VMX conditional cach
                                 e flushes, SMT vulnerable
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT vulnerable
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled v
                                 ia prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user
                                  pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB condit
                                 ional, IBRS_FW, STIBP conditional, RSB filling
Vulnerability Srbds:             Mitigation; Microcode
Vulnerability Tsx async abort:   Not affected
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtr
                                 r pge mca cmov pat pse36 clflush dts acpi mmx f
                                 xsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rd
                                 tscp lm constant_tsc art arch_perfmon pebs bts
                                 rep_good nopl xtopology nonstop_tsc cpuid aperf
                                 mperf pni pclmulqdq dtes64 monitor ds_cpl vmx e
                                 st tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_
                                 1 sse4_2 x2apic movbe popcnt tsc_deadline_timer
                                  aes xsave avx f16c rdrand lahf_lm abm 3dnowpre
                                 fetch cpuid_fault epb invpcid_single pti ssbd i
                                 brs ibpb stibp tpr_shadow vnmi flexpriority ept
                                  vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep
                                  bmi2 erms invpcid mpx rdseed adx smap clflusho
                                 pt intel_pt xsaveopt xsavec xgetbv1 xsaves dthe
                                 rm ida arat pln pts hwp hwp_notify hwp_act_wind
                                 ow hwp_epp md_clear flush_l1d

This is from JVN, but it is runtime.NumCPU() + 2.
https://github.com/kotakanbe/go-cve-dictionary/blob/2c0cfc50057ca4a525fa5b45c7b4948ec2d94543/fetcher/jvn/xml/jvn.go#L239


sluggable umlauts/accents and the order of transliterate and urlize

Im using sluggable in my project. since i have to generate slugs from titles with umlauts in it, i expected that "ä" would be converted to "ae" etc.
Looking at the Urlizer class the function "urlize/unaccent" would do exactly that. But in "generateSlug" of SluggableListener the call for "urlize" is after the "transliterate" call. And "transliterate" calls "utf8ToAscii" which replaces all "ä" with just "a".
Im not sure whether i really understand the concept of the handlers, transliterate and urlize. can anybody enlighten me?

What I suggest you to do is to use custom transliteration function:
$sluggableListener->setTransliterator(['YourStaticTransliteratorClass', 'staticTranslaterationMethod']);

Or with symfony dependency injection
services:
    gedmo.listener.sluggable:
        class: Gedmo\Sluggable\SluggableListener
        tags:
            - { name: doctrine.event_subscriber, connection: default }
        calls:
            - [ setAnnotationReader, [ "@annotation_reader" ] ]
            - [ setTransliterator, [["YourStaticTransliteratorClass", "staticTranslaterationMethod"]]]

The changes to library cannot be applied since it affects users, it allows you to customize transliteration without a need to extend listener - which is also a proper solution.

You're right, this is a nasty BC break.
I do not like to write my own gedmo.listener.* service definitions and prefer enabling the listeners via StofDoctrineExtensionsBundle. Way simpler to integrate.
I do know how to use my own Transliterator and already have it running in my Symfony project
<?php
namespace AppBundle\Listener;

use Gedmo\Sluggable\SluggableListener as GedmoSluggableListener;
use Gedmo\Sluggable\Util\Urlizer;

class SluggableListener extends GedmoSluggableListener
{
    public function __construct()
    {
        $this->setTransliterator(array('\AppBundle\Listener\SluggableListener', 'transliterate'));
    }

    /**
     * Since transliterate will convert "ä" to an "a", I added this hack to call
     * unaccent first so it is converted to "ae" first.
     *
     * @param string $text
     * @param string $separator
     * @return string $text
     */
    public static function transliterate($text, $separator = '-')
    {
        $text = Urlizer::unaccent($text);
        $text = Urlizer::transliterate($text, $separator);

        return $text;
    }
}

and:
# app/config/config.yml

stof_doctrine_extensions:
    class:
        sluggable: AppBundle\Listener\SluggableListener

But... I don't think this is very newbie-friendly. Couldn't you add it to the configuration options for slug annotation? e.g.:

unaccent (optional, default=false)

That would be very handy and I am sure most of the users would love to enable the unaccent option.
Thanks for this great bundle!
Cheers, Philip

I find it much harder to use bundle instead of library with symfony, but that is your choice. I will not add options to library, this is not a bundle and is a separate project used also with any kinds of frameworks

Using a Symfony bundle or using a library directly is personal preference, right. But I don't quite get it, why you couldn't integrate this option into your library.
In doc/sluggable.md there's a section Some other configuration options for slug annotation. That's part of your library, right?
I would greatly appreciate if there would be a unaccent option in the future

adding an option is easy, but removing it is hard and having many options start to confuse users. I'd prefer that users configure their slugifier callable to their own preference instead of having many options to go through and there always be use cases which are custom - in turn needing more options. I've put too many options into the library already, which makes it harder to understand and use.


[$1000] Web - Detail error info is not being shown the first time user inputs an existing email as a secondary contact method

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

Action Performed:

Copy and email of an account that already has an expensify account
Open a new account and click on settings > Profile > Contact method
Click on New contact method > Paste the copied email and click Add
Notice the error and click on the secondary contact just added and observe the error message
Go back and click on add new contact method again
Paste the email copied earlier
Click on Add
Observe the error message

Expected Result:
The error message that showed up on Step 8 should be shown on step 3 as well just like it does on step 8 on the current "new contact method" page without going back to "contact methods" page.
Actual Result:
Generic error message is being shown on step 3 and user is able to click save and go back to the previous page.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.36-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/93399543/5ccb35c9-694b-4b12-bd64-ff7fa089d438
https://github.com/Expensify/App/assets/93399543/4794cbb5-653e-404b-9c7f-aeca3130350d
Expensify/Expensify Issue URL:
Issue reported by: @Nathan-Mulugeta
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1688450172455119
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01d5aa4f7792efefc5
Upwork Job ID:<PHONE_NUMBER>377996288
Last Price Increase: 2023-07-05

pending review on the proposal above!

@parasharrajat what do you think on the proposal above?


CUDA 8.0 support

NVidia CUDA 7.5 distribution for Ubuntu only goes up to Ubuntu 15.04 which is EOL'ed already. So it would be useful to have CUDA 8.0 support which is provided for Ubuntu 16.04

There is already a bug for this I think. On mobile but you should be able to search

sorry, should've searched better, https://github.com/tensorflow/tensorflow/issues/2559


No app metrics when using Eirini

Describe the bug
Applications deployed to KubeCF with Eirini enabled do not report their CPU and memory usage.
$ cf app 12factor
Showing health and status for app 12factor in org suse / space dev as admin...

name:                12factor
requested state:     started
isolation segment:   placeholder
routes:              12factor.cloud-native.app
last uploaded:       Wed 29 Apr 20:04:35 PDT 2020
stack:               cflinuxfs3
buildpacks:          ruby

type:           web
instances:      2/2
memory usage:   64M
     state     since                  cpu    memory     disk        details
#0   running   2020-04-30T03:57:50Z   0.0%   0 of 64M   0 of 256M
#1   running   2020-04-30T04:04:39Z   0.0%   0 of 64M   0 of 256M

To Reproduce
Deploy KubeCF with Eirini, deploy any app, and observe the metrics with cf app or stratos console.
Expected behavior
Expect metrics to appear as they do with Diego.
Environment

CF Version KubeCF 2.1  (api_version 2.146.0)
Component/Plugin Name Eirini

I saw this behaviour before, if I recalled correctly in the eirini logs we saw issues around the eirini SA not being able to get metrics. This is related to the eirini SA not having cluster access via the clusterrole definition

Current state:

Need to install the metrics-server addon in minikube.
The eirini SA seems to be able to get metrics for the nodes (at least, it's not reporting errors).  I recall fixing something along these lines before.
My metrics server is responding with non-zero things:

pod metrics with CPU & memory

curl --cacert  ~/.minikube/ca.crt --cert ~/.minikube/profiles/minikube/client.crt --key ~/.minikube/profiles/minikube/client.key "$(kubectl config view --minify --output=jsonpath='{.clusters[].cluster.server}')/apis/metrics.k8s.io/v1beta1/namespaces/eirini/pods/go-env-test-space-a82380fc86-0"

{
  "kind": "PodMetrics",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "metadata": {
    "name": "go-env-test-space-a82380fc86-0",
    "namespace": "eirini",
    "selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/eirini/pods/go-env-test-space-a82380fc86-0",
    "creationTimestamp": "2020-05-07T19:47:53Z"
  },
  "timestamp": "2020-05-07T19:47:00Z",
  "window": "1m0s",
  "containers": [
    {
      "name": "opi",
      "usage": {
        "cpu": "1011m",
        "memory": "10008Ki"
      }
    }
  ]
}

To be clear, I'm able to get to the app metrics via Kubernetes, just not via cf app <appname> or the Applications view in Stratos (via stratos-metrics).


feat: add 5ireChain mainnet

Add new chain

Template to provide information about the new chain. Only add extra information in the bottom section. Ensure that the contracts are deployed on the chain, if not deploy with safe-contracts. Only one chain ID, one Safe version and one deployment type per PR. This entire paragraph should be deleted.

Please fill the following form:
Provide the Chain ID (Only 1 chain id per PR).

Chain_ID: 995

Provide RPC URL for the chain (should be able to query atleast 10 requests per minute for automatic PR check).

RPC_URL: https://rpc.5ire.network

Relevant information:
Add any other relevant information like blockexplorer, any annotation...
Blockexplorer: https://5irescan.io

yes @mmv08 . I will update soon

@mmv08 done


AnsiConsole not accessible, unable to access Live/Console

Information

OS: Windows
Version: 0.46.0
IDE: Visual Studio

Description
After a fresh import of 0.46.0, I am unable to access AnsiConsole.Live.
AnsiConsole is accessible as a class with Spectre.Console being imported to the script, but has no accessible values (aka .Console, .Live)
"AnsiConsole.Live does not exist in the current content"
Strangely, navigating to AnsiConsole class, I can see a public getter for .Console, however I am receiving the same error in VS.
To verify im on 0.46.0, I do have access to the new Layout class.
Thanks in advance, I'm pretty sure the problem is on my side but not sure whats going on.

 Massive apologies.


Fix keys for statistics so exti call is only made once

Task/Issue URL: https://app.asana.com/0/361428290920652/578616594437384
Description:
Fix incorrect shared preferences keys
Steps to test this PR:

On an app fresh install, note the exti request is made (either by watching traffic or adding a breakpoint to initializeAtb method)
Relaunch and note that it is not made a second time

Internal references:
Software Engineering Expectations
Technical Design Template

@subsymbolic given this is a hotfix did you mean to choose develop as the base?

But otherwise, this looks good - feel free to merge if you're on the branch you intended :)

Ahh good point, the merge will be via git flow so will be on master, I've updated the PR to reflect this too.


Fix starting line of warning spans

It appears there was a regression in warning/error formatting where all spans would start from line 0:

This PR fixes that:

I've just realized, looking at that screenshot, that the line numbers changed but not the inner text. :( going to draft this and come back to it

Fixed up, although it was somewhat more complicated than expected.


checkdb test reports passed and failed as same

Run Invoke-DbcCheck -SqlInstance serverName -check LastGoodCheckDb
I have 11 databases that do not have LastGoodCheckDb.
Results:
Tests Passed: 11, Failed: 11, Skipped: 0, Pending: 0, Inconclusive: 0
Expected Results :
Tests Passed:0, Failed: 11

Checking this out with version 1.0.5 and I received a different error. What version are you running on?

with get-module .. I got 1.0.3 .. Do I have to update it ?

1.0.5 is now in the PowerShell Gallery

Well if you have PS 4 or lower it is going to fail as well, there is a known bug that I will try to get taken care of tonight.  My error relates to the PS4 bug and will see if it fixes yours.

I have ps4. When updating using Update-Module dbachecks, dbatools, PSFramework, Pester it still points to C:\Program Files\WindowsPowerShell\Modules\dbachecks\1.0.3\checks

michalporeba is working on the PS4 fix now :). To get the latest you can do Find-Module dbachecks | Select-Object -ExpandProperty Version
Install-Module dbachecks -Force

Does this still happen with the latest version?

Will check on monday to confirm.

This is fixed. Thanks !


⚠ DDoS-Relay US-W-hil-2 has degraded performance

In 20a5803, DDoS-Relay US-W-hil-2 (http://<IP_ADDRESS>:42069/;csv) experienced degraded performance:

HTTP code: 200
Response time: 31 ms

Resolved: DDoS-Relay US-W-hil-2 performance has improved in e5cfa1a after 14 minutes.


Fixes related to new TSS (update: Also Tss2_Sys_FlushContext)

This PR implements a couple of small fixes (and testing improvements) related to the recent work to build against the tpm2-software TSS implementation:

Allow NULL cmdauths in NV_ReadPublic

This is to allow the usage that's required in the tpm2-software TSS
Due to the previous work to allow NULL cmdauths in general, this is functionally the same as what was previously done (indicating no authorization by setting count = 0)

Use NULL cmdauths in the nvram utilities

As above, this is to get these utilities to not fail when built against the tpm2-software TSS
I didn't realize this was a problem before, because we had no tests of the nvram utilities! (see below)

Add a simple test of the nvram utilities

This also necessitated improving our "test-utils", to allow this test to be run multiple times (e.g. running Clear between tests)

Update:
I've added to this PR the implementation of the TSS function FlushContext, which flushes a memory-resident object from the TPM. This will be useful in the ongoing key-gen work (we load a key before using it to sign, so it's a good idea to then flush it afterward, to avoid having things build up either in the TPM or the resource manager)


Upgrade Action clarification

When the spfx code is modified and uploaded to the appCatalog, the effect of this change is immediate in the site that the app is already deployed.  This "Upgrade Action" is only needed when it involves Assets modification. Although the notes implies this,  I am not sure if it is clearly stated.

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

ID: 2c30373b-3c44-c8bc-75d1-bb788efb479e
Version Independent ID: 5ad284d8-3320-e7f3-0164-d29d3d82b74d
Content: Provision SharePoint assets from your SharePoint client-side web part
Content Source: docs/spfx/web-parts/get-started/provision-sp-assets-from-package.md
Product: sharepoint
Technology: sharepoint-framework
GitHub Login: @spdevdocs
Microsoft Alias: spdevdocs

How would you change the page?

Sorry If this was not clear.  For brevity, lets say I start with 'HelloWorld" web part and already create a page that uses this web part.   Now I go back to the source and change html a bit.  like "Welcome to SharePoint!" to "SharePoint is Great!",  Change "version" in "package-solution.json" to "<IP_ADDRESS>",  package it up and  upload to AppCatalog and deploy it.   If I go back to the page and refresh,  it will show "SharePoint is Great!" So the code change is already in effect.  Installed version to this site is still Version "<IP_ADDRESS>" and version <IP_ADDRESS> is available (for upgrade) .  With this behavior and from the way it is written in this page, I concluded this Upgrade Action is mainly for Assets modification (like adding another list or modifying list structure) but code changes from TS source are immediate once you upload the solution and deploy / checked in in AppCatalog.
(come to think of it, there could be an issue if the modified source code depends on a list created from provisioning.  )
FYI, I am using Site Collection level App Catalog that we have created last year.   I am not sure if this makes any difference though.

What you describe is the expected behavior & the page appears clear in the example. If you think it should be worded differently, please suggest the change.


Streaming responses

In this line...
https://github.com/submarcos/django-vectortiles/blob/86f00879a27a0c5aaf1eebad6448ca27993a3d13/vectortiles/postgis/mixins.py#L58
the entire MVT response from PostGIS is converted to a bytes object. That means it has to be in memory twice, once as a memoryview and once as a bytes. I'm wondering if this is necessary, since Django performs the same conversion. If the conversion were not there, a caller could intercept the memoryview and make a StreamingHttpResponse out of it, so that it only needs to be in memory once.

I could discuss a PR with my employer, but I'd first need to have #36 resolved.

I've also done some more research and found that this is not the bottleneck, memory-wise. The tile is sent over the wire by PostgreSQL as ASCII hex. psycopg reads the entire tile into memory in that format, then decodes it into a separate buffer, so at that point the memory use is 3x the size of the tile. Fixing this issue would therefore not reduce the peak memory use. For that, the ST_AsMVT query would somehow have to chunk the resulting bytea in PostgreSQL so this library can receive it piecemeal and sent the chunks to the client in a streaming response.

I could discuss a PR with my employer, but I'd first need to have #36 resolved.

This point is resolved. I'm working on a 1.0 refactor and release. If you contribute a PR I can implement it in 0.2.1 and 1.0 versions


dnsrecon: 0.9.1 -> 0.10.1

Motivation for this change
Update to latest upstream release 0.10.1
Change log: https://github.com/darkoperator/dnsrecon/releases/tag/0.10.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

[ ] 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 129889 run on x86_64-linux 1

1 package built:

dnsrecon

Result of nixpkgs-review pr 129889 at e9a2fe1f run on aarch64-linux 1

1 package built successfully:

dnsrecon

1 suggestion:

warning: stale-substitute
Stale substituteInPlace detected.
substituteStream(): WARNING: pattern '1.0.0' doesn't match anything in file 'dnsrecon.py'
Near pkgs/tools/security/dnsrecon/default.nix:41:0:
   |
41 |     description = "DNS Enumeration Script";
   | ^


Add generator for networkingv1 ingress object

Is your feature request related to a problem? Please describe.
Extension v1 ingresses are deprecated and will be removed in future Kubernetes versions (see https://kubernetes.io/docs/reference/using-api/deprecation-guide/#ingress-v122). Hence we should add support for generating networking v1 ingresses from devfile
Describe the solution you'd like
A new generator is added that generates a networking v1 ingress from ingressparams. We should not need to remove the extensions v1beta1 ingress yet (at least until we continue to support openshift 3.11).
Describe alternatives you've considered
There is no alternative solution. Ingresses from extension v1beta1 will no longer be supported by kubernetes
Additional context
https://github.com/openshift/odo/issues/4592

closing this issue, as https://github.com/devfile/api/issues/504 has been created under devfile/api repo for issue tracking.


Broken on Sympy 1.6.2

Hi,
Only a small change will make your script compatible with python 3. Is there any particular reason to stick to python 2?

Patches welcome! Of course backwards compatibility is desirable, if possible.

.. but it works for me with Python 3.6.9.

Python3 support was added by pull request #20 last year. I will leave this issue open for now in case somebody can reproduce a specific issue with python3 support.

I tried on python 3.8 and sympy 1.6.2 and it didn't work. The scaling of the matrices, for e.g., G = (A(a,alpha,r).T/f).T did not work. It had to be replaced with  G = (A(a,alpha,r).T*(f**-1)).T

I will have to check with other versions of Python.

Interesting. I have not used Python 3.8 yet. I am busy with other projects this week, but will be able to test a patch this weekend. Thanks for reporting!

I can reproduce the error with Python 3.6.9 by upgrading to Sympy 1.6.2.

This is fun ..
>>> wincnn.showCookToomFilter((0,1,-1), 2, 3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/andrew/develop/wincnn/wincnn.py", line 105, in showCookToomFilter
    AT,G,BT,f = cookToomFilter(a,n,r,fractionsIn)
  File "/home/andrew/develop/wincnn/wincnn.py", line 55, in cookToomFilter
    G = (A(a,alpha,r).T/f).T
  File "/home/andrew/.local/lib/python3.6/site-packages/sympy/core/decorators.py", line 127, in binary_op_wrapper
    return func(self, other)
  File "/home/andrew/.local/lib/python3.6/site-packages/sympy/matrices/common.py", line 2712, in __truediv__
    return self.__div__(other)
  File "/home/andrew/.local/lib/python3.6/site-packages/sympy/core/decorators.py", line 127, in binary_op_wrapper
    return func(self, other)
  File "/home/andrew/.local/lib/python3.6/site-packages/sympy/matrices/common.py", line 2452, in __div__
    return self * (self.one / other)
TypeError: unsupported operand type(s) for /: 'One' and 'MutableDenseMatrix'

That must be the same error you got. Let's apply your fix internally to sympy/matrices/common.py at line 2452:
    @call_highest_priority('__rdiv__')
    def __div__(self, other):
        return self * other**(-1)
        # return self * (self.one / other)

.. and try again ..
>>> wincnn.showCookToomFilter((0,1,-1), 2, 3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'wincnn' is not defined
>>> import wincnn
^[[Awincnn.showCookToomFilter((0,1,-1), 2, 3)
AT =
⎡1  1  1   0⎤
⎢           ⎥
⎣0  1  -1  1⎦

G =
⎡ 1    0     0 ⎤
⎢              ⎥
⎢1/2  1/2   1/2⎥
⎢              ⎥
⎢1/2  -1/2  1/2⎥
⎢              ⎥
⎣ 0    0     1 ⎦

BT =
⎡1  0   -1  0⎤
⎢            ⎥
⎢0  1   1   0⎥
⎢            ⎥
⎢0  -1  1   0⎥
⎢            ⎥
⎣0  -1  0   1⎦

FIR filter: AT*((G*g)(BT*d)) =
⎡d[0]⋅g[0] + d[1]⋅g[1] + d[2]⋅g[2]⎤
⎢                                 ⎥
⎣d[1]⋅g[0] + d[2]⋅g[1] + d[3]⋅g[2]⎦

Then I noticed that all of the matrix division code was replaced in the Sympy master branch in the last few weeks. I suspect you found a bug in Sympy 1.6.2.
Still we should apply your fix since it is correct and works around the issue in Sympy.

@asadalam please let me know if the pull request works for you.

I made a pull request but there is no change. The matrices are still being divided.

Hm... did you look at https://github.com/andravin/wincnn/pull/26 ? It incorporate your suggested fix.

Yeah, I saw that. Apologies, but I was not very well versed with pull requests, but now I was able to pull the changes of #26 and it works. Thanks.

Thanks for reporting this and coming up with the fix @asadalam

You are welcome.


Watchdog is so cool,and I want a new feature

Watchdog is so cool, it works well, when watchdog find on the main thread is blocking, and I want to know who block the main thread. but I do not know how to print the callstack?

can Watchdog provide the feature of print the main thread callstack

Thanks! Unfortunately I didn't find way to do that.


Backstage Upgrade Helper diff doesn't match backstage-cli versions:bump

When  running yarn backstage-cli versions:bump, packages that only recieve a patch upgrade are typically not updated in packages.json.  However when you view the diff with in the backstage upgrade helper, it shows changes to those packages.
I get why these packages don't need to be updated in packages.json (e.g. 1.3.4 still satisfies the constraint ^1.3.2 so doesn't need to be upgraded), but it makes it confusing when looking at the upgrade helper's diff and seeing some package changes matched in your own diff, but not others.
Expected Behaviour
I'd expect the diff shown by the backstage upgrade helper for packages.json, to match the diff produced after running the versions:bump command
Actual Behaviour
Backstage Upgrade Helper:

Diff after running versions:bump

Steps to Reproduce

Create a new backstage app with version 1.4
Run  yarn backstage-cli versions:bump to upgrade to 1.5

Context

Your Environment

Output of yarn backstage-cli info:

OS:   Linux <IP_ADDRESS>-microsoft-standard-WSL2 - linux/x64
node: v16.14.0
yarn: 1.22.19
cli:  0.18.0 (installed)

Dependencies:
  @backstage/app-defaults                          1.0.4
  @backstage/backend-common                        0.14.1
  @backstage/backend-plugin-api                    0.1.0
  @backstage/backend-tasks                         0.3.3
  @backstage/catalog-client                        1.0.4
  @backstage/catalog-model                         1.1.0
  @backstage/cli-common                            0.1.9
  @backstage/cli                                   0.18.0
  @backstage/config-loader                         1.1.3
  @backstage/config                                1.0.1
  @backstage/core-app-api                          1.0.4
  @backstage/core-components                       0.10.0
  @backstage/core-plugin-api                       1.0.4
  @backstage/dev-utils                             1.0.4
  @backstage/errors                                1.1.0
  @backstage/integration-react                     1.1.2
  @backstage/integration                           1.2.2
  @backstage/plugin-api-docs                       0.8.7
  @backstage/plugin-app-backend                    0.3.34
  @backstage/plugin-auth-backend                   0.15.0
  @backstage/plugin-auth-node                      0.2.3
  @backstage/plugin-azure-devops-backend           0.3.13
  @backstage/plugin-azure-devops-common            0.2.4
  @backstage/plugin-azure-devops                   0.1.23
  @backstage/plugin-catalog-backend-module-azure   0.1.5
  @backstage/plugin-catalog-backend-module-github  0.1.5
  @backstage/plugin-catalog-backend-module-msgraph 0.4.0
  @backstage/plugin-catalog-backend                1.3.0
  @backstage/plugin-catalog-common                 1.0.4
  @backstage/plugin-catalog-graph                  0.2.19
  @backstage/plugin-catalog-import                 0.8.10
  @backstage/plugin-catalog-node                   1.0.0
  @backstage/plugin-catalog-react                  1.1.2
  @backstage/plugin-catalog                        1.4.0
  @backstage/plugin-explore-react                  0.0.19
  @backstage/plugin-explore                        0.3.38
  @backstage/plugin-github-actions                 0.5.7
  @backstage/plugin-github-pull-requests-board     0.1.1
  @backstage/plugin-home                           0.4.23
  @backstage/plugin-org                            0.5.7
  @backstage/plugin-permission-common              0.6.3
  @backstage/plugin-permission-node                0.6.3
  @backstage/plugin-permission-react               0.4.3
  @backstage/plugin-proxy-backend                  0.2.28
  @backstage/plugin-scaffolder-backend             1.4.0
  @backstage/plugin-scaffolder-common              1.1.2
  @backstage/plugin-scaffolder                     1.4.0
  @backstage/plugin-search-backend-module-pg       0.3.5
  @backstage/plugin-search-backend-node            1.0.0
  @backstage/plugin-search-backend                 1.0.0
  @backstage/plugin-search-common                  1.0.0
  @backstage/plugin-search-react                   1.0.0
  @backstage/plugin-search                         1.0.0
  @backstage/plugin-stack-overflow                 0.1.3
  @backstage/plugin-tech-radar                     0.5.14
  @backstage/plugin-techdocs-backend               1.2.0
  @backstage/plugin-techdocs-module-addons-contrib 1.0.2
  @backstage/plugin-techdocs-node                  1.2.0
  @backstage/plugin-techdocs-react                 1.0.2
  @backstage/plugin-techdocs                       1.3.0
  @backstage/plugin-user-settings                  0.4.6
  @backstage/release-manifests                     0.0.5
  @backstage/test-utils                            1.1.2
  @backstage/theme                                 0.2.16
  @backstage/types                                 1.0.0
  @backstage/version-bridge                        1.0.1
Done in 0.67s.

Yep we've had this brought up a few times, fixed in #13480


elasticsearch indexing of metrics and records outputs

tools/c7n_indexer provides for cloud watch metrics indexing into influxdb at the moment.

@kapilt what needs to be done next related to this??
Can you please give me some ideas or hints??

@kapilt what needs to be done next related to this??
Can you please give me some ideas or hints??


MM-15679 Mark as Unread

This is the PR to merge the mark-as-unread feature branch into master. It's made up of the following PRs:

#896 Add API endpoints
#903 Add tracking for when a channel has been manually marked as unread
#918 Adds handling for when another session marks a channel as unread
#944 Fix some logic from the previous PR that got messed up during review
#950 Fixed a manually unread channel getting marked as unread when receiving a new message
#968 Removed some logic that changed where the New Messages line is rendered when the channel is manually marked as unread

Ticket Link
https://mattermost.atlassian.net/browse/MM-15670
Related PRs
Mobile PR: https://github.com/mattermost/mattermost-mobile/pull/3554
Server PR: https://github.com/mattermost/mattermost-server/pull/13082
Web PR: https://github.com/mattermost/mattermost-webapp/pull/4213

Assigning this to myself so that I can merge it into master without squashing the feature branch

@jgilliam17 For QA review, there's nothing you can directly test here until it's part of the apps. Feel free to look for unit tests though

@hmhealey
Error trying doing the automated Cherry picking. Please do this manually
+++ Updating remotes...
Fetching upstream
Fetching origin
+++ Updating remotes done...
+++ Creating local branch automated-cherry-pick-of-#986-upstream-release-5.18-1574114845
Branch 'automated-cherry-pick-of-#986-upstream-release-5.18-1574114845' set up to track remote branch 'release-5.18' from 'upstream'.
+++ Downloading patch to /tmp/986.patch (in case you need to do this again)

+++ About to attempt cherry pick of PR. To reattempt:
  $ git am -3 /tmp/986.patch

Applying: Add mark as unread api to redux (#896)
Using index info to reconstruct a base tree...
A	src/action_types/channels.js
A	src/actions/posts.js
M	src/actions/posts.test.js
A	src/client/client4.js
A	src/reducers/entities/channels.js
A	src/reducers/entities/teams.js
A	src/utils/post_list.js
Falling back to patching base and 3-way merge...
Auto-merging src/utils/post_list.ts
Auto-merging src/reducers/entities/teams.ts
Auto-merging src/reducers/entities/channels.ts
Auto-merging src/client/client4.ts
CONFLICT (content): Merge conflict in src/client/client4.ts
Auto-merging src/actions/posts.ts
CONFLICT (content): Merge conflict in src/actions/posts.ts
Auto-merging src/actions/posts.test.js
Auto-merging src/action_types/channels.ts
Patch failed at 0001 Add mark as unread api to redux (#896)
Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

+++ Conflicts detected:

UU src/actions/posts.ts
UU src/client/client4.ts

+++ Aborting in-progress git am.

+++ Returning you to the master branch and cleaning up.

Since we merged this branch into master without squashing, I just merged it into the release-5.18 branch as well instead of cherry-picking the merge commit


GPU Support

Hi @unagiootoro
I ran the XOR sample and found that Cumo was slower than Numo.
If you don't mind my asking, Do you have a GPU + CUDA environment?
If you don't have a GPU, someone in Ruby community (including me) will support you with a donation...

I'm not good at English.
So it takes time to enter long sentences.
May I speak in Japanese with you?

I'm not good at English, either.
Almost all of my English is written by "Mirai Translate".

Okay.
My environment is an environment where Cuda can be build.
But since the OS is Windows, I can't build Cumo.
So, I want to be able to learning using ruby-dnn and GPU on Windows.
(I still don't know how to do it)
As a guess, the XOR example has less parallel computation, so Cumo will be slower than Numo.

OK. I see.
Maybe you're right about why XOR is slow.

One more question. How do you install Ruby on Windows?

RubyInstaller + DevKit + MYS2?
Windows Subsystem for Linux?
VirtualBox/VMware + Linux?
Docker for Windows?
None of the above

This may be important for building the Cumo.

I'm using WSL, but WSL doesn't support GPU, so I tried install Cumo with RubyInstaller.
But install was not successful.
I think windows nvcc doesn't support gcc, so it's hard to run Cumo on RubyInstaller.

I compared the time using the mnist sample.
mnist_example_for_profiler.rb
require "dnn"

include DNN::Layers
include DNN::Activations
include DNN::Optimizers
include DNN::Losses
include DNN::Models

x_train = SFloat.cast Marshal.load(File.binread("x_train.dat"))
x_test  = SFloat.cast Marshal.load(File.binread("x_test.dat"))
y_train = SFloat.cast Marshal.load(File.binread("y_train.dat"))
y_test  = SFloat.cast Marshal.load(File.binread("y_test.dat"))

model = Sequential.new
model << InputLayer.new(784)
model << Dense.new(256)
model << ReLU.new
model << Dense.new(256)
model << ReLU.new
model << Dense.new(10)
model.setup(RMSProp.new, SoftmaxCrossEntropy.new)

model.train(x_train, y_train, 20, batch_size: 100, test: [x_test, y_test], verbose: true)

Time
Numo
# real	1m44.682s
# user	7m4.630s
# sys	5m51.241s

Cumo
# real	1m35.018s
# user	1m17.208s
# sys	0m22.956s

stackprof
main.rb
require 'stackprof'
require 'optparse'

opt = ARGV.getopts("g", "gpu", "out:")

if opt['g'] or opt['gpu']
  puts "Use Cumo"
  require 'cumo'

  # https://github.com/sonots/cumo/issues/143
  SFloat = Cumo::SFloat
  class SFloat
    alias mean_original mean
    def mean(*args)
      if size == 1
        self[0]
      else
        mean_original(*args)
      end
    end
  end

else
  puts "Use Numo"
  require "numo/linalg"
  SFloat = Numo::SFloat
end

StackProf.run(mode: :cpu, out: opt["out"], raw: true) do
  load "./mnist_example_for_profiler.rb"
end

ruby main.rb    --out profile/numo-mnist.dump
ruby main.rb -g --out profile/cumo-mnist.dump
stackprof profile/numo-mnist.dump
stackprof profile/cumo-mnist.dump

Mode: cpu(1000)
Samples: 25320 (11.51% miss rate)
GC: 1298 (5.13%)
 TOTAL    (pct)     SAMPLES    (pct)     FRAME
  9808  (38.7%)        9808  (38.7%)     DNN::Optimizers::RMSProp#update_params
  7195  (28.4%)        7075  (27.9%)     #<Module:0x0000556476340dc0>.call
  2094   (8.3%)        2094   (8.3%)     DNN::Activations::ReLU#backward
  1298   (5.1%)        1298   (5.1%)     (garbage collection)
  1010   (4.0%)        1010   (4.0%)     DNN::Activations::ReLU#forward
  8062  (31.8%)         802   (3.2%)     #<Module:0x0000556476340e88>.dot
  5717  (22.6%)         768   (3.0%)     DNN::Layers::Dense#backward
 10461  (41.3%)         646   (2.6%)     DNN::Optimizers::Optimizer#update
   411   (1.6%)         411   (1.6%)     DNN::Models::Model#evaluate
 24004  (94.8%)         355   (1.4%)     DNN::Models::Model#train
   183   (0.7%)         183   (0.7%)     DNN::Losses::SoftmaxCrossEntropy.softmax
   350   (1.4%)         167   (0.7%)     DNN::Losses::SoftmaxCrossEntropy#forward_loss
   120   (0.5%)         120   (0.5%)     #<Module:0x0000556476340e88>.blas_char
  3307  (13.1%)         101   (0.4%)     DNN::Layers::Dense#forward
  8155  (32.2%)          93   (0.4%)     Numo::NArray#dot
    65   (0.3%)          65   (0.3%)     Numo::NArray.asarray
    59   (0.2%)          56   (0.2%)     DNN::Models::Model#layers
    52   (0.2%)          33   (0.1%)     DNN::Iterator#next_batch
    29   (0.1%)          29   (0.1%)     DNN::Layers::Layer#built?
    26   (0.1%)          26   (0.1%)     DNN::Link#initialize
   381   (1.5%)          25   (0.1%)     DNN::Losses::Loss#forward
    23   (0.1%)          23   (0.1%)     DNN::Losses::SoftmaxCrossEntropy#backward_loss
    22   (0.1%)          22   (0.1%)     DNN::Iterator#reset_indexs
 22604  (89.3%)          18   (0.1%)     DNN::Models::Model#train_on_batch
    15   (0.1%)          15   (0.1%)     DNN::Layers::InputLayer#forward
  7827  (30.9%)          13   (0.1%)     DNN::Models::Model#backward
    10   (0.0%)          10   (0.0%)     DNN::Layers::Connection#regularizers
 24022  (94.9%)           9   (0.0%)     <top (required)>
    34   (0.1%)           7   (0.0%)     DNN::Losses::Loss#backward
     7   (0.0%)           7   (0.0%)     DNN::Layers::Connection#get_params

Mode: cpu(1000)
Samples: 22564 (9.41% miss rate)
GC: 164 (0.73%)
 TOTAL    (pct)     SAMPLES    (pct)     FRAME
  8007  (35.5%)        8007  (35.5%)     DNN::Models::Model#evaluate
  7692  (34.1%)        7673  (34.0%)     Cumo::NArray#dot
  3259  (14.4%)        3259  (14.4%)     DNN::Activations::ReLU#backward
  1163   (5.2%)        1163   (5.2%)     DNN::Optimizers::RMSProp#update_params
  1017   (4.5%)        1017   (4.5%)     Cumo::NArray#to_f
   352   (1.6%)         340   (1.5%)     DNN::Iterator#next_batch
   280   (1.2%)         177   (0.8%)     DNN::Losses::SoftmaxCrossEntropy#forward_loss
   164   (0.7%)         164   (0.7%)     (garbage collection)
  1281   (5.7%)         115   (0.5%)     DNN::Optimizers::Optimizer#update
  4232  (18.8%)         105   (0.5%)     DNN::Layers::Dense#backward
   103   (0.5%)         103   (0.5%)     DNN::Losses::SoftmaxCrossEntropy.softmax
 22385  (99.2%)          85   (0.4%)     DNN::Models::Model#train
  3631  (16.1%)          66   (0.3%)     DNN::Layers::Dense#forward
    62   (0.3%)          62   (0.3%)     DNN::Activations::ReLU#forward
    32   (0.1%)          32   (0.1%)     DNN::Losses::SoftmaxCrossEntropy#backward_loss
    23   (0.1%)          22   (0.1%)     DNN::Models::Model#layers
    19   (0.1%)          19   (0.1%)     Cumo::NArray.asarray
   301   (1.3%)          17   (0.1%)     DNN::Losses::Loss#forward
    16   (0.1%)          16   (0.1%)     DNN::Layers::Layer#built?
    16   (0.1%)          16   (0.1%)     DNN::Link#initialize
    15   (0.1%)          15   (0.1%)     DNN::Iterator#reset_indexs
    13   (0.1%)          13   (0.1%)     Cumo::SFloat#mean
 22400  (99.3%)          11   (0.0%)     <top (required)>
    11   (0.0%)          11   (0.0%)     DNN::Layers::InputLayer#forward
  7502  (33.2%)          10   (0.0%)     DNN::Models::Model#backward
 12288  (54.5%)           9   (0.0%)     DNN::Models::Model#train_on_batch
     9   (0.0%)           9   (0.0%)     DNN::Layers::Connection#regularizers
    40   (0.2%)           3   (0.0%)     DNN::Losses::Loss#backward
    23   (0.1%)           3   (0.0%)     DNN::Layers::InputLayer#call
  8667  (38.4%)           3   (0.0%)     DNN::Models::Model#accurate

Maybe the Cumo will be a little faster.

Thank you for taking a benchmarking Numo and Cumo.
When using Cumo, it is necessary to reduce the transfer of CPU and GPU, so modify 'evaluate' method as follows. (Only multi-class classification is modified)
private def evaluate(y, t)
  if y.shape[1..-1] == [1]
    correct = 0
    y.shape[0].times do |i|
      if @loss_func.is_a?(Losses::SigmoidCrossEntropy)
        correct += 1 if (y[i, 0] < 0 && t[i, 0] < 0.5) || (y[i, 0] >= 0 && t[i, 0] >= 0.5)
      else
        correct += 1 if (y[i, 0] < 0 && t[i, 0] < 0) || (y[i, 0] >= 0 && t[i, 0] >= 0)
      end
    end
  else
    correct = y.max_index(axis: 1).eq(t.max_index(axis: 1)).count
  end
  correct
end

I think this may make Cumo faster.

ruby-dnn & Cumo got faster with version 0.13.0 !
Numo

real	1m47.222s
user	7m29.562s
sys	6m4.522s

 TOTAL    (pct)     SAMPLES    (pct)     FRAME
 12618  (51.0%)       12618  (51.0%)     DNN::Optimizers::RMSProp#update_params
  4510  (18.2%)        4414  (17.8%)     #<Module:0x000056193c6c03a8>.call
  1997   (8.1%)        1997   (8.1%)     DNN::Activations::ReLU#backward
  1279   (5.2%)        1279   (5.2%)     (garbage collection)
   895   (3.6%)         895   (3.6%)     DNN::Activations::ReLU#forward
  5410  (21.9%)         845   (3.4%)     #<Module:0x000056193c6c0718>.dot
  4490  (18.1%)         710   (2.9%)     DNN::Layers::Dense#backward
 13250  (53.6%)         625   (2.5%)     DNN::Optimizers::Optimizer#update
 23446  (94.8%)         316   (1.3%)     DNN::Models::Model#train
   260   (1.1%)         260   (1.1%)     DNN::Losses::SoftmaxCrossEntropy.softmax
   467   (1.9%)         207   (0.8%)     DNN::Losses::SoftmaxCrossEntropy#forward
  1800   (7.3%)         114   (0.5%)     DNN::Layers::Dense#forward
    96   (0.4%)          96   (0.4%)     #<Module:0x000056193c6c0718>.blas_char
  5466  (22.1%)          56   (0.2%)     Numo::NArray#dot
    55   (0.2%)          55   (0.2%)     Numo::NArray.asarray
    24   (0.1%)          24   (0.1%)     DNN::Losses::SoftmaxCrossEntropy#backward
    25   (0.1%)          22   (0.1%)     DNN::Iterator#next_batch
    21   (0.1%)          21   (0.1%)     DNN::Iterator#reset
    21   (0.1%)          21   (0.1%)     DNN::Layers::Layer#built?
    21   (0.1%)          21   (0.1%)     DNN::Link#initialize
    18   (0.1%)          17   (0.1%)     DNN::Models::Model#layers
    19   (0.1%)          17   (0.1%)     DNN::Losses::Loss#regularizers_backward
    15   (0.1%)          15   (0.1%)     DNN::Layers::InputLayer#forward
 22880  (92.5%)          13   (0.1%)     DNN::Models::Model#train_on_batch
    15   (0.1%)          10   (0.0%)     DNN::Losses::Loss#regularizers_forward
 23464  (94.8%)           9   (0.0%)     <top (required)>
     8   (0.0%)           8   (0.0%)     #<Module:0x000056193c890480>.learning_phase=
     7   (0.0%)           7   (0.0%)     DNN::Models::Model#evaluate
     7   (0.0%)           7   (0.0%)     DNN::Layers::Connection#get_params
     7   (0.0%)           7   (0.0%)     DNN::Layers::Connection#regularizers

Cumo

real	1m6.295s
user	0m58.364s
sys	0m12.208s

 TOTAL    (pct)     SAMPLES    (pct)     FRAME
  5954  (50.7%)        5940  (50.6%)     Cumo::NArray#dot
  3250  (27.7%)        3250  (27.7%)     DNN::Activations::ReLU#backward
   898   (7.6%)         898   (7.6%)     DNN::Optimizers::RMSProp#update_params
   526   (4.5%)         526   (4.5%)     Cumo::NArray#to_f
   200   (1.7%)         200   (1.7%)     DNN::Iterator#next_batch
   264   (2.2%)         163   (1.4%)     DNN::Losses::SoftmaxCrossEntropy#forward
  3858  (32.9%)         131   (1.1%)     DNN::Layers::Dense#backward
   101   (0.9%)         101   (0.9%)     DNN::Losses::SoftmaxCrossEntropy.softmax
  2321  (19.8%)          94   (0.8%)     DNN::Layers::Dense#forward
    71   (0.6%)          71   (0.6%)     DNN::Activations::ReLU#forward
    69   (0.6%)          69   (0.6%)     (garbage collection)
   966   (8.2%)          67   (0.6%)     DNN::Optimizers::Optimizer#update
 11660  (99.3%)          41   (0.3%)     DNN::Models::Model#train
   309   (2.6%)          32   (0.3%)     DNN::Losses::Loss#loss
    29   (0.2%)          29   (0.2%)     DNN::Losses::SoftmaxCrossEntropy#backward
    21   (0.2%)          21   (0.2%)     DNN::Models::Model#evaluate
    14   (0.1%)          14   (0.1%)     Cumo::NArray.asarray
    11   (0.1%)          11   (0.1%)     DNN::Iterator#reset
    11   (0.1%)          11   (0.1%)     DNN::Link#initialize
 11674  (99.4%)          10   (0.1%)     <top (required)>
    13   (0.1%)           9   (0.1%)     DNN::Losses::Loss#regularizers_forward
    10   (0.1%)           9   (0.1%)     DNN::Models::Model#layers
     9   (0.1%)           9   (0.1%)     DNN::Layers::Layer#built?
     7   (0.1%)           7   (0.1%)     Cumo::SFloat#mean
  2413  (20.5%)           4   (0.0%)     DNN::Layers::Layer#call
 10832  (92.2%)           4   (0.0%)     DNN::Models::Model#train_on_batch
     4   (0.0%)           4   (0.0%)     DNN::Layers::InputLayer#forward
     4   (0.0%)           4   (0.0%)     DNN::Layers::Connection#regularizers
     2   (0.0%)           2   (0.0%)     DNN::Losses::Loss#regularizers_backward
     3   (0.0%)           1   (0.0%)     <top (required)>

With Google Colab, you can benchmark ruby-dnn in your browser.
Please help yourself !
https://colab.research.google.com/drive/1RJ8HTNI6akqBYZgZWzFve9c6GTz_Tava

Google colab で RubyからGPU を使って行列計算する [Japanese]


Implement Service Worker and Web app caching

Service Worker caching integrated with select-site UI code and provides
button to enable new version of site to be installed on client

Code updated and ready for new review.  Add comments against lines in source code as required.

Check it!


Add support for PD1.4 and create/update msg events that support AL1, PID, PD1

Add support for PD1.4 to create the patient.generalPractitioner
Also update existing msg events appropriately for support of AL1, PID, PD1
ADT_A01 --> PID, PD1, AL1
OMP_O09 --> PID, PD1, AL1
ORU_R01 --> PID, PD1
PPR_PC1 --> PID, PD1
RDE_O11 --> PID, PD1, AL1
RDE_O25 --> PID, PD1, AL1
VXU_V04 --> PID, PD1

In Release 1.0.9


Is it available for GET Request?

When receiving an HTTP GET request, the GraphQL query should be specified in the "query" query string. For example, if we wanted to execute the following GraphQL query:
{
  me {
    name
  }
}

This request could be sent via an HTTP GET like so:
http://myapi/graphql?query={me{name}}
https://graphql.org/learn/serving-over-http/#get-request

Sure, this library doesn't say anything about where you get the query from. It just gives an example from HTTP POST.
Assuming you're using ASP.NET you can add this to you controller (this is also shown in the demo project)
        [HttpGet]
        public object Get([FromQuery]string query)
        {
            var gql = new QueryRequest { Query = query };
            try
            {
                var data = _schemaProvider.ExecuteQuery(gql, _dbContext, null, null);
                return data;
            }
            catch (Exception)
            {
                return HttpStatusCode.InternalServerError;
            }
        }

Thanks!


Bad Request error

The issue tracker is for reporting product deficiencies. "How do I?" questions should be posted to the discussion forum at https://groups.google.com/group/google-apps-manager. When in doubt, start at the discussion forum and return here only when instructed to do so.
Please confirm the following:

I have upgraded to the latest GAM release from https://git.io/gamreleases and I still have this issue.
I am typing the command as described in the GAM Wiki at https://github.com/jay0lee/gam/wiki

Full steps to reproduce the issue:

gam info domain (or any other valid command)

Expected outcome (what are you trying to do?):
I am expecting a non-error response.
Actual outcome (what errors or bad behavior do you see instead?):
ERROR: ('invalid_grant: Bad Request', '{\n  "error": "invalid_grant",\n  "error_description": "Bad Request"\n}')
I upgraded to a fresh version of Python (3.7.4) as well as the latest GAM today.  I had this working for several years.
When it failed, I renamed my client_secrets and outh2service files, and created a new project.  I followed the in-script directions, and everything appears to have worked.  However, I am still getting the same error.  I tried it in both an admin as well as non-admin cmd shell.

did you ever find a resolution here? I'm having the same issue

did you ever find a resolution here? I'm having the same issue

I uninstalled and reinstalled.

To anyone finding this - delete oauth2.txt in your gam directory (~/bin/gam) and rerun the gam info domain command.


Sequential Equivalence Checking support

Add scripts for SEC using Jaspergold

I cannot review this. Would propose to let @szbieg do the review, as he has gotten into this topic the last weeks

@szbieg if you can take another look :smile:

@szibeg if you can take another look :smile:


Show models that didn't use in application

I user spring boot and create rest service. swagger load and show APIs and models but two model that don't use in application show there. I try to remove that with typeResolver but  I was not success.
"Link": { "type": "object", "properties": { "href": { "type": "string" }, "templated": { "type": "boolean" } }, "title": "Link" }, "Map«string,Link»": { "type": "object", "title": "Map«string,Link»", "additionalProperties": { "$ref": "#/definitions/Link" } },

If you use spring hates then you do use it, albeit indirectly


feat: allows omitting "this" keyword in @html, dynamic attributes, and props

Changes
Allows omitting the this keyword when referencing variables in @html. Values of @html are now automatically wrapped with this[""] if it doesn't already reference this and the variable actually exists in the relevant context.
Allows omitting the this keyword when referencing variables in dynamic attributes and props. References like that are now automatically wrapped with this[""] if it doesn't already include this and the variable actually exists in the relevant context.
Implementation details

It's required to wrap variables using square bracket notation (e.g. this['prop']) instead of dot property access (e.g. this.prop) because things like this.3 aren't valid (and throw a SyntaxError).

Motivation
This (!) is driven by my appreciation for the cleanliness of writing Vue.js components using Vue's composition API with script setup syntax which does away with the utter dominance of this this this in Vue.js components written in Options API style. It's also inspired by how Vue's refs can be accessed inside templates without referencing their value property which is otherwise necessary in scripts. It's just nice.
Most importantly, I think it's actually nice and desirable for WebC because it's even less clear whatever the heck this refers to when you write a component where you might not even have any JavaScript at all.
(There are other features where the same strategy could be useful (specifically dynamic attributes), so if this is desired, I reckon I could add support for that, tooI did it.)

I love this (but will have to review it next week!)

One thing I'd like to point out is that this feature won't allow dropping this entirely.
For example, in its current form, this feature doesn't allow you to use more complex expressions without this like <p :key="nested.object.fn()"></p>. This would need some more elaborate parsing of the template and general context. That's a thing Vue got right in my opinion: inside an SFC template, you can reference anything from a component's context and you can do so without relying on the this keyword. This becomes especially notable when using Vue's composition API with

I love this but I think I found a little bit better approach using destructuring. Can you have a look at #41? I’d like to work through that approach first! Closing this one for now but we may reopen if that approach sucks 😅


Spelling: lanuage -> language in variable name

Fixes a small spelling error in a variable name.

Please see https://github.com/microsoft/vscode/wiki/How-to-Contribute#spell-check-errors

Closing since we don't take PRs like this https://github.com/microsoft/vscode/wiki/How-to-Contribute#spell-check-errors


sending SIGKILL to  child process: (reload services not working)

Getting error when run last beta version of fuge:
$start all
sending SIGKILL to  child process: 3755
sending SIGKILL to  parent process: 3745
sending SIGKILL to  child process: 3755
sending SIGKILL to  parent process: 3745
[apigateway] exit - status: normally duration: 1s
[apigateway] restarting
[apigateway] file change: esparse
[apigateway] file change: esvalidate
sending SIGKILL to  child process: 3755
sending SIGKILL to  parent process: 3745
sending SIGKILL to  child process: 3755
sending SIGKILL to  parent process: 3745
sending SIGKILL to  child process: 3755
sending SIGKILL to  parent process: 3745
sending SIGKILL to  parent process: 3745
sending SIGKILL to  parent process: 3745
After that server reload not working on file change.
fuge: 2.0.2
fuge-runner: 2.0.1
fuge-config: 2.0.1
fuge-dns: 2.0.0

Thanks for the report, could you please attach your fuge configuration to this issue.

It was problem with config params. I added it directly in fuge yml file and it works now.

Excellent! will close this issue - thanks!


Cloning Environment

Change Type
Correction
Proposed Changes
https://docs.cloudmydc.com/environment-management/cloning-environment

Remove jelastic domain.

@cml-paul
This needs to be retaken from the platform


Use production server instead of just vanilla Flask

Avenues to explore:

Use waitress (https://flask.palletsprojects.com/en/2.0.x/tutorial/deploy/
Gunicorn
FastAPI plus Uvicorn

close via #64 (using gunicorn)


Bind key to combination

Hello, there are some characters in my keyboard that i can only get by using a combination of others.
So I would like to know if there is a way to create a bind to a combination of keys, something like this for example:
- keyboards: [ "AT Translated Set 2 keyboard"]

  layers:
    - modifiers: ['rightshift']
      keymap:
        apostrophe: rightalt + q

Hey! I think I don't entirely get the idea.
So let's say you want to write symbol _, currently it requires Shift+-. Do you want to simulate Shift+- by using another combination? Is that what you mean?

So is it possible? This would be really useful.

In case anyone is having the same problem, I found a workaround. I remap input combination to some unused single key.
For me, unused keys where: hanja, henkan, katakana, hiragana, katakanahiragana, muhenkan, numlock, scrolllock, and you can probably find more.
Then, I set up a custom shortcut in my system from those keys to some combination. (In my case, I had to use ydotool because normal remapping doesn't work on wayland). Note that not all unused keys will be supported by the system, but the examples I gave above should work.
I hope someone finds it useful :)

Hello @samvel1024 , I am not the original author of the question, but yes, that's also what I would like to do.
For example, I would like to create the following series of symbols for the home-row:
~ [ { ( * <middle> * ) } ] |

Currently, I can do things like ( or [ because they map directly to the "basic" row of a standard qwerty keyboard. However { is [ + shift.
It perfectly works with my config if I manually enable the layer and press shift, but it defeats a bit the purpose.
I would be glad to try implementing this. If you have any idea, I will take them.

It's been a while since the developer has promised adding this feature, namely mapping one key to a combination of keys. Has there been any progress in this regard? Or has this application become abandonware?

After discussing with the owner some times ago, he mentionned doing this on his free time.
He may not have had free time recently. IMO, you can always use it as much as developed and fork it if you want new features.

For those looking at this issue and wanting an alternative, you can consider keyd, light, allowing to reconfigure some keys, or kmonad, allowing a full config of the keyboard - like what QMK does.

Any updates on this so far?


Remove python2.7 support

We should also:

Add python_requires=">=3.6" to setup.py
Bump install_requires "django>=2.2" in setup.py


Gen.go update

This works with the cowboy's latest changes.
PTAL @marstr @jhendrixMSFT

Wait, it is not working as I expected yet :I

It works!


Collect all feasible solutions

Hi,
is it possible to add support for optimizer_attribute to collect all feasible solutions:
set_optimizer_attribute(model, "constraints/countsols/collect", 1)
The question appeared on discourse and it seems SCIP is the only free MIP solver, which supports it
https://discourse.julialang.org/t/right-solver-for-jump-to-find-every-solution-of-a-linear-system-of-equations-with-integer-solutions/44709
https://www.scipopt.org/doc/html/COUNTER.php

Hi, yes this is abolutely possible.
I would be available to help if you open a PR but don't have time myself now.
The steps would be:

creating the MOI optimizer attribute
implement get and set for it
at solve time, pass the parameter to SCIP

Thanks for such a quick response!
Will try to implement it.

hi @ivborissov, in the meantime, was the solution of setting the raw parameter "constraints/countsols/collect" working for you?

Hi @matbesancon Sorry, I didn't have time to get back to this issue yet( But as I remember simply setting set_optimizer_attribute(model, "constraints/countsols/collect", 1) didn't work for me.


Put test split files in test-splits dir

So that they're not cleaned up.

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.

Saw the changes in https://github.com/gradle/gradle/pull/14511/files

@blindpirate The changes in https://github.com/gradle/gradle/pull/14511 are somewhat orthogonal to the changes here, since they use a different file for performance test splits. I think it would be good to add your PR first.

Yes, I misread.

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.


CDB: Better onboarding experience to Cockroach Cloud

As a new user, you'd expect to be able to do:

Go to https://www.cockroachlabs.com/
Click "Start Instantly"
Create a "CockroachDB Serverless" "Start Instantly" button
Signup and provision a database
Get my connection string
Add it to the .env file of a new prisma project
Run npx prisma db push

Unfortunately, this leads to:
Encounter: db error: FATAL: codeParamsRoutingFailed: missing cluster name in connection string

There's a bit of information on how to set it up in this comment.
We should work with CockroachDB to improve this workflow.

Initial investigation this could be fixed. Issues: https://github.com/prisma/prisma/issues/10805 + https://github.com/prisma/quaint/issues/338

In recent dev versions of Prisma CLI the connection string com CockroachDB Cloud Serverless can just be copy pasted into Prisma and works. No additional work is need any more. This will be released with 3.8.0.


Update LuisModelAttribute.xml

change summary to documentation conventions, which will also save users from having to go into the docs of every property to see if it can be set, or only get.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: tsahi sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


fix: deeplink format error

Fix the bug that when the deep link has a path like celo://wallet, the format string will become celo://walletwc?uri=xxx.

Thank you for this, it will be addressed in next release, with slightly different fix in #1050


2191 destroy dup legends

Closes https://github.com/CartoDB/cartodb-central/issues/2191

Acceptance :green_apple:
Just fix that test problem, and ready to go.

done

retest this please

Merged and rake executed


%?LANG

The problem
The search box shows as entry for "%?LANG" (under "Reference").
This links to https://docs.perl6.org/language/variables#index-entry-%2525%3FLANG
There is no mention of "%?LANG" on that page.
Suggestions
Remove the link, or document "%?LANG".

It isn't implemented (in 2018.12)

say %?LANG
===SORRY!=== Error while compiling:
Variable '%?LANG' is not declared

Yep, but it should be either indexed correctly or eliminated...

Couple of different problems here. First one, that index entry does not actually exist. I would say all index entries with a % do not work: #1416 #2502. Second, the actual existence of that variable in the implementation. We will have to check both out...

https://docs.perl6.org/language/variables#index-entry-%2525%3FRESOURCES does not work either... I'm creating a new issue for this.

That variable is not even in Rakudo, but in nqp code. The only one that apparently works is $?LANG, but it's not tested, as far as I can see. Will continue checking this out.

The code that tests this in roas is commented out.
    # is-deeply (:%?LANG), (LANG => %?LANG), 'Adverb with %? twigil works';

I will just eliminate the indexing for the time being.


Asynchronous allreduce?

Hi baidu research team,
Is it possible to make an asynchronous allreduce based on this project?  I think it is quite important when we integrate allreudce into deep learning framework such as Caffe. Would you like to shed a light on it?
Thanks

What exactly is an asynchronous allreduce?

Sorry. Let me make it more clear.
synchronous allreduce is like MPI_Allreduce(...). It will not return untill the actull communition finished.
asynchronous allreduce is like MPI_Iallreduce(...,  MPI_Request *request). It will immediately return, and we can wait it finished wherever we want.  In deep learning framework, It gives an opportunity to overlap calculation and communiction as Baidu SVAIL blog has already mentioned
Thanks

The best way to do it is at the framework level - so allreduce is done on a separate thread and the thread that requires the output of allreduce can wait on the allreduce thread while all other threads can continue executing. This is how we do in our internal framework.
This mechanism varies from framework from framework - so should be done by the framework authors.

Thank you for the advise. I will have a try.

hi, I got some trouble when doing allreduce in a seperate thread in GPU mode.
We take computing in main thread, while do allreduce in another thread during backward. It sounds perfect. However, in practice all device memory allocated in cuda context of main thread. the context is bind to this thread only. Of cause We can pass data pointer to the seperate thread easily, but the pointer make no sense in that thread, since cuda context of this thread is DIFFRIENT from main thread. It caused following error
--------------------------------------------------------------------------
The call to cuIpcGetMemHandle failed. This means the GPU RDMA protocol
cannot be used.
  cuIpcGetMemHandle return value:   1
  address: 0x130a620608
Check the cuda.h file for what the return value means. Perhaps a reboot
of the node will clear the problem.
--------------------------------------------------------------------------

Do you have any idea to avoid this?
Thanks a alot

In our tensorflow-allreduce patch, we end up having a single background MPI thread. That MPI thread establishes the CUDA context and then runs a loop that checks a queue for allreduce requests. In order to do an allreduce, a thread can put something into the "allreduce queue" and wait for the background MPI thread to get to it. You then need some mechanism to continue -- in our patch, we have each "allreduce request" come with the thing to reduce and also with a callback to call after the reduction is complete.
Our logic is coupled with TensorFlow a fair amount, but you can look at the MPI Background Thread loop here.
Is there a similar approach that could work for your application? The key is to make sure that a single thread establishes the GPU context, calls MPI_Init, and does all future MPI communication going forward.

Thanks @gibiansky . We did the job in a very similary way as yours. I finnaly solved the CUDA context problem via CUDA cuCtxGetCurrent/cuCtxSetCurrent. Specifically, I call cuCtxGetCurrent to get a context handle in computing main thread , and then call cuCtxSetCurrent to set the same context handle in communication thread.
It works like a charm ~
Thanks a lot


WARN: Disconnect from Steam...

Hello,
First thing I say, nice bot but I have an issue with the bot.

I hope you can help me fast.
I have it on my Windows, so it's the issue that I don't host it on a server or what ever because there is no tutorial how to do this.


OLS-353: Use keywords for query validation

Description
Load keywords from a text file.
Validate query based on basic keyword matching.
Config option to use either keyword or llm based query validation.
Type of change

[ ] Refactor
[x] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library

Related Tickets & Documents

Related Issue # OLS-353
Closes #

Checklist before requesting a review

[ ] I have performed a self-review of my code.
[ ] PR has passed all pre-merge test jobs.
[ ] If it is a core feature, I have added thorough tests.

Testing

Please provide detailed steps to perform tests related to this code change.
How were the fix/results from this change verified? Please provide relevant screenshots or results.

/lgtm

Codecov Report
Attention: Patch coverage is 97.29730% with 1 lines in your changes are missing coverage. Please review.

Project coverage is 96.96%. Comparing base (0ecfa4a) to head (ed2a811).
Report is 7 commits behind head on main.

Additional details and impacted files

@@            Coverage Diff             @@
##             main     #599      +/-   ##
==========================================
- Coverage   96.96%   96.96%   -0.01%
==========================================
  Files          49       49
  Lines        1580     1612      +32
==========================================
+ Hits         1532     1563      +31
- Misses         48       49       +1

Files
Coverage Δ

ols/app/endpoints/ols.py
100.00% <100.00%> (ø)

ols/app/models/config.py
98.18% <100.00%> (+0.02%)
:arrow_up:

ols/constants.py
100.00% <100.00%> (ø)

ols/src/query_helpers/question_validator.py
100.00% <ø> (ø)

ols/utils/config.py
98.07% <90.90%> (-1.93%)
:arrow_down:

/lgtm
/approve


[Breaking] [New] Add .only()/.skip(), drop mocha < 1.4.1 support

mocha did not get only support until v1.4 (broken in v1.4.0). Prior to that, it did have xdescribe functionality for skip, but since I didn’t want to only have partial support from v1.1 - v1.3, I’m just hiking up the bottom threshold to v1.4.
Fixes #1.

LGTM

@lencioni I suppose i could simply detect descriptor support, and when available, provide it - but this would mean that your tests that worked in ES5 would fail when you ran them in IE 8, because you'd used describe.skip without realizing it. It seems a bit boilerplatey if I made wrap() take an option for ES5-only also.

per discussion, merging this - i'll do another breaking change if we want to remove this API later.


Data Mixing Phase 10 - knowledge pre-training dataset not getting mixed in

The knowledge pre-training dataset isn't getting mixed in for phase 10 usage. The result is that models don't have as good knowledge performance as they should have.

Per @mairin - we also want to backport this in an ilab .19.z release for a downstream z release
FYI @nathan-weinberg @cdoern

Per @mairin - we also want to backport this in an ilab .19.z release for a downstream z release
FYI @nathan-weinberg @cdoern

I'm not sure this makes any sense? 0.21.0 is almost out...

@nathan-weinberg downstream z-release.

@nathan-weinberg downstream z-release.

Right, but what I'm saying is from a support cycle standpoint, upgrading to the latest downstream release makes more sense than releasing a Z-stream no?

@mairin and I sorted it offline 👍


Upgrade the website to use data apis

We can refactor the website to use loaders and actions.

I want to work on this under GSSOC 23. Can you please assign this issue to me

@Fenrir-04 can you assign this one to me?


ArtNet bind error popup prevents QLC+ from starting up

I have Capture Argo opened and listening to ArtNet data coming from QLC+ on <IP_ADDRESS>:6454
When I open QLC+, the new error popup message appears. Twice.
Once when I open QLC+ and once when I open the project to send ArtNet data to Capture Argo.
QLC+ is supposed to send data, so the input binding would be useful only to receive ArtPoll packets.
It is annoying, and moreover it prevents QLC+ to startup.
If this happens on the Raspberry Pi, there's no way to recover from it unless connecting a TV, a mouse and a keyboard to click OK on the popup.
We need to either:

silently fail without a popup
investigate the reason why the binding fails and find a proper solution

The current way of dealing with it is not OK for me.

investigate the reason why the binding fails and find a proper solution

Because Capture Argo is already bound to the ArtNet port.
The solution I'd choose is to silently fail without a popup. But in the case of using QLC+ ArtNet input, we won't know when QLC+ is not able to receive ArtNet. (unless having access to the qWarning() logs)
If you're OK with this I'll make the changes.

Since loopback is <IP_ADDRESS>/8, would it help to use for QLC+ e.g. <IP_ADDRESS> (user editable loopback address? or at least loopbackaddress override somewhere in the settings)?

Because Capture Argo is already bound to the ArtNet port.

Yes, and they haven't opened the socket as "shared"

The solution I'd choose is to silently fail without a popup. But in the case of using QLC+ ArtNet input, we won't know when QLC+ is not able to receive ArtNet. (unless having access to the qWarning() logs)

Maybe we can add an error message in the plugin line description ?
Something like in the DMXUSB open when the line is "good" or "bad"

Since loopback is <IP_ADDRESS>/8, would it help to use for QLC+ e.g. <IP_ADDRESS> (user editable loopback address? or at least loopbackaddress override somewhere in the settings)?

I would avoid to add more options that can cause more issues and confusion. In any case QLC+ wouldn't be able to receive polls from the ArtNet node keeping the socket busy.


Add SciSpacy to runtime

Can you consider adding scispacy==0.5.3 to the run time? ScispaCy is a Python package containing spaCy models for processing biomedical, scientific or clinical text. It is a better fit for this task than spaCy.

@profliuhao scispacy has been added and the images are building now, will be pushed and available via the container registry shortly.
If you have additional packages you would like to have available, please consider submitting a pull request to add them - it will be faster and easier, as we cannot guarantee that we can quickly respond to or fulfill all requests.

Yes, you should include such models in your submission.


GPU transcoding doesn't work (ffmpeg cannot find device)

Transcoding doesn't seem to work from Memories when either VAAPI or NVENC are enabled. CPU transcoding is working.
When NVENC is enabled:
2023/09/15 19:53:55 p6t4weavnu00-max: /usr/bin/ffmpeg -loglevel warning -hwaccel cuda -i [redacted].mp4 -copyts -vf format=nv12|cuda,hwupload,scale_cuda=force_original_aspect_ratio=decrease:passthrough=0 -profile:v main -map 0:v:0 -c:v h264_nvenc -preset p6 -tune ll -rc vbr -rc-lookahead 30 -cq 24 -temporal-aq 1 -map 0:a:0? -c:a aac -ac 1 -avoid_negative_ts disabled -f hls -hls_time 3 -force_key_frames expr:gte(t,n_forced*3) -hls_segment_type mpegts -start_number 0 -hls_segment_filename /tmp/go-vod/oc22ebzk0o1q/p6t4weavnu00-2234149019/max-%06d.ts -
2023/09/15 19:53:55 ffmpeg-error: [AVHWDeviceContext @ 0x2002b80] cu->cuInit(0) failed -> CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
2023/09/15 19:53:55 ffmpeg-error: Device creation failed: -1313558101.
2023/09/15 19:53:55 ffmpeg-error: [h264 @ 0x2005440] No device available for decoder: device type cuda needed for codec h264.
2023/09/15 19:53:55 ffmpeg-error: Device setup failed for decoder on input stream #0:0 : Unknown error occurred
2023/09/15 19:53:55 p6t4weavnu00-max: ffmpeg exited with status: 1
2023/09/15 19:54:53 p6t4weavnu00-max: stopping stream

When VAAPI is enabled:
2023/09/15 20:18:59 d2bm7jc7i9h0-max: /usr/bin/ffmpeg -loglevel warning -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i [redacted].mp4 -copyts -vf format=nv12|vaapi,hwupload,scale_vaapi=force_original_aspect_ratio=decrease:format=nv12 -profile:v main -map 0:v:0 -c:v h264_vaapi -global_quality 25 -map 0:a:0? -c:a aac -ac 1 -avoid_negative_ts disabled -f hls -hls_time 3 -force_key_frames expr:gte(t,n_forced*3) -hls_segment_type mpegts -start_number 0 -hls_segment_filename /tmp/go-vod/oc22ebzk0o1q/d2bm7jc7i9h0-2234149019/max-%06d.ts -
2023/09/15 20:18:59 ffmpeg-error: [AVHWDeviceContext @ 0x8a4c80] Failed to initialise VAAPI connection: -1 (unknown libva error).
2023/09/15 20:18:59 ffmpeg-error: Device creation failed: -5.
2023/09/15 20:18:59 ffmpeg-error: [h264 @ 0x8ad740] No device available for decoder: device type vaapi needed for codec h264.
2023/09/15 20:18:59 ffmpeg-error: Device setup failed for decoder on input stream #0:0 :Input/output error
2023/09/15 20:18:59 d2bm7jc7i9h0-max: ffmpeg exited with status: 1
2023/09/15 20:19:57 d2bm7jc7i9h0-max: stopping stream

Nextcloud runs with user nginx and I have added nginx to the group video, and verified that the command sudo -u nginx <same ffmpeg commands as above> runs in a bash shell without errors. But for some reason, the command fails when run from Nextcloud/Memories.

See: https://memories.gallery/hw-transcoding/#troubleshooting
Gonna close this cause I need to shut off issues on this repo


Does Wren has any forums?

I can't find a community for Wren that I could discuss problems and asking for help. If it doesn't have any forums yet, what about open Github discussion on this repo? Github discussion is a good forum. People will have a place to discuss things instead of having to post on the issues page. Please consider about this. Thank you.

Hi! Many people are in the discord server, which is where a lot of discussion happens.
I had been testing Discussions when they were in beta but forgot to revisit when it went live. I've enabled them now on the wren repo: https://github.com/wren-lang/wren/discussions
Thanks for the reminder!