Vortex Scans changed domains

Source information
Vortex Scans 1.4.36
Source language
English
Source new URL
https://vortextoon.com
Other details
Supercedes #5023
Acknowledgements

[X] I have updated all installed extensions.
[X] I have opened WebView and checked that the source URL has not changed yet.
[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I will fill out all of the requested information in this form.

Have you uploaded the updated extension cuz I didn't got the update of vortex scan extension?

Have you uploaded the updated extension cuz I didn't got the update of vortex scan extension!

The pull request to update the site's URL hasn't been merged to the repo yet (so no new update currently), since it seems like Vortex is sticking with their current domain still. I wasn't able to find any mention of the new site/URL on their Discord, so not sure what they're planning.


[Tutorial] [Pipelines] [download_air_quality_poland] Write tutorial that uses this function and dataset

Is your feature request related to a problem? Please describe.
The function download_air_quality_poland is not well documented.
Describe the solution you'd like
Write notebook tutorial where data is downloaded with the function download_air_quality_poland and used for Kriging.
Describe alternatives you've considered
n/a
Additional context
n/a

I've written tutorial for directional variograms with this dataset (currently in the dev branch).


To Reproduce
Here's the .jp2 file:
ernie-the-staffie.jp2.zip
Run the following code:
ENV['VIPS_CONCURRENCY'] = '1'
ENV['VIPS_NOVECTOR'] = '1'
ENV['VIPS_INFO'] = '1'

require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'ruby-vips', '2.1.4'
end

require 'vips'

def vips_to_file(width)
  filename = "ernie-#{Time.now.to_i}-#{width}.jp2"
  puts "Filename: #{filename}"
  vips_image = Vips::Image.new_from_file('ernie-the-staffie.jp2')
  # Height is set stupidly high because of https://github.com/jcupitt/ruby-vips/issues/150
  vips_image = vips_image.thumbnail_image(width, height: 10000000)
  vips_image.write_to_file(filename)
  puts ''
end

vips_to_file(500)
vips_to_file(999)
vips_to_file(1000)
vips_to_file(1001)
vips_to_file(1002)
vips_to_file(1003)

Output:
VIPS-INFO: 00:20:29.009: g_getenv( "PATH" ) == "/Users/kg/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/bin:/Users/kg/.rbenv/versions/3.1.1/bin:/Users/kg/.rbenv/libexec:/Users/kg/.rbenv/plugins/ruby-build/bin:/usr/local/opt/node@12/bin:/usr/local/opt/node@14/bin:/Users/kg/.rbenv/shims:/Users/kg/.rbenv/bin:/usr/local/opt/ncurses/bin:/usr/local/opt/qt@5.5/bin:/usr/local/share/npm/bin:/Users/kg/.bin:/usr/local/bin:/usr/local:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/sbin:/Users/kg/.go_packages/bin:/usr/local/opt/go/libexec/bin"
VIPS-INFO: 00:20:29.009: looking in "/Users/kg/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/Users/kg/.rbenv/versions/3.1.1/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/Users/kg/.rbenv/libexec" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/Users/kg/.rbenv/plugins/ruby-build/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/local/opt/node@12/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/local/opt/node@14/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/Users/kg/.rbenv/shims" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/Users/kg/.rbenv/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/local/opt/ncurses/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in<EMAIL_ADDRESS>for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/local/share/npm/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/Users/kg/.bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/local/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/local" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/sbin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/sbin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/opt/X11/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/local/sbin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/Users/kg/.go_packages/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: looking in "/usr/local/opt/go/libexec/bin" for "vips.rb"
VIPS-INFO: 00:20:29.009: trying for dir = "/Users/kg/projects/vipserror/vips.rb", name = "vips.rb"
VIPS-INFO: 00:20:29.009: canonicalised path = "/Users/kg/projects/vipserror"
VIPS-INFO: 00:20:29.009: VIPS_PREFIX = /usr/local/Cellar/vips/8.12.2_2
VIPS-INFO: 00:20:29.009: VIPS_LIBDIR = /usr/local/Cellar/vips/8.12.2_2/lib
VIPS-INFO: 00:20:29.009: prefix = /usr/local/Cellar/vips/8.12.2_2
VIPS-INFO: 00:20:29.009: libdir = /usr/local/Cellar/vips/8.12.2_2/lib
VIPS-INFO: 00:20:29.010: searching "/usr/local/Cellar/vips/8.12.2_2/lib/vips-plugins-8.12"

Filename: ernie-1658445629-500.jp2
VIPS-INFO: 00:20:29.029: selected loader is image source
VIPS-INFO: 00:20:29.029: input size is 500 x 500
VIPS-INFO: 00:20:29.029: loading with factor 1 pre-shrink
VIPS-INFO: 00:20:29.029: pre-shrunk size is 500 x 500
VIPS-INFO: 00:20:29.029: converting to processing space srgb

Filename: ernie-1658445629-999.jp2
VIPS-INFO: 00:20:29.158: selected loader is image source
VIPS-INFO: 00:20:29.158: input size is 500 x 500
VIPS-INFO: 00:20:29.158: loading with factor 1 pre-shrink
VIPS-INFO: 00:20:29.158: pre-shrunk size is 500 x 500
VIPS-INFO: 00:20:29.158: converting to processing space srgb
VIPS-INFO: 00:20:29.158: residual scale 1.998 x 1.998

Filename: ernie-1658445629-1000.jp2
VIPS-INFO: 00:20:29.402: selected loader is image source
VIPS-INFO: 00:20:29.402: input size is 500 x 500
VIPS-INFO: 00:20:29.402: loading with factor 1 pre-shrink
VIPS-INFO: 00:20:29.402: pre-shrunk size is 500 x 500
VIPS-INFO: 00:20:29.402: converting to processing space srgb
VIPS-INFO: 00:20:29.402: residual scale 2 x 2

Filename: ernie-1658445629-1001.jp2
VIPS-INFO: 00:20:29.634: selected loader is image source
VIPS-INFO: 00:20:29.634: input size is 500 x 500
VIPS-INFO: 00:20:29.634: loading with factor 1 pre-shrink
VIPS-INFO: 00:20:29.634: pre-shrunk size is 500 x 500
VIPS-INFO: 00:20:29.634: converting to processing space srgb
VIPS-INFO: 00:20:29.634: residual scale 2.002 x 2.002

Filename: ernie-1658445629-1002.jp2
VIPS-INFO: 00:20:29.870: selected loader is image source
VIPS-INFO: 00:20:29.870: input size is 500 x 500
VIPS-INFO: 00:20:29.870: loading with factor 1 pre-shrink
VIPS-INFO: 00:20:29.870: pre-shrunk size is 500 x 500
VIPS-INFO: 00:20:29.870: converting to processing space srgb
VIPS-INFO: 00:20:29.870: residual scale 2.004 x 2.004

Filename: ernie-1658445630-1003.jp2
VIPS-INFO: 00:20:30.091: selected loader is image source
VIPS-INFO: 00:20:30.091: input size is 500 x 500
VIPS-INFO: 00:20:30.091: loading with factor 1 pre-shrink
VIPS-INFO: 00:20:30.091: pre-shrunk size is 500 x 500
VIPS-INFO: 00:20:30.091: converting to processing space srgb
VIPS-INFO: 00:20:30.092: residual scale 2.006 x 2.006

Expected behavior
I expect the colour to stay on scaled images.
Screenshots
I can't attach the actual images since Github doesn't support JPEG2000 (I've put them in the zip):
ernie-the-staffie.zip and here's a screenshot:

I can replicate it with vipsthumbnail so it's not only limited to ruby-vips:
$ vipsthumbnail -v
vips-8.12.2-Tue Jan 25 09:34:32 UTC 2022

$ vipsthumbnail ernie-the-staffie.jp2 --vips-info --size 500x -o 500.jp2
VIPS-INFO: 01:06:59.199: thumbnailing ernie-the-staffie.jp2
VIPS-INFO: 01:06:59.201: selected loader is VipsForeignLoadJp2kFile
VIPS-INFO: 01:06:59.201: input size is 500 x 500
VIPS-INFO: 01:06:59.207: loading with factor 0 pre-shrink
VIPS-INFO: 01:06:59.207: pre-shrunk size is 500 x 500
VIPS-INFO: 01:06:59.207: converting to processing space srgb
VIPS-INFO: 01:06:59.207: thumbnailing ernie-the-staffie.jp2 as ./500.jp2

$ vips --vips-config
enable debug: no
enable deprecated library components: yes
enable modules: no
use fftw3 for FFT: yes
accelerate loops with orc: yes
ICC profile support with lcms: yes (lcms2)
zlib: yes
text rendering with pangocairo: yes
font file support with fontconfig: yes
RAD load/save: yes
Analyze7 load/save: yes
PPM load/save: yes
GIF load:  yes
GIF save with cgif: yes
EXIF metadata support with libexif: yes
JPEG load/save with libjpeg: yes (pkg-config)
JXL load/save with libjxl: yes (dynamic module: no)
JPEG2000 load/save with libopenjp2: yes
PNG load with libspng: yes
PNG load/save with libpng: yes (pkg-config libpng >= 1.2.9)
quantisation to 8 bit: yes
TIFF load/save with libtiff: yes (pkg-config libtiff-4)
image pyramid save: yes
HEIC/AVIF load/save with libheif: yes (dynamic module: no)
WebP load/save with libwebp: yes
PDF load with PDFium:  no
PDF load with poppler-glib: yes (dynamic module: no)
SVG load with librsvg-2.0: yes
EXR load with OpenEXR: yes
OpenSlide load: yes (dynamic module: no)
Matlab load with matio: yes
NIfTI load/save with niftiio: no
FITS load/save with cfitsio: yes
Magick package: MagickCore (dynamic module: no)
Magick API version: magick7
load with libMagickCore: yes
save with libMagickCore: yes

Hi @kaspergrubbe,
That's a weird one. It's working for me with libvips 8.13 on ubuntu 22.04, I'll try a few other versions.
What versions of openjpeg and libvips are you using, and what program are you using to view your jp2 files?

I am viewing the files with my browser, and the in-built filebrowser and previewer of OSX.
Vips version:
$ vips -v
vips-8.12.2-Tue Jan 25 09:34:32 UTC 2022

This is the info about openjpeg:
$ brew info --json openjpeg
    "installed": [
      {
        "version": "2.4.0",
        "used_options": [

        ],
        "built_as_bottle": true,
        "poured_from_bottle": true,
        "runtime_dependencies": [
          {
            "full_name": "libpng",
            "version": "1.6.37"
          },
          {
            "full_name": "jpeg",
            "version": "9d"
          },
          {
            "full_name": "libtiff",
            "version": "4.2.0"
          },
          {
            "full_name": "little-cms2",
            "version": "2.12"
          }
        ],
        "installed_as_dependency": true,
        "installed_on_request": false
      }
    ],

I'll ty and update my dependencies.

I've updated openjpeg to version 2.5.0.
I've figured out that it isn't every second picture, it seems to be correlated with the width of the outputted images:

Unrelated, but is it normal that the residiual scale is only there for the same input/output?
Filename: ernie-1658484258-1003.jp2
VIPS-INFO: 11:04:18.047: selected loader is image source
VIPS-INFO: 11:04:18.047: input size is 500 x 500
VIPS-INFO: 11:04:18.047: loading with factor 1 pre-shrink
VIPS-INFO: 11:04:18.047: pre-shrunk size is 500 x 500
VIPS-INFO: 11:04:18.047: converting to processing space srgb
**VIPS-INFO: 11:04:18.047: residual scale 2.006 x 2.006**

Filename: ernie-1658484259-1003.jp2
VIPS-INFO: 11:04:19.285: selected loader is image source
VIPS-INFO: 11:04:19.285: input size is 500 x 500
VIPS-INFO: 11:04:19.285: loading with factor 1 pre-shrink
VIPS-INFO: 11:04:19.285: pre-shrunk size is 500 x 500
VIPS-INFO: 11:04:19.285: converting to processing space srgb

I've tried to update and rebuild all libvips dependencies:
$ brew deps libvips | xargs brew remove --ignore-dependencies
$ brew remove libvips
$ brew install libvips

But vipsthumbnail still produces a grey image:
$ vipsthumbnail ernie-the-staffie.jp2 --vips-info --size 500x -o 500.jp2
VIPS-INFO: 11:25:59.612: thumbnailing ernie-the-staffie.jp2
VIPS-INFO: 11:25:59.614: selected loader is VipsForeignLoadJp2kFile
VIPS-INFO: 11:25:59.614: input size is 500 x 500
VIPS-INFO: 11:25:59.620: loading with factor 0 pre-shrink
VIPS-INFO: 11:25:59.620: pre-shrunk size is 500 x 500
VIPS-INFO: 11:25:59.620: converting to processing space srgb
VIPS-INFO: 11:25:59.620: thumbnailing ernie-the-staffie.jp2 as ./500.jp2

Do you have any other suggestions for me?

My hypothesis at the moment: If the image width is divisible by 2, then it produces a grey image 😅

I think it might be your viewer program failing to perform chroma upsampling correctly for even image sizes. Both Safari (I guess that's your browser) and the macOS preview app will be using the same jpeg200 decoder.
Could you try reading the grey images with vips? eg. for me, this:
$ vips copy ernie-1658462479-500.jp2 x.png

Makes:

Unrelated, but is it normal that the residiual scale is only there for some cases with the same input/output?

Huh, I can't reproduce this. What command did you run?

Huh, I can't reproduce this. What command did you run?

ENV['VIPS_CONCURRENCY'] = '1'
ENV['VIPS_NOVECTOR'] = '1'
ENV['VIPS_INFO'] = '1'

require 'bundler/inline'
gemfile do
  source 'https://rubygems.org'
  gem 'ruby-vips', '2.1.4'
end

require 'vips'

def vips_to_file(width)
  filename = "ernie-#{Time.now.to_i}-#{width}.jp2"
  puts "Filename: #{filename}"
  vips_image = Vips::Image.new_from_file('ernie-the-staffie.jp2')
  # Height is set stupidly high because of https://github.com/jcupitt/ruby-vips/issues/150
  vips_image = vips_image.thumbnail_image(width, height: 10_000_000)
  vips_image.write_to_file(filename)
  puts ''
  sleep 1
end

vips_to_file(1003)
vips_to_file(1003)
vips_to_file(1003)

Produces this (the first run uses residiual scale):
VIPS-INFO: 12:00:16.787: g_getenv( "PATH" ) == "/Users/kg/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/bin:/Users/kg/.rbenv/versions/3.1.1/bin:/Users/kg/.rbenv/libexec:/Users/kg/.rbenv/plugins/ruby-build/bin:/usr/local/opt/node@12/bin:/usr/local/opt/node@14/bin:/Users/kg/.rbenv/shims:/Users/kg/.rbenv/bin:/usr/local/opt/ncurses/bin:/usr/local/opt/qt@5.5/bin:/usr/local/share/npm/bin:/Users/kg/.bin:/usr/local/bin:/usr/local:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/sbin:/Users/kg/.go_packages/bin:/usr/local/opt/go/libexec/bin"
VIPS-INFO: 12:00:16.787: looking in "/Users/kg/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/Users/kg/.rbenv/versions/3.1.1/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/Users/kg/.rbenv/libexec" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/Users/kg/.rbenv/plugins/ruby-build/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/local/opt/node@12/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/local/opt/node@14/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/Users/kg/.rbenv/shims" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/Users/kg/.rbenv/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/local/opt/ncurses/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in<EMAIL_ADDRESS>for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/local/share/npm/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/Users/kg/.bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/local/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/local" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/sbin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/sbin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/opt/X11/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/local/sbin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/Users/kg/.go_packages/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: looking in "/usr/local/opt/go/libexec/bin" for "vips.rb"
VIPS-INFO: 12:00:16.787: trying for dir = "/Users/kg/projects/vipserror/vips.rb", name = "vips.rb"
VIPS-INFO: 12:00:16.787: canonicalised path = "/Users/kg/projects/vipserror"
VIPS-INFO: 12:00:16.791: VIPS_PREFIX = /usr/local/Cellar/vips/8.12.2_2
VIPS-INFO: 12:00:16.791: VIPS_LIBDIR = /usr/local/Cellar/vips/8.12.2_2/lib
VIPS-INFO: 12:00:16.791: prefix = /usr/local/Cellar/vips/8.12.2_2
VIPS-INFO: 12:00:16.791: libdir = /usr/local/Cellar/vips/8.12.2_2/lib
VIPS-INFO: 12:00:16.792: searching "/usr/local/Cellar/vips/8.12.2_2/lib/vips-plugins-8.12"

Filename: ernie-1658487616-1003.jp2
VIPS-INFO: 12:00:16.824: selected loader is image source
VIPS-INFO: 12:00:16.824: input size is 500 x 500
VIPS-INFO: 12:00:16.824: loading with factor 1 pre-shrink
VIPS-INFO: 12:00:16.824: pre-shrunk size is 500 x 500
VIPS-INFO: 12:00:16.824: converting to processing space srgb
VIPS-INFO: 12:00:16.824: residual scale 2.006 x 2.006

Filename: ernie-1658487618-1003.jp2
VIPS-INFO: 12:00:18.074: selected loader is image source
VIPS-INFO: 12:00:18.074: input size is 500 x 500
VIPS-INFO: 12:00:18.075: loading with factor 1 pre-shrink
VIPS-INFO: 12:00:18.075: pre-shrunk size is 500 x 500
VIPS-INFO: 12:00:18.075: converting to processing space srgb

Filename: ernie-1658487619-1003.jp2
VIPS-INFO: 12:00:19.315: selected loader is image source
VIPS-INFO: 12:00:19.315: input size is 500 x 500
VIPS-INFO: 12:00:19.315: loading with factor 1 pre-shrink
VIPS-INFO: 12:00:19.315: pre-shrunk size is 500 x 500
VIPS-INFO: 12:00:19.315: converting to processing space srgb

I think it might be your viewer program failing to perform chroma upsampling correctly for even image sizes. Both Safari (I guess that's your browser) and the macOS preview app will be using the same jpeg2000 decoder.

Could you try reading the grey images with vips? eg. for me, this:

$ vips copy ernie-1658462479-500.jp2 x.png

I did this, and the resulting png have colours again!
 It must be a bug somewhere in OSX! Firefox, my file browser, Safari and my API-test tool Paw must all use the same library and thus they all show the image as missing colours!

Produces this (the first run uses residiual scale):

Ah, that's the libvips operation cache. It'll reuse the previous result if you run again with the same arguments.
Please don't use thumbnail_image: it's only there for resizing computed images. The vanilla thumbnail operation combines load and resize in one step, so it can exploit tricks like shrink-on-load. It's also able to overlap decode and recode, so memory use will be quite a bit lower (and speed doubled).
I'd write:
def vips_to_file(width)
  filename = "ernie-#{Time.now.to_i}-#{width}.jp2"
  puts "Filename: #{filename}"
  # Height is set stupidly high because of https://github.com/jcupitt/ruby-vips/issues/150
  vips_image = Vips::Image.thumbnail('ernie-the-staffie.jp2', width, height: 10000000)
  vips_image.write_to_file(filename)
  puts ''
end

I did this, and the resulting png have colours again!

Hooray!
So as a workaround I guess you need to pad images to an odd width before saving them. You can pad with eg.:
def vips_to_file(width)
  filename = "ernie-#{Time.now.to_i}-#{width}.jp2"
  puts "Filename: #{filename}"
  # Height is set stupidly high because of https://github.com/jcupitt/ruby-vips/issues/150
  vips_image = Vips::Image.thumbnail('ernie-the-staffie.jp2', width, height: 10000000)
  vips_image.
    gravity(:north_west,
            vips_image.width + 1 - vips_image.width % 2,
            vips_image.height,
            extend: :copy).
    write_to_file(filename)
  puts ''
end

What a strange thing.

What an adventure! :) Thanks for debugging with me, have a wonderful weekend!


Plugin size

Hello everyone,
first of all I am wondering if it's necessary to include all these node modules. After building, my plugin is still about 60 MB which is a pain to upload with most internet connections.
The second question I have:
If I do minor css changes, which files on the server do I have to replace and does the plugin have to be compiled again?
Thanks

@renkye running yarn build or npm build should generate an optimized & well-packaged plugin. If you have media files that you have added to your plugin, then these might be responsible for the big size.
In order to keep things organized, each module in your plugin is expected to have its own folder which contains its PHP, jsx & css files. You can edit the css file of which module you want. You can simply refresh the page to see css changes, no need to re-compile the plugin - the yarn start command that you're expected to use during development won't even re-compile the plugin because of a change in a css file.


Yoneda is broken

The following code containing only a few imports
open import Categories.Category.Core
open import Level

module Categories.Adjoint.Duploid {o l e} {C D : Category o l e} where

open import Categories.Functor
open import Categories.Functor.Properties
open import Categories.NaturalTransformation
open import Categories.Adjoint
open import Categories.Adjoint.Properties using (adjoint⇒monad; adjoint⇒comonad)
import Categories.Morphism.Reasoning as MR

yields an error
src/Categories/Yoneda.agda:80,25-43
Functor.F₁ F (Category.id C.op) ⟨$⟩ _x_256 != η y a ⟨$⟩ id of type
Setoid.Carrier (Functor.F₀ F a)
when checking that the expression F.identity SE.refl has type
(Functor.F₀ F a Setoid.≈ η y a ⟨$⟩ id) x

More precisely, importing Categories.Adjoint.Properties raises the problem.
On a different machine, a few hours before, a similar error was thrown (same file, but different: it said that yoneda-inverse didn't have the fields f, f^{-1}, etc, but instead to, from, to-cong, from-cong and inverse).  Considering the issue is present on two different machines, I doubt this has to do with my local version of the repo, so... what happened?

Wild guess (don't have time to look at the details right now): you have a different version of stdlib. 1.7 and 2.0 are very different, and agda-categories only works for sure with 1.7.  There's a PR with 2.0 compatibility, but it won't get pulled in until 2.0 is shipped.

It is very likely. I indeed have 2.0 on both machines... So it's me! Good to know.

You might be able to pull PR #452 into your development, and that might work. Or revert to 1.7.

You probably mean #352 but it seems I can't pull it locally (it's a work in progress)

Typo, yes. git merge the commits?

So can I close this issue?


Dependency management

This all looks really nice well done!
Just a note that it might be nice to list dependencies somewhere, this can be done nicely using DESCRIPTION files (example: https://github.com/epiforecasts/covid19.sgene.utla.rt/blob/main/DESCRIPTION) without using a package infrastructure. Another option (or a complement) would be renv.
This would also allow you to easily label package version numbers for example.
I see the following deps:  https://github.com/jarvisc1/comix_data_clean/search?q=library

Ah looking deeper (no library call!) I see this: https://github.com/jarvisc1/comix_data_clean/blob/main/r/00_install_packages.R
Which does a lot of this but looks to not have version numbers or cover all the packages found via a library search.


Allow users to override encoding when decoding requests (maybe using chardet, as was the default before)

maybe @mbeacom or @skivis has feedback on this? Particulary regarding the original change that was made to fix #1193

I dont want to wait any longer, so I'm merging this. If anyone (@mbeacom @skivis or someone else) has comments, let me know.


update used quri-parts version

This is actually to take the bloated PR https://github.com/wmizukami/chemqulacs/pull/12 and make it split commits
This PR updates the Quri-part version

The poetry.lock file could probably be updated with fewer changes, only focusing on quri-parts modules.

Update qse.py was needed to pass test: test_qse_solve_singles

The README currently only explains how to install the different versions in the ## Development section.

I tested that all test runs in both versions, but it would be good if we double-check this to exclude system differences.


[Bug]: Log Lines - Horizontal Scrollbar Too Small

Contact Details
--
Describe the bug!
One of our Discord community members critiqued that the scroll bar on the logs line in the service are to small to interact with, maybe we could find an easier way to scroll this, or just make the scroll bar bigger?
Attach a Screenshot!

Expected Behaviour
I expected it to be easy to scroll
Help us reproduce your bug!
Go to the logs, you will see in a log line that the bar is really small
Launcher Version
2.0.1
Desktop OS
All
Node Server OS
Ubuntu 22.04
Affected Service
All
Relevant log output
--

Acknowledgment

[X] I looked through the existing bugs of this project

Then we need to make the log row bigger and same for the scrollbar.

Addressed with: https://github.com/stereum-dev/ethereum-node/pull/1611
Hopefully stays that way :)


feat: adds activity cards for complete profile prompts

Closes DIA-706, DIA-702, DIA-688, DIA-697

I need to make a ticket and take care of the dedicated page. Right now, personally, I think this is launchable without it (it just opens the dialog) — but...


Have access to Fabric8 OpenShift Client

In my operator, if I detect that I'm running on OpenShift, I have specific resources to install (e.g. a Route).
I want to be able to use fabric8 OpenShiftClient in those cases (after detecting that I'm running on OpenShift) to do that with Java types to interact with these OpenShift resources .
I'm using the operator-framework-quarkus-extension to build my operator and if I inject a io.fabric8.openshift.client.OpenShiftClient it fails with
[ERROR]         [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type io.fabric8.openshift.client.OpenShiftClient and qualifiers [@Default]
[ERROR]         - java member: org.wildfly.operator.WildFlyOperator#client
[ERROR]         - declared on CLASS bean [types=[io.quarkus.runtime.QuarkusApplication, org.wildfly.operator.WildFlyOperator, java.lang.Object], qualifiers=[@Default, @Any], target=org.wildfly.operator.WildFlyOperator]

That'd be great if I could inject an OpenShift client (and maybe make it optional if the container platform is not detect to be OpenShift). Something like
    // always injected
    @Inject
    KubernetesClient client;

    // present only if the container platform is openshift
    @Inject
    Optional<OpenShiftClient> client;

@jmesnil can you give #355 a try, please?


add Terminal

Description

Screencast

Checklist

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

Thank you, @pernielsentikaer - I have replicated the issue, will get a fix in place and request a review.
Appreciate you catching the issue in review.  Thanks again.  ✋

The issue was a timing issue with
  await runAppleScript(script);
  await popToRoot();
  await closeMainWindow();

switching it to
  await popToRoot();
  await closeMainWindow();
  await runAppleScript(script);

solved the issue.  :) Thank you again @pernielsentikaer


MIA-Efficiency

Hi,
Thank you for this work.
I would like to enquire about MIA-Efficiency computation.
The following snippet
svc_mia_forget_efficacy = SVC_MIA(
    shadow_train=shadow_train_loader,
    shadow_test=test_loader,
    target_train=None,
    target_test=forget_loader,
    model=model,
    transform=transform_test,
)
print("svc_mia_forget_efficacy", svc_mia_forget_efficacy)

results in the following accuracies:
svc_mia_forget_efficacy {'correctness': 0.0028000000000000247, 'conf
idence': 0.018199999999999994, 'entropy': 0.044399999999999995, 'm_e
ntropy': 0.20099999999999996, 'prob': 0.11339999999999995}

How do you compute MIA_efficiency from there?

Thank you for your interest in this work. As noted in the original paper, specifically in the section 'Towards a Full-Stack MU Evaluation,' we reported values of confidence as the confidence-based MIA predictor for evaluation.


empty mesh

Hi,
I wanted to try your amazing work, but I'm encountering some issues.

Traceback (most recent call last):
File "launch.py", line 127, in
main()
File "launch.py", line 117, in main
trainer.test(system, datamodule=dm)
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 794, in test
return call._call_and_handle_interrupt(
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\trainer\call.py", line 38, in _call_and_handle_interrupt
return trainer_fn(*args, **kwargs)
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 842, in _test_impl
results = self._run(model, ckpt_path=self.ckpt_path)
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1112, in _run
results = self._run_stage()
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1188, in _run_stage
return self._run_evaluate()
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1228, in _run_evaluate
eval_loop_results = self._evaluation_loop.run()
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\loops\loop.py", line 206, in run
output = self.on_run_end()
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\loops\dataloader\evaluation_loop.py", line 180, in on_run_end
self._evaluation_epoch_end(self._outputs)
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\loops\dataloader\evaluation_loop.py", line 288, in _evaluation_epoch_end
self.trainer._call_lightning_module_hook(hook_name, output_or_outputs)
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1356, in _call_lightning_module_hook
output = fn(*args, **kwargs)
File "C:\work\Proj_0_candidates\Instant-angelo\systems\neus.py", line 303, in test_epoch_end
self.export()
File "C:\work\Proj_0_candidates\Instant-angelo\systems\neus.py", line 306, in export
mesh = self.model.export(self.config.export)
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "C:\work\Proj_0_candidates\Instant-angelo\models\neus.py", line 311, in export
mesh = self.isosurface()
File "C:\work\Proj_0_candidates\Instant-angelo\models\neus.py", line 114, in isosurface
mesh = self.geometry.isosurface()
File "C:\Users\hyun\anaconda3\envs\cu118\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "C:\work\Proj_0_candidates\Instant-angelo\models\geometry.py", line 109, in isosurface
vmin, vmax = mesh_coarse['v_pos'].amin(dim=0), mesh_coarse['v_pos'].amax(dim=0)
IndexError: amin(): Expected reduction dim 0 to have non-zero size.
Traceback (most recent call last):
File "C:\work\Proj_0_candidates\Instant-angelo\run_neural_python_colmap_sparse.py", line 25, in
subprocess.run([
File "C:\Users\hyun\anaconda3\envs\cu118\lib\subprocess.py", line 516, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['python', 'launch.py', '--config', 'configs/neuralangelo-colmap_sparse.yaml', '--gpu', '0', '--train', 'dataset.root_dir=D:/Projects/geomvs_tmp/b1_iangelo']' returned non-zero exit status 1.
Process finished with exit code 1

I've done some debugging, and while the 'level' tensor appears correct, the 'verts' and 'faces' are empty. It seems there might be a problem with the mc_func. I've tried both torchcubes and mcubes. When running the code with torchcubes, I get values for 'verts' but 'faces' remains empty. With mcubes, both 'verts' and 'faces' are empty.
I haven't altered any other part of your code, and my input is a series of frames from a small room shot at 1920x1080.
If you could provide any insight or solution to this issue, I would greatly appreciate it.
Thank you.

Sorry to bother you,  the current process only reconstructs the center cube like this, which presents difficulties when attempting to reconstruct a room or when the camera poses are situated on the same plane.
One possible solution could be enlarge the model.radius in the config, while some other parameters like start_level and final_level for ProgressiveBandHashGrid need to be substantially increased.
I am planning to address and resolve it by submitting a pull request later this month. Thank you for your understanding and patience.

Thank you for the update. I appreciate the effort you're putting into resolving this issue.


Create Terraform scripts for a basic AKS cluster

Summary
Create a folder under terraform called aks and define a Terraform module for creating a simple AKS cluster.
We'll not be considering features like Long Term Storage,  Vault, External DNS or Cert-manager in this.
There will be follow up issues to work a feature at a time after this one is complete.
Fine grained permissions will be worked on in a separate issue but should be kept in mind when designing this Terraform module.
Follow up issues are:
#17
#19
#16
#18
#20
Acceptance Criteria

Terraform module is available to create a simple Azure cluster that can be used to jx boot and works with minimum requirements
Will not cover vault, cert-manager, external DNS, or dealing with long term storage
Will not need fine grained permissions (covered by another story)

/assign

updated the acceptance criteria a bit as a sample of exclusion statements. @dgozalo do you have a link to "minimum requirements"? it'd be good to reference what those are so there's no misunderstanding of what should be covered in this initial issue

/assign @helayoty

/close

\close

@dgozalo would you please close this issue? It seems I don't have permission to do so

Closed by #23


Update Composer dependencies (2020-09-27-00-10)

Visual regression test passed!
View the visual regression test report


IndexError: list index out of range

I'm trying to plumb rechunk into my personal image machinery. I came up with this initial stab, but it's failing with:
        >>>>>>>  Reading OSTree ref 'master':  64%|██████▍   | 191890/300000 [00:08<00:04, 22633.42files/s]
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ /usr/local/bin/rechunk:8 in <module>                                         │
│                                                                              │
│   5 from rechunk.__main__ import main                                        │
│   6 if __name__ == '__main__':                                               │
│   7 │   sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])     │
│ ❱ 8 │   sys.exit(main())                                                     │
│   9                                                                          │
│                                                                              │
│ /usr/local/lib/python3.12/site-packages/rechunk/__main__.py:177 in main      │
│                                                                              │
│   174 def main():                                                            │
│   175 │   setup_logger()                                                     │
│   176 │   try:                                                               │
│ ❱ 177 │   │   argparse_func()                                                │
│   178 │   except KeyboardInterrupt:                                          │
│   179 │   │   logger = logging.getLogger(__name__)                           │
│   180 │   │   logger.info("Received keyboard interrupt. Exiting.")           │
│                                                                              │
│ /usr/local/lib/python3.12/site-packages/rechunk/__main__.py:151 in           │
│ argparse_func                                                                │
│                                                                              │
│   148 │   │   │   .replace("\\r", "\r")                                      │
│   149 │   │   )                                                              │
│   150 │                                                                      │
│ ❱ 151 │   alg_main(                                                          │
│   152 │   │   repo=args.repo,                                                │
│   153 │   │   ref=args.ref,                                                  │
│   154 │   │   contentmeta_fn=args.contentmeta,                               │
│                                                                              │
│ /usr/local/lib/python3.12/site-packages/rechunk/alg.py:573 in main           │
│                                                                              │
│   570 │   │   ostree_map, ostree_hash = get_ostree_map(repo, ref)            │
│   571 │   │                                                                  │
│   572 │   │   # Use the database by pulling it from ostree                   │
│ ❱ 573 │   │   packages = run_with_ostree_files(                              │
│   574 │   │   │   repo, ostree_map, ["/usr/share/rpm/rpmdb.sqlite"], get_pac │
│   575 │   │   )                                                              │
│   576 │   │   logger.info(f"Found {len(packages)} packages.")                │
│                                                                              │
│ /usr/local/lib/python3.12/site-packages/rechunk/ostree.py:192 in             │
│ run_with_ostree_files                                                        │
│                                                                              │
│   189 │   │   │   │   logger.warning(f"File not found in OSTree: {fn}")      │
│   190 │   │   │   │   raise FileNotFoundError(fn)                            │
│   191 │   │                                                                  │
│ ❱ 192 │   │   return callback(dir)                                           │
│   193                                                                        │
│   194                                                                        │
│   195 if __name__ == "__main__":                                             │
│                                                                              │
│ /usr/local/lib/python3.12/site-packages/rechunk/fedora.py:38 in get_packages │
│                                                                              │
│   35 │   │   │   data = line[1:].split(" ")                                  │
│   36 │   │   │   name = data[0]                                              │
│   37 │   │   │   nevra = data[1]                                             │
│ ❱ 38 │   │   │   version = data[2]                                           │
│   39 │   │   │   release = data[3]                                           │
│   40 │   │   │   size = int(data[4])                                         │
│   41 │   │   │   package = Package(                                          │
╰──────────────────────────────────────────────────────────────────────────────╯
IndexError: list index out of range

It seems to be dying somewhere deep in the process of processing the packages in the image. I wonder if this is because I'm doing some strange things?

Nice job figuring out how to use dnf in the containerfile. Hopefully you will teach the rest of us.
No, I don't think it was anything cursed you did
It seems that my little package parsing fsm hit a snag in one of your changelogs and died. I will fix it later today.
In hindsight, it's obvious. Using a single character as a package separator is clearly not enough, as any changelog using that starting with that separator will break it.
I will mash my keyboard later today to come up with an illegible combination and fix this.

Hello :wave: Thanks for the lightning fast response! And for creating this very interesting project :)

I will mash my keyboard later today to come up with an illegible combination and fix this.

Ah, wonderful to meet a fellow keyboard masher <3

Please try prerelease v0.8.6 to see if it fixes your issue.

It worked!. Or, well, rechunk succeeded but I still need to fix my CI ;)

rechunk will output unique tags for you by looking at the previous tag and a version number you provide. So you may restore the for loop, and have it have main and the unique tag.
I will unset the release as prerelease.
If you have any other issues I'd be happy to help.

Cool, thanks, I'll do that. And thanks for resolving this so quickly :sunglasses:


Mathematical typesetting in embed mode does not work

Preflight Checklist

[x] I agree to follow the Code of Conduct that this project adheres to.
[x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Describe the bug
When using 'Mathematical Typesetting' in embed mode the 'Save & Exit' and 'Exit' buttons are not working.
To Reproduce
Steps to reproduce the behavior:

Go to 'https://jgraph.github.io/drawio-integration/helloworld.html'
Click on 'Start' / the image
After the image is loaded click on 'Format'
Enable the checkbox 'Mathematical Typesetting'
Click on 'Save & Exit'.
However, the content is not saved and the editor cannot be closed.
In the console of the developer tools there is the error message: Uncaught TypeError: Cannot read properties of undefined (reading 'Push')

Expected behavior
The content should be saved and then the editor should close.
draw.io version (In the Help->About menu of the draw.io editor):

draw.io version 20.0.1, online

Desktop (please complete the following information):

OS: Windows 10
Browser Google Chrome
Version 102.0.5005.115

This isn't a production site, this is just the github pages deploy of the repo. This won't work stand-alone.

However, mathematical typesetting does not work in embed mode in general!!! The page 'https://jgraph.github.io/drawio-integration/helloworld.html' is just one example to reproduce the issue.
Furthermore, mathematical typesetting has worked in embed mode in previous versions. However, in the latest version embed mode only works when disabling mathematical typesetting.

What's the version in the Help menu? (Try https://embed.diagrams.net/clear.html to update.)


Documenting Using PnP.PowerShell in Docker

Type

[ ] Bug Fix
[x] New Feature
[ ] Sample

Related Issues?
Adds #2008.
What is in this Pull Request ?
Added documentation of using PnP.PowerShell in Docker.

Thank you @shurick81 for adding the article , amazing stuff. Much appreciated 🙏


Add tests for scoped seqeunces

I needed a sanity test for a bug in my project I'm trying to sort. These tests are super basic, but they may be helpful to someone.

Thanks!


Base image Alpine

Use Alpine Linux as base for Meridio images.
Before Ubuntu 21 was used for most images, which is unnecessary fat and is not LTS. Build on a standardized base simplifies handling and a possible switch to a distroless image later on.
The image used as base for all Meridio images may look something like;
FROM alpine:3.15
RUN apk update && apk add iproute2
ADD https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/v0.4.2/grpc_health_probe-linux-amd64 /bin/grpc_health_probe
RUN chmod a+x /bin/grpc_health_probe

Debug image
A Meridio "debug" image will be created that can be loaded as a K8s ephemeral container. It will contain necessary debug tools.

The ctraffic image is not part of Meridio and will not be changed.

Try;
make REGISTRY=registry.nordix.org/cloud-native/meridio host-build
# And/or check the build script
./build/build.sh

I have not tested BGP/BFD yet since I only have used static routes so far.

@zolug @LionelJouin
I have pushed all Meridio images to registry.nordix.org/cloud-native/meridio/ with version :alpine. Please test that those images works in your environment. I use a small scriptlet to update;
for n in $(find default/etc/kubernetes/forwarder-test -name '*.yaml'); do
  sed -i -e 's,:latest,:alpine,' $n
done

Comments from @zolug

since i'm low on disk space on my linux partition, I had to change both the tmp dir path and where nfqlb gets downloaded.

The nfqlb directory should be configurable. The tmp dir is left as-is, /tmp should be able to hold the ~50MB needed.

i'm using a symlink that points to my actual meridio repo, and go build had an issue with that. Had to cd into the real repo.

Test to cd to a readlink -f dir before build.

Local build moved to /hack.


Add default_image method to infer task

I think so. To be honest, I forget my motivation for making this issue

Closing since i don't think this matters, but re open if problem happens again


CastAs extension can be obsoleted

@mauroservienti I do not find it... I only found As extension

Wonderful!

It's probably Cast and not CastAs

It's probably Cast and not CastAs

I have found "As" and "CastTo" in CastExtensions. I think that's all.


Some mathlinks doesn't work

I have a mathLink that doesn't work. In a note named as TCdef.sigma álgebra and with the mathLink in the YAML given by $\sigma$-álgebra for some reason it doesn't work. However doing some tests I noticed that if I replace the character á in the name of the note by just a it works.

Hello, thanks for leaving an issue!
It seems to stem from how Obsidian stores á as a hexadecimal value, which messes up how the plugin searches for the linked file.
I will look into a permanent solution (other than just .replace(/%C3%A1/g, 'á') tomorrow.

0.2.5 should fix the issue! Tell me if theres still something wrong :)

0.2.5 should fix the issue! Tell me if theres still something wrong :)

Now it works! Thank you very much.


[WIP] Spec tests for chargeback reports with custom attributes

Follow up spec tests for https://github.com/ManageIQ/manageiq/pull/14395.
These tests look at custom attributes specifically but more important, they run chargeback reports through the report generator and make sure they dont error out.
@lpichler @isimluk Please review. I can add similar tests for ChargebackVm(Added) and other cases you can think of.
cc @simon3z
@miq-bot add_label chargeback, providers/containers, wip

@zeari thanks for writing a spec for this!
I have couple of notes, none of them is a blocker, but it would be great to improve these topics a bit

list of rubocop warnings is too long, I would feel much more confident if we can shorten it
some of the stuff seems shared among the 2 specs. For instance MiqReport objects are similar.
some of the stuff could be even dropped, like :created_on, :updated_on should not be needed.

list of rubocop warnings is too long, I would feel much more confident if we can shorten it
some of the stuff seems shared among the 2 specs. For instance MiqReport objects are similar.
some of the stuff could be even dropped, like :created_on, :updated_on should not be needed.

Its a little better now.
Can you think of other cases that should be here? I think that if we have good tests here we might be able to use more of the generic reporting generator instead of the chargeback report generator. we might be able to add attribute columns with include_model - for example Vm.host_storage.some_attribute.

Its a little better now.

Thanks! Please unwip the pr, once it feels ready.
Me, personally, would drop also :title => and :name => lines (not needed) and perhaps add few more assertions at the bottom (nuber of rows, content of cols, etc.). However, that doesn't matter. I am excited about these tests and I look forward having them in the repo!

@miq-bot remove_label wip

Thanks! Please unwip the pr, once it feels ready.
Me, personally, would drop also :title => and :name => lines (not needed) and perhaps add few more assertions at the bottom (nuber of rows, content of cols, etc.). However, that doesn't matter. I am excited about these tests and I look forward having them in the repo!

@isimluk removed :name and :title and dropped wip label.
I dont think we want those type of assertions here but rather in the chargeback tests. Here we should check fields that are a responsibility of the reports generator - in this case custom attributes are filled in by the reports generator so this is where they should be checked.

Backported to Euwe via https://github.com/ManageIQ/manageiq/pull/14743


feat(jobs): add jobs module and related files

Implement Update Job Endpoint (Issue #158)
Description
This PR implements the endpoint to update job post details as specified in issue #158.
Changes Introduced

Added PATCH /api/v1/jobs/:id endpoint in JobsController.
Created UpdateJobDto for validating the request body.
Implemented updateJob method in JobsService to handle the update logic.
Modified Job entity to ensure it includes created_at and updated_at timestamps.
Added unit tests for:

Successful job update with a valid ID.
Handling non-existent job ID.
Handling invalid request body.
Handling missing job ID.

Acceptance Criteria

The endpoint should be accessible at api/v1/jobs/:id.
The endpoint should accept HTTP PATCH requests.
The endpoint should check that the user has the appropriate permissions.
The endpoint should validate all data passed in the body of the request.
Requests to the endpoint must include a valid authentication token in the Authorization header.
Given a request with a valid job post ID, when the user is authenticated and authorized, the system should update the job post with a status code of 200.
Given a request with an invalid or non-existent job post ID, when the user is authenticated and authorized, the system should return a 404 Not Found status.

Testing

All unit tests have been added and run successfully.
Manual testing was conducted to ensure the endpoint works as expected.

Related Issue
Closes #158
Checklist

[x] Define API endpoint to update job post details.
[x] Implement logic to update job post details in the database.
[x] Handle success and error responses.
[x] Write unit tests for various scenarios.
[x] Ensure compliance with security standards for handling user information.

Due to new reassignment agreed on by the majority of the team, I'm closing any previous pull request.


fix(console): print
 when having a newline

Summary
The HTML emitted by our adapter was causing a parsing error when used inside MDX files.
It turns out that MDX doesn't like \n\n inside HTML. I think it's a reasonable parsing error.
This PR fixes the issue by changing \n to a
. While
 should be accepted, MDX doesn't like it, so it's safer to use
 instead.
This PR changes the existing adapter and renames it. Unfortunately, I tried to use a new adapter but that required more work, so I decided to update the existing one.

Test Plan
I added new tests to avoid possible regressions. Once merged, I will send a PR to the website to fix everything.

I am going to merge this, since I need this fix in the website repository. Let me know if there are any concerns, I will follow up

I've read the code and I believe adding some test cases would be beneficial

adding tests for more escape characters, such as '&', '<', and '>':

testing multiple new lines like below

#[test]
fn test_multiple_newlines() {
    let mut buf = Vec::new();
    let mut writer = super::HTML(&mut buf);
    let mut formatter = Formatter::new(&mut writer);
    formatter
        .write_markup(markup! {
            "Line1\nLine2\rLine3\n\rLine4"
        })
        .unwrap();
    assert_eq!(String::from_utf8(buf).unwrap(), "Line1
Line2
Line3

Line4");
}

@ematipico
If this approach looks good to you, I’d be happy to submit a PR.


advanced source search: follow search/load/clear use case

user inputs keyword and metadata
user clicks search
user clicks "Add Custom Collection"
current keyword and metadata is pushed into the "selectMedia" store and displayed on left in PickedMediaContainer
if the user stays on that tab, the search display does not change, howerver, any additional keywords or adding creates a new custom collection
if the user goes from that tab and comes back, the keyword and metadata is cleared/reset.

I've got a bug where updates to the query args are incorrectly updated the selected args, which is incorrect. trying to find the source...

found the issue, fixing it:
from link

var a = [[1], [2], [3]];
var b = [...a];
b.shift().shift(); // 1
// Now array a is affected as well: [[], [2], [3]]


⚠ Digital Ocean - https://status.digitalocean.com/ has degraded performance

In 19420d6, Digital Ocean - https://status.digitalocean.com/ (https://status.digitalocean.com/api/v2/status.json) experienced degraded performance:

HTTP code: 200
Response time: 144 ms

Resolved: Digital Ocean - https://status.digitalocean.com/ performance has improved in 3fb4123 after 23 hours, 59 minutes.


Add condition when dimension is greater than 2

When dimension is greater than 2, grad_bias should be calculated differently.

@pengwa suggested this change.

@ajindal1, thanks for the PR. Can you please add a unit test for this case?
@tjruwase Thanks for reviewing and merging the PR, we will work on adding a unit test.


feat: bump protos to support list caches with metadata around limits

protos now contains cache limits around
  // The amount of transactions per second that can be exercised
  uint32 max_traffic_rate = 1;
  // The amount of traffic per second that can be exercised in KiB
  uint32 max_throughput_kbps = 2;
  // The maximum size of a single item in KiB
  uint32 max_item_size_kb = 3;
  // The maximum TTL allowed for a single item, in seconds
  uint64 max_ttl_seconds = 4;

and topic limits around
  // The amount of messages that can be published per second
  uint32 max_publish_rate = 1;
  // The maximum amount of active subscriptions per cache
  uint32 max_subscription_count = 2;
  // The maximum size of a single publish message, in KiB
  uint32 max_publish_message_size_kb = 3;

The code LGTM but there aren't tests. Looks like we haven't implemented it on the backend yet? I think even if we haven't, we could just wire the tests to assert on 0, and when we do implement it, we can just change them?


fix(deps): update terraform-module

This PR contains the following updates:

Package
Type
Update
Change

terraform-ibm-modules/cos/ibm (source)
module
patch
8.15.10 -> 8.15.13

terraform-ibm-modules/kms-all-inclusive/ibm (source)
module
patch
4.18.1 -> 4.18.2

terraform-ibm-modules/observability-agents/ibm (source)
module
patch
2.3.5 -> 2.3.6

Release Notes

terraform-ibm-modules/terraform-ibm-cos (terraform-ibm-modules/cos/ibm)
v8.15.13
Compare Source
Bug Fixes

deps: update terraform terraform-ibm-modules/secrets-manager/ibm to v1.19.6 (#798) (d0d01c1)

v8.15.12
Compare Source
Bug Fixes

Fixed bug in fscloud submodule where object locking related config was being ignored (#796) (dcbbd33)

v8.15.11
Compare Source
Bug Fixes

deps: update terraform-module (#793) (543cbd7)

terraform-ibm-modules/terraform-ibm-kms-all-inclusive (terraform-ibm-modules/kms-all-inclusive/ibm)
v4.18.2
Compare Source
Bug Fixes

removed creation of CBR rule in this module because it is created already in root module(terraform-ibm-modules/key-protect/ibm) (#601) (9037f4c)

terraform-ibm-modules/terraform-ibm-observability-agents (terraform-ibm-modules/observability-agents/ibm)
v2.3.6
Compare Source
Bug Fixes

deps: updated required IBM provider version constraint to >= 1.70.0, <2.0.0 (#436) (7e285e6)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

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

This PR has been generated by Renovate Bot.

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline


Branch reminder feature

Previously:

Calculation for the number of days until the end date is incorrect, hence showing the incorrect values in the reminder window.

Now:

Calculation for the number of days until the end date has been corrected.
Showing the intended behaviour now.

LGTM 👍


How to get last 50 posts?

Hi!
Thank you for great crate!
But how to get last 50 posts?
I tried like this:
 let history = client.get_chat_history(
   GetChatHistory::builder()
	 .chat_id(chat_id)
	 .limit(50)
	 .offset(-50)  // If set 50 - Error : Parameter offset must be non-positive
	 .from_message_id(0)
	 .build(),
 )
 .await?;

But allways has got only 0 posts even in chats where thousands of posts ...

You can find details here: https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1get_chat_history.html
and here: https://github.com/tdlib/td/issues/236
tldr from tdlib docs:
The messages are returned in a reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib. This is an offline request if only_local is true.

offset 0 limit 50 should help.

You can find details here: https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1get_chat_history.html and here: tdlib/td#236
tldr from tdlib docs:
The messages are returned in a reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib. This is an offline request if only_local is true.

offset 0 limit 50 should help.

In this case mainly 1 post only:

I tried this and  any combinations without success.
Even readed tdlib source:
void MessagesManager::load_messages(DialogId dialog_id, MessageId from_message_id, int32 offset, int32 limit,
                                    int left_tries, bool only_local, Promise<Unit> &&promise) {
  LOG(INFO) << "Load " << (only_local ? "local " : "") << "messages in " << dialog_id << " from " << from_message_id
            << " with offset = " << offset << " and limit = " << limit << ". " << left_tries << " tries left";
  CHECK(offset <= 0);
  CHECK(left_tries > 0);
  only_local |= dialog_id.get_type() == DialogType::SecretChat;
  if (!only_local) {
    Dialog *d = get_dialog(dialog_id);
    if (d != nullptr && d->have_full_history) {
      LOG(INFO) << "Have full history in " << dialog_id << ", so don't need to get chat history from server";
      only_local = true;
    }
  }
  bool from_database = (left_tries > 2 || only_local) && G()->parameters().use_message_db;
  // TODO do not send requests to database if (from_message_id < d->first_database_message_id ||
  // !d->first_database_message_id.is_valid()) && !d->have_full_history

  if (from_message_id == MessageId()) {
    get_history_from_the_end(dialog_id, from_database, only_local, std::move(promise));
    return;
  }
  if (offset >= -1) {
    // get history before some server or local message
    limit = min(max(limit + offset + 1, MAX_GET_HISTORY / 2), MAX_GET_HISTORY);
    offset = -1;
  } else {
    // get history around some server or local message
    int32 messages_to_load = max(MAX_GET_HISTORY, limit);
    int32 max_add = max(messages_to_load - limit - 2, 0);
    offset -= max_add;
    limit = MAX_GET_HISTORY;
  }
  get_history(dialog_id, from_message_id, offset, limit, from_database, only_local, std::move(promise));
}

I dont know why does not work.

yes. there is another explanation :)
https://github.com/tdlib/td/issues/740

you can use this as a reference (but it may be buggy, did'nt checked it properly and also haven't been using it for a long time).
it receives (or at least should receive) all messages until the specified date (timestamp) is reached.
https://github.com/antonio-antuan/feeder/blob/main/tg-collector/src/tg_client.rs#L583

@makorne how is it going? :) wanna close the issue.


Vim colors rendered incorrectly with TERM=xterm-kitty

As above. Colors render correctly when manually setting TERM=xterm-256color, but incorrectly with TERM=xterm-kitty.
Kitty is a popular terminal emulator.

You might want to check out this thread https://github.com/vim/vim/issues/11716 and this advice from Kovid https://sw.kovidgoyal.net/kitty/faq/#using-a-color-theme-with-a-background-color-does-not-work-well-in-vim (which I applied and is what breaks the highlighting in asciinema).

Thanks for the context. This actually explains a lot. I suspect the use of non-standard : instead of ; in color related escape sequences.

Thanks for the context. This actually explains a lot. I suspect the use of non-standard : instead of ; in color related escape sequences.

Note that colon is standard, from ECMA-48. semi-colon is non-standard but more common, IIRC konsole first started erroneously using semi-colon and it spread from there. Most modern terminal emulators support both forms. You should too.
To be didactic, the reason colon is used is because it encodes sub-parts of a single specification. SGR escape codes can actually contain multiple semi-colon separated parts (though this is rarely used in practice). In the presence of multiple parts separating sub-parts with semi-colons is ambiguous. Therefore, colons should always be used for sub-parts.

Yeah, that makes a lot of sense. Thanks.
We'll need to implement support for it in https://github.com/asciinema/avt

This has been fixed in 3.8.0 - https://github.com/asciinema/asciinema-player/releases/tag/v3.8.0


Dependency version Issue

kreait/firebase-php[dev-main, 5.12.0] require lcobucci/jwt ^3.4.1 -> found lcobucci/jwt[3.4.1, 3.4.x-dev] but the package is fixed to 4.0.0 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.

kreait/firebase-php 5.11.0 requires lcobucci/jwt ^3.3.1 -> found lcobucci/jwt[3.3.1, ..., 3.4.x-dev] but the package is fixed to 4.0.0 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
kreait/laravel-firebase 3.0.0 requires kreait/firebase-php ^5.11.0 -> satisfiable by kreait/firebase-php[5.11.0, 5.12.0, 5.x-dev (alias of dev-main)].
kreait/firebase-php 5.x-dev is an alias of kreait/firebase-php dev-main and thus requires it to be installed too.
Root composer.json requires kreait/laravel-firebase ^3.0 -> satisfiable by kreait/laravel-firebase[3.0.0].

As mentioned in Discord, this will be solved when https://github.com/kreait/firebase-php/pull/509 is merged. Until then only lcobucci/jwt 3.x is supported.

Better late than never: since kreait/firebase-php#509 has been merged, this should now be resolved. 🥳

Better late than never: since kreait/firebase-php#509 has been merged, this should now be resolved. 🥳


Changes to tests to use the record helper class and delete old ones

A Result record class has been created
GeneratorTest and CustomGenerationTest now both use the Result class

Updated as discussed


There is no confirmation window while drag-dropping project files in the "Explore" panel.

Without confirmation window on drag-dropping files in the Explore panel there is a chance to accidentally move project files to another directory.

@bpasero IMO not asking for confirmation is what I expect. Normal OS explorers behave the same. However they allow me to undo such changes. So I would expect undo in VSCode as well.

:+1:

I'm not sure is its correct comparison, but for example in Jetbrains Webstorm when I drag-drop files there I see a confirmation window, which protects from accidentally moving some files from one directory to another. Otherwise, you can somehow drag files with your mouse and not even notice that.

I have had this problem many times and even had a plugin in Visual Studio .NET that did this for me: Here's a user-voice post for this same feature: https://visualstudio.uservoice.com/forums/293070-visual-studio-code/suggestions/11312763-ask-before-moving-files-in-solution-explorer-tree

Hi @dbaeumer, I think could be (and perhaps should be) different features:

Showing a confirmation window (with do not ask me anymore option maybe)
Undo changes in the Explore panel

Recently I had to look at "git status" and figure out which file I moved accidentally, and it's really a pain.

+1, I just did this and had a Visual Studio PTSD response.

Fyi for July (or insiders) https://github.com/Microsoft/vscode/issues/4842 is pushed and allows to disable DND in the explorer.

PR welcome.

Hi! I'd like to work on this. This is something that's annoyed me for a while now.

Its very annoying when a folder goes (i dont even know where and what) by accident. Especially when using touchpad.
The worst thing is when working on others directory and dont know the actual structure.

+1
there should be either a confirmation dialog or an undo functionality

This just broke me

+1

+1
Is there anything like cmd+Z for this?

+1. It's specially painful to move node_modules, or accidentally moving your mouse and not even having an idea of what has been moved to where.

I added a new setting "explorer.confirmDragAndDrop": true which is enabled by default and shows a confirm dialog that provides a checkbox to quickly change this setting to no longer show a confirmation:


JSON mode in googleai plugin for Gemini 1.5 pro+flash

Description here...
Checklist (if applicable):

[x] Tested (manually, unit tested, etc.)
[ ] Changelog updated
[ ] Docs updated

I haven't found the changelog. is there one? I also haven't documented as there doesn't seem to be anywhere for detailed Gemini config documentation.
This upgrades the @google/generative-ai package in the googleai plugin to allow support of JSON mode with Gemini 1.5. There are minimal changes to the code - I pulled out a variable to allow for a more strongly-typed config value.
I wondered if a json method would be worthwhile on the GenerateResponse implementation but it seemed unnecessary seeing as output already does the job.
Note that this doesn't add JSON mode to the vertexai plugin, as the vertex package doesn't yet support the response_mime_type / responseMimeType configuration property (see https://github.com/googleapis/nodejs-vertexai/issues/306).
I've tested this against both pro and flash using testapps/json-mode/index.ts , and get the following output. (JSON mode looks good, the jokes not so much.)
{
  joke: 'Why did the JSON object get lost?',
  punchline: `Because it couldn't find its "root" element and kept getting tangled in its own "strings"!`
}

{
  title: 'Quick and Easy Pesto Pizza',
  ingredients: [
    { name: 'Pizza dough', quantity: '1 pre-made ball' },
    { name: 'Pesto', quantity: '1/2 cup' },
    { name: 'Cherry tomatoes', quantity: '1 cup, halved' },
    { name: 'Fresh mozzarella', quantity: '1/2 cup, sliced' },
    { name: 'Parmesan cheese', quantity: '1/4 cup, grated' },
    { name: 'Olive oil', quantity: '1 tablespoon' },
    { name: 'Salt and pepper', quantity: 'to taste' }
  ],
  steps: [
    'Preheat oven to 450 degrees F (230 degrees C).',
    'Place the pizza dough on a lightly floured surface and stretch it out into a 12-inch circle.',
    'Spread the pesto evenly over the dough, leaving a 1/2-inch border.',
    'Arrange the cherry tomatoes and mozzarella slices over the pesto.',
    'Drizzle with olive oil and sprinkle with parmesan cheese.',
    'Season with salt and pepper to taste.',
    'Bake for 10-12 minutes, or until the crust is golden brown and the cheese is melted and bubbly.',
    'Remove from the oven and let cool slightly before slicing and serving.'
  ]
}

This partially addresses https://github.com/firebase/genkit/issues/290

Hi @njpearman thanks for the great start! I probably should have given you some pointers before sending you off to write the PR, but a few high-level comments:

JSON mode is something that I consider to be a "standard" feature of LLMs since it's shared across many providers. As @MichaelDoyle mentioned the way to check if this should be enabled is if output.format == 'json' or output.schema is non-null.
The way to express this is basically to check if the output format ought to be JSON, and then add the mimeType option to the Gemini API call if so.
When returning a Message from JSON mode, we have a convention that if the output is guaranteed to be JSON we pre-parse it and return it as a data part, so instead of returning {text: "<the_json_string>"} you would return {data: <the_parsed_json>}.

Does that make sense?

@mbleigh, @MichaelDoyle thanks for your feedback. All of this makes sense in principal although I need to look into the data transformation part in more detail to see what that means. I'm hoping there are enough existing examples around the text / data mappings for me to follow the paradigm 😅. I imagine I'll have time to start looking later today (europe/paris TZ)
One question: for clarity, does this mean that the genkit interface does not expose the explicit responseMimeType config property, relying entirely on the abstract output.format + output.schema properties instead?
I've been digging around the output schema stuff a bit separately. My understanding is that if the schema is included, generate already auto-validates the schema, so there's no work to do here for this piece.
(Aside: I have some thoughts on the JSON validation as I got burnt by the strictness yesterday. I feel there needs to be some sort of "lax" / "no validation" mode given LLM wobbliness at conforming to a complex JSON schema. I haven't seen if this already exists nor looked to see if there's an existing GH issue though.)

Hey there, and sorry to crash your PR!
I've spent a lot of time with the Genkit beta lately and came across Issue #290 when looking for documentation on JSON validation.
I just wanted to echo @njpearman's sentiment about getting burnt by strictness and how useful a "lax" mode would be.
So far, I've found that most of the effort of using Genkit involves writing try-catch statements to wrap requests with fallbacks because I get so many "FAILED_PRECONDITION: Generation resulted in no candidates matching provided output schema" errors.
I really love working with Genkit overall but I'm probably reinventing the wheel here by essentially building my own lax mode.
Let me know if you ever want any user feedback and thanks for the awesome library! 👍

Hey there, also coming in late to this thread, I am one of the Genkit devs and I took at a look at the PR.
I left one small comment, but it looks pretty much good to go now!

@huangjeff5 thanks for the review and feedback. I've replied to your comment - let me know if you'd like me to do anything to help make that test clearer!

@huangjeff5 anything further work needed here?

@huangjeff5 anything further work needed here?

Hey just catching up on this thread after getting back from vacation. I actually think JSON mode was merged already in a different PR, I see some of these changes in the codebase already.


OpenHab docker container download error

Expected behavior
Download of Docker container for Openhab from Openhab latest using Kitematic for windows
Actual behavior
(HTTP code 404) unexpected - {"message":"manifest for openhab/openhab:latest not found"}

Go to https://hub.docker.com/r/openhab/openhab/tags/
Observe no latest tags were created for that image
Select a different tag in Kitematic
🎉  enjoy container running.

Ideally you open an issue with the repo owner to let them know how frustrating it is that they don't have a latest image tagged


Add edbee

Added edbee. Last time I tried QScintilla it was very crashy, while edbee isn't and is backed by a solid suite of tests.

Bump.


Meta.is_a consistent with case-type-of check

Pull Request Description
Removing special handling of AtomConstructor in Meta.is_a check.
Important Notes
A lot of tests are about to fail. Many of them indirectly call Meta.is_a with a constructor rather than type.
Checklist
Please include the following checklist in your PR:

[ ] The documentation has been updated if necessary.
[ ] All code conforms to the
Scala,
Java,
and
Rust
style guides.
All code has been tested:

[ ] Unit tests have been written where possible.
[ ] If GUI codebase was changed: Enso GUI was tested when built using BOTH
./run ide build and ./run ide watch.

There is currently 100 [FAILED] reports due to changed behavior of should_be_a and should_fail_with. CCing @jdunkerley

There is currently 100 [FAILED] reports due to changed behavior of should_be_a and should_fail_with. CCing @jdunkerley

That is because we want to amend it to still accept the constructors - our tests do rely on it. Can we do it with the matches helper as described in this comment?

That is because we want to amend it (should_be_a and should_fail_with) to still accept the constructors - our tests do rely on it.

OK, the goal is to modify the test methods to accept constructors. Here is a proposal: 595c605

Can we do it with the matches helper as described in this comment?

We don't have Meta.is_built_from method and I am afraid it'd be too visible. Hence I tried to propose a way to get Type from Constructor via defining_type (better name welcomed) in 595c605

We don't have Meta.is_built_from method

I proposed to add it, with an example implementation in the linked issue.

and I am afraid it'd be too visible.

What do you mean by that? What is wrong about it? I think it's a very useful utility.

Hence I tried to propose a way to get Type from Constructor via defining_type (better name welcomed) in 595c605

I think we shouldn't do this solution. Doesn't it do exactly what Meta.is_a was doing wrong?? If I understand your proposal correctly, x.should_be_a File_Error.Not_Found will boil down to a x.is_a File_Error check and happilly accept File_Error.Access_Denied. That is exactly what the issue was that we wanted to avoid.
Let's not go this route. Better to amend most of the tests to not use constructors there and for the few that need, if we really have to we can just amend the tests to use a different strategy for checking the variant.
IMO extending should_be_a and should_fail_with to use is_built_from is the most user friendly way of doing that. But I'm ok with other solutions, as long as they do not make our tests wrong.
I have one requirement that I don't think we can give up:
(File_Error.Not_Found file) . should_be_a File_Error.Access_Denied

must fail

I'm just tidying my commit up but have done the following:

should_fail_with takes a type.
expect_panic_with takes a type.
should_be_a will take either a type or a constructor. If a constructor it will check they match.

I think this should work for us

Currently there are failures in statistics, but probably they reveal real issue.
            err = Error.throw (Incomparable_Values.Error Nothing Nothing)
            err . should_fail_with Incomparable_Values
            err2 = Error.throw (Incomparable_Values.Error Nothing)
            err2 . should_fail_with Incomparable_Values
            err3 = Error.throw (Incomparable_Values.Error)
            err3 . should_fail_with Incomparable_Values

err is OK, but err2 and err3 fails. Probably related to

#3358

Thanks a lot for the f9e9cda fix, @jdunkerley. We still have 11 FAILED tests - at first sight some of them look like a real errors caused by #5792 "benevolence". I'll propose some fixes.

Currently there are failures in statistics, but probably they reveal real issue.
            err = Error.throw (Incomparable_Values.Error Nothing Nothing)
            err . should_fail_with Incomparable_Values
            err2 = Error.throw (Incomparable_Values.Error Nothing)
            err2 . should_fail_with Incomparable_Values
            err3 = Error.throw (Incomparable_Values.Error)
            err3 . should_fail_with Incomparable_Values

err is OK, but err2 and err3 fail. Probably related to

Always call defaulted atom arguments #3358

Marcin @kustosz, can you comment on that? Is f9e9cda the right workaround/fix for now? Anything else engine could do? Thank you.

worked around by removing the default values for Incomparable_Values.

I agree with @radeusgd comment that is_a should error (or maybe panic) if given a ctor.

That hasn't happened in this PR. If needed, it has to be solved as another issue. However it is not just about "ctor" - the first argument can be anything - number, text, array - all such cases are resolved by a fallback - none of them errors.

I agree with @radeusgd comment that is_a should error (or maybe panic) if given a ctor.

That hasn't happened in this PR. If needed, it has to be solved as another issue. However it is not just about "ctor" - the first argument can be anything - number, text, array - all such cases are resolved by a fallback - none of them errors.

I think we should error in all cases that are not a type. As a precaution that this will never return True and indicates a programming error (which we want to catch as soon as possible instead of having to investigate a bug that such a programming error usually will represent).
That's also why I suggested it could be good to have Meta.Type - as that would make it clear what is a a correct argument. And also would allow more convoluted functions to check if a thing can be passed to is_a (by checking if it is a Meta.Type).


[RFC] re-export the oci-spec from libcontainer

As a user of libcontainer, having to match libcontainer version with the oci-spec-rs version is a pain. The oci-spec-rs can introduce breaking changes. For example, with the introduction of time namespace, the libcontainer is broken and require code change. In this case, the users need to spend efforts trying to understand what happens.
Making oci-spec-rs backward compatible does not make much sense. Therefore I propose we re-export the oci-spec-rs that libcontainer uses. In this way, to use libcontainer, users don't have to import oci-spec-rs into their own dependencies.
Ref: https://www.lurklurk.org/effective-rust/re-export.html

Hey, even though the overall idea itself is good, it will mean we need to do a breaking release of libcontainer every time we update the oci spec, even if we changed only internal use and not external API. (That said semvar with such kind of changes does get subtle and complex, so maybe we should do breaking releases?)
Also,

can you elaborate more on the breakage you mentioned? I'm not familiar with it :sweat_smile:
what would be effect of trying to make oci-spec backword compatible? It won't be simple, but if it can prevent breakages, it might be useful.

Overall, if there is no better option, I think we should re-export the oci-spec as you have mentioned.

can you elaborate more on the breakage you mentioned? I'm not familiar with it

oci-spec introduced the time namespace from 0.6.0 to 0.6.1. As a result, it broke libcontainer because we have to exhaustively matching all namespace type. For us, this is OK because we would just update both youki and libcontainer at the same time. However, for people who use only libcontainer, they will have to include oci-spec in their dependency to use libcontainer because libcontainer uses types from oci-spec in its API. One of the solution is to re-export the types used in the API as part of the crate.

what would be effect of trying to make oci-spec backword compatible? It won't be simple, but if it can prevent breakages, it might be useful.

The main issue is that oci-spec is a spec. It has to add new things. For example, with the introduction of a new namespace, there is no easy way to make this backward compatible. The easiest and the most nature way is to add to the namespace type enum. There are ways to work around the issue, but this is just one example. It is far simpler to make the changes to the spec, bump the version, and let libcontainer and youki to release a new version implementing the new spec.
Plus, oci-spec follows the oci runtime spec. It can be a hard sell trying to coordinate runc, crun, and the oci runtime spec to all trying to respect backward compatibility.

it will mean we need to do a breaking release of libcontainer every time we update the oci spec, even if we changed only internal use and not external API.

Can you give an example of the breaking release? libcontainer version is pinned to a specific commit, which has a specific oci-spec version. When oci-spec version changes, we change in libcontainer. We don't have to release libcontainer because the old libcontainer version will still use the old oci-spec.
In fact, what you are describing is how it works today. I point to the example above. When oci-spec is bumped from 0.6.0 -> 0.6.1, the existing libcontainer breaks. We will have to release a new version of the libcontainer to fix the breakage. This creates a mis-match between the version of the oci-spec and the version of libcontainer. This RFC, using re-export, avoids exactly this issue. Now, the changes in oci-spec doesn't affect libcontainer at all, until we release a new version of libcontainer with the new oci-spec version. In the PR I linked, see how youki crate now has no dependency on the oci-spec crate anymore. The dependency is solely within the libcontainer crate.

First of all, the largest user of oci-spec-rs is already not libcontianer. So this problem is not only ours.
It is also dangerous to change repositories. Some people may refer to it directly.
The problem would occur to those who use libcontainer and oci-spec-rs directly.
However, I think this is the responsibility of the user. Wouldn't it be better to specify a minimum version of ocio-spec-rs instead of a fixed version of ocio-spec-rs?
https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#comparison-requirements
The same should be done for libcontainer, which should state the minimum version to be supported instead of a fixed version.

I didn't know there was such a thing as re-export. Dare I ask what the disadvantages of this are?

I believe this comment from the rust-lang discussion summarizes the issue much better than I did above: https://github.com/rust-lang/api-guidelines/discussions/176#discussioncomment-232636
I don't think re-export itself has a clear down side. This technique is the right choice when the library's public api depends on another 3rd party crate. In our case, that is libcontainer's api depends on oci-spec-rs. As a result, any breakage in oci-spec-rs will break libcontainer. I don't think we can avoid using oci-spec in the libcontainer's public api.
I came across a reddit thread with one con. If we strictly follows semvar, which I don't think we are at the moment, a major version bump would require us to bump the major version as well. Semvar can be used to indicate api breakage, but we are not using it. For example, 0.6.0 should really be 0.7.0 instead of 0.6.1. A patch version bump signals to users that there is typically no breakage. But again, not everyone follows this and many just use semvar as a numbering scheme. Ref: https://www.reddit.com/r/rust/comments/b7n5ue/is_it_ok_to_publicly_reexport_types_from_3rd/
In fact, this is a proposal to make re-export of dependencies in the public interface a lint rule: https://github.com/rust-lang/rust-clippy/issues/2848
In the end, I don't think this is something controversial. We choose to use oci-spec-rs as a separate crate in our api, so we already made our decisions.


Updated Yordaha "Pl1300" & Ferry's "Pl0700" missing action IDs

"Pl1300" for ID:17, and 18 associates with ID:7 (Flashing Void)
"Pl0700" for  ID:102, 111 112, 121, 122 associates with Attack under queued combo actions.

Thanks!


ignore images

case insensitive .gitignore rules for ignoring image files
*.[gG][iI][fF]
*.[jJ][pP][gG]
*.[jJ][pP][eE][gG]
*.[pP][nN][gG]
*.[tT][iI][fF]
*.[tT][iI][fF]
*.[wW][eE][bB][pP]

technique via stack overflow

why
prevent random files i create from going into repo


Improve plugin for next development

Improve plugin according to this document https://www.jenkins.io/doc/developer/tutorial-improve/ for next development
- [x]  Add a Jenkinsfile (https://www.jenkins.io/doc/developer/tutorial-improve/add-a-jenkinsfile/)
- [x] Update parent POM (https://www.jenkins.io/doc/developer/tutorial-improve/update-parent-pom/)
- [x] Update Jenkins version (https://www.jenkins.io/doc/developer/tutorial-improve/update-base-jenkins-version/)
- [x] Update SCM URL (https://www.jenkins.io/doc/developer/tutorial-improve/update-scm-url/)
- [x] Add more spotbugs checks (https://www.jenkins.io/doc/developer/tutorial-improve/add-more-spotbugs-checks/)
- [x] Check dependencies (https://www.jenkins.io/doc/developer/tutorial-improve/automate-dependency-update-checks/)
- [x] Use plugin bill of materials (https://www.jenkins.io/doc/developer/tutorial-improve/use-plugin-bill-of-materials/)
- [x] Enable incrementals (https://www.jenkins.io/doc/developer/tutorial-improve/enable-incrementals/)
- [ ] Migrate docs to GitHub (https://www.jenkins.io/doc/developer/tutorial-improve/migrate-documentation-to-github/)
- [ ] Add a contributing guide (https://www.jenkins.io/doc/developer/tutorial-improve/add-a-contributing-guide/)
- [ ] Report an Issue (https://www.jenkins.io/doc/developer/tutorial-improve/add-a-link-to-report-an-issue/)
- [x] Replace JSR-305 (https://www.jenkins.io/doc/developer/tutorial-improve/replace-jsr-305-annotations/)
- [ ] Convert translations (https://www.jenkins.io/doc/developer/tutorial-improve/convert-translations/)
- [x] Move description (https://www.jenkins.io/doc/developer/tutorial-improve/move-description-to-index/)

Testing done
NN
### Submitter checklist
- [x] Make sure you are opening from a **topic/feature/bugfix branch** (right side) and not your main branch!
- [x] Ensure that the pull request title represents the desired changelog entry
- [x] Please describe what you did
- [ ] ~~Link to relevant issues in GitHub or Jira~~
- [ ] ~~Link to relevant pull requests, esp. upstream and downstream changes~~
- [ ] ~~Ensure you have provided tests - that demonstrates feature works or fixes the issue~~

As the current documentation is little bit less and I have "big" plans here, I will merge this PR as is and improve documentation on demand.  It makes no sense to do it now.


Easy to fix warnings in dfile.c, other files...

Some warnings, easily fixed. PR up shortly.
dfile.c: In function ‘NC_check_file_type’:
dfile.c:174:9: warning: unused variable ‘use_parallel’ [-Wunused-variable]
     int use_parallel = 0;
         ^~~~~~~~~~~~
dfile.c: In function ‘openmagic’:
dfile.c:2056:45: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘void *’ [-Wformat=]
 fprintf(stderr,"XXX: openmagic: memory=0x%llx size=%ld\n",meminfo->memory,meminfo->size);
                                          ~~~^             ~~~~~~~~~~~~~~~
                                          %p
dfile.c: In function ‘readmagic’:
dfile.c:2122:45: warning: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 3 has type ‘void *’ [-Wformat=]
 fprintf(stderr,"XXX: readmagic: memory=0x%llx size=%ld\n",meminfo->memory,meminfo->size);
                                          ~~~^             ~~~~~~~~~~~~~~~
                                          %p

Some other warnings:
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I/usr/local/zlib-1.2.11_mpich-3.2/include -I/usr/local/szlib-2.1/include -I/usr/local/hdf5-1.10.1/include -g -Wall -MT libdispatch_la-dutil.lo -MD -MP -MF .deps/libdispatch_la-dutil.Tpo -c dutil.c  -fPIC -DPIC -o .libs/libdispatch_la-dutil.o
dutil.c: In function ‘NC_mktmp’:
dutil.c:249:15: warning: return makes pointer from integer without a cast [-Wint-conversion]
        return (NC_EPERM);
               ^
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I/usr/local/zlib-1.2.11_mpich-3.2/include -I/usr/local/szlib-2.1/include -I/usr/local/hdf5-1.10.1/include -g -Wall -MT libdispatch_la-drc.lo -MD -MP -MF .deps/libdispatch_la-drc.Tpo -c drc.c  -fPIC -DPIC -o .libs/libdispatch_la-drc.o
drc.c: In function ‘rcorder’:
drc.c:226:11: warning: unused variable ‘j’ [-Wunused-variable]
     int i,j;
           ^
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -DDLL_EXPORT -I/usr/local/zlib-1.2.11_mpich-3.2/include -I/usr/local/szlib-2.1/include -I/usr/local/hdf5-1.10.1/include -g -Wall -MT libnetcdf2_la-dv2i.lo -MD -MP -MF .deps/libnetcdf2_la-dv2i.Tpo -c dv2i.c  -fPIC -DPIC -o .libs/libnetcdf2_la-dv2i.o
dv2i.c: In function ‘nc_inq_rec’:
dv2i.c:265:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
     if (recsizes != NULL)
     ^~
dv2i.c:273:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
  return NC_NOERR;
  ^~~~~~

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I/usr/local/zlib-1.2.11_mpich-3.2/include -I/usr/local/szlib-2.1/include -I/usr/local/hdf5-1.10.1/include -g -Wall -MT libnetcdf3_la-nc_hashmap.lo -MD -MP -MF .deps/libnetcdf3_la-nc_hashmap.Tpo -c nc_hashmap.c  -fPIC -DPIC -o .libs/libnetcdf3_la-nc_hashmap.o
nc_hashmap.c: In function ‘NC_hashmap_verify’:
nc_hashmap.c:388:24: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘long unsigned int’ [-Wformat=]
      fprintf(stderr,"[%d] key=%lu data=%ld",i,e->key,e->data-1);
                       ~^
                       %ld
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I/usr/local/zlib-1.2.11_mpich-3.2/include -I/usr/local/szlib-2.1/include -I/usr/local/hdf5-1.10.1/include -g -Wall -MT libnetcdf3_la-dim.lo -MD -MP -MF .deps/libnetcdf3_la-dim.Tpo -c dim.c  -fPIC -DPIC -o .libs/libnetcdf3_la-dim.o
dim.c: In function ‘NC_finddim’:
dim.c:135:14: warning: variable ‘loc’ set but not used [-Wunused-but-set-variable]
    NC_dim ** loc;
              ^~~
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I/usr/local/zlib-1.2.11_mpich-3.2/include -I/usr/local/szlib-2.1/include -I/usr/local/hdf5-1.10.1/include -g -Wall -MT libnetcdf3_la-attr.lo -MD -MP -MF .deps/libnetcdf3_la-attr.Tpo -c attr.c  -fPIC -DPIC -o .libs/libnetcdf3_la-attr.o
attr.c: In function ‘dup_NC_attr’:
attr.c:149:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
     if(attrp->xvalue != NULL && rattrp->xvalue != NULL)
     ^~
attr.c:151:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
  return attrp;
  ^~~~~~
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I/usr/local/zlib-1.2.11_mpich-3.2/include -I/usr/local/szlib-2.1/include -I/usr/local/hdf5-1.10.1/include -g -Wall -MT libnetcdf3_la-putget.lo -MD -MP -MF .deps/libnetcdf3_la-putget.Tpo -c putget.c  -fPIC -DPIC -o .libs/libnetcdf3_la-putget.o
putget.c: In function ‘putNCvx_char_char’:
putget.c:892:15: warning: unused variable ‘fillp’ [-Wunused-variable]
         void *fillp=NULL;
               ^~~~~
gcc -DHAVE_CONFIG_H -I. -I..  -I../include   -I/usr/local/zlib-1.2.11_mpich-3.2/include -I/usr/local/szlib-2.1/include -I/usr/local/hdf5-1.10.1/include  -g -Wall -MT cvt.o -MD -MP -MF $depbase.Tpo -c -o cvt.o cvt.c &&\
mv -f $depbase.Tpo $depbase.Po
cvt.c: In function ‘convert1’:
cvt.c:512:3: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
   if(bytes)
   ^~
cvt.c:514:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
     break;
     ^~~~~

It is better IMO to leave the e.g. %lld and instead cast the argument
because not all compilers have % markers for the type.

I agree, we have to support a broad enough range of platforms/compilers I could see this being a potential issue.

OK, stand by I will fix.
On Thu, Nov 9, 2017 at 10:05 AM, Ward Fisher<EMAIL_ADDRESS>wrote:

I agree, we have to support a broad enough range of platforms/compilers I
could see this being a potential issue.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Unidata/netcdf-c/issues/610#issuecomment-343221902,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEUr3JsLxyl7XXHo7qCWHkqZJJfrZANFks5s0zCVgaJpZM4QX7Qq
.


ServieMonitor should use with higher precedence the readOnlyApiKey

Hello Qdrant team,
If in the values.yaml are defined both apiKey and readOnlyApiKey
it will be better if the ServiceMonitor refers to the read-only key.
The Prometheus will be able to collect metrics with the read-only key,
so there's no need to pass it the more powerful key.
Thank you

Good catch! I've create a PR for it here https://github.com/qdrant/qdrant-helm/pull/221