Faster MTTKRPS

Start with latest MTTKRP and Khatri-Rao function from #35.

Still working on making new benchmarks for MTTKRPS but some preliminary results look promising for order > 3 tensors:
julia> using Random

julia> using BenchmarkTools

julia> using GCPDecompositions

julia> using LinearAlgebra

julia> function khatrirao(A::Vararg{T,N}) where {T<:AbstractMatrix,N}
           if N == 1
               return A[1]
           end
           r = size(A[1],2)
           # @boundscheck all(==(r),size.(A,2)) || throw(DimensionMismatch())
           R = ntuple(Val(N)) do k
               dims = (ntuple(i->1,Val(N-k))..., :, ntuple(i->1,Val(k-1))..., r)
               return reshape(A[k],dims)
           end
           return reshape(broadcast(*, R...),:,r)
       end
khatrirao (generic function with 1 method)

julia> function mttkrp(X, U, n)

           # Dimensions
           N, I, r = length(U), Tuple(size.(U, 1)), (only∘unique)(size.(U, 2))
           (N == ndims(X) && I == size(X)) || throw(DimensionMismatch("`X` and `U` do not have matching dimensions"))

           # See section III-B from "Fast Alternating LS Algorithms for High Order CANDECOMP/PARAFAC Tensor Factorizations" by Phan et al.
           Rn = similar(U[n])
           Jn = prod(size(X)[1:n])
           Kn = prod(size(X)[n+1:end])
           # Compute tensor-vector products right to left (equations 15, 17) for each rank

           # Special cases are n = 1 and n = N (n = 1 has no outer tensor-vector products),
           # n = N has no inner tensor-vector products
           if n == 1
               # Just inner tensor-vector products
               kr_inner = khatrirao(U[reverse(2:N)]...)
               mul!(Rn, reshape(X, size(X, 1), :), kr_inner)
           elseif n == N
               # Just outer tensor-vector products
               kr_outer = khatrirao(U[reverse(1:N-1)]...)
               mul!(Rn, transpose(reshape(X, prod(size(X)[1:N-1]), size(X)[N])), kr_outer)
           else
               kr_inner = khatrirao(U[reverse(n+1:N)]...)
               kr_outer = khatrirao(U[reverse(1:n-1)]...)
               inner = reshape(reshape(X, Jn, Kn) * kr_inner, (size(X)[1:n]..., r))
               Jn_inner = prod(size(inner)[1:n-1])
               Kn_inner = prod(size(inner)[n:end-1])
               Rn = reduce(hcat, [transpose(reshape(selectdim(inner, ndims(inner), j), Jn_inner, Kn_inner)) * kr_outer[:, j] for j in 1:r])
           end
           return Rn
       end
mttkrp (generic function with 1 method)

