Event page mobile payout

Description :sparkles:
The layout was broken due to the wrong markup in multiple components

Hero: mobile markup should be completely different with opposite positioning for child containers
Occurrences section: table and time fields positioning refactored. Table now has a horizontal scroll, that was the main component which was breaking layout and header specifically
Queue: repositioned in mobile
Share:  repositioned in mobile
Removed huge margin bottom in mobile between content and footer.

Please test the desktop and mobile view.
Still question, how usable the table is on mobile. User has to scroll to see the Details button, and then when details are expanded, user sees the most right content.
Hero in mobile:

Header expanded:

Mobile content of the event page:

With scrolled table to right:

With expanded details:

Tos see other expanded details, should be scrolled back to the left.
Issues :bug:
Closes :no_good_woman:
PT-1829:
Related :handshake:
Testing :alembic:
Automated tests :gear:
Manual testing :construction_worker_man:
Screenshots :camera_flash:
Additional notes :spiral_notepad:

kultus-ui branch is deployed to platta: https://kultus-ui-pr349.dev.hel.ninja :rocket::rocket::rocket:

fixed the "Ilmoittaudu jonoon"

the problem that Kari mentioned is related to the footer links, i ll create a separate ticket for that


Replace calls to FixedArray::Begin() and FixedArray::End()

Four STYLE commits that replace calls to FixedArray::Begin() and FixedArray::End():

Vector(value), CovariantVector(value) constructors call base class FixedArray(value) instead
FastMarching does a range-based for-loop instead
Const iteration calls cbegin() and cend() instead
itkFixedArray.hxx using std::equal, and C++11 fill_n and copy_n

Thanks for your approval, @blowekamp, @hjmjohnson, @dzenanz! Please allow me one more commit for this pull request  :-). In a minute from now!

Very small amend of the last commit ("STYLE: itkFixedArray.hxx using std::equal..."), only just to remove CLANG_SUPPRESS_Wfloat_equal.
It appears that even when -Wfloat-equal warnings are enabled, a call to std::equal will not trigger this warning  :-)
#include <algorithm>

bool StdEqualFloats(const float f1, const float f2)
{
    return std::equal(&f1, &f1 + 1, &f2); // No warning!  :-)
}

bool EqualFloats(const float f1, const float f2)
{
    return f1 == f2; // warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
}

See https://godbolt.org/z/seTRxf

I think this PR is ready now  :-)


[FR] install starfall-cli as a devDependency

This project can't be built by contributors without this so if I run npm run build it will fail unless I have this tool installed. I had to figure this out by looking at the github ci folder otherwise which was confusing.

done thanks


Update version

Updates the openapi-generator-cli to version 5.4.0 and uses it to
generate the library.

:shipit:


Add the release note for 1.26.0

I thought I left these comments yesterday. 😅

@jrhee17 and @ikhoon All addressed. 😉


NEWS: add v3.2.8

Merging this afternoon, after publishing release.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@bc50a45). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #8540   +/-   ##
=========================================
  Coverage          ?   65.94%
=========================================
  Files             ?      360
  Lines             ?    29523
  Branches          ?        0
=========================================
  Hits              ?    19470
  Misses            ?     8389
  Partials          ?     1664

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bc50a45...603a28c. Read the comment docs.

@gyuho shall we get this merged?

I will merge right before the release this Friday.


add warning about the generated compare method

I think it's important to be aware of that possible problem.

Thanks :+1:


Representations do not work on CCL

The function representation-initial-value throws a type-error on CCL. Strangely, the type error is intermittent, or appears at different locations. At times it is thrown from the check at the end of the fully macro expanded function:
The value *CS* is not of the expected type (OR
                                            ALEXANDRIA.1.0.0:ARRAY-INDEX
                                            SLCT::CANONICAL-RANGE
                                            SLCT::CANONICAL-SEQUENCE).

Other times from elsewhere:
The value #(2 3 5) is not of the expected type CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR.
   [Condition of type TYPE-ERROR]

and sometimes (rarely), it's not thrown at all and it works properly:
SLCT-T> (SLCT::CANONICAL-SEQUENCE #(2 3 5))
#S(SLCT::CANONICAL-SEQUENCE :VECTOR #(2 3 5))
SLCT-T> (slct::representation-initial-value *)
; Evaluation aborted on #<TYPE-ERROR #x2101FD5EAD>.
SLCT-T> (slct::representation-initial-value **)
2
SLCT-T> (slct::representation-initial-value ***)
2
SLCT-T> (lisp-implementation-version)
"Version 1.11.8 (v1.11.8-2-gd411e378) WindowsX8664"

CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR is an un-exported type internal to CCL, used in some kind of class translation. It is not used in the code.
My best guess at this point is that this is a CLOS  problem with CCL, although it's intermittent nature is puzzling and could indicate a deeper issue in CCL. The code works fine on SBCL and ACL implementations. Experiments with various array types for the vector did not change the result. There is a possibly related discussion on comp.lang.lisp from 2017 that may be worth reading through.

Not adding to this.  But somehow my macos has to use CCL64 under brew install to use jupyter-lab.  SBCL does not work.  The
CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR problem is not NOT intermittent as it is easily reproduced in the leaf-and-stem call in the tutorial.
(stem-and-leaf (select scfdata (range 23 nil) 'scfdata:absorption)) ;arrays are 0 based, so we start at 23

TYPE-ERROR: The value #(6 10) is not of the expected type CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR.

0: (CCL::DEFAULT-INITARGS #<STANDARD-CLASS ENVIRONMENT> (#<TAGGED-RETURN-ADDRESS in function (:INTERNAL DISSECT:PRESENT) (+181) #x30200121D214> .<PHONE_NUMBER>8189))
1: (CCL::%MAKE-STD-INSTANCE #<STANDARD-CLASS ENVIRONMENT> (#<TAGGED-RETURN-ADDRESS in function (:INTERNAL DISSECT:PRESENT) (+181) #x30200121D214> .<PHONE_NUMBER>8189))
2: (#<CCL::STANDARD-KERNEL-METHOD MAKE-INSTANCE (STANDARD-CLASS)> #<STANDARD-CLASS ENVIRONMENT> CONDITION The value #(6 10) is not of the expected type CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR.)
3: (CCL::%MAKE-INSTANCE #<CLASS-CELL for DISSECT:ENVIRONMENT #x30200121C2ED> CONDITION The value #(6 10) is not of the expected type CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR.)
4: ((:INTERNAL (JUPYTER:EVALUATE-CODE (JUPYTER/COMMON-LISP:KERNEL T))) The value #(6 10) is not of the expected type CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR.)
5: (SIGNAL The value #(6 10) is not of the expected type CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR.)
6: (CCL::%ERROR The value #(6 10) is not of the expected type CCL::SIMPLE-UNSIGNED-DOUBLEWORD-VECTOR. NIL 78294785)
7: ((:INTERNAL CCL::%XERR-DISP))
8: (CCL::FUNCALL-WITH-ERROR-REENTRY-DETECTION #<COMPILED-LEXICAL-CLOSURE (INTERNAL %XERR-DISP) #x2567A27F>)
9: (CCL::%XERR-DISP<PHONE_NUMBER>8164)
10: (CCL::%PASCAL-FUNCTIONS% 2<PHONE_NUMBER>8164)
11: (NIL #<Unknown Arguments>)
12: (SELECT-DEV::REPRESENTATION-INITIAL-VALUE #S(CANONICAL-SEQUENCE :VECTOR #(6 10)))
13: (SELECT-DEV:ROW-MAJOR-SETUP (#S(CANONICAL-SEQUENCE :VECTOR #(6 10))) #<COMPILED-LEXICAL-CLOSURE (INTERNAL (SELECT (ARRAY))) #x302005F5A70F>)
14: (#<STANDARD-METHOD SELECT (ARRAY)> #(0 3 3 4 0 4 5 9 4 6 1 8 1 0 2 7 2 5 3 9 3 3 3) #(6 10))
15: (STEM-AND-LEAF #(50 43 43 44 50 44 35 49 54 76 31 48 61 70 62 47 42 45 43 59 53 53 73) STEM-SIZE 10 LEAF-SIZE 1)
16: (CCL::CALL-CHECK-REGS STEM-AND-LEAF #(50 43 43 44 50 44 35 49 54 76 31 48 61 70 62 47 42 45 43 59 53 53 73))
17: (JUPYTER/COMMON-LISP::EVAL-AND-PRINT (STEM-AND-LEAF (SELECT SCFDATA (RANGE 23 NIL) 'ABSORPTION)) NIL NIL)
18: (#<STANDARD-METHOD JUPYTER:EVALUATE-FORM (JUPYTER/COMMON-LISP:KERNEL T T T)> #<KERNEL #x3020029BC66D> #<BASIC-FILE-CHARACTER-INPUT-STREAM ("CELL:1077300313.LISP.newest"/30 UTF-8) #x302005F5CF0D> CELL:1077300313.LISP.newest NIL NIL NIL)
19: (JUPYTER/COMMON-LISP::REPL ;(stem-and-leaf  (aops:each #'ffloor (select scfdata (range 23 nil) 'scfdata:absorption) ) )

(stem-and-leaf (select scfdata (range 23 nil) 'scfdata:absorption)) ;arrays are 0 based, so we start at 23
; (stem-and-leaf (select scfdata (range 0 26) 'scfdata:absorption)) CELL:1077300313.LISP.newest NIL)
20: (#<STANDARD-METHOD JUPYTER:EVALUATE-CODE (JUPYTER/COMMON-LISP:KERNEL T)> #<KERNEL #x3020029BC66D> ;(stem-and-leaf  (aops:each #'ffloor (select scfdata (range 23 nil) 'scfdata:absorption) ) )

(stem-and-leaf (select scfdata (range 23 nil) 'scfdata:absorption)) ;arrays are 0 based, so we start at 23
; (stem-and-leaf (select scfdata (range 0 26) 'scfdata:absorption)) CELL:1077300313.LISP.newest NIL)
21: (JUPYTER::HANDLE-EXECUTE-REQUEST)
22: (JUPYTER::RUN-SHELL #<KERNEL #x3020029BC66D>)
23: ((:INTERNAL BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS))
24: (CCL::RUN-PROCESS-INITIAL-FORM #<PROCESS SHELL Thread(3) [Active] #x3020029C7BDD> (#<COMPILED-LEXICAL-CLOSURE (INTERNAL %PROCESS-RUN-FUNCTION) #x3020029C796F>))
25: ((:INTERNAL (CCL::%PROCESS-PRESET-INTERNAL (CCL:PROCESS))) #<PROCESS SHELL Thread(3) [Active] #x3020029C7BDD> (#<COMPILED-LEXICAL-CLOSURE (INTERNAL %PROCESS-RUN-FUNCTION) #x3020029C796F>))
26: ((:INTERNAL CCL::THREAD-MAKE-STARTUP-FUNCTION))

Thanks for the update. I do not recommend CCL for any numeric work. There are serious errors in floating point computations that have been reported, but unfixed for more than a year. Even if CCL were to work, you risk getting inaccurate results.

This has been reported as a CCL bug.  Leaving open here to monitor for a fix.


Solaredge option to charge battery and vehicle simultaniously

Is your feature request related to a problem? Please describe.
Currently when using the experimental feature to prevent discharging it's not possible to also charge the battery. Especially for floating tarriffs + battery this could be a nice way to use the cheap price from the grid.
Describe the solution you'd like
Maybe in the UI we should as a first step add the option to configure if you also want to charge the battery or not for the same price as the low price for the car.
Describe alternatives you've considered
In the long run we maybe can also add two different prices one for floating tariffs to charge the vehicle and one if you want to charge the battery.
Example could be that below 10 ct/kwh you want to charge the car and below 5 ct/kwh you also want to charge the battery.

Additional context
Currently in this file the different charging modes are set https://github.com/evcc-io/evcc/blob/master/templates/definition/meter/solaredge-hybrid.yaml

@naltatis @andig great thanks didn't see that this was hidden there.
I will give it a try now.


[Q] Not able to create a TS from scratch

Hello Thierry,
First of all, amazing tool, thank you so much for your dedication and passion!
I am trying to use TSDuck in order to create a TS from scratch, but unfortunately when I am trying to check the TS output, using TSReader & Stream Xpert, I am not getting anything: no PAT, no PMT.
I have checked with Wireshark that I am getting the network packets correctly though.
Here is my very basic code:
PAT XML:
<?xml version="1.0" encoding="UTF-8"?>
<tsduck>
	<PAT transport_stream_id="0">
		<service service_id="1" program_map_PID="1"/>
	</PAT>
</tsduck>

PMT XML:
<?xml version="1.0" encoding="UTF-8"?>
<tsduck>
	<PMT service_id="1">
		<component elementary_PID="7501" stream_type="0x86">
		</component>
	</PMT>
</tsduck>

Command line:

tsp.exe --verbose --bitrate 3000000 --max-flushed-packets 70 -I null -P regulate --packet-burst 14 -P inject test/pat.xml --pid 0 --bitrate 1500 -P inject test/pmt.xml --pid 1 --bitrate 1500 -O ip <IP_ADDRESS>:4500 --packet-burst 7 --enforce-burst --local-address <IP_ADDRESS>

The logs seem to say the command is working:

inject: loaded 1 sections from test/pmt.xml, repetition rate: unspecified
inject: loaded 1 sections from test/pat.xml, repetition rate: unspecified
regulate: minimum packet burst duration is 2,000,000 nano-seconds
null: initial input bitrate is 3,000,000 b/s
regulate: regulated at bitrate 3,000,000 b/s
inject: transport bitrate: 3,000,000 b/s, packet interval: 2,000
inject: transport bitrate: 3,000,000 b/s, packet interval: 2,000

Do you see any issue in the XML definitions or in the command line? Is it because I haven't created any PCR?

Hi,
When a tool (here, TSReader & Stream Xpert) does not "see" something in your stream, you have to check first if what you are looking for (here, PAT & PMT) is really absent or if the tool just doesn't see it.
In a case like this, where you wonder what's in the TS, start with replacing the network output with a file: -P until --seconds 5 -O file out.ts and then see what's in the TS file using commands such as tsanalyze or tstables.
Doing this on your command shows that the PAT and PMT are there. So why don't TSReader & Stream Xpert detect them? I do not know for sure but I would bet that it is because you placed the PMT on PID 1. This is forbidden. PID 1 is reserved by MPEG for the CAT. Maybe TSReader & Stream Xpert simply consider your stream as invalid because there should be no PMT in PID 1. Just a guess, though.
The usual reserved ranges of PID's are:

MPEG : 0x0000 - 0x000F
DVB : 0x0010 - 0x001F
ISDB : 0x0010 - 0x002F
ATSC : 0x1FF0 - 0x1FFE

Allocating service data or information in these ranges is looking for troubles.

Hi Thierry,
Thanks for your very quick help! So I changed the PMT PID to 1000, and checked with recording a TS file instead of pushing to the network, and TSReader / StreamXpert are able to find the PAT, but not the PMT :-(
Here is my code:
PAT:

PMT:

Command:

tsp.exe --verbose --bitrate 3000000 --max-flushed-packets 70 -I null -P regulate --packet-burst 14 -P inject test/pat.xml --pid 0 --bitrate 1500 -P inject test/pmt.xml --pid 1000 --bitrate 1500 -P until --seconds 5 -O file C:\out.ts

Do you have any idea of what I can be doing wrong?

It does not make sense. If I copy/paste your two XML files and your command, I get this:
* PAT, TID 0 (0x00), PID 0 (0x0000)
  Version: 0, sections: 1, total size: 16 bytes
  - Section 0:
    TS id:       0 (0x0000)
    Program:     1 (0x0001)  PID: 1000 (0x03E8)

* PMT, TID 2 (0x02), PID 1000 (0x03E8)
  Version: 0, sections: 1, total size: 21 bytes
  - Section 0:
    Program: 1 (0x0001), PCR PID: none
    Elementary stream: type 0x86 (SCTE 35 Splice Info), PID: 7501 (0x1D4D)

Which is exactly what's in your XML files.

Do you happen to know why Program shows 700? I haven't defined this anywhere so I am curious.
Also, where does the PID 5001 come from? I also haven't defined it anywhere, so here as well I am curious.

There is also the "PID: 32" instead of 1000 in your PAT. The only explanation I can find is that the XML files you refer in your tsp command are not the same as the XML files you posted (subdirectory test?).

Hi Thierry,
Oh my... Indeed, I got two files opened in Notepad++ with the same name, and I was working on the wrong one without even noticing it...
So now that I got this fixed, I still don't get why TSReader is not able to read my PMT.
The PAT XML is:
<?xml version="1.0" encoding="UTF-8"?>
<tsduck>
	<PAT version="0" transport_stream_id="0">
		<service service_id="1" program_map_PID="32"/>
	</PAT>
</tsduck>

The PMT XML is:
<?xml version="1.0" encoding="UTF-8"?>
<tsduck>
	<PMT version="1" service_id="1" PCR_PID="7501">
		<!-- Description of one SCTE-35 Splice Info PID in the TS -->
		<component stream_type="0x86" elementary_PID="7501">
		</component>
		<registration_descriptor format_identifier="0x43554549">
		</registration_descriptor>
	</PMT>
</tsduck>

The command line is:
tsp.exe --verbose --bitrate 3000000 --max-flushed-packets 70 -I null -P regulate --packet-burst 14 -P inject test/pat.xml --pid 0 --bitrate 1500 -P inject test/pmt.xml --pid 32 --bitrate 1500 -P until --seconds 5 -O file test/out.ts
TSReader will only be able to find the PAT, but not the PMT.
However TSTables seems to be getting everything ok:
* PAT, TID 0 (0x00), PID 0 (0x0000)
  Version: 0, sections: 1, total size: 16 bytes
  - Section 0:
    TS id:       0 (0x0000)
    Program:     1 (0x0001)  PID:   32 (0x0020)

* PMT, TID 2 (0x02), PID 32 (0x0020)
  Version: 1, sections: 1, total size: 27 bytes
  - Section 0:
    Program: 1 (0x0001), PCR PID: 7501 (0x1D4D)
    Program information:
    - Descriptor 0: Registration (0x05, 5), 4 bytes
      Format identifier: 0x43554549 ("CUEI")
    Elementary stream: type 0x86 (SCTE 35 Splice Info), PID: 7501 (0x1D4D)

Do you see any issues/concern/warnings as per what TSTables is showing?

Hi Thierry, I found the problem: the 5 seconds capture was not enough for TSReader to get the PMT table!
After I recorded 15 seconds instead, TS Reader can now display both PAT and PMT without any issue, thank you so much!

It is strange that TSReader needs that many occurrences of the PMT to detect it. Maybe it is because you specify an excessively low bitrate for PAT and PMT. 1500 b/s = one TS packet per second = one PAT or PMT per second (or less in case of larger PMT). A standard value would be 15000, 10 times more.


group targets for multiprocessing by size

multiprocessing has a maximum size of object that it can pickle and pass in to a process; this can be exceeded if we have a large number of targets with a large number of spectra and are passing into a small number of processes.  For now I've hardcoded a maximum number of targets per process, but this should be generalized by adding __sizeof__ to dataobj.Spectrum and Target and ensuring that the actual targets in a group do not exceed the maximum pickle size (I need to lookup what that actually is).

This is deprecated in favor of parallelizing over redshifts instead of over targets, thus avoiding repeating the expensive operation of resampling the template to each redshift.  Closing ticket.


How to add currentTime?

This is by far the best video skin i've found after searching forever! The only issue I have is that the current time is missing from the controls—how can i add this in? Ideally it could even replace the volume icon. thanks!

You can add an event listener just like the progress bar. Right now I am busy and don't have time to maintain the project.


add theme Black yellow

Screenshot of my A11y card:

For assistance: https://help.github.com/en/articles/file-attachments-on-issues-and-pull-requests

Nice job! 💛🖤💛🖤
Thanks for your contribution!


Read value from specific Modbus address using RTU

Hello,
I am working on a project in which I want to read value for particular Modbus address using RTU protocol. I have checked the code for NModbus <IP_ADDRESS> Source but did not find any method to read values using RTU. Does it support to read values? How can I read values?
Moreover, is there any latest version of Modbus?
Thanks,
ankita

e.g.
var master = ModbusSerialMaster.CreateRtu(port);
ushort[] registers = master.ReadHoldingRegisters(slaveId, startAddress, 2);

Thank you for your response. But I am not getting the actual result.
Here is my code:

using (SerialPort port = new SerialPort("COM6"))
			{
				// configure serial port
				port.BaudRate = 115200;
				port.DataBits = 8;
				port.Parity = Parity.None;
				port.StopBits = StopBits.Two;
				port.Open();

				// create modbus master
				IModbusSerialMaster master = ModbusSerialMaster.CreateRtu(port);

				byte slaveId = 1;
                ushort startAddress = 40023;
				//ushort[] registers = new ushort[] { 15};

				// write three registers
				//master.WriteMultipleRegisters(slaveId, startAddress, registers);
                 master.ReadHoldingRegisters(slaveId, startAddress, 1);
			}

Is there anything wrong? Please suggest.

Here is my result:

I'd suggest you to try check with Modbus Poll tool.

Can you please advise what I am doing wrong in above code with Address 40023?


Fix bash completion error

By using "all output redirection", bash should no longer print the error to
console when tmuxinator is not installed. The zsh checking has been updated to
use the same method for parity.
Closes #395

Coverage remained the same at 99.457% when pulling 19927a21478795c705e35e9b0d7e2874c2a158c7 on J3RN:bash-error into e43861fc993c24dea1bfc3cfe982d3ae1d224c83 on tmuxinator:master.

Following the discussion in #386, could we actually just remove the bash check and keep the zsh check?

+1 to keep the zsh check for now; at least until we can make it use fpath or something similar.

I am closing this in favor of #400


Tooltip not centered on specific case

Problem on Package 3.0.8 with adminlte 3.0.2
Got a tooltip problem, when inside a table, problem on the 2nd, 3rd, 4th, etc column (no problem on the first column, lol) ... the tooltip get slightly to the left
It's interesting to note that i thought it was an adminlte css problem, but i coundn't reproduce it with only the adminlte 3 css, only using this package, so we probably have a problem in the main views, that i coundn't spot 😞.
How to reproduce:
clean install (not my project doing nasty things)
extends adminlte page view
on content section, add a table
add 2 columns
add any item, link, button
configure tooltip
example
@extends('adminlte::page')

@section('title', 'AdminLTE')

@section('content_header')

Dashboard

@stop

@section('content')

      #
      #

@stop

@section('js')

@endsection

Sadly I can't replicate this with your demo code, look at this pic:

Getting extra info for that problem, and spotted that it happens on chrome(79.0.3945.130) and firefox (72.0.2), but not on Edge (44.18362.449.0).
My windows version is 10 Build 18363 and PHP is 7.2.1.
Damn it... those tooltips are driving me crazy...

I'll test it on my Windows Machine at Home, I work only on macOS since 2yrs 😄

Hi, I'm also experiencing the same issue. Did you find any solution ? Thank you in advance 😉

@REJack can you check the solution of @theomi please? :) I think it's an issue on adminlte theme.

A new test would be nice, I've upgraded Bootstrap to v4.4.1 in in AdminLTE v3.0.4 may this was a bug from Bootstrap itself. I couldn't find any issue coming from AdminLTE.

@andcarpi can you please test it again with update to AdminLTE v3.0.4?

Sure, will check it as soon as i can...

Problem still exists...

Bootstrap 4.4.1
Package version 3.1.1
AdminLTE 3.0.4
Tested on:
W10 1909
Chrome 81.0.4044.122
Edge Chromium Versão 81.0.416.64
Since Old Edge did not had the error, but edge chromium did, it can possible be linked with some chromium css directive...

Also, as @theomi mentioned, adding a
@section('css')

@endsection

managed to fix the problem

@REJack can you add this please to the adminlte.css file?

I tested it and this bug is related to popper.js. You can simply fix this with adding one data-attribute  data-container=".content".
Like this


wasm-pack build doesn't support the new crate structure

The new structure introduced in #1816 is now unfortunately causing the "[Playground] Release" workflow to fail. This is because the wasm-pack build --target web --out-dir playground/src/pkg command defined in playground.yaml is attempting to also build ruff_cli (which no longer supports wasm).
The fix for that would be to append -p ruff to the command, so that the command only builds the ruff crate ... only that wasm-pack build apparently doesn't support that yet for our a bit unconventional structure of having the src in the top-level directory as opposed to ruff/src. I just reported this to wasm-pack as https://github.com/rustwasm/wasm-pack/issues/1211 ... I'll try to see if I can contribute a fix there.

Thanks, let me know if I can be helpful.

While it did take me another commit to actually fix the playground CI 7b1ce72f862f0967df1924c583288ccc8b7cb81c and wasm-pack does in fact support our crate structure and I was wrong to assume that wasm-pack had such a limitation, looking further into it not only was the initial wasm-pack error  message very confusing but the  wasm-pack build CLI is apparently quite poorly designed with an optional positional argument that suddenly becomes required when you want to pass options to cargo ... and even worse wasm-pack build and wasm-pack test treat the same arguments differently ... I reported this as https://github.com/rustwasm/wasm-pack/issues/1213 ... I would contribute a fix to wasm-pack but their tests are failing on master and I am not interested in debugging that.


Finish nightly functional tests

🗣 Description
This PR finishes the nightly product functional tests workflow.
💭 Motivation and context
This PR adds the rest of the products and environments that need to be tested nightly.  It uses a matrix to put each test into a unique job in order to make it easier to debug when something goes wrong.  It also adds a new key/value pair called alias that makes it possible to determine exactly which environment was used without releasing this information into the console.
Closes #824
🧪 Testing
This PR can be tested simply by running the "Nightly Product Functional Tests" workflow.
It should be noted that not all of the tests are passing, but these indicate problems with either the product configuration or the test plans, not problems with the workflow itself.
✅ Pre-approval checklist

[x] This PR has an informative and human-readable title.
[x] PR targets the correct parent branch (e.g., main or release-name) for merge.
[x] Changes are limited to a single goal - eschew scope creep!
[x] Changes are sized such that they do not touch excessive number of files.
[x] Related issues these changes resolve are linked preferably via closing keywords.
[x] All relevant type-of-change labels added.
[x] All relevant project fields are set.
[x] All relevant repo and/or project documentation updated to reflect these changes.
[ ] All relevant functional tests passed.

✅ Pre-merge checklist

[ ] Feature branch has been rebased against changes from parent branch, as needed
Use Rebase branch button below or use this reference to rebase from the command line.

[ ] Resolved all merge conflicts on branch

[ ] Notified merge coordinator that PR is ready for merge via comment mention

✅ Post-merge checklist

[ ] Feature branch deleted after merge to clean up repository.
[ ] Verified that all checks pass on parent branch (e.g., main or release-name) after merge.

@crutchfield  and @schrolla , I spent a few hours on Monday researching various ideas on how to dynamically update the title of a job after it has started.  I could not find any way to do this.  The only way that I know to do this is to drop the matrix, cut and paste the code, and manually create one job per set of params.  It would violate DRY horribly, but you would have a prettier job name.

@crutchfield and @schrolla , I spent a few hours on Monday researching various ideas on how to dynamically update the title of a job after it has started. I could not find any way to do this. The only way that I know to do this is to drop the matrix, cut and paste the code, and manually create one job per set of params. It would violate DRY horribly, but you would have a prettier job name.

I didn't test this and only looked briefly but one idea that might work is to change the way you encode the params to be more amenable to github expressions (E.g. by coding them as JSON embedded in strings).  So, for example, if you matrix was:
[ '{ "Alias" : "AAD G5", "Param2" : "Value", "Param3" : "Value" }', '{"Alias" : "AAD G3", ...}', ... ]
Then I think if i understand correctly you'd be able to do something like:
name: Test ${{ fromJSON(matrix.product).Alias }}
and still parse the matrix in the script as well, but obviously with different logic.
Some discussion of this basic line of thinking here: https://stackoverflow.com/questions/75704312/accessing-nested-json-inside-a-github-actions-matrix

After some experimentation, I have found a solution for this problem.
PRO: Puts the alias name on the job.
CON:  The code is not efficient.

After some experimentation, I have found a solution for this problem. PRO: Puts the alias name on the job. CON: The code is not efficient. See this test repo for the solution: https://github.com/james-garriss/test-matrix-of-matrix/blob/main/.github/workflows/test.yaml

When you say code is not efficient, does this mean it takes 2x to execute?  Or an extra 10 seconds?  I think the intangible benefits of being able to easily read the report and understand quickly is worth a couple seconds of execution time.

Unknown.  I need to rewrite all the code and then we can measure it.  Given that it's just a bunch of extra looping and that we only have a dozen items in our loop, it will probably added less than 20 seconds.  And I agree having the alias will be helpful.


Do not send employment payments to MAAT

Description of change
Do not sent employment income payments to MAAT
Link to relevant ticket
CRIMAPP-1169
Notes for reviewer / how to test

Can't test in local, so I think best to get it in to staging and check it works


DEV 9107.5 Update version of packer 1.0.3 -> 1.1.0

https://github.com/Shippable/pm/issues/9107

this is done, closing


Rewriter match failure

I'm currently seeing an error where the rw tactic does not match rules when I expect it to -- perhaps due to a subterm being a metavariable.
This error was tested with 75786e9a6e0b344ada8bd1e4bf08fb2341a3d7fb.
Here's an example.  The rw command below works correctly when the first three lines were omitted, but fails to match when they are included.  In both cases, the goal appears to be the same, but the transitivity lines introduce a meta variable.
example : 8 + 4 ≤ 12 :=
begin
  transitivity,
  apply nat.add_le_add_right,
  { apply le_refl, },

  rw [norm_num.bit0_add_bit0],
end

The error message I get is:
1006:3: rewrite tactic failed, did not find instance of the pattern in the target expression
  bit0 ?m_3 + bit0 ?m_4
state:
⊢ 8 + 4 ≤ 12

Here's a simpler example:
def f (x : ℕ) := x

theorem foo : ∀ (x : ℕ), f x = x := by simp [f]

example (x : ℕ) : f x = x :=
begin
  transitivity, { refl, },
  rw [foo],
end

This fails with
.../foo.lean:9:2: error: rewrite tactic failed, did not find instance
of the pattern in the target expression
  f ?m_1
state:
x : ℕ
⊢ f x = x


HHH-12374 HHH-12380

https://hibernate.atlassian.net/browse/HHH-12374
https://hibernate.atlassian.net/browse/HHH-12380

Merged.


[sanitize_html] Why section tag not allowed?

The <section> tag is allowed in the dompurify package, and I'm surprised it's not allowed in this package.
Is there any reason why this tag is not included in the list of allowed tags?

The definition of what is sane to allow is subjective. This package aims to make injection of rendered markdown safe.
Hence, why the README says:

This package uses an HTML5 parser to build-up an in-memory DOM tree and filter elements and attributes, in-line with rules employed by GitHub when sanitizing GFM (GitHub Flavored Markdown).

It's also useful for other things. But it doesn't aim to be anything that can possibly be considered safe by some definition.
I just sort of decided to use the same subset as github, it's a reasonably sane subset, as in it's hard to accidentally completely mess up the layout of the page the HTML is injected into.
(I'm not confident that it's impossible to mess up the layout of the embedding page).


jjMoveNfa_0 in SyntaxTreeBuilderTokenManager is unusually slow

The jjMoveNfa_0 in SyntaxTreeBuilderTokenManager is taking up 40% of the execution time, it seems, for executing SHACL rules that generate a lot of SPARQL queries.
We need to:

create SPARQL parsing benchmark
see how we can optimize jjMoveNfa_0

Benchmark results before changes:
Java 8
Benchmark                  Mode  Cnt   Score   Error  Units
SPARQLParseBenchmark.temp  avgt   40  74.169 ± 1.959  ms/op

Java 9
Benchmark                  Mode  Cnt   Score   Error  Units
SPARQLParseBenchmark.temp  avgt   40  74.248 ± 1.105  ms/op

Benchmark results after changes:
Java 8
Benchmark                  Mode  Cnt   Score   Error  Units
SPARQLParseBenchmark.temp  avgt   40  32.390 ± 0.519  ms/op

Java 9
Benchmark                  Mode  Cnt   Score   Error  Units
SPARQLParseBenchmark.temp  avgt   40  36.420 ± 0.727  ms/op


vscode-extensions.k--kato.intellij-idea-keybindings: init at 1.6.1

Description of changes

Add the k--kato.intellij-idea-keybindings extension for VS Code.
Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

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

There are new guidelines for adding VSCode extensions here: (Hope you find them useful.)
https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vscode/extensions/README.md


Android with Chrome

Hey bud, big fan of your work. This has been one of my favorite gl effects for years now. I ran into an issue last week where an android device (running chrome) crashed when it couldn't support rendering to floating point textures.
I know this something you've addressed in the past and after reading the code it's tough to tell where things went awry. All the necessary feature checks are present in the code (very well documented btw).
When the website loads on the device it renders a blank screen with no ability to interact with content. The console error message is "Error: Rendering to floating point textures are not supported". This is the first time I've seen this error in a fatal instance. After some digging it appears that the browser passed all the necessary feature checks only to crash afterwards due to lack of support.
As you know, there are no issues on iOS running chrome or other browsers. Having used this plugin a few times in the past it was strange to notice this for the first time. Thanks for the great library and any help in advance. Cheers!

I saw your PR and this issue. Can you tell me if putting the initialization in a try-catch block fixes it as well?

It does. Totally slipped my mind. Thank you for the tip


[BUG]: Either connection "url" or "host", "database" are required for PostgreSQL database connection

What version of drizzle-orm are you using?
0.32.2
What version of drizzle-kit are you using?
0.23.2
Describe the Bug
My config file is below, following the documentation on configuration:
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  schema: "./lib/db/schema.ts",
  out: "./drizzle",
  dialect: "postgresql",
  dbCredentials: {
    url: process.env.DB_URL!,
  },
  verbose: true,
  strict: true,
});

When running pnpm drizzle-kit push, I get thrown the error at the terminal:
Either connection "url" or "host", "database" are required for PostgreSQL database connection.
I wonder why, since the url is my correct URI String connection in my .env.
Expected behavior
No response
Environment & setup
No response

try console.log your env process.env.DB_URL
if undefined configure you'r env

Hi, for some reason drizzle doesnt pick up env files named .env.local, for example. Make sure your env file is named .env.

If you still want to use .env.local make sure you configure dotenv to use that. My config file looks like
"use server";
import type { Config } from "drizzle-kit";
import { config } from "dotenv";

config({ path: ".env.local" });

export default {
  dialect: "postgresql",
  schema: "./src/lib/db/schema.ts",
  out: "./migrations",
  dbCredentials: {
    url: process.env.DATABASE_URL!,
  },
  verbose: true,
  strict: true,
} satisfies Config;


clangd file is universal on mac

There isn't a good reason to restrict this from working on macOS M1 ARM.
The downloaded binaries for clangd are universal (meaning they work on both ARM and x86) -- even if they weren't, x86 binaries would Just Work.
In fact, on windows, the same situation prevails -- Windows supports x86 binaries running on their ARM variants just fine, at least on Windows 11.
Linux is the only outlier here.  (It's too bad clangd doesn't supply ARM binaries.)

You closed this, but I don't see an associated commit?  I had a branch that I was going to submit as a PR, but ... ?

You can run x86 binaries on ARM linux as well if you install qemu-user-static, but regardless, you can just install it using your package manager and then provide the path in the settings.


Does it have limitation of labels or objects?

Hello Sir,
I tested some cases.
Using coco datasets (count of labels : 33, count of object : 110000 more),
I met some error. This error seems like gpu memory error.
Using same datasets (count of labels : 5, count of object : 7000 more),
this code can running...
How to control it??

It would help to know what the GPU error is and what system you are running it on. It could be that the network doesn't fit on your GPU.


fix: undefined variable on Windows if scope != user

Codecov Report
Attention: 3 lines in your changes are missing coverage. Please review.

Comparison is base (5747f60) 71.29% compared to head (cee2202) 67.23%.
Report is 10 commits behind head on main.

Additional details and impacted files

@@            Coverage Diff             @@
##             main     #392      +/-   ##
==========================================
- Coverage   71.29%   67.23%   -4.06%
==========================================
  Files          43       43
  Lines        2449     2448       -1
  Branches      521      521
==========================================
- Hits         1746     1646     -100
- Misses        526      619      +93
- Partials      177      183       +6

Files
Coverage Δ

qgis_deployment_toolbelt/utils/win32utils.py
17.91% <0.00%> (-51.21%)
:arrow_down:

... and 6 files with indirect coverage changes


Ping check for availability of all Kafka brokers and zoo keeper

Hi team,
As part of our distributed architecture based on EDA where Kafka is our event hub, we wanted to bring down services in the event Kafka not being available, so we are writing k8s health checks to check the connectivity of Kafka. Currently, we are using Kafka admin API method listTopics. Could you please suggest if we have a better or right way to check if Kafka is available (specifically around all brokers being available)? I guess admin API method listTopics will still get data if even all brokers are down.

Maybe you could do something like this:
  public async ping(): Promise<string | null> {
    this.log.debug('Pinging Kafka Cluster');
    try {
      const clusterInfo = await this.admin.describeCluster();
      this.log.debug(`Ping successfull ${clusterInfo?.clusterId}`);
      return null;
    } catch (error) {
      this.log.error('Ping to Kafka was unsuccessful', error);
      return error.message;
    }
  }

Would it be more efficient to listen to events?
Like the events CONNECT and DISCONNECT, and save in DB when it's connected or disconnected.

No, the events won't tell you about transient disconnects. However, the efficiency isn't the real problem. The real problem is that you really shouldn't worry about connections. Magnus Edenhill, the author of librdkafka, says it really well in his FAQ: https://github.com/edenhill/librdkafka/wiki/FAQ#i-want-to-get-an-event-when-brokers-come-up-and-down

I see, thank you for the link!
So we should blindly trust that the event is gonna be pushed in Kafka no matter what...? It seems too much optimistic for me.  Nothing has a 100% uptime right?


adding mistral llm for text tasks

This pull request introduces support for integrating an open-source free LLM by Mistral AI into the project. The integration ensures that users can leverage the capabilities of the director without relying on paid API keys from providers like OpenAI, Anthropic, or other commercial models.
TL;DR:
Added support for Mistral AI LLM.

Hi, this is a great value add for testing with Mistral.
@sankn123 @ankit-v2-3 can you also test all the agents with latest Mistral model?
With xAI Grok we have observed that some agents (Profanity Remover, PromptClip and Subtitle) are not functioning correctly because they do not provide responses in JSON mode.
Could you verify if the same issue occurs with the Mistral models?
Let's utilize this thread to document the experience with different agents with Mistral models.


Request for ability to alter linewidth

Hey Alex,
Loving the hexalattice code.
Just one note, if the lattice is large and overlaid over another image, the line width is too thick, it would be good to be able to set the linewidth parameter for the call to matplotlib.patches.RegularPolygon without having to override your code.
An example graphic (produced by passing a h_ax to create_hex_grid) below - the problem gets more and more pronounced as the number of hexes increases.

Keep up the good work
Chris

Hi Chris (@CTAYLOR888),
Thank you for the kind words!
I updated the code to expose the line width as an argument of the 'plot_single_lattice_custom_colors()' function.
See the new graphics in hexalattice wiki
Code example:
plot_single_lattice_custom_colors(hex_centers[:, 0], hex_centers[:, 1],
                                  face_color=colors,
                                  edge_color=colors*0,
                                  min_diam=1.,
                                  plotting_gap=0,
                                  rotate_deg=0,
                                  line_width=0.1,
                                  h_ax=h_ax)

Thanks Alex!
Will you be updating on conda-forge - I have to use Anaconda for compatibility and consistency reasons.
Best
Chris

Hi Chris,
I uploaded the new version to pypi, so you can already install Hexalattice with pip.
I expect conda-forge to update its caches in several hours from now...
I will close this issue for now, but feel free to reopen it if conda refuses to auto-update or the new version is not satisfactory for your needs :)
Alex

Thanks Alex. However in my original request I mentioned that I was using create_hex_grid - could you also  expose line width as an argument for that key function?
Many thanks in advance
Chris

@CTAYLOR888 Sure, obviously I should have changed this API as well...
I will reopen the issue until I find the cycles for this fix :)

Thanks again Alex!

Hi @CTAYLOR888,
Sorry for the late response, I added the argument to create_hex_grid as well

Many thanks!
Dr. Christopher Taylor
On Monday, 6 March 2023 at 23:00:02 GMT, alexkaz2<EMAIL_ADDRESS>wrote:

Hi @CTAYLOR888,
Sorry for the late response, I added the argument to create_hex_grid as well
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>


Add a public API for registering an error

Hey there - I was wondering if it might be possible to add a public API in order to register spell checkers. It's a pretty small change, but ergonomically it feels better than merging into a hash. I've added did_you_mean functionality to both thor and rubygems and it would feel better to call a blessed method.
Let me know what you think! Thanks for the great tool!

Thanks for the PR! I'm very much in favor of adding a concrete interface for registering an error. I thought about the same thing when I was working on another gem called did_you_mean-activerecord that basiaclly does exactly this.
The only tiny thing I have in mind is that whether or not the error class should always prepend Correctable. The correct_error method could check it so that it prepends only when necessary. This way the SPELL_CHECKERS constant could be made private and the NoMethodError could be registered the same way other are registered.
Overall this is great and thanks again for your PR!

Yeah that's a good idea. Just updated the PR.

Awesome, thanks!


Add incremental scan support for Spark

This PR and incremental scan support for Spark reader.
User could specify start-snapshot-id or end-snapshot-id to do incremental scan. If end-snapshot-id is not specified, then the incremental scan will be from start-snapshot-id to current snapshot.

Thanks @jerryshao, it looks great so I'll merge.


set array index to empty array if it doesn't exist

Description
This serves to prevent debug errors by passing an empty array if the $options['input'] key does not exist.
Summarize
This serves to prevent debug errors by passing an empty array if the $options['input'] key does not exist.

Duplicate of  #180


Ray on spark REPL

Ray on spark REPL

CC @jjyao @ericl Thanks!

@WeichenXu123 in addition to @jjyao's comments, can you shed some light on the final picture of integration, i.e. how would a spark user (or a ray user) can make use of this integration? For example, it could be some simple e2e code snippet where spark and ray works together.

@WeichenXu123 in addition to @jjyao's comments, can you shed some light on the final picture of integration, where spark user (or a ray user) can make use of this integration? For example, it could be some simple e2e code snippet where spark and ray works together.

Do you mean some example code and prototype implementation code ?
I created a repo for this https://github.com/WeichenXu123/ray-on-spark but some APIs there haven't been updated.

Discussion list:

how to deterministically  config resources per node
Seems we cannot , related discussion https://github.com/ray-project/enhancements/pull/14#discussion_r974606624

how to support all options of ray start
Provide a ray_node_options argument (dict type) ?

where should the code live: ray repo or spark repo
To be decided.

more advanced questions are:

does it support autoscaling
Currently no. This implementation relies on spark barrier mode job, which does not support autoscaling currently.

what’s the level of isolation spark provides:
Resources isolation. Each ray cluster are isolated and will use its own resources allocated to the corresponding spark job.
What else isolation do you need ?

Support ray object memory.

Q: minimal ray node memory requirement.

Update REP: no VM/container level isolation

To be confirmed CC @jjyao @ericl

Default memory ratio for Ray object store memory ?
Proposal: 30% of total spark task available memory, and capped with 20GB

Shall we allocate memory for --redis-max-memory ?

In ray on spark implementation, it starts ray node via CLI (ray start command), In my prototype code, I use ray start --block ... , and when shutdown node, I sent a termination signal (sigterm) to ray start  command process. Is it the correct way to shutdown the node ?

Proposal: 30% of total spark task available memory, and capped with 20GB

Hmm is this per-task or per-node? Calculating this value manually can be tricky. If you exceed the /dev/shm size, this can result in segfaults. Using non-/dev/shm storage can cause swapping.
I would recommend something like:

Calculating the available /dev/shm space.
Dividing this by the number of Spark tasks that can run per node.

Shall we allocate memory for --redis-max-memory ?

Ray no longer uses redis, so this flag does nothing.

In ray on spark prototype implementation, it starts ray node via CLI (ray start command), In my prototype code, I use ray start --block ... , and when shutdown node, it sends a termination signal (sigterm) to ray start command process. Is it the correct way to shutdown the node ?

This sounds reasonable.

What's the minimal recommended memory for ray worker node ? Is it 10GB ?

Also seems reasonable.

Hmm is this per-task or per-node? Calculating this value manually can be tricky. If you exceed the /dev/shm size, this can result in segfaults. Using non-/dev/shm storage can cause swapping.
I would recommend something like:
Calculating the available /dev/shm space.
Dividing this by the number of Spark tasks that can run per node, then scaling by say 0.8 for safety.

This is per ray worker node.

Dividing this by the number of Spark tasks that can run per node, then scaling by say 0.8 for safety. sounds good.

Shall we config it to use non-/dev/shm memory as a fallback if it exceeds /dev/shm ? and how to config ?

@ericl
I found a ray environment config : RAY_OBJECT_STORE_ALLOW_SLOW_STORAGE, if set it to 1, does it mean ray node use /dev/shm preferentially, and if exceeding /dev/shm capacity, fallback to use low storage (disk) ?

@WeichenXu123

I found a ray environment config : RAY_OBJECT_STORE_ALLOW_SLOW_STORAGE, if set it to 1, does it mean ray node use /dev/shm preferentially, and if exceeding /dev/shm capacity, fallback to use low storage (disk) ?

Yes.
# Determine which directory to use. By default, use /tmp on MacOS and
# /dev/shm on Linux, unless the shared-memory file system is too small,
# in which case we default to /tmp on Linux.

Be warned that using /tmp for object store memory can cause extreme slowdowns. The reason is that the operating system will typically try to write back pages in /tmp to the filesystem at some point, and application memory accesses can trigger page loads from the filesystem. When Ray writes tens of GB of data, we've observed high levels of swapping and also system hangs.
It would be better to set the memory size smaller so it fits into /dev/shm, or otherwise configure /dev/shm to be large enough for the object store. Setting a smaller object store size just means Ray will spill data when object store memory runs out.

if set it to 1, does it mean ray node use /dev/shm preferentially, and if exceeding /dev/shm capacity, fallback to use low storage (disk)

To answer the question directly, that's not what this flag does. Ray will already spill to disk on exceeding /dev/shm memory. You should never set this flag in production, only for local testing purposes on small scales.

Also have we considered creating a customized spark node provider? https://docs.ray.io/en/master/cluster/vms/user-guides/community/index.html#using-a-custom-cloud-or-cluster-manager

Also have we considered the alternative of creating a customized spark node provider? https://docs.ray.io/en/master/cluster/vms/user-guides/community/index.html#using-a-custom-cloud-or-cluster-manager

Haven't.
In current REP, the main use-cases is that user want to run ray on databricks runtime.

Also have we considered the alternative of creating a customized spark node provider? https://docs.ray.io/en/master/cluster/vms/user-guides/community/index.html#using-a-custom-cloud-or-cluster-manager

I believe this suggestion is that instead of using Spark's barrier mode to launch fixed-size Ray clusters, we could write a SparkNodeProvider plugin for Ray's autoscaler. You could implement this by mapping each Ray node request to a Spark job. So when the Ray cluster tries to autoscale up, the SparkNodeProvider could launch a Spark job to add Ray nodes.
Pros:

Supports Ray autoscaling.

Cons:

May generate a large number of Spark jobs (lots of clutter in the UI), less easy to understand what's going on.

Unless autoscaling is strictly needed, my feeling here is it may be better to start with barrier mode execution.

Unless autoscaling is strictly needed, my feeling here is it may be better to start with barrier mode execution.

I agree, we can start with barrier mode execution.

Cons: May generate a large number of Spark jobs (lots of clutter in the UI), less easy to understand what's going on.

We can avoid the cons by: starting minimal requested ray nodes by spark barrier mode job, then if scaling up requested, then starting new ray node by separate spark jobs.

Also have we considered the alternative of creating a customized spark node provider? https://docs.ray.io/en/master/cluster/vms/user-guides/community/index.html#using-a-custom-cloud-or-cluster-manager

I believe this suggestion is that instead of using Spark's barrier mode to launch fixed-size Ray clusters, we could write a SparkNodeProvider plugin for Ray's autoscaler. You could implement this by mapping each Ray node request to a Spark job. So when the Ray cluster tries to autoscale up, the SparkNodeProvider could launch a Spark job to add Ray nodes.
Pros:

Supports Ray autoscaling.

Cons:

May generate a large number of Spark jobs (lots of clutter in the UI), less easy to understand what's going on.

Unless autoscaling is strictly needed, my feeling here is it may be better to start with barrier mode execution.

@ericl Thank you for your analysis. That makes perfect sense, and we're happy to stick with barrier mode initially.
@ericl @jjyao @scv119 Do you have any other blocking feedback? We are very excited to get the REP approved and move forward with the implementation :D

Also have we considered the alternative of creating a customized spark node provider? https://docs.ray.io/en/master/cluster/vms/user-guides/community/index.html#using-a-custom-cloud-or-cluster-manager

I believe this suggestion is that instead of using Spark's barrier mode to launch fixed-size Ray clusters, we could write a SparkNodeProvider plugin for Ray's autoscaler. You could implement this by mapping each Ray node request to a Spark job. So when the Ray cluster tries to autoscale up, the SparkNodeProvider could launch a Spark job to add Ray nodes.
Pros:

Supports Ray autoscaling.

Cons:

May generate a large number of Spark jobs (lots of clutter in the UI), less easy to understand what's going on.

Unless autoscaling is strictly needed, my feeling here is it may be better to start with barrier mode execution.

@ericl Thank you for your analysis. That makes perfect sense, and we're happy to stick with barrier mode initially.
@ericl @jjyao @scv119 Do you have any other blocking feedback? We are very excited to get the REP approved and move forward with the implementation :D

@ericl @jjyao @scv119 @zhe-thoughts Following up here again. Is there any additional feedback, or can the REP be approved as-is?

With the approvals on this PR, and the passing vote on ray-committers, merging this REP. Thanks @WeichenXu123 for the great contribution, and reviewers especially @jjyao !


Regression: styling with asciidoctor.js

I am intermittently on both Linux and Windows getting a different display of my document using Asciidoctor.js.
I get a dark background and much smaller text than usual. See below for instance:

Actually an error on my part I think.


404 Not Found after fresh installation of version 0.0.38

Before submitting your issue, please make sure that you've checked all of the checkboxes below.

[ ] You're running the latest release version of Deployer.
[x] Ensure that you're running at least PHP 5.5.9, you can check this by running php -v
[x] You've ran composer install --no-dev from the root of your installation.
[x] You've ran npm install --production from the root of your installation.
[ ] You've ran rm -rf bootstrap/cache/* from the root of your installation.
[ ] You have restarted the queue listener and node socket server.

To help us better understand your issue, please answer the following.
Expected behaviour
Would load normally after fresh installation
Actual behaviour
All I see is 404 Not Found - on deployer.app/login
url is deployer.app
Steps to reproduce
cloned the latest version
checkout on version 0.0.38
followed the instructions properly
everything was successful but when I load it its giving me this error 404 not found.
permission on my /var/www/deployer is www-data:www-data.
all my other laravel projects are just running fine.
Environment info
Operating System: Ubuntu 16.10
PHP Version: 7.0.8
Node Version: 6.9.1
Database System:
Database Version: 10.0.25-MariaDB-1 - Ubuntu 16.10
Logs (see storage/logs/) or other output that would be helpful
(If logs are large, please upload as attachment).

Are you using Apache? If so, same as https://github.com/REBELinBLUE/deployer/issues/282 you need to enable mod_rewrite

yalloow @REBELinBLUE yes I'm using Apache2 and mod_rewrite is enabled.
all my other laravel projects are just fine.

Hmm, that is odd, it is just a standard laravel application, I haven't modified the .htaccess file in any way. Is there anything in the Apache error log?

Were you able to check the error log?

Closing for now, feel free to reopen it


SIMD feature for backends

Depends on https://github.com/powdr-labs/powdr/pull/1923
Now that we use nightly, we can more easily enable AVX, Neon etc in backends that support it.
Not sure why fmt added some formatting changes.

updated now


Add ckpt_path option to LightningModule.test() introduced robustness issues

🐛 Bug
Trainer.test(), passing no explicit model, now looks for the best model checkpoint. However, this can fail for models that have __init__ methods that take more than just hparams, which is common.
If I have a pl model with init (kw)args (self, hparams: Namespace, fancy_thing: FancyThing) one runs into problems outlined below.
With the new codepath, Trainer.test() calls down via this path
        # if model is not given (None), ckpt_path is given,
        # load the given checkpoint for testing
        if model is None and ckpt_path is not None:
            # ckpt_path is 'best' so load the best model
            if ckpt_path == 'best':
                ckpt_path = self.checkpoint_callback.best_model_path
            model = self.get_model().load_from_checkpoint(ckpt_path)

Which soon calls down to pytorch_lightning/core/saving.py @ _load_model_state.
This correctly collects init_args_name (here hparams, fancy_thing) but the subsequent logic does not check whether all the requisite params have been found
            if args_name == 'kwargs':
                cls_kwargs = {k: v for k, v in model_args.items() if k in init_args_name}
                kwargs.update(**cls_kwargs)
            elif args_name:
                if args_name in init_args_name:
                    kwargs.update({args_name: model_args})
            else:
                args = (model_args, ) + args

        # load the state_dict on the model automatically
        model = cls(*args, **kwargs)

This means the final line of that snippet fails because fancy_thing is not passed to cls.
Even if it were checked, though, there is not a mechanism here to recover fancy_thing. Lightning might need to e.g. pickle the model init args to rehydrate them later, or provide a user hook specifying how the rehydration here should occur. That said, there may be a simple work around I do not see immediately.
To Reproduce
Call Trainer.test() passing no model, where the implicit model has init args that are not just hparams.
Code sample
I've tried to document very clearly above the code flow that triggers this, but please @ me for any more context.
Expected behavior
Rehydration should occur properly, or, as a stopgap, an error should be raised explaining that model must be explicitly be passed to Trainer.test in this case.
Additional context
Thanks for the great library; really appreciate the team's work!

@yukw777

@williamFalcon @Borda it seems like this is related to the hparams deprecation work you guys did? I thought we pickled the init arguments though... why wouldn't fancy_thing get pickled from the example?

Ahh I think I know what’s going on.. would it be OK for us to accept extra args and kwargs that’d be passed into the model init function in test()?

We can close this per https://github.com/PyTorchLightning/pytorch-lightning/pull/2423#issuecomment-663707172

resolved in #2681


regression add right anti join with other predicate regression case

Proposed changes
Issue Number: close #xxx
Problem summary
Describe your changes.
Checklist(Required)

Does it affect the original behavior:

[ ] Yes
[x] No
[ ] I don't know

Has unit tests been added:

[ ] Yes
[ ] No
[x] No Need

Has document been added or modified:

[ ] Yes
[ ] No
[x] No Need

Does it need to update dependencies:

[ ] Yes
[x] No

Are there any changes that cannot be rolled back:

[ ] Yes (If Yes, please explain WHY)
[x] No

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 38.28 seconds
load time: 578 seconds
storage size:<PHONE_NUMBER>2 Bytes
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20221031094604_clickbench_pr_36296.html


App.js file not updated. No new acacha-forms package version applied so no support for Laravel 5.5 new json error responses (forms not showing error messages)

Forget to update app.js. If you run with this problem updated to new release of this package or run manually
npm install
npm run dev

Solved in 5.0.1


no mor data in venus os after update bin file

This is such a great project! Thank you for all the hard work!
Unfortunately, after updating via opendtu-*.bin both my hoymiles inverts dont show any more data in venus os ( V 3.00-18).
Data is shown in opendtu webinterface, and both hoymiles show as "connected" in venus os.
Can anybody help me out?

Hey, please update the script to the latest version: https://github.com/henne49/dbus-opendtu/releases/tag/v2023-02-21
What version are you running for openDTU, they changed the API.

Thank You for your help henne49!
I did the update, but it seems the script is crashing still:

My RC.local has been working with no problems so far!
#!/bin/bash
sh /data/etc/dbus-serialbattery/reinstalllocal.sh
/data/dbus-opendtu/install.sh
sleep 20 &&  python /data/dbus-fronius-smartmeter/dbus-fronius-smartmeter.py

[DEFAULT]
Time in minutes how often a status is added to the log-file current.log with log-level INFO
SignOfLifeLog= 1
Number ob Template Inverter to query
NumberOfTemplates=2
Which DTU to be used ahoy, opendtu, template
DTU=opendtu
send YieldDay instead of YieldTotal
useYieldDay=0
#For ESP8266 reduce polling intervall to reduce load
ESP8266PollingIntervall=10000
#Possible Options for Log Level: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET
#To keep current.log small use ERROR
Logging=ERROR
if ts_last_success is older than this number of seconds, it is not used.
Set this to < 0 to disable this check.
MagAgeTsLastSuccess=600
if this is not 0, then no values are actually sent via dbus to vrm/venus.
DryRun=0
#IP of Device to query
Host=<IP_ADDRESS>
Username/Password leave empty if no authentication is required
Username =admin
Password =************* (hidden)
Only needed for OpenDTU and ahoy
AcPosition 0=AC input 1; 1=AC output; 2=AC output 2
1st inverter
[INVERTER0]
Phase=L1
DeviceInstance=34
AcPosition=0
2nd inverter
[INVERTER1]
Phase=L1
DeviceInstance=35
AcPosition=0
3rd inverter
[INVERTER2]
Phase=L3
DeviceInstance=36
AcPosition=1
4th inverter
[INVERTER3]
Phase=L1
DeviceInstance=37
AcPosition=1
5th inverter
[INVERTER4]
Phase=L2
DeviceInstance=38
AcPosition=1
6th inverter
[INVERTER5]
Phase=L3
DeviceInstance=39
AcPosition=1
7th inverter
[INVERTER6]
Phase=L1
DeviceInstance=40
AcPosition=1
8th inverter
[INVERTER7]
Phase=L2
DeviceInstance=41
AcPosition=1
9th inverter
[INVERTER8]
Phase=L3
DeviceInstance=42
AcPosition=1
10th inverter
[INVERTER9]
Phase=L1
DeviceInstance=43
AcPosition=1
################## TEMPLATES #####################
####Rearrange and customite Templates as necessary
AcPosition 0=AC input 1; 1=AC output; 2=AC output 2
[TEMPLATE0]
Tasmota Example

Username/Password leave empty if no authentication is required
Username =
Password =
Host=<IP_ADDRESS>
CUST_SN = 12345678
CUST_API_PATH= cm?cmnd=STATUS+8
CUST_POLLING = 2000
CUST_Total= StatusSNS/ENERGY/Total
CUST_Total_Mult = 1
CUST_Power= StatusSNS/ENERGY/Power
CUST_Power_Mult = 1
CUST_Voltage=  StatusSNS/ENERGY/Voltage
CUST_Current=  StatusSNS/ENERGY/Current
Phase=L1
DeviceInstance=47
AcPosition=1
Name= Tasmota
[TEMPLATE1]
Shelly Gen 1 authenticated and unathenticated example
Documentation: https://shelly-api-docs.shelly.cloud/gen1/#shelly1-1pm-status

Username/Password leave empty if no authentication is required
Username =
Password =
Host=<IP_ADDRESS>
CUST_SN = 12345678
CUST_API_PATH= status
CUST_POLLING = 2000
CUST_Total= meters/0/total
###Shelly1PM Multiplier Watt/min 0.000017
CUST_Total_Mult = 0.000017
CUST_Power= meters/0/power
CUST_Power_Mult = 1
CUST_Voltage= none
CUST_Current= none
Phase=L2
DeviceInstance=45
AcPosition=1
Name= Shelly 1PM
[TEMPLATE2]
Shelly Gen 2 - Only works unauthenticated!
Documentation https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/EM#status

Username/Password leave empty if no authentication is required
Host=<IP_ADDRESS>
CUST_SN = 12345678
CUST_API_PATH= rpc/Switch.GetStatus?id=0
CUST_POLLING = 2000
CUST_Total= aenergy/total
CUST_Total_Mult = 1
CUST_Power= apower
CUST_Power_Mult = 1
CUST_Voltage=  voltage
CUST_Current=  current
Phase=L3
DeviceInstance=46
AcPosition=1
Name= ShellyPlus1PM

My config:
[DEFAULT]
Time in minutes how often a status is added to the log-file current.log with log-level INFO
SignOfLifeLog= 1
Number ob Template Inverter to query
NumberOfTemplates=2
Which DTU to be used ahoy, opendtu, template
DTU=opendtu
send YieldDay instead of YieldTotal
useYieldDay=0
#For ESP8266 reduce polling intervall to reduce load
ESP8266PollingIntervall=10000
#Possible Options for Log Level: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET
#To keep current.log small use ERROR
Logging=ERROR
if ts_last_success is older than this number of seconds, it is not used.
Set this to < 0 to disable this check.
MagAgeTsLastSuccess=600
if this is not 0, then no values are actually sent via dbus to vrm/venus.
DryRun=0
#IP of Device to query
Host=<IP_ADDRESS>
Username/Password leave empty if no authentication is required
Username =admin
Password =17491597!sS
Only needed for OpenDTU and ahoy
AcPosition 0=AC input 1; 1=AC output; 2=AC output 2
1st inverter
[INVERTER0]
Phase=L1
DeviceInstance=34
AcPosition=0
2nd inverter
[INVERTER1]
Phase=L1
DeviceInstance=35
AcPosition=0
3rd inverter
[INVERTER2]
Phase=L3
DeviceInstance=36
AcPosition=1
4th inverter
[INVERTER3]
Phase=L1
DeviceInstance=37
AcPosition=1
5th inverter
[INVERTER4]
Phase=L2
DeviceInstance=38
AcPosition=1
6th inverter
[INVERTER5]
Phase=L3
DeviceInstance=39
AcPosition=1
7th inverter
[INVERTER6]
Phase=L1
DeviceInstance=40
AcPosition=1
8th inverter
[INVERTER7]
Phase=L2
DeviceInstance=41
AcPosition=1
9th inverter
[INVERTER8]
Phase=L3
DeviceInstance=42
AcPosition=1
10th inverter
[INVERTER9]
Phase=L1
DeviceInstance=43
AcPosition=1
################## TEMPLATES #####################
####Rearrange and customite Templates as necessary
AcPosition 0=AC input 1; 1=AC output; 2=AC output 2
[TEMPLATE0]
Tasmota Example

Username/Password leave empty if no authentication is required
Username =
Password =
Host=<IP_ADDRESS>
CUST_SN = 12345678
CUST_API_PATH= cm?cmnd=STATUS+8
CUST_POLLING = 2000
CUST_Total= StatusSNS/ENERGY/Total
CUST_Total_Mult = 1
CUST_Power= StatusSNS/ENERGY/Power
CUST_Power_Mult = 1
CUST_Voltage=  StatusSNS/ENERGY/Voltage
CUST_Current=  StatusSNS/ENERGY/Current
Phase=L1
DeviceInstance=47
AcPosition=1
Name= Tasmota
[TEMPLATE1]
Shelly Gen 1 authenticated and unathenticated example
Documentation: https://shelly-api-docs.shelly.cloud/gen1/#shelly1-1pm-status

Username/Password leave empty if no authentication is required
Username =
Password =
Host=<IP_ADDRESS>
CUST_SN = 12345678
CUST_API_PATH= status
CUST_POLLING = 2000
CUST_Total= meters/0/total
###Shelly1PM Multiplier Watt/min 0.000017
CUST_Total_Mult = 0.000017
CUST_Power= meters/0/power
CUST_Power_Mult = 1
CUST_Voltage= none
CUST_Current= none
Phase=L2
DeviceInstance=45
AcPosition=1
Name= Shelly 1PM
[TEMPLATE2]
Shelly Gen 2 - Only works unauthenticated!
Documentation https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/EM#status

Username/Password leave empty if no authentication is required
Host=<IP_ADDRESS>
CUST_SN = 12345678
CUST_API_PATH= rpc/Switch.GetStatus?id=0
CUST_POLLING = 2000
CUST_Total= aenergy/total
CUST_Total_Mult = 1
CUST_Power= apower
CUST_Power_Mult = 1
CUST_Voltage=  voltage
CUST_Current=  current
Phase=L3
DeviceInstance=46
AcPosition=1
Name= ShellyPlus1PM

Please set Logging to DEBUG and rerun the script.
Also please not paste but attach the current.log file and the config.ini file
When did you update the venus OS Version to version 3?

I am not completely sure, but when I use:
wget https://github.com/henne49/dbus-opendtu/archive/refs/heads/main.zip
unzip main.zip "dbus-opendtu-main/*" -d /data
mv /data/dbus-opendtu-main /data/dbus-opendtu
chmod a+x /data/dbus-opendtu/install.sh
nano /data/dbus-opendtu/config.ini
Will this also install the newest (fixed) version?
Here is my log and config (changed .ini to .txt)
current.log
config.txt

yes that installs the new version

Hi, I can see a connection error
raise ConnectionError("No response from OpenDTU - %s" % (url))
ConnectionError: No response from OpenDTU -<EMAIL_ADDRESS>can you try to not use a password and check connectivity?
what setting are you using?


Issue with git push

GitPlus is awesome, and am loving it. But I did see an issue with push specifically when I had merge conflicts. I made a change in a file directly in the remote repo, and made a different change in the same file locally.
Tried pushing, expected it to reject / fail, asking me to pull first. But it didn't do anything. Asked for a commit message, showed up message "pushing.." and then just faded off. Of course, the push was not done.
I am planning to use it soon on production, but with this bug, I can't unfortunately. Can you help? Thanx. Am using version 5.13.0 on Atom(Win 7).
Cheers,
Gautam

same here! seems the handling of a situation where not only you push to the repo hasn't been built into the package :(

I just pushed an update (5.22.0) that should fix this.


alter source rename on a table fails

Describe the bug
dev=> CREATE TABLE s3_table (
dev(>     kaito_user_id varchar,
dev(>     event_type_id int,
dev(>     event_date varchar,
dev(>     event_id varchar,
dev(>     dw_creation_date Timestamptz AS PROCTIME()
dev(> ) WITH (
dev(>     connector = 's3',
dev(>     s3.region_name = 'us-west-2',
dev(>     ......
dev(> ) ROW FORMAT JSON;
CREATE_TABLE
dev=> alter source s3_table to s4_table;
CREATE_TABLE
dev=> alter source s3_table rename to s4_table;
ALTER_SOURCE
dev=> \d
                      List of relations
   Schema   |        Name        |       Type        | Owner
------------+--------------------+-------------------+-------
 public         | s3_table                    | table             | root
 rw_catalog | rw_ddl_progress       | table             | root
 rw_catalog | rw_meta_snapshot   | table             | root
 rw_catalog | rw_relation_info        | table             | root
(11 rows)

dev=> select count(*) from s4_table;
ERROR:  QueryError: Expr error: Context not found
dev=> drop table s3_table;
DROP_TABLE

To Reproduce
No response
Expected behavior
No response
Additional context
No response

There're two bugs here:

By creating a table with a connector, we create two objects (source and table) with the same name. Normally the source should be "shadowed" by the table, but it seems we fail to check it for ALTER SOURCE. So by ALTER SOURCE we rename the underlying source while keeping the table name untouched, which should be rejected.
Since the source is exposed after renaming, SELECT FROM s4_table actually performs a source-select, where the PROCTIME is unhandled to be rewritten to a constant. That's why we get the error of Context not found since by default we extract the timestamp from the current epoch value, which is only valid in streaming execution.

Will open a new issue for the latter bug.


Update "LE_FQDN" without restart?

update .conf without restart is fine, because can use nginx -s reload.
but how it should be done update "LE_FQDN" env?

It's not possible with this project as far as I know, so if you want to have an Nginx running with let's encrypt certificate with the least downtime possible, you should switch to using Nginx + certbot container directly so that the certificate renewal would be decoupled from the Nginx.


Drawing order of shadow is inverted

When a shadow is drew, the shadow is positionated where a non-shadowed showybox would be, and the showybox content (i.e. frame, title, body) is moved from there. As the shadow should be a secondary element, the shadow should be moved from the original position, not the content.

To solve it, instead of drawing the shadow using the inset property, use the outset.


feat: add go protobuf generation

I hereby agree to the terms of the GreptimeDB CLA
What's changed and what's your intention?
Add go protobuf generation.
Please explain IN DETAIL what the changes are in this PR and why they are needed:

Summarize your change (mandatory)
How does this PR work? Need a brief introduction for the changed logic (optional)
Describe clearly one logical change and avoid lazy messages (optional)
Describe any limitations of the current code (optional)

Checklist

[x]  I have written the necessary comments.
[ ]  I have added the necessary unit tests and integration tests.

Refer to a related PR or issue link (optional)

Oops... I forget to add  proto-gen-go in protoc installation, and I will add it ASAP.


add Romania

Not sure how you define that list, but we have a "translation" in place for ro -> w1 as well and could get rid of it if it is ok for you to add here as well

Initial list was taken from the countries supported in AppSource Validation.
It is however totally fine to add Romania and others - it makes things a little simpler when you can specify a country and get what we use.

BTW - you can also do this in code:
$bcContainerHelperConfig.mapCountryCode | Add-Member -NotePropertyName 'ro' -NotePropertyValue 'w1'

Or by adding it to bccontainerhelperconfig.json:
    "mapCountryCode":  {
                           "ae":  "w1",
                           "br":  "w1",
                           "co":  "w1",
                           "ee":  "w1",
                           "fo":  "dk",
                           "gl":  "dk",
                           "hk":  "w1",
                           "hr":  "w1",
                           "hu":  "w1",
                           "id":  "w1",
                           "ie":  "w1",
                           "jp":  "w1",
                           "kr":  "w1",
                           "lt":  "w1",
                           "lv":  "w1",
                           "my":  "w1",
                           "pe":  "w1",
                           "ph":  "w1",
                           "pl":  "w1",
                           "rs":  "w1",
                           "sg":  "w1",
                           "si":  "w1",
                           "th":  "w1",
                           "tw":  "w1",
                           "vn":  "w1",
                           "za":  "w1",
                           "ro":  "w1"
                       },


Adjust references for node-saml organization

The README badge was pointing to the wrong location and the NPM package name was scoped, which it doesn't seem like we're using yet. We should discuss if we want to move this NPM package to be a scopped one and deprecate the unscopped version. For now, we have to unscope it so that we can do a release.

@LoneRifle @markstos , I'd like to hear your thoughts on scopped vs. unscopped for this package.


Questions

Hi, because I don't know how to add pull request I have some questions.

Is this library compatible with STM32Duino - Serial1, Serial2 on STM32F4?
Addressing of slaves and master are working now?
Can I send & receive struct?
what about collisions? For eg. slave1 send message and slave2 send message at this same time.
checksum XOR must be implemented.

Maybe fork of this library (probably discontinued) https://github.com/rzeman9/Simple485
Thank's a lot for this work.

Thanks for these questions.
Has been some time since I used it.
Some quick answers

Not tested, from my head I expect it should work.
Need to check this one
Yes, it is not different from sending a struct over Serial.
Not implemented. Note that rs485 is not equal to modbus et al.
Could be, there are many things possible to extend the lib.

did a quick test with STM32F0 series, did compile with Serial1 an example.
Serial2 and Serial3 failed so I guess it depends on the exact board used (and maybe the compile environment)

Add 3.
Depends on the size of the struct. This library has some protocol that has a 48 byte buffer so it should fit in (do not forget overhead etc)..  Probably it makes sense to define your own protocol that runs on top of the basic sending of bytes.
Add 5
Checksum XOR is a weak checksum 0.4% chance of missing errors. Better use CRC16 which fails 1 in 65535 or CRC32.
Add 4.
Protocol design is pretty difficult to get robust and not loose performance.
Read a book about the implementation of TCP/IP which is a very reliable protocol.

Now I test on BlackPill (STM32F401CCU6) using Serial1.
Code for STM32 (and code for Arduino nano below):
`#include <Arduino.h>
#include <RS485.h>
#define rs485Tx HIGH
#define rs485Rx LOW
#define rs485ReDe PB15
const uint8_t devID = 1;
const char msg[] = "23";
RS485 rs485(&Serial1, rs485ReDe, devID);
int status;
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
rs485.setMicrosPerByte(9600);
delay(2000);
Serial.println("Start");
Serial.println("PCF8574");
}
void loop() {
rs485.send(3, (uint8_t *)msg, strlen(msg));
delay(100);
if(rs485.available() > 0)
{
status = rs485.read();
}
if(status > 1)
{
Serial.print("status ");
Serial.println(status);
}
Serial.print("devID ");
Serial.println(rs485.getDeviceID());

delay(2000);
}`
`#include <Arduino.h>
#include <RS485.h>
//dla rs485
const uint8_t devID = 3;
#define rs485Tx HIGH
#define rs485Rx LOW
#define rs485ReDe 2
RS485 rs485(&Serial, rs485ReDe, devID);
int status;
const char msg[] = "52";
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
delay(100);
Serial.println("sterownik kurnika");
rs485.setMicrosPerByte(9600);
}
void loop()
{
// put your main code here, to run repeatedly:
if(rs485.available() >0)
{
status = rs485.read();
}
Serial.print("status ");
Serial.println(status); //always 0
Serial.print("devID ");
Serial.println(rs485.getDeviceID());
if(status == 23)
{
rs485.send(1, (uint8_t *)msg, strlen(msg));
}
delay(2000);
}`
Communication not working for me. On Arduino Nano "status" always return integer from 1 to 170 not what I send from STM32.
No one library for rs485 works between Nano and STM32, I tested 4 libraries :-)
Have nice day!

#define rs485Tx HIGH
#define rs485Rx LOW
#define rs485ReDe 2
RS485 rs485(&Serial, rs485ReDe, devID);
you must define the pins, not their status?

No one library for rs485 works between Nano and STM32, I tested 4 libraries :-)

I do not have the STM hardware to verify, this library worked between Nano's.
to be continued later this week.

Rob, receiving using this code:
if (rs485.receive(ID, arr, len))
  {
    arr[len] = 0;
    Serial.print("RECV:\t");
    Serial.print(ID);
    Serial.print("\t");
    Serial.println((char*) arr);
  }

Works with STM32 & Arduino Nano.
Thank's a lot!
Have a nice day.

(updated the code tags in your posts)

Works with STM32 & Arduino Nano.

If your problem is solved now, you may close the issue.

Thank's a lot!

you're welcome

My luck was too short...
Sending from stm32f4 to arduino nano works great.
But when I'm trying to send from NANO to stm32 - stm32 not receiving any data.
So, i just try to add
delay(100);
in function:
void RS485::send(uint8_t receiverID, uint8_t msg[], uint8_t len)
{
  uint8_t CHKSUM = 0;
  setTXmode();    //  transmit mode
delay(100);    //ADDED
  _stream->write(SOH);
  _stream->write(receiverID);  //  TO
  _stream->write(_deviceID);   //  FROM
  _stream->write(len);         //  LENGTH BODY
  _stream->write(STX);
  for (int i = 0; i < len; i++)
  {
    _stream->write(msg[i]);
    CHKSUM ^= msg[i];          //  Simple XOR checksum.
  }
  _stream->write(CHKSUM);
  _stream->write(ETX);
  _stream->write(EOT);
  delayMicroseconds((len + 8 + 2) * _microsPerByte);  // + 2 to be sure...
delay(100);   //ADDED
  setRXmode();
}

but it's help only for a few minutes, I don't know why, but after some time - stm32 not receiving any data.. :-(
I'm sending data every 1500ms from NANO to stm32.
Any ideas?

Are you using a software serial on the STM32 side?
RS485 works most reliable with a hardware serial (at least for receive, send() works fine with SWW).
Every node that is not sending should be in the receive mode.
Can you try to get it working with two NANO's?

I'm tired. That was my mistake I'm running code in loop without any millis/delays. Communication works without problems.
I'm not using software serial. On STM32 I'm using Serial1 for rs485, Serial for monitor on PC.
On nano I'm sharing Serial for both.
But... when I'm sending structure like below - float values OR integer values are always received as 0.00 or 0 (zero).
When I'm trying to send structure with String - program on receiver hangs.
Is there any solution?
Thank's a lot for Your patience.
Sender:
struct sendPacket
{
  bool ssrState;    //ssr relay state
  bool socketState; //socket relay state
  bool mOkno;       //small windows
  bool dOkno;       //big window
  bool mDrzwi;      //small door
  bool dDrzwi;      //big door
  float temp = 25.22;       //temperature in chicken house
  int autoGrzanie = 0;  //auto heat
  float setTemp = 10;
};

sendPacket _sendPacket;

rs485.send(1, (uint8_t*)&_sendPacket, sizeof(_sendPacket));

Receiver:

struct rcvKurPacket
{
  bool ssrState;    //ssr relay state
  bool socketState; //socket relay state
  bool mOkno;       //small windows
  bool dOkno;       //big window
  bool mDrzwi;      //small door
  bool dDrzwi;      //big door
  float temp;       //temperature in chicken house
  int autoGrzanie;  //auto heat
  float setTemp;
};

rcvKurPacket _rcvKurPacket;

if (rs485.receive(ID, arr, len))
   {
    arr[len] = 0;
    rcvKurPacket* dtrs = reinterpret_cast<rcvKurPacket*>(arr);
    Serial.print("RECV:\t");
    Serial.print(ID);
    Serial.print("\t");
    Serial.println((char*) arr);
    Serial.print("dDrzwi ");
    Serial.println(dtrs->dDrzwi);
    Serial.print("mDrzwi ");
    Serial.println(dtrs->mDrzwi);
    Serial.print("mOkno ");
    Serial.println(dtrs->mOkno);
    Serial.print("dOkno ");
    Serial.println(dtrs->dOkno);
    Serial.println(dtrs->temp);
    }

I'm tired.

Happens to everyone,

But... when I'm sending structure like below - float values OR integer values are always received as 0.00 or 0 (zero).
When I'm trying to send structure with String - program on receiver hangs.
Is there any solution?

make a HEX dump of what is received to analyze
if (rs485.receive(ID, arr, len))
{
  Serial.print(len);  //  should be 16..20 or so
  Serial.print("\t")
  for (int i = 0; i< len; i++)
  {
    if (arr[i] < 0x10) Serial.print(0, HEX);
    Serial.print(arr[i], HEX);
    Serial.print("\t");
  }
  Serial.println();
}

you might need to test on both platforms

sizeof(bool)
sizeof(float)
sizeof(int)

HEX dump:
16       00      01      01      01      00      01      AE    47       B3      41      FF      00      00      00      7F      43

and sizeof:
arduino nano:
float 4
bool 1
int 2

stm32:
float 4
bool 1
int 4

Note you have a problem with sending the int. It is different in size on the two platforms.
You can replace int with int32_t which is forced 32 bit.

Way past midnight, to be continued tomorrow

FIRST TRY:
struct sndPacket
{
  float temp;       //temperature in chicken house
  float setTemp = 10;   // temperatura zadana
  int autoGrzanie = 65;  //auto heat
  bool mDrzwi;      //small door
  bool dDrzwi;      //big door
};

 sndPacket _sndPacket;

void setup()
{
	_sndPacket.temp=25;
	_sndPacket.setTemp = 32;
	_sndPacket.autoGrzanie = 65;
	_sndPacket.dDrzwi = true;
	_sndPacket.mDrzwi = false;
}

SERIAL MONITOR ON STM32:

00:45:14.947 > dDrzwi 0
00:45:14.947 > mDrzwi 0
00:45:14.947 > 25.00
00:45:14.947 > 32.00
00:45:14.947 > 16777281

bool and int are not correct values.
SECOND TRY:
struct sndPacket
{
  float temp;       //temperature in chicken house
  float setTemp = 10;   // temperatura zadana
  int autoGrzanie = 65;  //auto heat
  byte mDrzwi;      //small door
  byte dDrzwi;      //big door
};
sndPacket _sndPacket;

void setup()
{
	_sndPacket.temp=25;
	_sndPacket.setTemp = 32;
	_sndPacket.autoGrzanie=65;
	_sndPacket.dDrzwi = 1;
	_sndPacket.mDrzwi=0;
}

SERIAL MONITOR ON STM32:

07:57:47.432 > dDrzwi 0
07:57:47.432 > mDrzwi 0
07:57:47.432 > 25.00
07:57:47.432 > 32.00
07:57:47.432 > 16777281

byte and int are not correct.
THIRD TRY:
struct sndPacket
{
  byte mDrzwi;      //small door
  byte dDrzwi;      //big door
};

 sndPacket _sndPacket;

void setup()
{
	_sndPacket.dDrzwi = 1;
	_sndPacket.mDrzwi = 0;
}

SERIAL MONITOR ON STM32:

08:02:11.531 > dDrzwi 1
08:02:11.531 > mDrzwi 0

all correct.
FOURTH TRY:
struct sndPacket
{
  float temp;       //temperature in chicken house
  float setTemp = 10;   // temperatura zadana
  int autoGrzanie = 65;  //auto heat
};

 sndPacket _sndPacket;

void setup()
{
	_sndPacket.temp=25;
	_sndPacket.setTemp = 32;
	_sndPacket.autoGrzanie=65;
}

SERIAL MONITOR ON STM32:

00:45:14.947 > 25.00
00:45:14.947 > 32.00
00:45:14.947 > 65

all correct.
FIFTH TRY:

struct sndPacket
{
	float temp;       //temperature in chicken house
	float setTemp = 10;   // temperatura zadana
	int autoGrzanie = 65;  //auto heat
	float mDrzwi;      //small door
	int dDrzwi;      //big door
};

sndPacket _sndPacket;

void setup()
{
	_sndPacket.temp = 25;
	_sndPacket.setTemp = 32;
	_sndPacket.autoGrzanie = 65;
	_sndPacket.dDrzwi = 125;
	_sndPacket.mDrzwi = 256;
}

SERIAL MONITOR ON STM32:

08:15:32.351 > dDrzwi 0
08:15:32.351 > mDrzwi 0.00
08:15:32.351 > temp 25.00
08:15:32.351 > setTemp 32.00
08:15:32.352 > autoGrzanie 65

dDrzwi & mDrzwi have incorrect values.
So, buffer size now I have hardcoded to 200:
  uint8_t _buffer[200];  //  internal receive buffer

and problem still exists.
Have a nice day!

Good morning
The size of the buffer is not problem.
The data is send as a stream of bytes, and every field of the struct starts at a certain position.
This position depends on the size of the data types on the specific processor.
That is why I said you should use int32 instead of int. That has the same size on all platforms.

Rob!
You write about int32_t in comment !!
And I forgot about that :-(
I change int to int32_t and it's work's!
It's time to rest. Bike ride - it's a good idea.
Thank's a lot!
Have nice day.

As I said before, designing a protocol is harder than most people think.
These are the most common areas that need attention
(There are more, check the OSI 7 layers model.)
variable size
as discussed here
byte order
You have an int32 that you know that is 4 bytes, but in which order are those 4 bytes send (12 possibilities, in real live I have seen 3 or 4 version)
This is seen sometimes e.g. in RGB images where colors suddenly swap.
bit order
OK and the bytes themselves, are they send MSG or LSB.
alignment
Some machines want every variable address at an even address or at an quad (div4) address
encoding 1
Are integers codes as binary (as usual) or as BCD (mainframe)
Which char set is used?
encoding 2
Are Gray codes used? (prevents long runs of 0 or 1 bits)
Is there an error detection and or correction scheme.
Is there a compression scheme?
transmission errors
What is the chance of bit error for this communication line?
Maybe I should add this in a separate document one time.

Rob, my programming skills are very poor. But I like electronics and programming.
What you do for the community, what others do by writing libraries is amazing and deserves great respect, appreciation!  Again - thanks for your help!

Rob, my programming skills are very poor. But I like electronics and programming.

I started when I was 8 or so with (hidden) electric switches and lights, and gradually knowledge build up. My first LED survived for 1 millisecond (no resistor) and several have followed, including displays, forgetting the diode near a relay, using wrong pins and debug until morning light etc. Programming is a similar story, "know how" is often "know how not to do things"
A favorite quote: "You should make a mistake only once as there are enough others too choose from next time."
Programming is best done with pen and paper, draw the flow of information, timing diagrams etc Decompose the problem into parts and give every part its responsibility. Libraries are sort "software IC's", defining the interface is most important, how things are handled inside is another abstraction layer. Similar for software functions, you define what to put in, and what comes out and how it is implemented comes later.

Again - thanks for your help!

You're welcome


[BugFix] Fix some problem when regex_replace using hyperscan replace

What type of PR is this:

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes:
Fixes #23370
Problem Summary(Required):

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 3.0
[x] 2.5
[x] 2.4
[x] 2.3

@Mergifyio backport branch-3.0

@Mergifyio backport branch-2.5

@Mergifyio backport branch-2.4

2.4.x 2.3.x has no problem


adjust mobile view on https://docs.guac.sh/setup/

[Fixes #162]
After changes

https://docs.guac.sh/setup/
https://docs.guac.sh

Hi, @sarthak-kumar-shailendra! Welcome to GUAC and thanks for the contribution. Before we can merge this, you need to do a couple of things

Squash your two commits into one
Signoff on the resulting commit (this is why the DCO check above is failing)

See https://garrytrinder.github.io/2020/03/squashing-commits-using-interactive-rebase if you need an example of how to squash your commits. If you need help, please feel free to ask in our Slack channel.


house to senate change

📝 Changed routes:

/opo/[opo].content

(view full size)

Commit 8dd7fbca055d67b3c18aa7925f3de8b12d65f38c (https://opo-data-49bog5ey3-coa-solutions.vercel.app).


Showcase Submission for challenges/124-flocking-simulation

Thank you Ege Bayraktar for your contribution! A member of the Coding Train team will review it shortly.

Flocking With Limited Sight and Bouncing From the Edges
Ege Bayraktar

Amazing!


[Feature Request] Bar Graphs

What is the feature ?
Add support for bar graphs which are similar to histograms but slightly different ;-)
Examples for bar graphs:

(image from https://www.mathsisfun.com/data/bar-graphs.html)
or

(Optional) Why this feature is useful and how people would use the feature ?
It's similar to histograms but is more focused on categories/... and doesn't only work for continous data.

Hi there, thanks for the feature request. If my understanding is correct, the feature is already supported by Plotters.
Plotters is actually a drawing library that makes plotting easier, which means it doesn't limits you on predefined plot types. In general, we abstract a series as a iterator of drawable elements.
Thus the feature can be supported by passing an iterator of rectangles to ChartContext::draw_series.
I am documenting all those stuff (but very slowly). And this may be more detailed answer to how to draw the chart. https://plotters-rs.github.io/book/basic/basic_data_plotting.html#histogram

Thanks for your response :-)
I already tried it with the histogram type yesterday but I wasn't able to either add specific labels to each rectangle (so I wouldn't need any floats) or to use float values in my histogram. So it's more a program to label my data correctly (or alternatively to draw it on the correct position of the diagram. But maybe I tried it the wrong way and would be happy to get some pointers if this is already possible with the current version.

I too would like to draw bar graphs. My X axis is a Category axis with values (in days): <1, 1-3, 3-6, 6-9 days, >9 days
I've spent almost a whole day trying to figure out how to do it. I think I want to use a plotters::coord::Category but Histogram's don't support that because it doesn't implement plotters::coord::DiscreteRanged
And of course I can't implement it in my own code; I'll try hacking the source..

Sorry I found a bug and force pushed.
It's still not working 100% for me; I'm getting an extra column on the left, and I have no idea why :(
All help appreciated.

I suppose this is already supported by v0.3 when using slice as coord spec, so closing the issue


Ability to view UGOs and change speed of simulation

Added the ability to select and view UGOs and their genomes. Added ability to speed up or down the simulation by using the GUI.

I am not sure why, but running the game on higher speed for some reason makes cells create NGO randomly


The latest version of flutter does not work properly

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
I can't install the latest version of flutter on arm64 Linux
Actual results
[orangepi@orangepi-pc devlopment]$ flutter doctor
Snapshot not compatible with the current VM configuration: the snapshot requires 'release no-code_comments no-dwarf_stack_traces_mode lazy_dispatchers no-dedup_instructions no-asserts use_field_guards use_osr no-branch_coverage x64 linux no-compressed-pointers null-safety' but the VM has 'release no-code_comments no-dwarf_stack_traces_mode lazy_dispatchers no-dedup_instructions no-asserts use_field_guards use_osr no-branch_coverage arm64 linux no-compressed-pointers null-safety'
Logs

Logs

<!-- Paste your logs here -->

Flutter Doctor output
[orangepi@orangepi-pc devlopment]$ flutter doctor
Snapshot not compatible with the current VM configuration: the snapshot requires 'release no-code_comments no-dwarf_stack_traces_mode lazy_dispatchers no-dedup_instructions no-asserts use_field_guards use_osr no-branch_coverage x64 linux no-compressed-pointers null-safety' but the VM has 'release no-code_comments no-dwarf_stack_traces_mode lazy_dispatchers no-dedup_instructions no-asserts use_field_guards use_osr no-branch_coverage arm64 linux no-compressed-pointers null-safety'

Hi @lwylwc. Thanks for filing this issue. Can you confirm you have the required System Requirement and ensure to follow the exact steps as detailed in the installation document. Kindly let me know if this solves your issue.

Meet the requirements, I can successfully install the version of flutter 3.0.0, but the latest version cannot be successful, my system is linux, the chip is rk3588, which is the architecture of arm64,

Hi @lwylwc. The screenshot attached seems to be that of dart, what version of Flutter did you try to install?

The official sdk only has the x64 architecture, not the arm 64 architecture. I need to replace the dart-sdk to make it run. Flutter 3.0.0 corresponds to the dart version 2.17.6. Here is how I configure it

Hi @lwylwc. Unfortunately, I don't have an arm64 linux to reproduce this issue. Please can you try installing using these steps https://wiki.loliot.net/docs/lang/flutter/engine/flutter-app-for-linux-arm64/ if it works in your case?

doesn't seem to work

Hi @lwylwc. Thanks for the details. I'd label for more insights into this issue.

It would be better if the official support under armlinux can be provided, and there are a lot of such demands on the development board at present.

@lwylwc the correct way to get this working would be clone the git repo, and rely on the tool to cache the correct binaries. The Linux ARM64 binaries are not accessible via website download. You can see our bash tooling detects the host system's architecture: https://github.com/flutter/flutter/blob/master/bin/internal/update_dart_sdk.sh#L91
Downloading the upstream Dart SDK and inserting it into the Flutter cache is not supported.

I can use my method on the lower version of flutter to make him run successfully, but I want to know how else I can make my computer with arm64 architecture run the latest flutter


We can do better then UNNAMED_PARAMETER_SET_

Maml actually has entry for parameter set name.
Existing autoring tools don't leverage it, that's a separate thing.
We should start use it to generate parameter set names.
This way, at least for platyPS-generated MAML we will enable round-trip.

I've run into the same issue and after some experimentation I've noticed that this generated incorrect parameter sets
New-MarkdownHelp -MamlFile  $MamlFilePath -OutputFolder $ExportPath

Instead using the -Module parameter works great and that is our current workaround
New-MarkdownHelp -Module  $ModuleName -OutputFolder $ExportPath -NoMetadata -Force

I consider this a bug because there is inconsistency in the behavior and the data exists.

@Sarafian sorry for the super late reply. This is exactly my point: the maml schema does have an entry for the name, but in most cases it's not populated by any help authoring tools, but it exists in the runtime metadata. That's why your workaround works.

PlatyPS currently discovers parameter set names and puts them in the markdown and YAML output. I don't think this issue applies anymore.

PlatyPS currently discovers parameter set names and puts them in the markdown and YAML output. I don't think this issue applies anymore.