julia> function mttkrps_old!(X, U, λ)
           for n in 1:ndims(X)
               V = reduce(.*, U[i]'U[i] for i in setdiff(1:ndims(X), n))
               U[n] = mttkrp(X, U, n) / V
               λ = norm.(eachcol(U[n]))
               U[n] = U[n] ./ permutedims(λ)
           end
       end
mttkrps_old! (generic function with 1 method)

julia> function mttkrps_helper!(Zn, U, n, side, N, Jns, Kns)
           if side == "right"
               kr = khatrirao(U[reverse(1:n-1)]...)
               for r in 1:size(U[n])[2]
                   U[n][:, r] = reshape(Zn[:, r], (Jns[n-1], size(U[n])[1]))' * kr[:, r]
               end
           elseif side == "left"
               kr = khatrirao(U[reverse(n+1:N)]...)
               for r in 1:size(U[n])[2]
                   U[n][:, r] = reshape(Zn[:, r], (size(U[n])[1], Kns[n])) * kr[:, r]
               end
           end
       end
mttkrps_helper! (generic function with 1 method)

julia> function mttkrps_new!(X, U, λ)

           N = ndims(X)
           R = size(U[1])[2]

           # Determine order of modes of MTTKRP to compute
           Jns = [prod(size(X)[1:n]) for n in 1:N]
           Kns = [prod(size(X)[n+1:end]) for n in 1:N]
           Kn_minus_ones = [prod(size(X)[n:end]) for n in 1:N]
           comp = Jns .<= Kn_minus_ones
           n_star = maximum(map(x -> comp[x] ? x : 0, 1:N))
           order = vcat([i for i in n_star:-1:1], [i for i in n_star+1:N])

           # Compute MTTKRPs recursively
           saved = zeros(Jns[n_star], R)
           for n in order
               if n == n_star
                   saved = reshape(X, (Jns[n], Kns[n])) * khatrirao(U[reverse(n+1:N)]...)
                   mttkrps_helper!(saved, U, n, "right", N, Jns, Kns)
               elseif n == n_star + 1
                   saved = (khatrirao(U[reverse(1:n-1)]...)' * reshape(X, (Jns[n-1], Kns[n-1])))'
                   if n == N
                       U[n] = saved
                   else
                       mttkrps_helper!(saved, U, n, "left", N, Jns, Kns)
                   end
               elseif n < n_star
                   saved = hcat([reshape(saved[:, r], (Jns[n], size(X)[n+1])) * U[n+1][:, r] for r in 1:R]...)
                   if n == 1
                       U[n] = saved
                   else
                       mttkrps_helper!(saved, U, n, "right", N, Jns, Kns)
                   end
               else
                   saved = hcat([reshape(saved[:, r], (size(X)[n-1], Kns[n-1]))' * U[n-1][:, r] for r in 1:R]...)
                   if n == N
                       U[n] = saved
                   else
                       mttkrps_helper!(saved, U, n, "left", N, Jns, Kns)
                   end
               end
               # Normalization
               U[n] = U[n] / reduce(.*, U[i]'U[i] for i in setdiff(1:N, n))
               λ .= norm.(eachcol(U[n]))
               U[n] = U[n] ./ permutedims(λ)
           end
       end
mttkrps_new! (generic function with 1 method)

julia> function benchmark_mttkrps_als(sz, r, method)
           # Set up for ALS and do first MTTKRPs iteration
           Random.seed!(0)
           X = randn(sz)
           T = Float64
           N = ndims(X)
           M0 = GCPDecompositions.CPD(ones(T, r), rand.(T, size(X), r));
           M0norm = sqrt(sum(abs2, M0[I] for I in CartesianIndices(size(M0))))
           Xnorm = sqrt(sum(abs2, skipmissing(X)))
           for k in Base.OneTo(N)
               M0.U[k] .*= (Xnorm / M0norm)^(1 / N)
           end
           λ, U = M0.λ, collect(M0.U)
           if method == "old"
               return @btime mttkrps_old!($X, $U, $λ)
           elseif method == "new"
               return @btime mttkrps_new!($X, $U, $λ)
           end
       end
benchmark_mttkrps_als (generic function with 1 method)

julia> benchmark_mttkrps_als((50,50,50), 10, "old")
  984.223 μs (197 allocations: 667.42 KiB)

julia> benchmark_mttkrps_als((50,50,50), 10, "new")
  689.842 μs (334 allocations: 1.04 MiB)

julia> benchmark_mttkrps_als((200,200,200), 10, "old")
  17.669 ms (197 allocations: 9.41 MiB)

julia> benchmark_mttkrps_als((200,200,200), 10, "new")
  20.198 ms (334 allocations: 15.53 MiB)

julia> benchmark_mttkrps_als((100,100,100,100), 10, "old")
  485.311 ms (353 allocations: 232.13 MiB)

julia> benchmark_mttkrps_als((100,100,100,100), 10, "new")
  130.423 ms (570 allocations: 7.08 MiB)

julia> benchmark_mttkrps_als((100,100,100,100), 50, "old")
  1.439 s (755 allocations: 1.13 GiB)

julia> benchmark_mttkrps_als((100,100,100,100), 50, "new")
  322.255 ms (1968 allocations: 35.72 MiB)

julia> benchmark_mttkrps_als((50,50,50,50,50), 50, "old")
  12.166 s (1150 allocations: 7.18 GiB)

julia> benchmark_mttkrps_als((50,50,50,50,50), 50, "new")
  1.145 s (3012 allocations: 249.37 MiB)

Some benchmarks of new MTTKRPS algorithm (new) vs using previous MTTKRP algorithm from #35 (old):
Benchmark Report for GCPDecompositions
Job Properties

Time of benchmarks:

Target: 16 Feb 2024 - 12:04
Baseline: 16 Feb 2024 - 12:13

Package commits:

Target: d1f64d
Baseline: 0432e1

Julia commits:

Target: 312098
Baseline: 312098

Julia command flags:

Target: None
Baseline: None

Environment variables:

Target: GCP_BENCHMARK_SUITES => mttkrps
Baseline: GCP_BENCHMARK_SUITES => mttkrps

Results

A ratio greater than 1.0 denotes a possible regression (marked with :x:), while a ratio less
than 1.0 denotes a possible improvement (marked with :white_check_mark:). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID
time ratio
memory ratio

["mttkrps", "modes=3, size=(100, 100, 100), rank=10"]
755.48 (5%) :x:
28.71 (1%) :x:

["mttkrps", "modes=3, size=(100, 100, 100), rank=100"]
1.86 (5%) :x:
1.62 (1%) :x:

["mttkrps", "modes=3, size=(20, 20, 20), rank=10"]
0.72 (5%) :white_check_mark:
1.48 (1%) :x:

["mttkrps", "modes=3, size=(20, 20, 20), rank=100"]
1.01 (5%)
1.32 (1%) :x:

["mttkrps", "modes=3, size=(200, 200, 200), rank=10"]
1.13 (5%) :x:
1.65 (1%) :x:

["mttkrps", "modes=3, size=(200, 200, 200), rank=100"]
1.42 (5%) :x:
1.65 (1%) :x:

["mttkrps", "modes=3, size=(400, 400, 400), rank=10"]
0.99 (5%)
1.66 (1%) :x:

["mttkrps", "modes=3, size=(400, 400, 400), rank=100"]
1.65 (5%) :x:
1.66 (1%) :x:

["mttkrps", "modes=3, size=(50, 50, 50), rank=10"]
0.77 (5%) :white_check_mark:
1.59 (1%) :x:

["mttkrps", "modes=3, size=(50, 50, 50), rank=100"]
1.01 (5%)
1.54 (1%) :x:

["mttkrps", "modes=4, size=(100, 100, 100, 100), rank=10"]
0.73 (5%) :white_check_mark:
0.03 (1%) :white_check_mark:

["mttkrps", "modes=4, size=(100, 100, 100, 100), rank=100"]
0.38 (5%) :white_check_mark:
0.03 (1%) :white_check_mark:

["mttkrps", "modes=4, size=(20, 20, 20, 20), rank=10"]
0.37 (5%) :white_check_mark:
0.17 (1%) :white_check_mark:

["mttkrps", "modes=4, size=(20, 20, 20, 20), rank=100"]
0.90 (5%) :white_check_mark:
0.23 (1%) :white_check_mark:

["mttkrps", "modes=4, size=(50, 50, 50, 50), rank=10"]
0.35 (5%) :white_check_mark:
0.06 (1%) :white_check_mark:

["mttkrps", "modes=4, size=(50, 50, 50, 50), rank=100"]
0.28 (5%) :white_check_mark:
0.07 (1%) :white_check_mark:

["mttkrps", "modes=5, size=(10, 10, 10, 10, 10), rank=10"]
0.23 (5%) :white_check_mark:
0.20 (1%) :white_check_mark:

["mttkrps", "modes=5, size=(10, 10, 10, 10, 10), rank=100"]
0.45 (5%) :white_check_mark:
0.27 (1%) :white_check_mark:

["mttkrps", "modes=5, size=(30, 30, 30, 30, 30), rank=10"]
0.24 (5%) :white_check_mark:
0.06 (1%) :white_check_mark:

["mttkrps", "modes=5, size=(30, 30, 30, 30, 30), rank=100"]
0.15 (5%) :white_check_mark:
0.06 (1%) :white_check_mark:

["mttkrps", "modes=5, size=(60, 60, 60, 60, 60), rank=10"]
0.31 (5%) :white_check_mark:
0.03 (1%) :white_check_mark:

["mttkrps", "modes=5, size=(60, 60, 60, 60, 60), rank=100"]
0.02 (5%) :white_check_mark:
0.03 (1%) :white_check_mark:

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

["mttkrps"]

Julia versioninfo

Target
Julia Version 1.10.0
Commit 3120989f39 (2023-12-25 18:01 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
      Microsoft Windows [Version 10.0.22621.3007]
  CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz:
                 speed         user         nice          sys         idle          irq
       #1-16  2304 MHz    7833353            0      6695962<PHONE_NUMBER>       182321  ticks
  Memory: 31.726390838623047 GB (1997.390625 MB free)
  Uptime: 346447.468 sec
  Load Avg:  0.0  0.0  0.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, tigerlake)
  Threads: 1 on 16 virtual cores

Baseline
Julia Version 1.10.0
Commit 3120989f39 (2023-12-25 18:01 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
      Microsoft Windows [Version 10.0.22621.3007]
  CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz:
                 speed         user         nice          sys         idle          irq
       #1-16  2304 MHz    8391196            0      6987259<PHONE_NUMBER>       186870  ticks
  Memory: 31.726390838623047 GB (13233.48046875 MB free)
  Uptime: 346976.078 sec
  Load Avg:  0.0  0.0  0.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, tigerlake)
  Threads: 1 on 16 virtual cores

Added new FastALS algorithm and made it the default for least squares loss. Also added a more extensive least squares benchmark suite for testing ALS vs. FastALS. Commit fc47162 is set as the ALS baseline to compare against for the benchmarks by setting the default least squares algorithm for that commit as ALS rather than FastALS. I resolved the 3-mode tensor issue by replacing slicing operations with selectdims. All test cases are now improved in time and memory:
Benchmark Report for GCPDecompositions
Job Properties

Time of benchmarks:

Target: 21 Feb 2024 - 15:50
Baseline: 21 Feb 2024 - 15:56

Package commits:

Target: c4b8e3
Baseline: fc4716

Julia commits:

Target: 312098
Baseline: 312098

Julia command flags:

Target: None
Baseline: None

Environment variables:

Target: GCP_BENCHMARK_SUITES => leastsquares
Baseline: GCP_BENCHMARK_SUITES => leastsquares

Results

A ratio greater than 1.0 denotes a possible regression (marked with :x:), while a ratio less
than 1.0 denotes a possible improvement (marked with :white_check_mark:). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID
time ratio
memory ratio

["leastsquares", "least-squares-size(X)=(15, 20, 25, 30), rank(X)=1"]
0.41 (5%) :white_check_mark:
0.22 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(15, 20, 25, 30), rank(X)=10"]
0.31 (5%) :white_check_mark:
0.12 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(15, 20, 25, 30), rank(X)=50"]
0.48 (5%) :white_check_mark:
0.16 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(15, 20, 25, 30, 35), rank(X)=1"]
0.39 (5%) :white_check_mark:
0.16 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(15, 20, 25, 30, 35), rank(X)=10"]
0.17 (5%) :white_check_mark:
0.04 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(15, 20, 25, 30, 35), rank(X)=50"]
0.11 (5%) :white_check_mark:
0.03 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(30, 30, 30, 30, 30), rank(X)=1"]
0.44 (5%) :white_check_mark:
0.19 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(30, 30, 30, 30, 30), rank(X)=10"]
0.22 (5%) :white_check_mark:
0.05 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(30, 30, 30, 30, 30), rank(X)=50"]
0.14 (5%) :white_check_mark:
0.04 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(30, 40, 50, 60), rank(X)=1"]
0.82 (5%) :white_check_mark:
0.26 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(30, 40, 50, 60), rank(X)=10"]
0.34 (5%) :white_check_mark:
0.07 (1%) :white_check_mark:

["leastsquares", "least-squares-size(X)=(30, 40, 50, 60), rank(X)=50"]
0.18 (5%) :white_check_mark:
0.05 (1%) :white_check_mark:

["leastsquares", "size(X)=(15, 20, 25), rank(X)=1"]
0.68 (5%) :white_check_mark:
0.80 (1%) :white_check_mark:

["leastsquares", "size(X)=(15, 20, 25), rank(X)=10"]
0.99 (5%)
0.88 (1%) :white_check_mark:

["leastsquares", "size(X)=(15, 20, 25), rank(X)=50"]
0.88 (5%) :white_check_mark:
0.92 (1%) :white_check_mark:

["leastsquares", "size(X)=(30, 40, 50), rank(X)=1"]
0.67 (5%) :white_check_mark:
0.84 (1%) :white_check_mark:

["leastsquares", "size(X)=(30, 40, 50), rank(X)=10"]
0.87 (5%) :white_check_mark:
0.85 (1%) :white_check_mark:

["leastsquares", "size(X)=(30, 40, 50), rank(X)=50"]
0.68 (5%) :white_check_mark:
0.86 (1%) :white_check_mark:

["leastsquares", "size(X)=(60, 70, 80), rank(X)=1"]
0.60 (5%) :white_check_mark:
0.92 (1%) :white_check_mark:

["leastsquares", "size(X)=(60, 70, 80), rank(X)=10"]
0.83 (5%) :white_check_mark:
0.91 (1%) :white_check_mark:

["leastsquares", "size(X)=(60, 70, 80), rank(X)=50"]
0.69 (5%) :white_check_mark:
0.91 (1%) :white_check_mark:

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

["leastsquares"]

Julia versioninfo

Target
Julia Version 1.10.0
Commit 3120989f39 (2023-12-25 18:01 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
      Microsoft Windows [Version 10.0.22621.3155]
  CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz:
                 speed         user         nice          sys         idle          irq
       #1-16  2304 MHz    2657478            0      1282181    170068900        33648  ticks
  Memory: 31.726390838623047 GB (16126.8203125 MB free)
  Uptime: 12361.437 sec
  Load Avg:  0.0  0.0  0.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, tigerlake)
  Threads: 1 on 16 virtual cores

Baseline
Julia Version 1.10.0
Commit 3120989f39 (2023-12-25 18:01 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
      Microsoft Windows [Version 10.0.22621.3155]
  CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz:
                 speed         user         nice          sys         idle          irq
       #1-16  2304 MHz    3121619            0      1416088    174862119        35540  ticks
  Memory: 31.726390838623047 GB (15401.5 MB free)
  Uptime: 12698.39 sec
  Load Avg:  0.0  0.0  0.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, tigerlake)
  Threads: 1 on 16 virtual cores


Add support for highlighted lines in code blocks

https://python-markdown.github.io/extensions/code_hilite/#colons
https://python-markdown.github.io/extensions/fenced_code_blocks/#emphasized-lines

Related to #507. All new themes should support this feature.

:tada: This issue has been resolved in version 5.2.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


adjusted about us section and home page & footer spacing

Issues Identification
Closes: #981
Description
Successfully managed Improper spacing in the about us section of home page and managed the footer and main page spacing
Summary
the about section was disturbed and footer has some extra spacing below so i made changes in the CSS of the file to resolve it.
Details

set display as flex and flex-wrap as no wrap for about us section
added bottom margin for footer-bar.
adjusted body margin CSS for resolving unnecessary horizontal scrolling.

Types of Changes
Please check the boxes that apply

[x] Bugfix (non-breaking change that fixes an issue)

Screenshots

@vivekvardhan2810

@MimanshaKaur please mention the issue number in the Pull Request Description.

done
closes #981

@MimanshaKaur while i was checking the deploy preview.
why is the border spacing is there.
deploy preview:

Actual website:

please check the deploy preview and make the required changes.

@MimanshaKaur while i was checking the deploy preview.
why is the border spacing is there.
deploy preview:

Actual website:

please check the deploy preview and make the required changes.

ok.. one minute let me check

now check

@MimanshaKaur just make one small change.

i can't see this one.
And
this one also.

@vivekvardhan2810  this is actually due to scroll feature of html...this white space is bcz of scrollbar only.. i tried adjusting all the margins but still this is not working out..

@MimanshaKaur okay, no problem i will merge it.

wait wait

done done

give me 2 minutes i am doing something

all set👍👍
done with it..pls review ...i have set the margin and managed width for all the required sections ..now the page is looking sorted.

Done @MimanshaKaur.
Now it is looking good.

@MimanshaKaur i can give it level 1 only, i can add level 1 only for this as i can see in file changes,
if i assign you level 2 then there will be some issues from my side. as a project admin and program manager reviews all this PR's and it's a clear instruction.
so please understand.

no issues.. thank you so much for assigning  me this task👍👍

@MimanshaKaur sorry, if i have troubled you 😭

@MimanshaKaur i can give it level 1 only, i can add level 1 only for this as i can see in file changes,
if i assign you level 2 then there will be some issues from my side. as a project admin and program manager reviews all this PR's and it's a clear instruction.
so please understand.
will it be okay for you.
As this PR's are reviewed by program manager 😭

yes yes ..it's OK
i was expecting level 2 but if it's not allowed or possible then no issues

@MimanshaKaur thank you for contributing to ML Fusion labs.
your contribution gives a value to our project.
And do look for other projects and contribute in them.

@MimanshaKaur sorry, if i have troubled you 😭
no problem

Hey @MimanshaKaur i have connected you on linkedin, make sure to connect me also.


multitenant db factory (attempt 2)

messed up the original PR merge

:tada: This PR is included in version 9.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Repeated constant found

storage/storage.go:252:47:2 other occurrence(s) of 'changingCluster' found in: storage/storage.go:260:33 storage/storage.go:261:41

This one is already fixed.


add badge module

Closing for https://github.com/Diversity-In-DSC/Badge-Module/commit/49294b23c2c6462a3e4fd0a4dddf650ea0def94f which is live at https://badge.dscwow.tech


[sca/kmac] Switch off entropy fast process

Entropy fast process should not be used in scenarios which require
side-channel security.
TVLA results with fast entropy process switched on:

The analysis shows first order key-leakage at the end of the computation.
Fast entropy process switched off:

No first order leakage.
This commit switches off entropy fast process in sha3_serial.c and
updates documentation.
Signed-off-by: Vladimir Rozic<EMAIL_ADDRESS>

@alphan  Do you know if we use fast entropy process in the mask ROM? What would be the best way to communicate this to the SW team.

I think this should also be mentioned in the DIF:
Good idea @andreaskurth ,
I've added the comment to dif_kmac.h

@vogelpi can you merge this if it looks good to you?


Warning: undefined is not a function after upgrade to 3.2

So I realize this isn't a particularly helpful issue report because I don't have good repro steps to share but I wanted to let you know anyways...  Our CI builds started failing this morning (after 3.2 was released) with "Warning: undefined is not a function".  Removing all PNG files from the project made the build pass though that's not a real option.  We've reverted to 3.1 for the time being, adding an explicit dependency on that before our grunt-contrib-imagemin dependency.

Could you show us the relevant part of the CI logs, more than just "Warning: undefined is not a function"?

And, if you're using grunt-contrib-imagemin, you can see more helpful stack traces by adding --stack flag to the grunt command.

What version of grunt-contrib-imagemin are you using?

we're on 0.9.2 of grunt-contrib-imagemin.  will see if updating that solves the problem and try to share a stack trace if not

ok grunt-contrib-imagemin 0.9.4 + imagemin 3.2 === happiness.  thanks!

Sweet, happy it works.


Ellipsis for text overflow in table cell?

Hi there,
I was wondering if it is possible to have the table behave like when I set table-layout: fixed; on the table and then text-overflow:ellipsis on the cell, so the text will always be on a single line with ...
I tried to play with the css but no luck...

Yes it is possible. Wrap your content into div with the class and set style on that class:
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;

I tried but it does not work, the text is on a single line and trimmed but the overflow is not replaced by the ellipsis.
I also tried on the example here adding long text to a cell and then play with the css but I get the same result, no ellipsis showing
See screenshot

That's right, I did not include all the details. This should work:
.cell {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    box-sizing: border-box;
    display: block;
    padding: 8px;
    width: 100%;
}

.cell-overflow {
    box-sizing: border-box;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

		Long content...

It does work indeed!
Many thanks

In my use case, overflow:hidden is also needed in the cell-overflow class

Thanks, you just saved my day!

Now in 2017 useful with fixed-data-table-2 also !

.cell-ellipsis {
max-width: 1px;
width: 20%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}

No need to use two div wrappers, just set
table-layout: fixed;

No need to use two div wrappers, just set
table-layout: fixed;

Many thanks btw all of the columns have the same width size. how to make size of the first column is smallest?

There is width property on the column.

If you go this route, you HAVE to manually set a width on every column on every table in your entire app, if you want anything other than forced equal-width columns. This is a nightmare in a large application. I still have not found a solution which preserves one of the biggest advantages html tables give us - intelligent auto-sizing of columns. With this approach you're hobbling that completely.


Replication the field using a button

Hi,
I am creating subjects form a dropdown menu which gets replicated after I press a button.
Is there a way I can implement it as below using the material drop down?
Below is what it should look like.

I don't really understand what you're asking but if you're looking to make a dropdown that appears on a button click perhaps this example will help
            <DropdownToggleButton onPress={() => this.dropdown.focus()} />
            <Dropdown
              containerStyle={{height: 0, width: 0}}
              pickerStyle={{width: 200}}
              dropdownOffset={{ top: 32, left: -190 }}
              ref={e => this.dropdown = e}
              data={data}
              renderAccessory={() => null}
            />


Remove repeated line

@AndyCross : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@AndyCross thanks for pointing that out. It looks like the duplicate paragraph was removed earlier.

The duplicate sentence appears to be in master still, so we'll merge the PR.


Segmentation Fault: ./cli

When I test the server with a custom sequence of packets, it seems to run into a Seg Fault at /quicly/lib/quicly.c:4009 - if (stream_id / 4 >= quicly_get_ingress_max_streams(conn, quicly_stream_is_unidirectional(stream_id)))
Is this a known point of failure in the code ?
If so, are there any probable reasons that this is happening ?

I haven't had this error. Your conn object is probably NULL.

The conn object doesn't seem to be null. What exactly does a "wrong" stream number mean ? Using GDB, it seems the stream_id in the case of this seg fault is 30. Is that the source of the error ?

Okay, so the stream_id does seem to be the reason. A check should probably be added to make sure that the server doesn't crash I guess.

I still fail to understand though why a stream_id like 30 causes an error ?


MudTextField: Fix initial height if AutoGrow is enabled (#7839)

Description

How Has This Been Tested?
Resolves #7839
I did test it visually and with the example code given in the associated issue. When I implemented this feature initially I did only check the scenario when the text changes after initialization but missed the case that the text might span multiple lines after initialization. The issue has been fixed with a change to the javascript file. In this case no unit test is possible.
@henon @ScarletKuro
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x] The PR is submitted to the correct branch (dev).
[x] My code follows the code style of this project.
[x] I've added relevant tests. Unit tests are not possible is this case.

Thanks!


Questions about maximum items supported by this app

Hi, excellent work!!!, I have two question, first one: numbers can be use instead of names?  Second one: there is a limit on how many entries you could have?

@juanchi Glad you like my work.

To answer your first question, my answer would be yes, but not in a very user friendly way. This app was designed to pick random names, so the input box was designed to receive inputs line by line. So if you want to display number 1 - 5 in the spinner, you will need to input something like:
1
2
3
4
5

For question 2, Short answer is "Yes and no". There isn't a hard limit on how many numbers you can input to initialize the lucky draw app, however it was found that displaying and animating large amount of items on screen will cause the app to be laggy or even breaks the animation, that's why the app is design to show only part of the names at a time.
That means, you can have unlimited number of items, but each spin will only show some random items from the remaining items on the reel.
Currently, the maximum items display on the spin is 40. If you wish to show more, you are always welcome to fork this repository and do your own customization:
https://github.com/icelam/random-name-picker/blob/9357a60eb9fa6a3f7e7d0380f85099dea2bf2e28/src/assets/js/app.ts#L45

Hope this answer your questions.

@juanchi Glad you like my work.
To answer your first question, my answer would be yes, but not in a very user friendly way. This app was designed to pick random names, so the input box was designed to receive inputs line by line. So if you want to display number 1 - 5 in the spinner, you will need to input something like:
1
2
3
4
5

For question 2, Short answer is "Yes and no". There isn't a hard limit on how many numbers you can input to initialize the lucky draw app, however it was found that displaying and animating large amount of items on screen will cause the app to be laggy or even breaks the animation, that's why the app is design to show only part of the names at a time.
That means, you can have unlimited number of items, but each spin will only show some random items from the remaining items on the reel.
Currently, the maximum items display on the spin is 40. If you wish to show more, you are always welcome to fork this repository and do your own customization:
https://github.com/icelam/random-name-picker/blob/9357a60eb9fa6a3f7e7d0380f85099dea2bf2e28/src/assets/js/app.ts#L45
Hope this answer your questions.

Thanks!!!!!!


support read from table with expression index

What problem does this PR solve?
close https://github.com/pingcap/tispark/issues/1734
tidb currently supports expression index (https://docs.pingcap.com/tidb/dev/sql-statement-create-index#expression-index), tispark should also support it.
What is changed and how it works?
read: tispark will ignore expression index, but can read data successfully from table with expression index
write: tispark does not support writing to table with expression index using BatchWrite
Check List
Tests

Unit test
Integration test
Manual test (add detailed scripts or steps below)
No code

Code changes

Has exported function/method change
Has exported variable/fields change
Has interface methods change
Has persistent data change

Side effects

Possible performance regression
Increased code complexity
Breaking backward compatibility

Related changes

Need to cherry-pick to the release branch
Need to update the documentation
Need to update the tidb-ansible repository
Need to be included in the release note

/run-all-tests

/run-all-tests

/run-all-tests


CI: Use pydocstyle in github actions

This PR edits the GitHub Actions workflow in test.yml to add a pydocstyle test. Afterward, all docstrings will have to conform to the nummpy docstring standard.
This PR also fixes the coverage upload to coveralls.io

Resolves #6


Import Themes

Is the Import function something that is planned for the future and just a placeholder?  When I click on it, nothing happens.

@atomicpapa What version are you running? I believe I fixed this in 0.4.0+.

You are correct.  It is working now.  I believe I was still running 0.3.2 at the time I asked


Uncaught Error: CSVDataError: Illegal Data

I can't seem to import this simple csv file using $.csv.toArray()  I'm pretty sure it's stalling at the newline.
error:
jquery.csv.min.js:1 Uncaught Error: CSVDataError: Illegal Data [Row:1][Col:2]
    at http://localhost/sched-site/lib/jquery.csv.min.js:1:4031
    at RegExp.[Symbol.replace] (<anonymous>)
    at String.replace (native)
    at Object.parseEntry (http://localhost/sched-site/lib/jquery.csv.min.js:1:3513)
    at Object.toArray (http://localhost/sched-site/lib/jquery.csv.min.js:1:4785)
    at Object.success (http://localhost/sched-site/:29:44)
    at fire (http://localhost/sched-site/lib/jquery-1.8.2.js:974:30)
    at Object.fireWith [as resolveWith] (http://localhost/sched-site/lib/jquery-1.8.2.js:1082:7)
    at done (http://localhost/sched-site/lib/jquery-1.8.2.js:7788:14)
    at XMLHttpRequest.callback (http://localhost/sched-site/lib/jquery-1.8.2.js:8500:8)

code:
<script src="lib/jquery-1.8.2.js"</script>
<script src="lib/jquery-ui-1.9.0.js"></script>
<script src="lib/jquery.csv.min.js"></script>
...
inputTasks = $.csv.toArray(inputTasksCSV);

csv file:
$ cat -A test.csv
test1,test2$
1,2$

system:
Chromium 57.0.2987.98 Built on Ubuntu , running on neon 16.04

Never mind!  Accidentally used toArray() instead of toArrays()

Glad I could be of assistance 😎 👍


Added reloader_modules option

Fixes #662
Added a reloader_modules option to serving.run_simple, _reloader.run_with_reloader and ReloaderLoop. Defaults to auto which is the current behavior of watching everything in sys.path and sys.modules. Let me know if/where I should create a test for this.

I didn't review the code in detail, but here are two remarks:

Please try to follow PEP8, there's a linting tool for it in PyPI. Your equality checks are what I found to be nonconformant.
I think we could get away with regarding false-ish values as "use the default", and use None as a default value.

@untitaker You're right, Updated.

@untitaker sorry about that, fixed

Alright, so this looks good, but the param name reloader_modules is IMO misleading. I'd assume that to be a list of module names, not paths.
Possible alternatives:

watch_paths
reloader_paths

@untitaker Prefixing with reloader_ is probably conventional so I've changed it to reloader_paths..

Looks good, thanks!

I think this PR deserves its own werkzeug release.


fix(progress): Fallback to source progress on gzip streams

If the number of bytes written exceeds the image size reported in
metadata, we fall back to reporting the progress based on the bytes read
from the compressed file.
This fixes the progress being > 100% for gzipped images over 4GiB.
Connects-to: #25
Change-type: patch
Signed-off-by: Alexis Svinartchouk<EMAIL_ADDRESS>

Ref https://github.com/resin-io-modules/etcher-sdk/issues/20

@resin-ci retest


Prepare a generator skeleton for Kubernetes Operators support

Signed-off-by: Jakub Dzikowski<EMAIL_ADDRESS>

Hello,
It's great news that kubernetes support will come to fablo. Do you have any estimate for when Kubernetes support will be released ?  We would like to help as much as we can.
Thank you.

Hi @mrkaurelius great to hear that. We need probably 2-3 weeks to have an initial, the simplest version of kubernetes support based on hlf-operator. If you are interested in collaboration, you are welcome to do some code reviews of forthcoming PRs, and after those 2-3 weeks we can reach you out and discuss work some real issues

Thank you for answering I will be waiting for next PRs then.


Time series column tooltip should not be the same as label column  tooltip

Model Builder Version: In which Model Builder version was the bug encountered?
Visual Studion Version: In which Visual Studio version was the bug encountered?
Bug description

Expected Experience
A description of what you expected to happen. If applicable, add screenshots or "Machine Learning" Output Logs to help explain what you expected.
Actual Experience
A description of what actually happens. If applicable, add screenshots or "Machine Learning" Output Logs to help explain what actually happened.
Additional Context
Add any other context about the problem here, such as unusual system configurations, network restrictions, etc.

@romalpani  @JakeRadMSFT
Any idea what time column tooltip should look like?
Maybe something like
This is the target column that you want to specify the datetime column in the input data for building the time series.

not repro this issue on latest main:  <IP_ADDRESS>7601

@LittleLittleCloud
Let's rename the label to "Time column". Calling it that is self-explanatory as to what that selection would mean. In which case we can get rid of the info-tip.


Vertical title bar is not visible on iOS

Hello,
I am trying to use this theme on iOS, but the vertical title is not visible (screenshot below). I installed the theme using the Obsidian settings UI. I see the same behavior on both my phone and my iPad.
Devices: iPhone 13 mini (iOS 15.1.1) and iPad Pro (iOS 15.1)
Obsidian version: 1.0.5

Vertical titlebar has since been completely removed and would need to be reimplemented after the upcoming 0.16 UI update. Original titlebar should now work as expected on iOS.


"Dârza", "Mânăstirea", "Samurcași" are listed in the drop-down menu

Description:
When user writes ”Dârza”, "Mânăstirea" and "Samurcași" the locations appear in the drop-down menu next to the comune and the county which is a part according to the law.
Precondition:
The website is up an running.

Step 1
Write in the search bar "Dârza"

Expected results
The location appears in the drop-down menu as "Sat Dârza, DÂMBOVIȚA (Crevedia)".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Write in the search bar "Mânăstirea"

Expected results
The location appears in the drop-down menu as "Sat Mânăstirea, DÂMBOVIȚA (Crevedia)".

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 5
Write in the search bar "Samurcași"

Expected results
The location appears in the drop-down menu as "Sat Samurcași, DÂMBOVIȚA (Crevedia)".


Add and update create/get methods

Signed-off-by: Matthew Frahry<EMAIL_ADDRESS>

Ready to merge!

@wenlock, this is ready to merge.

Lgtm, so I'm guessing you verified there is no task on create profiles


[ST] Huge relayer fee overestimation

Describe the bug
Transaction from BNB to Arbitrum took 0.77 ETH as relayer fee.
https://connextscan.io/tx/0x2f11791f8f28c026ef49ec502e1dbc95259c2e3c171ce05f5cb7ec6742ea5b71
Link to ticket in discord
https://discord.com/channels/454734546869551114/1215125846759841902/1215126352391315527

User refunded and ticket closed.


Support Linux & macOS and start the frontend with server.py

Thank you very much for your work! I have always wanted to use a more powerful model to replace the built-in AI search in Synology Photos to help me index the pictures on my NAS. This project is very close to my needs.
To get this project running on my NAS, I modified the indexing part of the code to use a less efficient but more general scanning method and stored the file list in an SQLite DB.
Additionally, I added an interface for the frontend index.html in server.py. Now you can access the search web page via /index after starting server.py.
Since I won't be running this project on Windows, I completely removed support for Everything. If you think my modifications can be merged into the mainline, I can restore the indexing logic for the Windows platform and submit a PR so as not to degrade performance on Windows.
If I have the energy later, I might create a Dockerfile (although I am not very proficient at it) and support monitoring file system changes to scan new files in real-time and improve indexing performance. If you already have related plans, please let me know.
I don't have much development experience in this area, so if any of my implementations seem ridiculous, please point them out.
Thank you :)
My development branch:
https://github.com/0ssamaak0/CLIPPyX/compare/main...t0saki:CLIPPyX:support-linux?expand=1

Excellent work! and too many ideas 😁😁 I'm really happy you're interested
1. CLIPPyX comand is entry point for main.py
# main.py
import subprocess
import yaml

# Load the configuration file
with open('config.yaml', 'r') as f:
    config = yaml.safe_load(f)

subprocess.run(["python", "Index/everything_images.py"])
if config["server_os"] == "wsl":
    print("Running in WSL")
    subprocess.check_call(["wsl", "-e", "bash", "server_wsl.sh"])
elif config["server_os"] == "windows":
    print("Running in Windows")
    subprocess.run(["python", "server.py"])

Instead of removing Everything indexing, we can add your updates as option for Unix bases systems. and from config.yaml you setup yoru server (I may create a GUI for it too)
2. Why using sqlite to store file names?
I occam's razor-ed it an I thought a simple text file updated each time is good option ** maybe because Everything indexing takes almost 0 time** but if there's a reason please tell me
3. You're creating an index for single directory only
From What I've seen you're creating an index for single directory only (not all images on your OS) which is good functionality if you're interested in single dir (ofc I'm planning to add this option later) but what I mean, you didn't find an alternative for everything to index all images on your disk
4. Adding the frontend to flask app is a good idea
can you make a separate PR for it? I Will merge it immediately.
5. Docker
I'm not expert too, but I'm planning to add this as soon as I add decent support for Unix machines
6. Monitoring
For the monitoring thing I leave everything to Everything (lol) it indexes my files in background and once I run everything_images.py I get the updated list. We need to search for similar alternative on Unix. and I'm sure we will find similar or at least closer option
Thank you for your amazing ideas

I have submitted a PR to provide a WebUI in Flask ().
Using SQLite to store the file list is aimed at maintaining high performance when regenerating the list, especially if the file index is very large. Writing out a huge txt file each time could be very time-consuming (although this may not be observed currently). However, this might need to be implemented together with file change monitoring, so as you mentioned, the current implementation might not be necessary.
Using a single directory is intended to eventually distribute this project as a Docker image to run on servers and other devices — in such a case, a directory from the host machine could be bound to the container, and the service would scan this directory. However, this goes against the current purpose of using Everything to index Windows files, so this is limited to my own needs.
I really like the project you provided! I hope this project can become even more perfect.


Fixing issue #1395

https://github.com/dmlc/tvm/issues/1395
Fixing the typo "CUDA_CUDAT_LIBRARY" in cmake script to "CUDA_CUDART_LIBRARY".

@tqchen I don't have the write access to merge this PR.


No matching version found for<EMAIL_ADDRESS>

I'm trying to download ui-switchery using $ npm install ui-switchery  but I got the following error  ::
"npm ERR! code ETARGET
npm ERR! notarget No matching version found for<EMAIL_ADDRESS>npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of 'ui-switchery'
npm ERR! notarget ".
So , I tried to update the switchery version  but I couldn't find  the required version which ui-switchery need it ?
PS : I don't want to use the bower to install the packages.

As I'm seeing you've problems with switchery library itself. So go grab right version of switchery because seems 0.8.2 doesn't exist ( I'm seeing that 0.0.2 is the current version of it) then try to install ui-switchery (version 1.0.0-beta.1).

@bettimms , I did download the current version of switchery (0.0.2) . But the problem is when I try to download the ui-switchery (version 1.0.0-beta.1) which required the switchrey  version 0.8.2 as an dependency   !

It seems broken, I'll update it soon!

I updated the version and removed that dependency! Have a look now!

Thanks !  it works perfectly now  👍


Make User Profile Service MySiteHostLocation optional

It would be useful to be able to install User Profile Service Application without "my sites".
When creating a new User Profile Service Application in Central Administration, I can set "My Site Host URL" to empty value and click "Create".
I would like to do the same with AutoSPInstaller - set MySiteHostLocation value empty in AutoSPInstallerInput.xml
<UserProfileServiceApp Provision="true">
    ...
    <MySiteHostLocation></MySiteHostLocation>
    <MySiteManagedPath></MySiteManagedPath>
    ...
</UserProfileServiceApp>

Then New-SPProfileServiceApplication would be called without "-MySiteHostLocation" switch. I tested this change on SharePoint 2016.

I should point out that creating a UPA without specifying a My Site Host location will result in the following Health Analyzer issue (at least in 2019): "Verify each User Profile Service Application has a My Site Host configured".

Thank you for pointing it out. Interestingly enough SharePoint 2016 Health Analyzer does not show this warning.


Identify the data fields contained in a transaction information API call

Leave the data fields as a comment to this issue.

Refer to the Ocean-Subgraph schema file: https://github.com/oceanprotocol/ocean-subgraph/blob/main/schema.graphql
The data fields for every GraphQL API query can be found here.


install with yarn?

we use yarn on linux (ubuntu) --
passing the --hdf5_home_linux= command doesn't work there...
yarn add hdf5 --hdf5_home_linux=<your native hdf path>

any ideas? node-gyp can't find lhdf5 / lhdf5_hl
  CXX(target) Release/obj.target/hdf5/src/reference.o
  SOLINK_MODULE(target) Release/obj.target/h5ds.node
/usr/bin/ld: cannot find -lhdf5
/usr/bin/ld: cannot find -lhdf5_hl
collect2: error: ld returned 1 exit status
h5ds.target.mk:137: recipe for target 'Release/obj.target/h5ds.node' failed
make: *** [Release/obj.target/h5ds.node] Error 1
make: *** Waiting for unfinished jobs....

I also tried export hdf5_home_linux=/usr/lib/x86_64-linux-gnu/hdf5/serial - it doesn't seem to pick it up?

I barked too soon...
yarn config set hdf5_home_linux /usr/lib/x86_64-linux-gnu/hdf5/serial
worked for me...


Increase "space" / size for editing/viewing expressions (single line text fields)

Is your feature request related to a problem? Please describe.
Across the modeler there are many single line text fields that are limited in visual length do to the Properties panel max width.  A great number of these single line text fields are used for writing expressions such as `${some variable.prop(someProp).prop(somedeepProp).prop(somedeeperProp).value()}  Or they may write an expression that has AND/OR logic, etc.
The text fields are too small (visible character length) to view what you are writing.  In actual usage of the modeler in real world scenarios you end up having to copy the expression into another editor like VS Code, make the change and copy it back in.
The same arguments can be made for when we write even the most basic scripts.  After 3 lines, the code is unmanageable.
Describe the solution you'd like
For these expression type fields (or maybe all fields?) we need some way to view what we are writing.
Examples (not suggesting a specific example, just giving general ideas):

Provide a modal popup that allows more screen editing space for the fields
remove the max width of the properties panel
Provide a way to edit the fields in a more appropriate container/field size for the type of data that is being entered.

Thanks for reporting!
cc @andreasgeier, maybe a good thing to consider in our current work.

Thanks, @pinussilvestrus for the hint. I've added it to the property panel design tasks.


new home theme

hey just changed the theme i think its looking better now also added a footer,here the github page https://leesha19.github.io/Student-portal/index.html
Fixes #117

@leesha19 Everything is fine but can you make the "About" section a little more attractive?

@leesha19 Everything is fine but can you make the "About" section a little more attractive?

okay i will try it but is there any conflicts?

@leesha19 No dear, there are no conflicts.

@leesha19 No dear, there are no conflicts.

please check it now


upgrade rand from 0.4 to 0.6

fyi @yjh0502 I made some changes to the rand usage based on the changes during upgrade of the rand crate. let me know if you see any issues with these.


update-vendor-bin and removing deprecated Code Climate Test Reporter

Why was this closed? It seems useful :thinking:


<IP_ADDRESS>/0?

Hi,
If you need to route incoming VPN traffic to a NVA firewall what do you put in your UDR? I assumed it was <IP_ADDRESS>/0, but that is not allowed :-)
Regards Peter

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

ID: e0377d24-bad6-0d7e-e5b1-0343d225d835
Version Independent ID: 163949a6-584f-9c7c-815f-ad69f09f83dd
Content: VPN gateway settings for cross-premises Azure connections
Content Source: articles/vpn-gateway/vpn-gateway-about-vpn-gateway-settings.md
Service: vpn-gateway
GitHub Login: @cherylmc
Microsoft Alias: cherylmc

@theheatDK , You need to add your VNET subnet prefixes pointing to NVA.
For example, if the destination is <IP_ADDRESS>/24 (One of your subnet) next hop is NVA's Private IP. Now you can assign this to your VPN gateway subnet.

Thanks @msrini-MSFT
We have a situation where the VPN uses non Azure public IPs. So we have a range 195.x.x.x/28 that has been added to the address space of our vnet. This is the destination for the traffic coming from on-premise and all traffic should be routed to our NVA’s private IP. Can we do the same here and create a UDR with 195.x.x.x/28 and next hop NVA?

Yes absolutely. You need to create a UDR with 195.x.x.x/28 and next hop as NVA.

Thanks for your time @msrini-MSFT. It is very appreciated!
Have a good day :-)


add test case for count

Row #
Benchmark
Result, s
Min, s
Arithmetic Mean, s
Max, s
Standard Deviation, s

1
algorithms.Count.time_count(500000513, interpreted_python)
1.52510
1.50280
1.52612
1.55909
0.02077

2
algorithms.Count.time_count(500000513, compiled_python)
0.40103
0.39553
0.40213
0.41214
0.00487

Could you please resolve conflicts?

Could you please resolve conflicts?


Multi-organization support

Queue Multi-Organization Support

This document is a WIP and might contain errors, omissions, or incomplete thoughts. Help me polish it!

This document will outline my thoughts on how to modify the Queue to support multiple organizations. In #99, I first talked about the need for this in the context of UBC. In #186, I talked about expanding our authentication/login system to support more than just Shibboleth. The work that will be outlined here will supercede both of those issues.
The goal for this work is for queue.illinois.edu to be able to serve and support more than just individuals at Illinois. #99 was approaching this from the perspective of how to make the Queue more easily deployable for other institutions, but I think a better long-term strategy is to consider the Queue as software-as-a-service. The Queue will still be hosted by us, but it'll be able to simultaneously serve many other schools/organizations/etc.
Organizations
An organization can be thought of as analogous to a GitHub organization, whereas courses/queues are akin to a GitHub repository. An organization is a grouping of courses and queues with a common purpose. For instance, there could be an "Illinois" organization and a "UBC" organization. There could also be more purpose-built organizations, like one dedicated for Sail in which queues are a form of asking questions to presenters.
Organizations can have a domain associated with them to allow restricting them to members of the organization. For instance, Illinois would have the "illinois.edu" domain associated with it. Owners of queues could then mark queues as "organization-only", thereby restricting the queues to only being viewed/interacted with by users with<EMAIL_ADDRESS>email addresses.
We'll need to add another level of "admin" to our permissions levels. So, there will be global admins and organization admins. Global admins are still all-powerful. Organization admins can create and delete courses within their organization and add and remove other organization admins, but they cannot modify other organizations or view global admin pages.
Users
Currently, there's a one-to-one mapping between Illinois Shibboleth identities and users. This is too restrictive; for multi-organization support to work well, we need to support multiple login methods too. To start with, we'll support the following:

Local email/password combos
Illinois Shibboleth
Google

In the future, we could support more providers, including SSO for other educational organizations. This is roughly what Gradescope does: defaults to login with email/password, but allows you to link SSO from select organizations or a Google login to your account.
To support this, we'll separate the concept of a user from the account that they use to log in. A single user could be simultaneously associated with multiple accounts. A user can link and unlink themselves from accounts at will. An account may or may not be a login provider - for instance, I could link my personal<EMAIL_ADDRESS>account with my school<EMAIL_ADDRESS>email to gain access to organization-only queues.
To check if a user belongs to an organization, we'd query all of their accounts and check if any of them match the domain of the relevant organization.
Necessary Changes
This would be a relatively large departure from the way things are currently organized, and we'll need a variety of changes to account for it.
Database changes
We'll need to add a new organizations table to store information about organizations. At a minimum, we'll need:
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(255),
domain VARCHAR(255) # e.g. "illinois.edu"

We could also have shortcodes for organizations like we do for courses. Good/bad idea? Let me know in the comments.
We'll need to adjust the courses schema to have an organizationId foreign key so that we know which organization each course belongs to.
We'll need to adjust the queues table to include a flag to indicate if a queue is organization-only.
We'll need to add an accounts table to store information about user accounts. I'm envisioning something like this:
id INTEGER PRIMARY KEY AUTOINCREMENT,
type VARCHAR(255), # One of 'google', 'local', 'email', 'illinois', etc
uid VARCHAR(255), # A unique identifier for the given type (an email address, account id, etc.)
password_hash VARCHAR(255), # Will be null for anything but local accounts
CONSTRAINT accounts UNIQUE (type, uid)

API changes
We'll need new CRUD endpoints for organizations at /api/organizations/. We'll also want to add endpoints under that, such as /api/organizations/:organizationId/courses and /api/organizations/:organizationId/queues for listing courses and queues under a certain organization, respectively.
We'll need to change the create endpoint for queues to support an organization-only flag.
Frontend changes

We'll need a new landing page for users that will allow them to choose their "home" organization.
We'll need to extend the login page to include all supported account types.
We'll need to enable the creation and management of email/password-based accounts.
We'll need to add an organization-only toggle to the queue creation+settings pages.

Remaining questions
There are a few things that I'm still not totally sure how to handle or otherwise don't have a definitive answer to:

[ ] Say I sign in with my<EMAIL_ADDRESS>and then independently sign in with my<EMAIL_ADDRESS>address. In this case, two new accounts would be created. Should I be able to merge those two independent accounts? I'm leaning towards no; our recommended solution here would just be to delete one of them.
[ ] For organization-only queues, should they be invisible to users not in the organization? Or should they still be visible, but just unable to be interacted with?
[ ] Should one be able to deem an entire organization as "organization-only", as in all queues are unable to be viewed by anyone not in the organization?
[ ] Should organizations have shortcodes? I'm leaning towards yes, as that would allow course shortlinks to work sensibly. Two organizations might both have courses with the cs225 shortcode, so if organizations have shortcodes too, I could have course shortlinks such as /q/illinois/cs225 and /q/ubc/cs225.

I think this looks pretty good ~ here’s what I was thinking for some of the Qs at the end:

I think that org-only queues could have an option of being “private” vs “public”, and we can just leave it up to the policy of the org. (So thus, queues in organizations can be completely private to members, or can be viewed by anyone).
Shortcodes would be useful! Like in SAIL/RP, where you have a QA session, it would be useful for users to just open the shortcode-link, rather than have to navigate from the home page -> org -> queue.


add value for log-level in Helm chart kube-secrets-init

issue #151

@sagikazarmark  could you please help understand,
i see next error in logs for 1.21 and the same for 1.22
Error: warning: Hook test kube-secrets-init/templates/tests/test-mutating-webhook.yaml failed: Internal error occurred: failed calling webhook "pods.kube-secrets-init.admission.doit-intl.com": Post "[https://kube-secrets-init-hsbq9cnrui.kube-secrets-init-hsbq9cnrui.svc:443/pods?timeout=10s](https://kube-secrets-init-hsbq9cnrui.kube-secrets-init-hsbq9cnrui.svc/pods?timeout=10s)": dial tcp <IP_ADDRESS>:443: connect: connection refused

i run locally with next command for image of kind
kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6
kind create cluster --image kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6
ct install  --excluded-charts="browserless-chrome,caddy,dex-k8s-authenticator,rabbitmq-operator,sftpgo,tusd" --chart-dirs="./kube-secrets-init/" --charts="kube-secrets-init"

all the tests are passed fine without any issues.
as for the  next fo kind image
kindest/node:v1.22.0@sha256:b8bda84bb3a190e6e028b1760d277454a72267a5454b57db34437c34a588d047
kind create cluster --image kindest/node:v1.22.0@sha256:b8bda84bb3a190e6e028b1760d277454a72267a5454b57db34437c34a588d047
ct install  --excluded-charts="browserless-chrome,caddy,dex-k8s-authenticator,rabbitmq-operator,sftpgo,tusd" --chart-dirs="./kube-secrets-init/" --charts="kube-secrets-init"

i got the same error as in the ci test
Error: warning: Hook test kube-secrets-init/templates/tests/test-mutating-webhook.yaml failed: Internal error occurred: failed calling webhook "pods.kube-secrets-init.admission.doit-intl.com": failed to call webhook: Post "https://kube-secrets-init-nrr9oy7b88.kube-secrets-init-nrr9oy7b88.svc:443/pods?timeout=10s": context deadline exceeded

but once i try with the latest image of kind
kindest/node:v1.22.9@sha256:8135260b959dfe320206eb36b3aeda9cffcb262f4b44cda6b33f7bb73f453105
everything passed fine couple time
maybe we need to use the latest images of kind,
https://github.com/kubernetes-sigs/kind/releases


Allow precompiling of SVGs only once

Hello,
I am very new to Elixir world, so please take this PR as being submmited by a newbie.
I just imported a theme from ThemeForest into my app, wherein I added this library. However, the theme generated somewhere around ~1200+ svgs, which I wanted to keep for future reference.
However, this led to huge compilation times - primarily, since using use PhoenixInlineSvg inside the views function was triggering precompiling of SVGs for each view (as far as I understand this).
Therefore, I extracted the function into a separate call away from __using__ macro, which can be used in its own to only precompile SVGs once. Effectively, I am now able to compile my app, correctly.
I am really not sure if this is the correct way to run something once in Phoenix. If not, please advise.
Regards,

Coverage increased (+0.3%) to 88.095% when pulling 91c798cc17d16de719d3a7eb711050911e3c2306 on nikhgupta:precompile-once into b920af17ab568a88b5493cd8d8651ba00e87dc3c on nikkomiu:master.

Hi, welcome to the community!
To do only one precompilation of SVGs you don't need to move it to runtime (which is what you are effectively doing in this PR, when the precompilation is done at startup of your application). Just create a separate module where you use PhoenixInlineSvg and import that module in each view, like this:
defmodule DemoWeb.SvgImagesHelper do
  use PhoenixInlineSvg, otp_app: :demo_web
end

And inside your views import it instead:

      def view do
        quote do
          import DemoWeb.SvgImagesHelper
        end
      end


Unsupported keys per provider

Separate unsupported keys based on provider.

#206 is blocked on this.

Can we have unit tests for this, please ?

@sebgoa for sure. It is not going to be merged without it.

Changes Unknown when pulling 5e8034630fc1bc0d86f5e99cb8bad99cc1f06096 on rtnpro:unsupported-keys-per-provider into ** on kubernetes-incubator:master**.

Changes Unknown when pulling 18dc3a80378fac16584a6b2824e3419b656b7bce on rtnpro:unsupported-keys-per-provider into ** on kubernetes-incubator:master**.

Changes Unknown when pulling 82c0c333e461687522bc4bc7845871ad0746fff0 on rtnpro:unsupported-keys-per-provider into ** on kubernetes-incubator:master**.

Changes Unknown when pulling 784aad07a791e7428b62e0928ba6b04499bd1460 on rtnpro:unsupported-keys-per-provider into ** on kubernetes-incubator:master**.

Changes Unknown when pulling 4de53fbe8bcbaffb950e73276ec87928809036f5 on rtnpro:unsupported-keys-per-provider into ** on kubernetes-incubator:master**.

Changes Unknown when pulling 947612ee32e048c49261b8adc89a21032d56e43a on rtnpro:unsupported-keys-per-provider into ** on kubernetes-incubator:master**.

Changes Unknown when pulling fcb8352a4e99b6b6c618e6927ba3e2963fe52bc8 on rtnpro:unsupported-keys-per-provider into ** on kubernetes-incubator:master**.

Changes Unknown when pulling e1d88f737e0698bb4f649092f69974e8b4fdeac0 on rtnpro:unsupported-keys-per-provider into ** on kubernetes-incubator:master**.

Coverage increased (+3.2%) to 38.242% when pulling 1e5d5e3465812a370b5085590bb44d708551dc63 on rtnpro:unsupported-keys-per-provider into 04a3131834cddfb1af42b63b21641fbbf84a4a9d on kubernetes-incubator:master.

Coverage increased (+3.2%) to 38.242% when pulling 1e5d5e3465812a370b5085590bb44d708551dc63 on rtnpro:unsupported-keys-per-provider into 04a3131834cddfb1af42b63b21641fbbf84a4a9d on kubernetes-incubator:master.

@ngtuna your say here will be appreciated!

Coverage increased (+2.5%) to 38.005% when pulling 2e40f45b192ff169e3ba94cda40548ccf1fc87e4 on rtnpro:unsupported-keys-per-provider into 78845d3954aa93f9a5dc36f76f12bb08d7bdba4f on kubernetes-incubator:master.

Coverage increased (+0.7%) to 39.184% when pulling e3ef7480f59d3b058ceb6127d0aa18da2a7158a2 on rtnpro:unsupported-keys-per-provider into c485a870d8856c20133ae0f4a9fca7440a90a00f on kubernetes-incubator:master.

Coverage increased (+2.006%) to 40.492% when pulling 3419ae7fe17e7ff2d8e4fb79d0a9d9b560c7bb35 on rtnpro:unsupported-keys-per-provider into c485a870d8856c20133ae0f4a9fca7440a90a00f on kubernetes-incubator:master.

@surajssd rebased and ready for merging.

@rtnpro @kadel  Thanks :+1:


Generating tags

While we have initial support for tags, the user experience is not really nice. Next step is to enhance the selection of tags, and also maybe to introduce a tags-only mode, if you're already happy with your titles.

Hey, when do you think you'll implement the tags? I saw in my version that the fields are already set up in the web interface, but no tags are being generated yet. I'm currently setting up Paperless and exploring the possibilities of using AI for tags and headings. I would prefer not to switch plugins again.

Hey @mikekaldig, in theory it should work right now with tags being suggested as a comma-separated text field. For the prompt paperless GPT queries paperless-ngx first to see which tags are available at all.
Have you defined tags? If yes, which LLM are you using?
If I wouldn’t limit the LLMs to choose from an existing tag set, they would constantly add new ones.

This feature is pushed to icereed/paperless-gpt:latest

Ty :)


In the User Interface, text missing between   tags and after  tag in Finnish and Swedish

Describe the bug
There is text missing in Finnish an Swedish when < strong > and < br/ > tags are present in the translation key.  The key is
"cookies.consent.content-notice.description”: “Keräämme ja käsittelemme tietojasi seuraaviin tarkoituksiin: todentaminen, asetukset, kuittaus ja tilastot.  Lisätietoa saat lukemalla tämän: {privacyPolicy}.“
The text within the < strong > tag is not shown in the UI. Nor is the text after < br/ > tag.
This applies to Finnish and Swedish. English is ok. I took a look at demo at https://demo7.dspace.org/home, and it seems that other languages do not have this problem, although many had English version, the text was not translated.
I noticed this at our private test server, where version is 7.4.  I do not know, if the problem persist on other translation keys, or other HTML tags.
To Reproduce
Steps to reproduce the behavior:

Open the home page of DSpace installation.
Change the language to Finnish / Swedish
See how many lines there are in the text in the pop up window on the lower corner on the right.
(This I did not do): If possible, locate other translation keys with different HTML tags in the UI and compare their length with the English versions.

In English:

In Finnish and Swedish:

Expected behavior
The text shown as described in the language files fi.json5, sv.json5.
Related work
After creating this report I took a loot at you demo https://demo7.dspace.org/home. Finnish and English are ok there, all the text is shown.

This is fixed by pulling the latest code and configuration concerning Klaro consent manager.

Closing as this appears to be solved in 7.5


Keyboard covers the send button on message screen in iOS

The default keyboard doesn't have a hide keyboard button and it covers the send message button.
I'm suggesting 👍

move send message button to the top
configure the correct keyboard on textInput
using something like this to allow the keyboard to be dismissed.

<TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>
    <View style={styles.container}>
        <TextInput keyboardType='numeric'/>
    </View>
</TouchableWithoutFeedback>```

Here's a stack overflow article with an example using a Higher Order Component:
https://stackoverflow.com/questions/29685421/react-native-hide-keyboard

Would the KeyboardAvoidingView be appropriate in this case?  I'm not entirely certain which screen you're seeing this problem on..

@doub1ejack Yes this a good solution.  However I still think we should  move all action buttons to the top because they are there in other screens and we want to be consistent with your layouts

Hm, I'm not sure if KeyboardAvoidingView is going to do the trick.  I tried several variations and using the "position" behavior was the only one of 3 values that showed any behavior change on iOS:
  style={styles.container}
  behavior="position"
>

This may not be the component we are looking for:

Note: Android and iOS both interact with this prop differently. Android may behave better when given no behavior prop at all, whereas iOS is the opposite.


Trust Proxy settings not being respected

I have set up an Express app with Morgan for logging behind an NGINX proxy. I have configured the trust proxy setting in my root file like so:
app.set('trust proxy', true);

let controllers = require('./controllers');
app.use('/', controllers);

if (process.env.NODE_ENV !== 'test') {
    app.use(morgan('combined', {
      'stream': logger.stream
    }));
}

But when I actually run the app and start making requests, I see the following error trace:
   "stack":[
      "TypeError: trust argument is required",
      "    at proxyaddr (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/proxy-addr/index.js:259:11)",
      "    at IncomingMessage.ip (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/express/lib/request.js:328:10)",
      "    at Function.getip [as remote-addr] (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/morgan/index.js:458:13)",
      "    at eval (eval at compile (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/morgan/index.js:1:0), <anonymous>:4:29)",
      "    at Array.logRequest (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/morgan/index.js:122:18)",
      "    at listener (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/on-finished/index.js:169:15)",
      "    at onFinish (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/on-finished/index.js:100:5)",
      "    at callback (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/ee-first/index.js:55:10)",
      "    at ServerResponse.onevent (/home/cadror_deploy/app/gatekeeper/staging/releases/20161101222206/node_modules/ee-first/index.js:93:5)",
      "    at emitNone (events.js:85:20)",
      "    at ServerResponse.emit (events.js:179:7)",
      "    at finish (_http_outgoing.js:551:10)",
      "    at _combinedTickCallback (node.js:376:9)",
      "    at process._tickDomainCallback (node.js:431:11)"
   ],
   "level":"error",
   "message":"uncaughtException: trust argument is required",
   "timestamp":"2016-11-02T18:20:20.026Z"

It appears that Morgan attempts to get the ip address of the incoming request using the getter defined by Express, but fails because the trust argument is set to false. Any thoughts?
I have also tried wrapping the second argument in `app.set('trust proxy' in a function but that doesn't make a difference. Thanks!

Hi @sanchitgera your stack trace shows node_modules/express/lib/request.js:328:10, but in the current version (4.14.0), line 328 is empty. What version of Express are you using?

I'm on a slightly older version. 4.13.4 @dougwilson

Thanks, @sanchitgera I tried with 4.13.4 using your information above, but had no issue logging with Morgan through NGINX. I had to guess a lot about what is happening. Is there any additional information you can provide to help me reproduce the issue?

I'm afraid I can't share too much from the codebase. :( But the error isn't very consistent. I don't get the error on every request. But from what I can tell, there is nothing inherently different about the requests that do lead to the error.
I have a custom authentication scheme in place relying on specific Authorization headers. So if I were to make a request like so:
GET /app/route1 without passing in any headers, the request is processed normally with a 400 response and no logging errors.
But if I were to provide the correct headers, I see the error mentioned above.

Ah, I see @sanchitgera . I'm afraid I'm not sure how I should proceed here, unless you have any suggestions?

That's alright! Thanks for all your help! I really appreciate it. I wrote a custom logger to replace morgan and that seems to be working fine. I think it's just that call to req.ip that messes things up somehow but I can't pinpoint what exactly causes it. If I can better repro steps I'll let you know! :-)

Yea, I would love to figure it out, if you can even post a simplified app that I can use to reproduce the issue. As for morgan, you can always overwrite the :remote-addr token to do whatever you want to get the IP.


Add release comandlet

even though it is more a domain of PL and Jenkins to do realeases it would however be nice to script a generic standard release machanism:

check that there are no local changes (otherwise stash, or fail)
bump version
commit
create tag
build and deploy release
open next snapshot version

Should support CI friendly maven as well as manual versioning in POMs. Should define default profile release/deploy (currently we standardized deploy in defonfw itself) for release build.

I have implemented this. However it is currently only supporting git and the required features are so far only implemented for maven.
I tested it with various scenarios:

CI friendly maven projects
project with version as a variable in POM and flatten maven plugin
project with redundant version in all POMs

It is quite complex and can not cover all scenarios. Also it will fail if:

you have a multi-module project with different versions (ignoring dev and dev-SNAPSHOT).
you are not using CI friendly maven but your reactor can not be build (you need to do mvn install before).
you are doing some odd magic trick for your versioning
you are using CI friendly maven without a .mvn/maven.config (this should be fixed)

We should also extend npm and gradle commandlets to allow support as well.

Now working. Still lots of room for improvement. Feel free to provde PRs or open detailed new issues.


Training is breaking in python 3.11.3

Describe the bug
I am getting the following error when trying to run the training script in Jupyter notebook python 3.11.3
File "mtrand.pyx", line 920, in numpy. random. mtrand. RandomState. choice ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (6,) + inhomogeneous part.

To Reproduce
Steps to reproduce the behavior (full command you are using).
Ran the following code :
python train.py --config=yolact_edge_config
Expected behavior
This issue does not happen in python 3.10
Full logs
If applicable, add full logs to help explain your problem.
Environment:

OS: [e.g. Ubuntu 18.04]
GPU: [e.g. RTX 2080 Ti *4]
CUDA Version [e.g. 10.2]

Additional context
Add any other context about the problem here.

解决了吗


Fatal error: Cannot read property 'contents' of undefined

By placing src: ['*/'] for dyamic imagemin
it throws Fatal error: Cannot read property 'contents' of undefined.
I am trying to min all the images in a folder which has additional folders containing imgs inside of it.
This issue only happens if a folder exists inside of a folder.

thank you all, i encounter the same problem and solved by reinstall grunt-contrib-imagemin

I am getting this problem now with the latest version, version 3.2.2.
I have tried to remove all npm packages and reinstall without luck.

@corgrath try to update to new version 1.0.0: "grunt-contrib-imagemin": "^1.0.0"
now it works for me

npm cache clean && npm install grunt-contrib-imagemi
it's works for me
thanks @kevva.

I agree with @michal-husak.  Referencing the last version, even with a ~ failed.  However, when I updated my package.json to 1.0.0, it works.

Awesome. I was previously on grunt-contrib-imagemin version 0.9.4, but had the latest imagemin 3.2.2.
Everything works, thanks guys!

FYI - We started having the exact same problem a couple days ago too. I'm not sure why our previous builds that were using imagemin 0.9.4 suddenly started breaking but my best guess is that's it related to this: https://github.com/gruntjs/grunt-contrib-imagemin/commit/33525988bad99b498208360d51f34da512b23507 where grunt-contrib-imagemin was updated from 0.9.4 to 1.0.0
For us changing our package.json file to 1.0.0 also solved the issue just like it did for others.

+1 for 1.0.0

:+1: for 1.0.0 heres too.

Solved using 1.0.0 too :)

1.0.0 is the winner

+1 for 1.0.0.
Still, I was using 0.9.3, is the fix merged to it too?

npm cache clean && npm install grunt-contrib-imagemi
it's works for me too. Thanks for all.

+1 for 1.0.0.
had to npm install grunt-contrib-imagemin --save-dev again though

+1 for 1.0.0.

+1 for 1.0.0.

Thanks for the answers guys! It worked by upgrading the imagemin

+1 for 1.0.0

However, the packaging of grunt-contrib-imagemin is broken, the latest and greatest of this should have   cap of the version supported.

+1 for 1.0.0

+1 for 1.0.0

+1 for 1.0.0

+1 for
npm cache clean && npm install grunt-contrib-imagemin
thanks @kevva.

+1 for 1.0.0

+1 for 1.0.0

+1 for 1.0.0..thanks much..saved my time

+1 for 1.0.0.

1.0.0 fixes the issue!

Thanks @kevva

Upgrading grunt-contrib-imagemin to 1.0.0 solved this for us 3 months ago but today we suddenly got the same error message again! My guess is that something in dependency versions has changed but  we failed to find what that is. Any help or advice will be much appreciated.

Confirmed. It seems the problem is caused by this commit in the vinyl-fs dependency https://github.com/gulpjs/vinyl-fs/commit/d21ee0908fe3541178d8f58957a31906def4907b

Yes, vinyl-fs broke since version 2.3.0 !

You could also temporarily add this to your package.json:
"scripts": {
    "postinstall": "cd node_modules/grunt-contrib-imagemin/node_modules/imagemin && rm -rf node_modules/vinyl-fs && npm i<EMAIL_ADDRESS>  }

I created a PR in vinyl-fs, that should fix this problem.
https://github.com/gulpjs/vinyl-fs/pull/142
Let's see how they think about it :smile:

@benurb can confirm that's working for me. Thanks

In task-runner on src u don't need the {} anymore.
Please replace the src like this :  src: '[*/*.{png,jpg,jpeg,gif,svg}]', and put the path and specific images.
For me that worked.

@benurb Thanks, this worked for me, after adapting it for Windows:
"scripts": {
    "postinstall": "cd node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules && del /F /Q vinyl-fs && cd.. && npm install<EMAIL_ADDRESS>}

+1

@benurb -

For npm 3 you can use a partial shrinkwrap.

Could you please explain how I can do 'a partial shrinkwrap' to solve this issue for npm 3?

+1

Upgrading to 1.0 and following @stedda's suggestion it is working for me.

As @RemeJuan - upgrading to 1.0.0 and following @stedda 's suggestion is what finally fixed it for me.

@stedda Thanks for solution!

@stedda Thanks!

@stedda  what exactly do I have to change?
from
src: '{,*/}*.{png,jpg,jpeg,gif}',

to
src: '*/*.{png,jpg,jpeg,gif}',

?

@stedda Thanks!!!
@lpsBetty you're almost there, you're missing [ ]
'[/.{png,jpg,jpeg,gif,svg}]'

Adding
'"scripts": {
"postinstall": "cd node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules && del /F /Q vinyl-fs && cd.. && npm install<EMAIL_ADDRESS>}'
on the package.json than 'npm install' fixed the problem for me. Thanks for the solution.

Adding the code to package.json
"scripts": {     "postinstall": "cd node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules && del /F /Q vinyl-fs && cd.. && npm install<EMAIL_ADDRESS>}
than npm install fixed the problem for me. Thanks for the solution.

confirmed that adding the postinstall script mentioned by @benurb and @TanKucukhas works (manually ran the command but should work fine as a postinstall script).

Thanks @benurb. It worked like a charm!

@stedda @samhax hmm I really have problems getting it working!
it works locally (but NOT on the CI server) with this:
    imagemin: {
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>/images',
          src: '**/*.{png,jpg,jpeg,gif}',
          dest: '<%= yeoman.dist %>/images'
        }]
      }
    },

and when I add [] inside the src  '[**/*.{png,jpg,jpeg,gif}]' it doesn't copy all images from the wd to destination directory.. but it would work on the CI

@ipsBetty have you checked if the files are not corupted by git or repo when you upload them ? You should also check you're .gitattributes file and check the binary files. You should also add in you're file the following code if it's missing:
*.png  binary *.jpg  binary *.jpeg binary *.gif  binary *.ico  binary
.Let me know if this might have been the problem.

@stedda it worked before all the time, so I don't think my files are corrupted.. I think it has something to do with the change of vinyl-fs

... ah sorry I found the problem.. svgmin also used {}
thanks again for the solution :)

So I still have this error and i definitely don't know what to do anymore. My imagemin is this:
      dist: {
        files: [{
          expand: true,
          cwd: '<%= yeoman.app %>/images',
          src: '[*/*.{png,jpg,jpeg,gif}]',
          dest: '<%= yeoman.dist %>/images'
        }]
      }
    }, ```

Also tried to add this npm script, but that doesn't work either, as I get the following error:
``` sh: line 0: cd: node_modules/grunt-contrib-imagemin/node_modules/imagemin: No such file or directory```. Anyone knows what to do?

+1 for 1.0.0 version

@stedda Thanks!

@samhax answer worked for me for both svgmin and imgmin Grunt Tasks.

+1 for 1.0.0

Thanks!

solution
"grunt-contrib-imagemin": "^1.0.0",


Support readline

From @GoogleCodeExporter on May 31, 2015 11:24
Currently it is very difficult to use command line arguments because you must
type out a very long string and then include the arguments after it. If you
could scroll through already typed commands it would help greatly as well.

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 24 Oct 2009 at 8:24
Copied from original issue: damonkohler/android-scripting#123

From @GoogleCodeExporter on May 31, 2015 11:24
I'm not sure exactly what you're looking for here. Scripts do not currently
support
command line arguments. As for command history in the interactive interpreters,
I
agree that would be nice. I think that's what you mean, so I'm changing this
into a
feature request for readline support.

Original comment by<EMAIL_ADDRESS>on 31 Oct 2009 at 8:20

Changed title: Support readline
Changed state: acc
Added labels: Type-Enhancement
Removed labels: Type-Defect

From @GoogleCodeExporter on May 31, 2015 11:24
Original comment by<EMAIL_ADDRESS>on 14 Nov 2009 at 3:47

Changed state: Accepted

From @GoogleCodeExporter on May 31, 2015 11:24
After two years, maybe command history by up/down key will be implement soon?

Original comment by<EMAIL_ADDRESS>on 4 Nov 2012 at 2:22

From @GoogleCodeExporter on May 31, 2015 11:24
Issue 294 has been merged into this issue.

Original comment by<EMAIL_ADDRESS>on 17 Apr 2010 at 9:04


Trouble running in linux

I'm having trouble getting this to run in Linux.
From https://nikola.site I clicked download, and then downloaded Nikola_0.2.6_amd64.deb into a working directory named /nobak/Installers/Tesla/Nikola
Then in terminal I run this to install it:  sudo dpkg -i /nobak/Installers/Tesla/Nokola
In the desktop menu I can see that the menu icon runs this:
Name:		Nikola
Command:	"/opt/Nikola/nikola/" %U
Comment: 	Open source and unoffocial cross-platform desktop app to control tesla vehicles

But when I click on the desktop icon nothing happens.
I also tried running directly with:   ./opt/Nikola/nikola  but get this error message:

[31434:0610/180655.721386:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /opt/Nikola/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap

I also noticed that the files in /opt/Nikola are all owned by root.
I'm not a huge Linux expert, so perhaps someone can tell me what I'm doing wrong, or what I might need to configure.
I'm running Debian Stretch 9.9 (x86-64); Cinnamon 3.2.7; Linux kernel 4.9.0-9-amd64
Thanks.

If it's any help, I have Chrome installed rather than Chromium.  I don't use it much, as I mostly use FireFox, but keep it around for the occasional web site that misbehaves under FireFox.
Also I found this mentioning that the SUID sandbox was almost but not completely removed.

Can you try installing with sudo?  : sudo dpkg -i /nobak/Installers/Tesla/Nokola

Can you try installing with sudo? : sudo dpkg -i /nobak/Installers/Tesla/Nokola

Thanks but sorry, I actually did use a sudo prefix, but unfortunately forgot here to mention it above.
I also tried both with and without sudo.
I also just installed chomium after I found that chrome and chromium are different programs and thus could both run at the same time.

I just released a new version (0.2.7), can you try? It worked fine for me (Ubuntu 18.04).

Just downloaded Nikola-0.2.7-x86_64.AppImage to Ubuntu 18.04.
In terminal:
a. chmod +x Nikola-0.2.7-x86_64.AppImage
b. ./Nikola-0.2.7-x86_64.AppImage
Login with Tesla credentials.
Seems to work for me.

Closing until we hear from @TopView.
Thanks!

Thanks, but installed 0.2.7, but unfortunately no change, i.e. it still won't start from menu.  Also tried these:
$cd /opt/Nikola
$nikola
$sudo nikola
[9093:0611/064740.988767:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /opt/Nikola/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap

Can you try the AppImage instead?
wget https://github.com/geraldoramos/nikola/releases/download/v0.2.7/Nikola-0.2.7-x86_64.AppImage
chmod +x Nikola-0.2.7-x86_64.AppImage
./Nikola-0.2.7-x86_64.AppImage

It worked here for me as well.

Also tried how volkerbradley had done this on Ubuntu, i.e. instead downloaded Nikola-0.2.7-x86_64.AppImage then:
$ chmod +x Nikola-0.2.7-x86_64.AppImage
$ ./Nikola-0.2.7-x86_64.AppImage
basename: extra operand ‘app/Nikola-0.2.7-x86_64.AppImage’
Try 'basename --help' for more information.
[9450:0611/070047.603018:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_Nikola6rpUIs/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap

wow, sent messages at the same time. You tried what I've suggested..

Will continue investigating.

:-) yes we were on the same page...  Now also tried w/ wget then chmod, etc, but still same error messages as before.

Ok, if I run ./Nikola-0.2.7-x86_64.AppImage --no-sandbox now it starts. I'll try to read more about this sandbox thing...

Here's more of a log and a screenshot:
$ ./Nikola-0.2.7-x86_64.AppImage --no-sandbox
07:11:51.007 › Nikola App starting...
  To be continued...

Had the same messages.  Then closed the app and restarted it from the
Ubuntu menu.
Worked thereafter.
On Tue, Jun 11, 2019 at 10:19 AM Howard<EMAIL_ADDRESS>wrote:

Here's more of a log and a screenshot:
$ ./Nikola-0.2.7-x86_64.AppImage --no-sandbox
07:11:51.007 › Nikola App starting...

Reply to this email directly, view it on GitHub
https://github.com/geraldoramos/nikola/issues/21?email_source=notifications&email_token=AAKRM7KE2PIRYJ6B574HH4LPZ6X5PA5CNFSM4HWZYJR2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXNI53Q#issuecomment-500862702,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAKRM7I3R66XTWTLBUWR2ALPZ6X5PANCNFSM4HWZYJRQ
.

In both Chome and Chomium browsing to chrome://gpu/ gives:
Log Messages
[10717:10717:0611/072603.939819:ERROR:sandbox_linux.cc(364)] : InitializeSandbox() called with multiple threads in process gpu-process.

(BTW, you can also browse to chrome://sandbox/ where it says, "You are adequately sandboxed.")
This led me to this possibly related Debian bug report.

@volkerbradley.  Still won't start from menu here.  But at least I have a workaround for now w/ --no-sandbox option.  Thanks for the help!

Working on Kubuntu 18.10 without problems:
% sudo dpkg -i Nikola....
% nikola


force_torque_sensor: 0.8.1-3 in 'melodic/distribution.yaml' [bloom]

Increasing version of package(s) in repository force_torque_sensor to 0.8.1-3:

upstream repository: https://github.com/KITrobotics/force_torque_sensor.git
release repository: https://github.com/KITrobotics/force_torque_sensor-release.git
distro file: melodic/distribution.yaml
bloom version: 0.6.9
previous version for package: null

force_torque_sensor
* Added joystick and keyboard (#8)
* Scenario update melodic (#7)
  * added scenario parameter
  * fixed wrong variable names
  * Added service for setting offets from outside
  * Moved to Eigen3 from Eigen
  * Update calibrate_tool.py
  * Using WrenchTranform in tf2 instead of manual transform.
  * Corrected error with doTranform for wrenches and corrected package.xml with package meta data.
  * Update .travis.yml
  * Update .travis.rosinstall
* Added Melodic in overview
* Added travis config for melodic
* Update CMakeLists.txt
* Updated INSTALL paths
* Update CMakeLists.txt
* Update CMakeLists.txt
* Update .travis.rosinstall (#3)
  * Update .travis.rosinstall for compiling
* Update CMakeLists.txt
* Update package.xml
* Update .travis.rosinstall
* Merge pull request #2 from KITrobotics/master
  Update README.md
* Update README.md
* Merge pull request #1 from KITrobotics/bugs_clean
  Removed bug setting false static offsets paramters; Commenting out an…
* Create .travis.rosinstall
* Create .travis.yml
* Create README.md
* Removed bug setting false static offsets paramters; Commenting out and deleting some unused code.
* Corrected param names for CoG
* Added corrections to work with schunk_ftc
* Moved class loader to handle
* Added namespaces
* First working version
* Contributors: Denis Štogl, IIROB Praktikum 3, Timo Leitritz

@GDwag This package failed to build on Debian Stretch: http://build.ros.org/job/Msrc_dS__force_torque_sensor__debian_stretch__source/1/console .  It looks like the release was probably not done properly, as that should have been caught by bloom.  I'm going to revert this for now; let me know if you need help doing a new release to fix this.


Unable to add Azure AD group with ':' in display name to Azure SQL

When Security Group is created in AAD with ':' e.g. 'SG:Developers' it does not give any error and its created as expected. However, when we try to add this group as user using steps described in this section of the document -  'Create contained database users in your database mapped to Azure AD identitiesCreate contained database users in your database mapped to Azure AD identities' , it fails .
CREATE USER [SG:Developers] FROM EXTERNAL PROVIDER
Getting an error shown below
Msg 15007, Level 16, State 6, Line 1
'SG:Developers' is not a valid login or you do not have permission.
The steps does not specify if ':' in not allowed in the SG Name.
Reference MSDN Issue Path: https://social.msdn.microsoft.com/Forums/en-US/e15d200e-b797-4879-a7f9-f3d6e481f867/unable-to-add-azure-ad-group-with-in-display-name-to-azure-sql-am-i-missing-something?forum=WindowsAzureAD&prof=required

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

ID: 2d4a33b0-87d0-f60c-1b52-aeafa889e657
Version Independent ID: c281bdb7-c98c-6853-5077-41b3dd44d3a2
Content: Configure Azure Active Directory authentication - SQL
Content Source: articles/sql-database/sql-database-aad-authentication-configure.md
Service: sql-database
GitHub Login: @GithubMirek
Microsoft Alias: mireks

Thanks for reporting! I have assigned the issue to the author to investigate and update as appropriate.

I am also hitting this issue, though in my case an ampersand is involved.

I can reproduce this problem on our end and for now we will document that using ":"is currently not supported.

Could you please let me know the exact statement you use with ampersand , that I can check it on our end too?

@wasabii Please see Mirek's response above

@MohitGargMSFT Please see Mirek's response above

#please-close

We will now proceed to close this thread. If there are further questions regarding this matter, please comment and we will gladly continue the discussion.


Fixed a bug on CsvToJsonConverterV2 throwing NPE when custom order is…

Fixed a bug on CsvToJsonConverterV2 throwing NPE when custom order is not provided. Updated corresponding unit test.

@abti Could you take a look when you have a chance?


REFACTOR AddToCartForm - display Out Of Stock message in unavailable

AddToCartForm - always show price

PurchasableExtension - remove if check to display AddToCartForm

related to https://github.com/dynamic/silverstripe-foxy-inventory/pull/27

This PR may be unnecessary - just trying to avoid any additional getIsAvailable() calls on products