bulk update of training request applicant scores

Related to https://github.com/swcarpentry/amy/issues/1327
As we discussed at our meeting today (@pbanaszkiewicz, @elizabethwilliams8, @sheraaron, @maneesha, @karenword), it will be very useful to be able to bulk update the manual scores and notes field for training requests. This would work by uploading a single csv file that has three fields:

a request ID (I'm not sure what the name for that field is in AMY)
manual score
notes for manual score

This would also trigger a change in the manual score from NULL to whatever value is set in the manual score column.
Please let me know if you have any questions! We're looking forward to this in a later release (October), not for the current release.

I’m not sure if this helps I will be creating two CSV files for reviewers. These will contain:
File 1: request ID, all columns to be manually scored, manual score, and manual scoring notes. While I will need to do some processing to average reviewer scores and merge comments, It would be great to be able to upload this file directly back to AMY without re-formatting, and even better to be able to download it with this content only. (Also, I think we have discussed filtering to get only applications with an empty GroupID field instead of using R to eliminate these from the download as we currently do, but I can’t recall what we decided to do about that.)
File 2: names & maybe institutions only. This will not need to be re-uploaded.

On Oct 11, 2018, at 10:23 AM, Piotr Banaszkiewicz<EMAIL_ADDRESS>wrote:
@ErinBecker https://github.com/ErinBecker is the CSV download of selected requests good enough for people to decide on the manual score? In other words, do you want me to somehow extend the CSV format with this issue in mind? I know I'll add request ID column.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/swcarpentry/amy/issues/1353#issuecomment-429044012, or mute the thread https://github.com/notifications/unsubscribe-auth/AVjuiHRdbn0lUUoSoFWFtV2JYGAvYz6nks5uj36ngaJpZM4W3J5z.

Thanks for the question @pbanaszkiewicz. When we export the CSV for doing application review, we will only have the reviewers looking at specific questions. As Karen mentioned, it would be nice (but not essential) to be able to download a CSV file that has only the questions that will be manually scored, and only the requests that have the GroupID field filled out with a particular range of options. Right now, we do that second step (filtering for GroupID), with an R script that has a set of options covering e.g. "NA", "none", "" (blank), "na", "N/A", "no group" and some other variations on that theme. @karenword - can you please add the complete list of responses that we filter on in that field so @pbanaszkiewicz knows exactly what to export.
I do want to caution us here - it is MUCH easier to change the filtering conditions in the R script (for example, if we find out that people are putting in "No Group" or something else that isn't in our current matching set) than it will be for @pbanaszkiewicz to change the download options in AMY. I would actually recommend that we continue to do that filtering in R.

Hello @karenword and @ErinBecker - thank you both for input.
I can understand that you want to upload a manual-scores file with minimum changes, preferably downloaded directly from AMY (and probably filtered in R later on).  What I can do is to look for request_id, score_manual and score_notes columns in CSV and ignore all others.
Now I need to know if you:

want to keep current CSV download for training requests as it is, or
extend current CSV download file with additional columns, or
add a different CSV download made specifically for manual scoring, or
2 and 3 combined, or
something entirely different?

Thanks in advance for clarification.

For now it sounds like the most straightforward thing would be to add these columns (Option 2), and be able to upload a more minimal version that only contains the three new columns.

On Oct 12, 2018, at 9:04 AM, Piotr Banaszkiewicz<EMAIL_ADDRESS>wrote:
Hello @karenword https://github.com/karenword and @ErinBecker https://github.com/ErinBecker - thank you both for input.
I can understand that you want to upload a manual-scores file with minimum changes, preferably downloaded directly from AMY (and probably filtered in R later on). What I can do is to look for request_id, score_manual and score_notes columns in CSV and ignore all others.
Now I need to know if you:
want to keep current CSV download for training requests as it is, or
extend current CSV download file with additional columns, or
add a different CSV download made specifically for manual scoring, or
2 and 3 combined, or
something entirely different?
Thanks in advance for clarification.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/swcarpentry/amy/issues/1353#issuecomment-429376598, or mute the thread https://github.com/notifications/unsubscribe-auth/AVjuiMRgEFSEWQepXatHbqPhhabs1I31ks5ukL2DgaJpZM4W3J5z.

@pbanaszkiewicz - I think we actually want option 3 (and I will confirm with @karenword to be sure this will work with her workflow).
The easiest thing for our end (Karen and me) would be to be able to download a CSV that includes ONLY the columns that are needed for manual scoring (I will add a list of these shortly to this thread) and the name and institution.
@karenword and I will use an R script to filter the downloaded CSV for requests that are not associated with a member site.
We will also use an R script to split the downloaded CSV into two files (with the name and institution in a separate file, for data privacy and scoring objectivity reasons).
I will add another comment with the specific columns to include in the download.

These are the columns we need included in the CSV:

Group Name
Personal
Middle
Family
Underrepresented   (reason)
Affiliation
Non-profit teaching   experience
Previous Training   (other)
Previous Training   (explanation)
Previous Experience   (other)
Previous Experience (explanation)
Teaching Frequency   Expectation (other)
Max Travelling   Frequency (other)
Reason for   undertaking training
Comment

It would also be useful to include the columns request_id, score_manual and score_notes in the CSV download.
@karenword - please let me know if you have any additions or changes to this workflow.

I am down with the less-straightforward-but-more-valuable Option 3! Are categories like Previous Experience (explanation) going to be interpretable without the associated answers or points already automatically assigned in these areas?

Closed via #1374.


Question: ProducesResponseType for BadRequest when using Model validation (ASP.Net Core Web Api)

I have an ASP.NET Core 2.0 Web Api that uses Model Validation. I want to throw BadRequest results with the ModelState to inform the API user why the model he posted is not valid. I tried not specifying the response type at all, IActionResult, BadRequestResult, BadRequestResult and ModelStateDictionary. The actual string response from the api is e.g.:
"{"Data":["You cant upload data bigger than 15MB"]}"
Everything I tried out does not deliver the result I wish for. The ModelState ErrorMessage is hidden all the time.
The model property:
/// <summary>
/// Gets or sets the content
/// </summary>
[Required]
[MaxLength(15728640, ErrorMessage = "You cant upload data bigger than 15MB")]
public byte[] Data { get; set; }

The Validation Attribute:
/// <summary>
/// A Filter for all actions for cross
/// </summary>
public sealed class ValidateModelAttribute : ActionFilterAttribute
{
    /// <inheritdoc/>
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (!context.ModelState.IsValid)
        {
            context.Result = new BadRequestObjectResult(context.ModelState);
        }
    }
}

The controller action:
[ValidateModel]
[HttpPost]
[ProducesResponseType(typeof(BlobItem), 200)]
[ProducesResponseType(typeof(ModelStateDictionary), 400)]
public async Task<IActionResult> Create([FromBody] BlobItem item)
{
     var blobItem = await BlobHelpers.PostBlobItemAync(this.container, item);
     return this.CreatedAtRoute("GetBlobInfo", new { blobName = blobItem.Name }, blobItem);
}

The issue with ModelStateDictionary is, that almost all required properties are empty, so the Serializer throws an exception.
What is the best way to throw BadRequests with the NSwag workflow?

As always there are many ways to solve this:

The simplest way is to create an own ModelStateDictionary DTO class, catch the 400 error and respond with the DTO class (and specify  ModelStateDictionaryDto as ProducesResponseType)
You could also write an own ASP.NET serializer for ModelStateDictionary and an NSwag OperationProcessor which adds the correct schema for the 400 error

My simple solution so far is to just return string inside the attribute and fill the message for the http result. This is simple for consumers and hides implementation, compared to returning the full modelstatedictionary.

Sorry, I don't understand :-)

I would try Dictionary<string,string[]>


Not showing the slider button

Only the bar.
Browser: Chrome on Mac.

I'm not able to reproduce the issue at the moment. I use Linux and it works in Firefox and Chrome correctly.
Thanks again.

Ahoy
I am having the same issue:

If I add steps, I can see where I am. But no slider itself. No console.log errors or anything, and whatever I click on the bar is correctly set just not visible. I started pretty fresh with a new filament project.
Chrome Version 103.0.5060.53, Windows 10
Filament 2.13.12
Thanks a lot

I've the exact same issue with the following browsers on macOS 12.4:

Chrome 103.0.5060.53
Safari

Works on Firefox 101.0.1, almost, with a graphical glitch though:

Same issue here. On latest version of Laravel, Filament, and this package.
Any progress on fixing it?

It works on Linux: Brave, Firefox, and Chrome (all the latest versions).
Brave:

Firefox:

Chrome:

Not able to replicate in IOs yet.

@oyepez003 Am I missing something? Your screenshots don't actually show any range fields. It's just toggles and selects :thinking:

Sorry guys, you are right @oddvalue, next the screenshots:
Firefox:

Brave:

Chrome:

My filament app.css is not including all the tailwind classes you used in the component, your package does also not provide them.

I've the exact same issue with chrome browser.

Any update regarding this? I have the same issue.

Same here. If you get rid of all classes from input, it displays default for browser, so point marking current value displays correctly. Hovewer it is not possible to move it: both clicking on range or on defined steps below. Steps are marking as selected, but range value indicator is not moving.

same here, ive found a way to show the slider thumb via the plugin CSS.
just comment out the 2 lines below.
.filament-forms-range-component::-webkit-slider-thumb {
    /* -webkit-appearance: none; */
    /* appearance: none; */
   ....
}

NOTE: just make sure to publish the assets php artisan vendor:publish --tag="filament-range-field-assets"

Further to @elegisandi's comment; This issue is caused by the fact that the css uses custom properties that are not present in a default Filament install. e.g. var(--color-primary-600)
Presumably @oyepez003 is using the package in an app with a custom stylesheet.
My workaround has been to make my own stylesheet based on this https://github.com/yepsua/filament-range-field/blob/master/resources/css/filament-forms-range-component.css that actually works.

any one found this the fix for this issue ?

@oddvalue is right.
My fork is working with a hard coded color.
https://github.com/danpalmieri/filament-range-field

Fixed by using the latest release: https://github.com/yepsua/filament-range-field/releases/tag/v0.3.4

for those still using filamentphp v2. add the ff lines at the top of the plugin's custom CSS file.
@layer base {
    :root {
        --color-primary-600: replace-with-your-own-color;
        --color-primary-400: replace-with-your-own-color;
        --color-primary-300: replace-with-your-own-color;
        /* ... */
    }
}

see https://tailwindcss.com/docs/customizing-colors#using-css-variables for reference.


My slide

Made  a branch, created a file and made a commit, and opened a pull request

done

lookin good


make esp32-cam as submodule

Hi, this pr aims to make esp32-cam as git submodule.
advantages:

we can track the hacks we do in esp32-camera, so that we will be easy to upgrade the component in the future.(I would try to open pr in esp32-camera, to add the data_avaiable_callback into main stream)
this hacked submodule (now point to https://github.com/Ncerzzk/esp32-camera/tree/for-esp-cam-fpv) was editd from latest esp32-camera code, so we can compile it in IDF4.3 4.4 or 5.0, then we can move to next step to upgrade the framework  of esp32-cam-fpv to support idf5.0

Thank you. Feel free to comment

Would love to see this PR merged.
Also, I'm having trouble with jeanlemotan's master branch:
I (817) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
I (906) wifi:mode : sta (44:17:93:7e:34:dc)
I (907) wifi:enable tsf
I (908) wifi:Set ps type: 0

I (909) wifi:ic_enable_sniffer
MEMORY After WIFI:
Heap summary for capabilities 0x00000004:
  At 0x3ffae6e0 len 6432 free 4 allocated 5912 min_free 4
    largest_free_block 0 alloc_blocks 34 free_blocks 0 total_blocks 34
  At 0x3ffb7b50 len 165040 free 4 allocated 162720 min_free 4
    largest_free_block 0 alloc_blocks 344 free_blocks 0 total_blocks 344
  At 0x3ffe0440 len 15072 free 32 allocated 14528 min_free 4
    largest_free_block 24 alloc_blocks 24 free_blocks 1 total_blocks 25
  At 0x3ffe4350 len 113840 free 61000 allocated 51768 min_free 61000
    largest_free_block 59392 alloc_blocks 50 free_blocks 1 total_blocks 51
  Totals:
    free 61040 allocated 234928 min_free 61012 largest_free_block 59392
Initialized
I (969) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (978) gpio: GPIO[18]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (987) gpio: GPIO[19]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (997) gpio: GPIO[21]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1006) gpio: GPIO[22]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1015) gpio: GPIO[23]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1025) gpio: GPIO[25]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1034) gpio: GPIO[34]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1043) gpio: GPIO[35]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1053) gpio: GPIO[36]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1062) gpio: GPIO[39]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1072) sccb: pin_sda 26 pin_scl 27

I (1077) gpio: GPIO[32]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1225) camera: Detected OV2640 camera
I (1226) camera: Line width (for DMA): 6400 bytes
I (1226) camera: DMA buffer size: 3200, DMA buffers per line: 2
I (1231) camera: DMA buffer count: 8
I (1235) camera: DMA buffer total: 25600 bytes
I (1240) camera: Allocating DMA buffer #0, size=3200
I (1246) camera: Allocating DMA buffer #1, size=3200
I (1251) camera: Allocating DMA buffer #2, size=3200
I (1257) camera: Allocating DMA buffer #3, size=3200
I (1262) camera: Allocating DMA buffer #4, size=3200
I (1268) camera: Allocating DMA buffer #5, size=3200
I (1274) camera: Allocating DMA buffer #6, size=3200
I (1279) camera: Allocating DMA buffer #7, size=3200
E (2349) camera: Timeout waiting for VSYNC
E (2350) camera: Camera init failed with error 0x20003
Camera init failed with error 0x20003MEMORY Before Loop:
Heap summary for capabilities 0x00000004:
  At 0x3ffae6e0 len 6432 free 4 allocated 5912 min_free 4
    largest_free_block 0 alloc_blocks 34 free_blocks 0 total_blocks 34
  At 0x3ffb7b50 len 165040 free 4 allocated 162720 min_free 4
    largest_free_block 0 alloc_blocks 344 free_blocks 0 total_blocks 344
  At 0x3ffe0440 len 15072 free 4 allocated 14552 min_free 4
    largest_free_block 0 alloc_blocks 25 free_blocks 0 total_blocks 25
  At 0x3ffe4350 len 113840 free 40960 allocated 71736 min_free 29268
    largest_free_block 29696 alloc_blocks 68 free_blocks 3 total_blocks 71
  Totals:
    free 40972 allocated 254920 min_free 29280 largest_free_block 29696
WLAN S: 0, R: 0, E: 0, D: 0, % : 0 || FPS: 0, D: 0 || D: 0, E: 0
WLAN S: 0, R: 0, E: 0, D: 0, % : 0 || FPS: 0, D: 0 || D: 0, E: 0

while the PR author's orangepi branch works out of the box for my ESP32-CAM.

And also, how to use your project without WiFi? I was looking for a solution for fast video recording to an SD card, that's how I came upon this project and the fork. The video won't be streamed.
I tried to remove WiFi dependencies but there are toooo many here.
Would be nice to have a single flag to turn it on and off. Besides jamming my magnetic sensors with RF signals, wifi usage cuts down the available RAM significantly, not to mention the flash size.

@Ncerzzk thanks for pinpoiting the relevant changes. I'll try to checkout these changes and see if I manage to run jeanlemotan's code with them.

also, if you want to use sd recording, you can simply set s_ground2air_config_packet. dvr_record = true

I know. But as I said, WiFi jams my magnetic sensor measurements if put in close proximity: the magnetic field measurement noise increase up to 2-3X times if WiFi is on! Even broadcasting ping packets... So I'd like to turn it off completely. This will also save the juice to spend CPU & DRAM resources on other tasks.

got it. in my orangepi3lts branch, I have do some cleanning up and move large part of wifi relation to wifi.c and wifi.h, but I have not tried to close wifi yet.
---Original---
From: "Danylo @.>
Date: Sun, Mar 5, 2023 14:21 PM
To: @.>;
Cc<EMAIL_ADDRESS>Subject: Re: [jeanlemotan/esp32-cam-fpv] make esp32-cam as submodule (PR #34)
@Ncerzzk thanks for pinpoiting the relevant changes. I'll try to checkout these changes and see if I manage to run jeanlemotan's code with them.
also, if you want to use sd recording, you can simply set s_ground2air_config_packet. dvr_record = true
I know. But as I said, WiFi jams my magnetic sensor measurements if put in close proximity: the magnetic field measurement noise increase up to 2-3X times if WiFi is on! Even broadcasting ping packets... So I'd like to turn it off completely. This will also save the juice to spend CPU & DRAM resources on other tasks.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

Thanks a lot for this PR. I will try this weekend to test it on my setup and merge it afterwards.
Sorry for the delays, I have very little time during the week to handle this.

Regarding disabling the wifi, this should be relatively easy to configure. I can add some defines to completely disable all the wifi functionality.

Regarding disabling the wifi, this should be relatively easy to configure. I can add some defines to completely disable all the wifi functionality.

That would be great, thanks.

But firstly I'd like to see Ncerzzk's changes he mentioned
        cam->dma_half_buffer_cnt = 4;
        cam->dma_node_buffer_size = cam->width * cam->dma_bytes_per_item > 2048 ? 2048 :cam->width * cam->dma_bytes_per_item;
        cam->dma_half_buffer_size = cam->dma_node_buffer_size * 2;

here. It's not straightforward and the diff is shown only partially.

Hi, these changes are done in https://github.com/Ncerzzk/esp32-camera/tree/for-esp-cam-fpv
because esp32-camera version is a bit different from main branch now use, it cannot directly be used in main branch.
while you can simplify set buf_size=2048, dma_desc_count=4, to reduce the dma buffer size in main branch.

Ah I see, so the changes come from Espressif's fork, not this repo.
Got it.

@Ncerzzk so I ran your code in https://github.com/Ncerzzk/esp32-camera/tree/for-esp-cam-fpv (take_picture example) and got
I (27) boot: ESP-IDF v5.0-159-g75c3a69feb-dirty 2nd stage bootloader
I (27) boot: compile time 10:06:38
I (27) boot: chip revision: v3.0
I (32) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (39) qio_mode: Enabling default flash chip QIO
I (44) boot.esp32: SPI Speed      : 80MHz
I (49) boot.esp32: SPI Mode       : QIO
I (53) boot.esp32: SPI Flash Size : 4MB
I (58) boot: Enabling RNG early entropy source...
I (63) boot: Partition Table:
I (67) boot: ## Label            Usage          Type ST Offset   Length
I (74) boot:  0 nvs              WiFi data        01 02 00011000 00006000
I (82) boot:  1 phy_init         RF data          01 01 00017000 00001000
I (89) boot:  2 factory          factory app      00 00 00020000 00100000
I (97) boot: End of partition table
I (101) boot_comm: chip revision: 3, min. application chip revision: 0
I (108) esp_image: segment 0: paddr=00020020 vaddr=3f400020 size=10b9ch ( 68508) map
I (136) esp_image: segment 1: paddr=00030bc4 vaddr=3ffb0000 size=03c78h ( 15480) load
I (141) esp_image: segment 2: paddr=00034844 vaddr=40080000 size=0b7d4h ( 47060) load
I (157) esp_image: segment 3: paddr=00040020 vaddr=400d0020 size=29a10h (170512) map
I (204) esp_image: segment 4: paddr=00069a38 vaddr=4008b7d4 size=07104h ( 28932) load
I (223) boot: Loaded app from partition at offset 0x20000
I (223) boot: Disabling RNG early entropy source...
I (235) quad_psram: This chip is ESP32-D0WD
I (235) esp_psram: Found 2MB PSRAM device
I (236) esp_psram: Speed: 80MHz
I (237) esp_psram: PSRAM initialized, cache is in low/high (2-core) mode.
I (244) cpu_start: Pro cpu up.
I (248) cpu_start: Starting app cpu, entry point is 0x400814b0
0x400814b0: call_start_cpu1 at /home/dizcza/tools/esp-idf/components/esp_system/port/cpu_start.c:142

I (241) cpu_start: App cpu up.
I (521) esp_psram: SPI SRAM memory test OK
I (529) cpu_start: Pro cpu start user code
I (529) cpu_start: cpu freq: 240000000 Hz
I (529) cpu_start: Application information:
I (532) cpu_start: Project name:     camera_example
I (537) cpu_start: App version:      1
I (542) cpu_start: Compile time:     Mar  8 2023 10:23:19
I (548) cpu_start: ELF file SHA256:  c42b1ee866f94101...
I (554) cpu_start: ESP-IDF:          v5.0-159-g75c3a69feb-dirty
I (561) heap_init: Initializing. RAM available for dynamic allocation:
I (568) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (574) heap_init: At 3FFB46F8 len 0002B908 (174 KiB): DRAM
I (580) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (586) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (593) heap_init: At 400928D8 len 0000D728 (53 KiB): IRAM
I (599) esp_psram: Adding pool of 2048K of PSRAM memory to heap allocator
I (607) spi_flash: detected chip: generic
I (611) spi_flash: flash io: qio
I (616) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (631) esp_psram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (640) gpio: GPIO[25]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:2
I (649) cam_hal: cam init ok
I (652) sccb: pin_sda 26 pin_scl 27
I (656) sccb: sccb_i2c_port=1

I (661) gpio: GPIO[32]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (700) camera: Detected camera at address=0x30
I (703) camera: Detected OV2640 camera
I (703) camera: Camera PID=0x26 VER=0x42 MIDL=0x7f MIDH=0xa2
I (785) esp32 ll_cam: node_size: 2560, nodes_per_line: 1, lines_per_node: 1, dma_half_buffer_min:  2560, dma_half_buffer: 15360,lines_per_half_buffer:  6, dma_buffer_size: 30720, image_size: 153600
I (792) cam_hal: buffer_size: 30720, half_buffer_size: 15360, node_buffer_size: 2560, node_cnt: 12, total_cnt: 10
I (803) cam_hal: Allocating 16 Byte frame buffer in PSRAM
I (809) cam_hal: cam config ok
I (884) example:take_picture: Taking picture...
Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.

Core  0 register dump:
PC      : 0x00000000  PS      : 0x00060e30  A0      : 0x8008e33c  A1      : 0x3ffc8810
A2      : 0x00000000  A3      : 0x00000000  A4      : 0x00000000  A5      : 0x00000000
A6      : 0x00000001  A7      : 0x00000000  A8      : 0x800db26a  A9      : 0x00007800
A10     : 0x3ffb8bf8  A11     : 0x3ffc0800  A12     : 0x00003c00  A13     : 0x00000000
A14     : 0x00000000  A15     : 0x3f80086c  SAR     : 0x0000000c  EXCCAUSE: 0x00000014
EXCVADDR: 0x00000000  LBEG    : 0x40088634  LEND    : 0x40088650  LCOUNT  : 0xffffffff
0x40088634: memcpy at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/machine/xtensa/memcpy.S:175

0x40088650: memcpy at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/machine/xtensa/memcpy.S:197

Backtrace: 0xfffffffd:0x3ffc8810 0x4008e339:0x3ffc8850
0x4008e339: vPortTaskWrapper at /home/dizcza/tools/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/port.c:151

although as I said the camera is detected in orangepi branch of this project.

@dizcza the for-esp-cam-fpv  branch is only target for wifi sending. the main hack is:
https://github.com/Ncerzzk/esp32-camera/commit/97173171f663d4363fe306c6e2689d91c2c9e7d1
this hack add a data_available_callback, and the data from camera will not be saved to frame buffer, so the example could not run.
you should handle data by yourself in data_available_callback.

All right, I did that:
#include <esp_log.h>
#include <esp_system.h>
#include <sys/param.h>
#include <string.h>

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_timer.h"
#include "esp_camera.h"
#include "bsp.h"
#include "sdcard.h"
#include "sdcard_record.h"

// support IDF 5.x
#ifndef portTICK_RATE_MS
#define portTICK_RATE_MS portTICK_PERIOD_MS
#endif

/* ESP32-CAM AITHINKER START */
#define CAM_PIN_PWDN 32
#define CAM_PIN_RESET -1 //software reset will be performed
#define CAM_PIN_XCLK 0
#define CAM_PIN_SIOD 26
#define CAM_PIN_SIOC 27

#define CAM_PIN_D7 35
#define CAM_PIN_D6 34
#define CAM_PIN_D5 39
#define CAM_PIN_D4 36
#define CAM_PIN_D3 21
#define CAM_PIN_D2 19
#define CAM_PIN_D1 18
#define CAM_PIN_D0 5
#define CAM_PIN_VSYNC 25
#define CAM_PIN_HREF 23
#define CAM_PIN_PCLK 22

static const char *TAG = "main";

size_t my_data_available_callback(void * cam_obj,const uint8_t* data, size_t count, bool last) {
    static FILE *f = NULL;
    static char fname[64];
    static uint32_t frame_id = 0;
    static uint8_t framebuffer_static[30 * 1024];

    const int64_t millis = esp_timer_get_time() / 1000;

    if (f == NULL) {
        snprintf(fname, sizeof(fname), "IMG-%06lu-%lld.JPEG", frame_id++, millis);
        f = sdcard_record_open_file_once_silent(fname, "w");
    }

    memcpy(framebuffer_static, data, count);
    fwrite(framebuffer_static, sizeof(uint8_t), count, f);

    if (frame_id % 10 == 0) {
        float fps = 1000.0 * frame_id / millis;
        ESP_LOGI(TAG, "FPS %.1f", fps);
    }

    if (last) {
        fclose(f);
        f = NULL;
        ESP_LOGI(TAG, "cb %zu bytes last", count);
    }

    return count;
}

static const camera_config_t camera_config = {
    .pin_pwdn = CAM_PIN_PWDN,
    .pin_reset = CAM_PIN_RESET,
    .pin_xclk = CAM_PIN_XCLK,
    .pin_sccb_sda = CAM_PIN_SIOD,
    .pin_sccb_scl = CAM_PIN_SIOC,

    .pin_d7 = CAM_PIN_D7,
    .pin_d6 = CAM_PIN_D6,
    .pin_d5 = CAM_PIN_D5,
    .pin_d4 = CAM_PIN_D4,
    .pin_d3 = CAM_PIN_D3,
    .pin_d2 = CAM_PIN_D2,
    .pin_d1 = CAM_PIN_D1,
    .pin_d0 = CAM_PIN_D0,
    .pin_vsync = CAM_PIN_VSYNC,
    .pin_href = CAM_PIN_HREF,
    .pin_pclk = CAM_PIN_PCLK,

    //XCLK 20MHz or 10MHz for OV2640 double FPS (Experimental)
    .xclk_freq_hz = 20000000,
    .ledc_timer = LEDC_TIMER_0,
    .ledc_channel = LEDC_CHANNEL_0,

    .pixel_format = PIXFORMAT_JPEG, //YUV422,GRAYSCALE,RGB565,JPEG
    .frame_size = FRAMESIZE_VGA,    //QQVGA-UXGA, For ESP32, do not use sizes above QVGA when not JPEG. The performance of the ESP32-S series has improved a lot, but JPEG mode always gives better frame rates.

    .jpeg_quality = 12, //0-63, for OV series camera sensors, lower number means higher quality
    .fb_count = 5,       //When jpeg mode is used, if fb_count more than one, the driver will work in continuous mode.
    .grab_mode = CAMERA_GRAB_WHEN_EMPTY,
    .data_available_callback = my_data_available_callback
};

static esp_err_t init_camera()
{
    //initialize the camera
    BSP_SOFTCHECK(esp_camera_init(&camera_config));
    return ESP_OK;
}

void app_main()
{
    sdcard_mount_mmc();
    sdcard_record_create_dir("esp32cam");
    sdcard_log_start();

    if (ESP_OK != init_camera()) {
        return;
    }
}

Logs:
I (1053) bsp: App version:   02137e0-dirty
I (1063) bsp: Compile time:  Mar  8 2023 10:57:23
I (1073) bsp: ESP-IDF:       v5.0-159-g75c3a69feb-dirty
I (1083) gpio: GPIO[25]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:2
I (1093) cam_hal: cam init ok
I (1103) sccb: pin_sda 26 pin_scl 27
I (1113) sccb: sccb_i2c_port=1

I (1123) gpio: GPIO[32]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1163) camera: Detected camera at address=0x30
I (1173) camera: Detected OV2640 camera
I (1243) camera: Camera PID=0x26 VER=0x42 MIDL=0x7f MIDH=0xa2
I (1333) cam_hal: buffer_size: 16384, half_buffer_size: 4096, node_buffer_size: 2048, node_cnt: 8, total_cnt: 15
I (1333) cam_hal: Allocating 16 Byte frame buffer in PSRAM
I (1343) cam_hal: Allocating 16 Byte frame buffer in PSRAM
I (1353) cam_hal: Allocating 16 Byte frame buffer in PSRAM
I (1363) cam_hal: Allocating 16 Byte frame buffer in PSRAM
I (1373) cam_hal: Allocating 16 Byte frame buffer in PSRAM
I (1373) cam_hal: cam config ok
I (107433) main: cb 4096 bytes last
I (150183) main: cb 4096 bytes last
I (150243) main: cb 4096 bytes last
I (157383) main: cb 4096 bytes last
I (189173) main: cb 4096 bytes last

But it's veeery slow compared to Espressif's solution. I also don't know whether the data buffer is in PSRAM or in static DRAM (if it's in PSRAM I need to make a local copy to speed it up). The FPS is <1. I also don't know whether the input data is raw bytes or in jpeg. I think it's raw bytes and I need to pipe them in a buffer, convert to JPEG on last received and save to the file.
An example is needed.

hmm, let's go back from the beginning.
If you just want to get picture and write to sd card, the origin master branch in esp32-camera is OK.
in origin esp32-camera, they save data into frame buffer from dma buffer at each dma recv interrupt. when the picture is finished, you can get data which contains the whole frame by api.
in this project or my  for-esp-cam-fpv branch, we don't need frame buffer, because we send the data to wifi/sd processes at each dma recv intterrupt.
come back to your code, if you still want to use the hacked esp32-camera:
as .pixel_format = PIXFORMAT_JPEG , so the data you get definitely is jpeg.
grab_mode please set to CAMERA_GRAB_LATEST
don't directly use memcpy when handle the data, because there are only 1 valid byte in 4 bytes. please refer how we did in camera_data_available or ll_cam_memcpy in esp32-camera
and data is dma buffer, and it's allocated in DRAM, not psram.
also, you should handle the start of jpeg(refer main.cpp) , or the data you write may not a valid jpeg.


Any idea when an official dotnet core compatible nuget package will be created?

it was already released ( before this questions was asked )


FilterChooser tweaks

Implement feedback added to https://github.com/xh/hoist-react/pull/2829:

Add option to sort field suggestions
Omit 'e.g.' prefix from field suggestions when in discover mode
Mute styling of 'e.g.' prefix

Hoist P/R Checklist
Pull request authors: Review and check off the below. Items that do not apply can also be
checked off to indicate they have been considered. If unclear if a step is relevant, please leave
unchecked and note in comments.

[x] Caught up with develop branch as of last change.
[x] Added CHANGELOG entry, or determined not required.
[x] Reviewed for breaking changes, added breaking-change label + CHANGELOG if so.
[x] Updated doc comments / prop-types, or determined not required.
[x] Reviewed and tested on Mobile, or determined not required.
[x] Created Toolbox branch / PR, or determined not required.

If your change is still a WIP, please use the "Create draft pull request" option in the split
button below to indicate it is not ready yet for a final review.

Pull request reviewers: when merging this P/R, please consider using a squash commit to
collapse multiple intermediate commits into a single commit representing the overall feature
change. This helps keep the commit log clean and easy to scan across releases. PRs containing a
single commit should be rebased when possible.

Thanks for this, Tom - nice additional improvements.
In particular, it feels worth it to alpha-sort the fields by default while still allowing a dev who really wants to think it through and specify fields in some business-aware priority order to keep that custom ordering.


Binary operator '<^>' cannot be applied to operands of type...

I really like Argo and try to use it with generic class. However something wrong...
There is my object and extension to Decodable:
public struct JSONDocumentOneObject<T> where T: Argo.Decodable {
  public let data: T
  public let meta: JSONDocumentMeta?
  public let paginationLinks: JSONDocumentLinks?
  public let included: JSONDocumentIncluded?
}

extension JSONDocumentOneObject: Argo.Decodable {
  public static func decode(_ json: JSON) -> Decoded<JSONDocumentOneObject> {
    let tmp = curry(JSONDocumentOneObject.init)
      <^> json <| "data"
      <*> json <|? "meta"
      <*> json <|? "links"

    return tmp
      <*> json <|? "included"
  }
}

And Xcode tell me:
Binary operator '<^>' cannot be applied to operands of type '(T) -> (JSONDocumentMeta?) -> (JSONDocumentLinks?) -> (JSONDocumentIncluded?) -> JSONDocumentOneObject<T>' and 'Decoded<_>'
How to solve the compiler error, really thank you...
Argo Version
Argo 4.1.2
Dependency Manager
Cocoapods

I find the solve in #377:
public struct JSONDocumentOneObject<T: Decodable> where T == T.DecodedType {
  public let data: T
  public let meta: JSONDocumentMeta?
  public let paginationLinks: JSONDocumentLinks?
  public let included: JSONDocumentIncluded?
}

extension JSONDocumentOneObject: Argo.Decodable {
  public static func decode(_ json: JSON) -> Decoded<JSONDocumentOneObject> {
    let tmp = curry(JSONDocumentOneObject.init)
      <^> json <| "data"
      <*> json <|? "meta"
      <*> json <|? "links"

    return tmp
      <*> json <|? "included"
  }
}

But I still do not understand the writing here:<T: Decodable> where T == T.DecodedType


No "Create Job" executed - Possible Race Condition

Describe the bug
Normally, Numaplane's e2e test passes, but this captures an instance in which it did not.
The sequence of events which Numaplane did:

Create ISBService
Create Pipeline
After Pipeline is running, update it in a trivial way that doesn't require pausing
After Pipeline is updated, pause it so it can be updated
Update Pipeline's topology from in->out  to  in->cat->out and keep its desiredPhase=Paused
Once topology change is reconciled, update desiredPhase=Running

Normally, this works fine. Normally step 5 causes a Creation Job and a Deletion Job:
{"level":"info","ts":"2024-09-23T20:08:28.842186617Z","logger":"numaflow.controller-manager","caller":"pipeline/controller.go:337","msg":"Created a job successfully for ISB creating","namespace":"numaplane-system","pipeline":"test-pipeline-rollout","buffers":["numaplane-system-test-pipeline-rollout-cat-0"],"buckets":["numaplane-system-test-pipeline-rollout-cat-out","numaplane-system-test-pipeline-rollout-in-cat"],"servingStreams":[]}
{"level":"info","ts":"2024-09-23T20:08:28.850466284Z","logger":"numaflow.controller-manager","caller":"pipeline/controller.go:356","msg":"Created ISB Svc deleting job successfully","namespace":"numaplane-system","pipeline":"test-pipeline-rollout","buffers":[],"buckets":["numaplane-system-test-pipeline-rollout-in-out"]}

(above is extracted from a good run)
However, in this run the Creation Job was not executed, which caused the Daemon Pods unable to get past the init container isbsvc-validatecheck for buffers and buckets.
** What I suspect **
In the log I see that the in Vertex was successfully updated, the cat vertex was created, but when the out vertex was supposed to be created, a Resource Version conflict occurred here. This may have happened prior to the Creation Job being created. This should cause Numaflow Controller to return and then re-reconcile idempotently.
However, note that the Creation Job is dependent on newBuffers and newBuckets, which is dependent on these Vertex values. In this bug, the in and cat Vertices were updated successfully on the previous reconciliation. So, the current state of the Vertex no longer reflects the new buffers and new buckets which need to be added.
I will add logs.
Environment (please complete the following information):

Numaflow: quay.io/numaio/numaflow-rc:v0.0.12

Message from the maintainers:
Impacted by this bug? Give it a 👍. We often sort issues this way to know what to prioritize.

For quick help and support, join our slack channel.

Here is the numaflow controller log. I added comments in there for when Numaplane paused the pipeline, and then where it updated the Pipeline's spec (scroll down to ~2024-09-23T04:51:07.9)
numaflow-controller.log

@KeranYang - do you want to take a look?

@KeranYang - do you want to take a look?

Let me know if you need more information. I've collected the Numaplane log if we need any other timestamp information. I also have the Numaflow log from a comparative good run.

@whynowy sure I will take a look. @juliev0 , I will look into it and we can sync up if I need more informations. Thanks!

@juliev0 , can we constantly re-produce this issue?

No, this is not easily reproducible at all. Most of the time it is successful. But I don't want there to be any occasional intermittent failures. For any occasional intermittent CI issue I see, our CI is now storing:

the numaflow log
the numaplane log
as of today, a "watch" on Pipeline resource as its spec/status change, with corresponding timelines.

Given that these race conditions are not easily reproducible, our plan will likely need to be studying of those artifacts to diagnose what happened.
Have you had a chance to look at my description under ** What I suspect **? I believe there is an issue in which the Vertex gets updated, we fail reconciliation due to Resource Version conflict error, and then re-reconcile, but at this point our Vertex is no longer the same as it was before, which means our Jobs are incorrect.

So we have it for later, I'm attaching the numaplane log:
numaplane-controller.log
I should've linked to the original Github action failure in this issue so we would have the test log as well. This one is not as easy for me to find.

@juliev0 Yes, please share the link to the action failure, just so I can download the numaflow controller logs. Thanks!

@juliev0 Yes, please share the link to the action failure, just so I can download the numaflow controller logs. Thanks!

Unfortunately, I can't easily find this. But I have attached the numaflow controller log itself.
I think I can completely see what happened here:
During 2nd reconciliation, the "in" vertex represents the new state, and the "cat" vertex exists now and represents the new state. The "out" vertex failed to get updated, so it represents the old state.
2nd reconciliation state:
old buffers: in, cat, out
new buffers: in, cat, out
Therefore, no new buffers to create.
old buckets:
according to "in" vertex:
in-cat
according to "cat" vertex:
in-cat
cat-out
according to "out" vertex:
in-out
Buckets according to "pipeline" definition should be: in-cat, cat-out
Therefore, we only need to delete in-out.
This is exactly what we see in the log. There was one Deletion Job for in-out and no Creation Job at all


Warn people about consequences when delete a participant

Some people might have already bought a present for their Secret Santa when the admin removes them from the party. Make sure the admin is clearly notified of the consequences it may cause and make sure the participant know the admin can still add or remove people.
Send a mail to the participants that were affected by deleting one. This way they know that things have changed and it makes sure that they know about their new Secret Santa.
Maybe add a deadline to adding/removing people, this way participants get the time to buy a present for the correct person, if they buy it after the deadline expired.

@tvlooy Moeten hier nog wijzigingen gebeuren, of kan deze gesloten worden?

nee, we pikken dit op via #207


Mixins

I really like this.

This is a very interesting idea, but clearly out of scope for Swift 3 at this point.  @DougGregor how would you like to handle this?

This is an interesting proposal that is out of scope for Swift 3. Please bring it up again when we start scoping the next major Swift release.

Would now be a good time?

Nope, it's been postponed to Swift 4 Phase 2 (another 6 months).

Ah okay, thanks for letting me know. :-)

@Anton3 Is there a summary somewhere of these details for features?

I thought this topic was mentioned specifically. It wasn't, but anyway it's
an additive proposal, and they are outside of Phase 1 scope. Read more here:
https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160725/025676.html
https://github.com/apple/swift-evolution

@Anton3 so 6 months ago you said:

Nope, it's been postponed to Swift 4 Phase 2 (another 6 months).

So uh, how's it going? Is there somewhere I can follow progress on this proposal? I really think that if this proposal would get accepted it would help to make everybody's code so much more modular.

@Evertt AFAIKS, there is no way such a new concept would fit even into Swift 4 Phase 2 scope. Apart from that, I see several issues with the proposal draft:

Unsolved problems. I know no language where problems with conflicts at mixin merging are solved cleanly. We should either research this brand new concept, or accept some limitations, with which we should live forever.
The proposal suggests a new monolithic concept, which is difficult to break into independent parts, such that every part brings some relief to the developers.
There is already a similar concept of protocols in the language. Protocols and mixins would have a lot in common, probably more than wanted.

One of the suggestions was to add mixins' features to protocols. But then we still need to talk about conflict resolution. I suggested an idea to provide some syntactic sugar to forward members of a property to the enclosing type. That way I hoped to avoid creating a new entity of mixins and to some extent avoid conflicts.

Unsolved problems. I know no language where problems with conflicts at mixin merging are solved cleanly. We should either research this brand new concept, or accept some limitations, with which we should live forever.

I thought that the conflict-resolution proposals that you and I and @HT154 talked about in this thread were actually getting pretty close, don't you think?

The proposal suggests a new monolithic concept, which is difficult to break into independent parts, such that every part brings some relief to the developers.

That's true. So you're saying the scope is just too big for where swift is focussing on right now?

There is already a similar concept of protocols in the language. Protocols and mixins would have a lot in common, probably more than wanted.

Also true, but I wouldn't want to say that that's a reason not to implement mixins. I believe mixins are way better than protocols in building your app from clean little blocks. Maybe I would rather have mixins + old-school interfaces than have protocols.

So uh, is the Swift team gonna do anything with this?

I can bring it up with the core team, but I strongly suspect that the addition of a new, top-level declaration kind that's a little like protocols and a little like classes is a non-starter: it's a lot of new surface area and complexity for a small improvement over existing facilities. If you feel strongly about this, the best way to start is to re-pitch on swift-evolution


Location Toggle Button UI Error

Describe the issue
Bug Grabber/Bug Sack is flying off the rails because of some sort of error with this.
Expected behaviour
Functionally, everything looks fine. I am able to click the button in the toolbar and it toggles as expected. But BugSack is insistent something is very, very wrong, to the point that it is bogging down the game.
Issue checklist
Please select any applicable options from the below list.

You can replace the "[ ]" with "[x]" for each option below to tick it.

[x] The issue occurs with the latest version of the addon.
[x] The issue occurs with Total RP 3 as the only enabled addon.
[ ] The issue occurs only with other addon(s) enabled (please provide a list).

Steps to reproduce
I just logged in with BugSack and Bug Grabber active.

Go to '...'
Click on '....'
Scroll down to '....'
See error

Additional files
Please attach any additional applicable files such as screenshots, error logs, or profile data files. Files can be dragged and dropped into this report to attach them for upload.

TRP3.txt

Hello there!
TRP does not actually maintain the code for the TRP3 Location Toggle addon.
That is done by another dev. It might be best to contact them on Curseforge or Github to update it.

Awesome!
And it hasn't been updated since 10.2.0 if anyone else reports that here.
Thank you for the fast response and enjoy the pre-patch!
On Wed, Jul 24, 2024 at 12:46 AM Raenore @.***> wrote:

Hello there!
TRP does not actually maintain the code for the TRP3 Location Toggle addon.
That is done by another dev. It might be best to contact them on
Curseforge https://www.curseforge.com/wow/addons/trp3-location-toggle
or Github https://github.com/reed216/TRP3-Location-Toggle to update it.
—
Reply to this email directly, view it on GitHub
https://github.com/Total-RP/Total-RP-3/issues/1094#issuecomment-2246859023,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AR3YIACYXLJKJY43FCKNPALZN4WRNAVCNFSM6AAAAABLLVJICGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBWHA2TSMBSGM
.
You are receiving this because you authored the thread.Message ID:
@.***>


feature request: shortcut markup for  elements

Currently the experience of writing  elements and nested  elements for keystrokes when documenting key bindings are causing headaches.
Can we introduce some of the currently using markup for  and port them into markdown-it by looking up the rehype, remark and micromark communities?

This would be great, since when trying to use markdown-it-kbd and bi-directional-links at the same time - the latter starts cluttering the log with attempts to parse  as bi-directional syntax.

[!NOTE]
In Nolebase, I directly use command + space markup along with the CSS styles I manually tweaked for VitePress to make it possible to attach icons and logos for the keys.

These are the known markups I know for sure to look into:

remark-kbd - npm
twardoch/remark-kbd-plus: Plugin for remark to allow ++Cmd++ -> Cmd
remark-extensions/packages/remark-kbd-nested at main · shivjm/remark-extensions


SQL server compatibility

Hi,
I would like to get R2RML Parser working with SQL Server. You've already explained how to modify sources:
"""

Change function findDatabaseType in gr.seab.r2rml.beans.UtilImpl to not exit when the database type is unknown:
Replace:
System.exit(1);
with e.g.
return DatabaseType.ORACLE;

Set the correct values in db.url, db.login, db.password, and db.driver in r2rml.properties

You will need a JDBC driver for SQL Server though. Place the jar in the lib folder.

You will have to replace table mappings into SQL queries. Instead of having for instance:
rr:logicalTable [ rr:tableName '"mytable"'; ];
you will have to change it to e.g.:
rr:logicalTable [ rr:sqlQuery """SELECT * FROM mytable"""; ];

The difference among the various databases is in retrieving the table columns (see Parser.java, lines 635-641). If you do not have rr:tableName mappings in your R2RML file and have rr:sqlQuery instead, I believe you will not have a problem.
"""
After these changes, I would like to know how to compile properly sources in order to get the same configuration as the latest release (https://github.com/nkons/r2rml-parser/releases).
Thank you in advance,
Martin

Hi Martin,

First, you would have to install git and a git client locally (either https://windows.github.com/ or one of the many free available).

Then, as an IDE, I would recommend Eclipse. It also has a git client, you could use this one as well. Conveniently, it also has an embedded Maven runtime.

You will also need to install a Java JDK locally (a JDK, not a JRE).

Then, you will have to clone the repository locally (git clone).

Import the project into Eclipse (File -> Import -> Existing Maven projects)

Run the project using mvn package: Right click on project head -> Run as -> Maven build... -> package (in the Goals textbox). Once this finishes, the folder "target" will contain your version of the tool, which you will be able to execute via the command line. Alternatively, you can run the project from within Eclipse by right clicking on Main.java -> Run as -> Java application.

I hope this helps.
Before starting development, please note that you will need to be somewhat familiar with java development, maven (and git), so you might want to refresh on these a bit.
Now, to come to the actual problem: I couldn't find a "free" version of a jdbc driver for SQL server. If you could point me to one to include as a maven dependency, I could include it in the parser.

Hi Nikos,
thank you for instructions to compile the project!
Petr

Hi,
you can use the following jdbc driver for SQL Server:
		<dependency>
		    <groupId>com.microsoft.sqlserver</groupId>
		    <artifactId>mssql-jdbc</artifactId>
		    <version>6.4.0.jre8</version>
		</dependency>

Check the support matrix here to see which version you need.
with database connectivity as following:
# MSSQL example
db.url=jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;databaseName=yourdbname
db.login=yourlogin
db.password=yourpassword
db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

Some things to take into account that did the trick for me:

Make sure the SQL Server Browser windows service is running
Open SQL Server Configuration Manager and go to Protocols for SQLEXPRESS under SQL Server Network Configuration. Right-click on TCP/IP and choose Properties. Set Enabled = YES.
While you're there, click on IP Addresses tab and find the section IP All. Set TCP Port to 1433.
Make sure to change server authentication from Windows Authentication mode to SQL SERVER and Windows Authentication mode (mixed mode) in SQL Management Studio
Make sure to change Permissions for the Login Account you would like to grant permission to in SQL Management Studio


Dependency incorrect in README.md

the README.md file has a extra character in dependency.

Thank you,for your  comment, i fixed it .


deleted extraneous commented out code

Resolves #477
Impact: minor
Type: chore

Component
Description of the issue this component this PR adds. Also include, as necessary:

Any other components this component requires
Any NPM dependencies added

Screenshots
Include mobile and desktop screenshots.
Breaking changes
You should almost never include "BREAKING CHANGES" because we’re duplicating components to avoid that. Consult with others before doing it.
Testing

List the steps needed for testing your change in this section.
Assume that testers already know how to start the app, and do the basic setup tasks.
Be detailed enough that someone can work through it without being too granular

More detail for what each of these sections should include are available in our Contributing Docs

🚀 Preview deployed
Built with commit 0130107ce03f9a2ce423c6937f9ea1f471e0fe3b
https://deploy-preview-480--stoic-hodgkin-c0179e.netlify.com

@gizmoGremlin To pass DCO check, you need to use --signoff option on every git commit in your branch. If you check out this branch and run the following, I think that should fix this PR:
git reset --soft HEAD~5
git commit --signoff -m "chore: delete extra comment in Address.js"
git push --force


Rakudo upgrade impossible

Hi,
I tried to upgrade my Rakudo* install, but got the following error on the HTTP server:
500 - Server Error

This shouldn't happen. Please report this problem, explaining what you were trying to do when it occured.
Backup-server running

Currently, rakudo.org is being served off of a fall-back server because the network the original server is on is unreachable.

We expect the original server to be available again on the 22nd or 23rd of april 2019.

It is very possible that you're getting the 404 error because the fall-back server is not set up like the original server.

Cheers,
Laurent R. (laurent.rosenfeld@googlemail.com).

Assuming this was a transitory error, closing ticket. Thanks for the report.


Added explicit image import to sample; adapted code to match recent version.

The code in the binder sample which was using the image crate was not working anymore, since the API changed. I added an explicit dep statement and fixed the code according to the current version.

Thanks for the fix!


[RSR-886]: LDEPF service uses the XML settings file

User Story
As we've moved to using XML settings file, this issue represents an upgrade for the LDEPF service to use XML structure as an alternative to CSV files.

Related to https://github.com/com-pas/compas-sct/issues/256

XSD_LDEPF_Config_file_v2.zip
Hi, here is the related XSD file.


typo in DaskScikitLearnBase and confusion regarding sample_weight

There is some confusion in naming.  non-Dask-API uses "sample_weight" but Dask uses "sample_weights" even while the code docs for Dask show "sample_weight" like non-Dask case.
class DaskScikitLearnBase(XGBModel):
    '''Base class for implementing scikit-learn interface with Dask'''

    _client = None

    # pylint: disable=arguments-differ
    def fit(self, X, y,
            sample_weights=None,
            eval_set=None,
            sample_weight_eval_set=None,
            verbose=True):
        '''Fit the regressor.

        Parameters
        ----------
        X : array_like
            Feature matrix
        y : array_like
            Labels
        sample_weight : array_like
            instance weights
        eval_set : list, optional
            A list of (X, y) tuple pairs to use as validation sets, for which
            metrics will be computed.
            Validation metrics will help us track the performance of the model.
        sample_weight_eval_set : list, optional
            A list of the form [L_1, L_2, ..., L_n], where each L_i is a list
            of group weights on the i-th validation set.
        verbose : bool
            If `verbose` and an evaluation set is used, writes the evaluation
            metric measured on the validation set to stderr.'''
        raise NotImplementedError

In same file one also has:
sample_weights: list of arrays
        The weight vector for validation data.

As if it is a list of arrays, but what is the meaning of that?  I think it should be just like non-Dask case and be a single array.
Perhaps there is some confusion between the fact that the sample_weight for X,y is just 1 thing but the sample_weights for eval_set are for each eval_set provided.

A related confusion, is that the normal xgboost scikit-learn API is: https://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier.fit
So fit takes early_stopping_rounds, etc.
Is it correct that dask has no such option and so cannot do early stopping?  That would be a critical feature.
I understand the docs say dask has no callback testing: https://xgboost.readthedocs.io/en/latest/tutorials/dask.html#limitations
But does this mean no eval_metric or early stopping is possible?
Are we supposed to use dask for distributed multi-GPU xgboost training?  Or is it all deprecated and one can just pass dask_cudf into normal model.
Also, in general, it seems like API overhead to maintain separate APIs for dask and non-dask.  You know if the frame incoming is dask_cudf, dask, or not.  So you should be able to use a single API.  This would make using it alot easier.

@pseudotensor The early stopping support for the Dask API is currently in progress. We had to redesign the callback mechanism to accommodate the Dask AI (#6199).

Hmm, this suggests it's optional:
https://github.com/dmlc/xgboost/blob/master/demo/dask/sklearn_gpu_training.py#L22

@pseudotensor The early stopping support for the Dask API is currently in progress. We had to redesign the callback mechanism to accommodate the Dask AI (#6199).

it seems like API overhead to maintain separate APIs for dask and non-dask. You know if the frame incoming is dask_cudf, dask, or not. So you should be able to use a single API. This would make using it alot easier.

Not quite, since the user has to pass in the Dask client object into the Dask API. This is because the user has a wide latitude in configuring a Dask cluster.

I would still say that a single API and just calling model.fit() model.predict() no matter which is highly beneficial.  If "client" must be passed, it can be an extra optional kwarg (default None) that is asserted on in case dask frame is passed.

@pseudotensor The early stopping support for the Dask API is currently in progress. We had to redesign the callback mechanism to accommodate the Dask AI (#6199).

That's great.  I see it's merged, so will be in 130?

@pseudotensor So DaskXGBRegressor can automatically fetch get_client() from Dask.distributed, if no client is given by the user.
In general, I agree that users should be able to use DaskXGBRegressor just like XGBRegressor. Any major API mismatch should be avoided.

That's great. I see it's merged, so will be in 130?

Yes, we aim to have a working callback mechanism for Dask in 1.3.0 release.

@pseudotensor So DaskXGBRegressor can automatically fetch get_client() from Dask.distributed, if no client is given by the user.
In general, I agree that users should be able to use DaskXGBRegressor just like XGBRegressor. Any major API mismatch should be avoided.

That's great. I see it's merged, so will be in 130?

Yes, we aim to have a working callback mechanism for Dask in 1.3.0 release.

Ya, and I mean even further there really only needs to be XGBRegressor/XGBClassifier.  I can't see why need dask specialized versions.  From usability perspective it's extra confusion.

(For context the original "sample_weight(s)" issue is still there.

We can consider merging DaskXGBRegressor with XGBRegressor once we have feature parity between the two. Dask API must support the callback mechanism first, and that's currently in progress.

Assigning myself to this issue, to address any mismatch in DaskXGBRegressor and XGBRegressor API.

Thanks.  I'm not even sure things function as they are.  At least something like pycharm does not like me passing sample_weights, probably because one of the base classes uses sample_weight.  There is no way to get pycharm to like it, plural or not.

@hcho3 BTW, a reason why it's not a good idea to have the model accept "client" is because "client" is not serializable.  So this will break anything that relied upon pickle.  So using the context manager way as above or lazy getter from dask is probably best.

For the skl interface, accepting an optional client parameter might be necessary, as the client object carries out most of the async switches.  If a wrong client returned by get_client the rest will be completely broken.

The typo however, should be fixed. @hcho3 I will submit a PR for that after getting around the overflow issue.

@trivialfis What should we do about client not being serializable?

If "client" must be passed, it can be an extra optional kwarg (default None) that is asserted on in case dask frame is passed.

I tried that before having the current interface and went through some discussions.  The result is not possible at the moment.  But I agree that's something we can work toward in the future.  An unified interface with different backends.  Right now getting dask interface to have feature parity with single node would be a priority, sorry the for the inconvenience.

What should we do about client not being serializable?

Use train and predict function. Or
Don't set the optional client object for skl interface when not needed. Or
Use get_booster to obtain the real model. Or
Set it to None before serialization. Or


Tensorboard server freezing

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 16.04.4 LTS (Xenial Xerus) Linux a1006d7babbc 4.15.0-1037-azure #39-Ubuntu SMP Tue Jan 15 10:24:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
TensorFlow installed from (source or binary): Docker base image tensorflow/tensorflow:1.9.0-py3
TensorFlow version (use command below): 1.9.0
Python version: 3.5.2
CUDA/cuDNN version: N/A
GPU model and memory: none

Describe the current behavior
After several hours of running Tensorboard server will stop responding to requests. It is running in a Docker container and has been put on its own VM after narrowing the problem down to Tensorboard. It will eventually cause a seizure of the VM itself, which will then have to be restarted.
WORTH NOTING: The Tensorboard logs are stored in Azure File Storage and mounted via CIFS. Then that mounted dir is mounted in Tensorboard Docker container using Docker volume mount. The Tensorboard log dir has ~460 subdirs and a total of ~45,000 event files amounting to about 100 MB. There is also a subdir of archived logs (i.e. in several dozen *.tgz files) amounting to 2 GB, but Tensorboard should in theory not be reading or messing with those huge files (right?).
Describe the expected behavior
Tensorboard should be able to run ad infinitum without seizing up its host.
Other info / logs
I know this is a nebulous ticket with many variables. Please let me know what information I can possibly provide, especially if you can direct me to install special debug versions, etc. as needed so I can collect logs from Tensorboard itself.

@evictor Correct. Tensorboard doesn't mess with those huge files, it only collect data from your TF model run. There could be several reason why Tensorboard is freezing.

Did you try the same model with smaller dataset? Is it working well without any freezing?
Is it possible for you to use current Tensorboard and Tensorflow versions instead of old versions? Newer versions are much better in handling many of the issue reported with old versions.
Is it possible for you to create a code to reproduce the bug? Just to make sure that there is no errors in selecting parameters of tensorboard ops.
Please let us know what you think.

Closing this out since I understand it to be resolved, but please let me know if I'm mistaken.Thanks!

I have performed the upgrades to latest versions re: your point #2. I will let you know if anything new comes up, thanks

Thanks @evictor. If you see the issue persists with the newer versions, we will open the issue and solve it. If you see any issue, please provide a code to reproduce the bug so that we can have solve the issue faster. Thanks again!

I have found evidence of OOM including in the updated versions... It eventually reaches ~8 GB.

@jvishnuvardhan this sounds like it belongs in the TensorBoard issue tracker.  Can we get a repo admin to transfer this to https://github.com/tensorflow/tensorboard?
@evictor is there any particular evidence you've found of the OOM, or anything you've been able to do to narrow down the problem?  We get reports of this sometimes but they've been hard to reproduce.  For recent versions of TensorBoard you should be able to pass --verbosity debug to get log output.

Thanks, I am now running with --verbosity 1. I found several of these in system serial log:
[246558.494090] Out of memory: Kill process 5165 (tensorboard) score 918 or sacrifice child
[246558.538030] Killed process 5165 (tensorboard) total-vm:9122176kB, anon-rss:7482400kB, file-rss:0kB, shmem-rss:0kB

I would like to reiterate that I have TB log dir set to an SMB (CIFS) mounted disk. I wonder if that has anything to do with a potential leak? Pure conjecture but maybe TB is attempting to read, acquire file lock, etc. and failing exceptionally if the CIFS mount is sporadically unreadable or lagging?
I also noticed that it sometimes has persistent locks on files/folders as I am unable to "archive" them (I zip them and store them elsewhere, then try to remove the folder with TB logs from mounted disk but it reveals a lock).


Suggest squash merge when merged main branch

Suggestion
Hello. If you open the main branch's command log now, you can see unnecessary merge commits mixed in.
These noise commits do not help make pretty commitments.
Why don't we force a square merge when we merge the main branch?
Image

I hadn't thought deeply about this issue. I think it would be good to proceed in the way you suggested
How about @shine1594 ?

@hg-pyun
Let's use square merge as the default


nimble_to_mano function can not generate hand pose in pca

Hi!
I try to use nimble as a differentiable layer to generate 3D hand model with Freihand dataset. I use the nimble_to_mano function as you kindly suggested in another issue to generate mano vertices from nimble vertices and use the mano joint regressor to obtain the joints from vertices in order to calculate 3D joint loss.
But I found that when I transform nimble to mano using nimble_to_mano function, the generated hand is not in PCA, whose pose is quite weird:
3D joints:

Project 3D joints to 2D:

Does the use_pose_pca=True still work when I transform nimble to mano using nimble_to_mano?

Here is my code to transform nimble to mano:
nlayer = NIMBLELayer(pm_dict, tex_dict, device, use_pose_pca=True, pose_ncomp=30, shape_ncomp=20, nimble_mano_vreg=nimble_mano_vreg)

skin_v, muscle_v, bone_v, bone_joints, tex_img = nlayer.forward(new_theta, new_beta, new_texture, handle_collision=False)

nimble_to_mano = nlayer.nimble_to_mano

nimble_mano_v = torch.div(nimble_to_mano(verts=skin_v), 1000).to(device) # scale to meter

th_J_regressor = torch.Tensor(np.array(self.smpl_data['J_regressor'].toarray())).to(device) # mano joint regressor
th_j = torch.matmul(th_J_regressor, nimble_mano_v) # get 16 joints
tips = nimble_mano_v[:, [745, 317, 444, 556, 673]] # get tips from mesh vertices

th_j = torch.cat([th_j, tips], 1)
th_j = th_j[:, [0, 13, 14, 15, 16, 1, 2, 3, 17, 4, 5, 6, 18, 10, 11, 12, 19, 7, 8, 9, 20]]  # reorder joints

# th_j is the final joint representation with shape [batch_size, 21, 3]

Thank you very much!

Maybe you can try setting is_surface to True, like this line.
nimble_to_mano computes mano vertices from nimble surface points, use_pose_pca=True shouldn't affect it.

Maybe you can try setting is_surface to True, like this line.
nimble_to_mano computes mano vertices from nimble surface points, use_pose_pca=True shouldn't affect it.

Thanks a lot!
I tried your suggestion and I found that maybe it is because of my training strategy. Using 3D joint normalized loss to train nimble_layer is better than using 3D joint loss.


[ERROR] rc2 cutoff convergence test

In order to help you with a problem, we need to know what happened.
Therefore, please provide the following:

[ ] I could not find a proper rc2 cutoff.
[ ] ~/software/tdep-main/bin/extract_forceconstants -rc2 6 --polar.

Hello, TDEP developer,
I'm calculating the phonon band of a polar material. I think the rc2 cutoff is a critical parameter. I use different -rc2 and extract the phonon. However, this convergence test looks so strange. The results are below：

In my view, the larger cutoff should give a good phonon, on the contrary. Note that my structure has 1024 atoms, and 50 structures in total.

@WenjiangZhou did you do DFT or use an interatomic potential?

@WenjiangZhou did you do DFT or use an interatomic potential?

I use DFT to train a potential, and obtain my temperature-dependence phonon based on this potential.

Please check that the realspace cutoff of the potential and make sure the TDEP cutoff is smaller. You are not fitting physical information beyond that cutoff, which explains the strange dispersions.

Please check that real space cutoff of the potential, and make sure the TDEP cutoff is smaller. You are not fitting physical information beyond that cutoff, which explains the strange dispersions.

OK, Thank you very much. My cutoff for the potential is 5 A. Mybe I think 5A gives a good phonon. Below is my phonon test for smaller cutoff.


DBZ-8077 Migrate Postgres testsuite to async engine

https://issues.redhat.com/browse/DBZ-8077

Needs #5726.

Fails in TimescaleDbDatabaseTest#shouldTransformCompressedChunks consistently, however, I cannot reproduce it locally. Needs more investigation.

@vjuranek Applied, thanks!


Improve test case for waypoint:Turn an Image into a Link

closes #4816

@gasperno verified and merged, thanks!


45 degree autonomous values from 11/16 test

Before issuing a pull request, please see the contributing page.

This update has been submitted by another account.


AutoBackupsContainPacks function

What is this supposed to do?

I set it to true thinking it would backup the custom resource packs installed in the world, but I don't see anything different in the ZIP file backup created via the scheduled task.

Indeed it should! I will check on this Thursday as well! IIRC, I started working on a way to differentiate between manually triggered backups and automated ones, and in doing so simply haven't referenced this yet. Hopefully Thursday leaves me with time to work on that some more!


add contributors field to package.json

I added a contributors field and added myself to it
Thanks for the opportunity to add myself as a contributor.
Does the npm package (https://www.npmjs.com/package/printlet) update itself after a while or is there a way to do it manually?

Perfect.
I will have to publish it to NPM manually.

I have now published version 0.5.0 with your fixes.


Update Project

In project if i used customer class in many place. And in future if i want to add new property age or another property . I should to update all called Customer constructor where i call it? Is it right ?
It is not so complex?
generally we do
Customer customer = new Customer();
customer.age=1;

But in cqrs should we do find wehere we used customer class and then add this property into constructor.In everywhere
new Customer(Guid id, string name, string email, DateTime birthDate, int age)

Hi!
The situation you encountered is not related to CQRS, but to DDD.
In DDD, the properties of an entity must be assigned only by constructor, and changed only by business methods.
Example:
https://github.com/rafaelfgx/DomainDrivenDesign


How do I integrate another service?

Hi
does not work $ws_worker->onConnect
my function dump_event only work
how can I combine both services $ws_worker = new Worker and $manager = new AGI_AsteriskManager();?
AGI_AsteriskManager() - I use to receive data from Asterisk.
ty
require_once 'vendor/autoload.php';
include('/var/lib/asterisk/agi-bin/phpagi.php');

use Workerman\Worker;

$users = [];
$ws_worker = new Worker("websocket://<IP_ADDRESS>:8010");
$ws_worker->onWorkerStart = function() use (&$users)
        {
                $manager = new AGI_AsteriskManager();
                $manager->connect();
                $manager->add_event_handler('*', 'dump_events');
                $manager->wait_response();
                $manager->disconnect();
        };

function dump_events($ecode,$data)
	{
          var_dump($data);
	};

$ws_worker->onConnect = function($connection) use (&$users)
{
        $connection->onWebSocketConnect = function($connection) use (&$users)
        {
	     $users[$_GET['user']] = $connection;
        };
};

$ws_worker->onClose = function($connection) use(&$users)
	{
	    $user = array_search($connection, $users);
	    unset($users[$user]);
	};

Worker::runAll();

script run result
Workerman[./server_test.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:3.5.19          PHP version:7.3.21
-------------------------------------------- WORKERS ---------------------------------------------
proto   user            worker          listen                      processes    status
tcp     root            none            websocket://<IP_ADDRESS>:8010    1             [OK]
Press Ctrl+C to stop. Start success.
object(stdClass)#12 (5) {
["Event"]=>
string(11) "FullyBooted"
["Privilege"]=>
string(10) "system,all"
["Uptime"]=>
string(7) "1619067"
["LastReload"]=>
string(6) "275143"
["Status"]=>
string(12) "Fully Booted"
}
Workerman[./server_test.php] connections
--------------------------------------------------------------------- WORKERMAN CONNECTION STATUS --------------------------------------------------------------------------------
PID      Worker          CID       Trans   Protocol        ipv4   ipv6   Recv-Q       Send-Q       Bytes-R      Bytes-W       Status         Local Address          Foreign Address

no connections

Because of AgI_Asteriskmanager blocking the process and the process unable to handle connection events.
Move AgI_Asteriskmanager to another process($manager) and when the process receive data from Asterisk then curl post it to the ws_worker with http protocol. Here is an example.
$users = [];
$manager = new Worker();
$manager->onWorkerStart = function() use (&$users)
        {
                $manager = new AGI_AsteriskManager();
                $manager->connect();
                $manager->add_event_handler('*', 'dump_events');
                $manager->wait_response();
                $manager->disconnect();
        };
function dump_events($ecode,$data)
{
    $ch = curl_init ();
    $post_data = ['ecode' => $ecode, 'data' => $data];
    curl_setopt ( $ch, CURLOPT_URL, 'http://<IP_ADDRESS>:8011');
    curl_setopt ( $ch, CURLOPT_POST, 1 );
    curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    $return = curl_exec ( $ch );
    curl_close ( $ch );
};
$ws_worker = new Worker("websocket://<IP_ADDRESS>:8010");
$ws_worker->onWorkerStart = function() use (&$users)
 {
        // Here an HTTP listener is enabled in the current process to receive data from $manager process.
        $http = new Worker('http://<IP_ADDRESS>:8011');
        $http->onMessage = function ($connection, $request) {
               $connection->send('ok');
               // Here get AGI_AsteriskManager ecode and data
               var_dump($request->post('ecode'), $request->post('data'));
        };
        $http->listen();
 };

$ws_worker->onConnect = function($connection) use (&$users)
{
        $connection->onWebSocketConnect = function($connection) use (&$users)
        {
	     $users[$_GET['user']] = $connection;
        };
};

$ws_worker->onClose = function($connection) use(&$users)
	{
	    $user = array_search($connection, $users);
	    unset($users[$user]);
	};

Worker::runAll();


New package: TREx v0.0.1

Registering package: TREx
Repository: https://github.com/meese-wj/TREx.jl
Created by: @meese-wj
Version: v0.0.1
Commit: 4496871c685e04484b910c2d25226511ec4a241b
Reviewed by: @meese-wj
Reference: https://github.com/meese-wj/TREx.jl/commit/4496871c685e04484b910c2d25226511ec4a241b#commitcomment-123662833
Description: A Julia package for simulating statistical mechanics with massively-parallel Monte Carlo methods.

This PR can be closed


:construction_worker: Add pip to dependabot config

Configures pip dependency management with dependabot
I've specified:
    schedule:
      interval: daily
    update-types:
      - "minor"
      - "major"
    commit-message:
      prefix: "chore(deps): "
    labels:
      - "dependencies"
      - "python"

Let me know if there are any desired changes.
update-types specifies to ignore patch releases, so it doesn't spam too much (and because ~ or ^ versioning already would include patch releases when lock file is updated)
Then, commit-message: prefix and labels is to match the existing dependabot PR style (which I assume is currently created manually)

Hi @ff137, We have one of our team members working on updating the dependabot configurations too.  See his preliminary work for aca-py here; https://github.com/rajpalc7/aries-cloudagent-python/pull/1/files

@WadeBarnes good stuff! Thanks, that one's much more comprehensive 👍


Deprecate old npm packages

The old npm packages:

https://www.npmjs.com/package/cicero-core
https://www.npmjs.com/package/cicero-cli
https://www.npmjs.com/package/cicero-engine
https://www.npmjs.com/package/cicero-server
https://www.npmjs.com/package/generator-cicero-template

should be deprecated and a notice added that references the new packages:

https://www.npmjs.com/package/@accordproject/cicero-core
https://www.npmjs.com/package/@accordproject/cicero-cli
https://www.npmjs.com/package/@accordproject/cicero-engine
https://www.npmjs.com/package/@accordproject/cicero-server
https://www.npmjs.com/package/@accordproject/generator-cicero-template

+1 We were running into the same issue. Some docs (Getting started tutorial) still suggest to do npm install -g cicero-cli instead of npm install -g @accordproject/cicero-cli.
Doing so and attempting to run "cicero parse" on one of the example templates, results in the error "/foo/cicero-template-library/src/helloworld" is not a valid cicero template. Make sure that package.json exists and that it has a engines.cicero entry.
This is quite misleading and took us a while to figure out that this was related to the incorrect version.
Also it should be pointed out, that it is necessary to install the exact version required by the template. In order to run the helloworld template we had to npm install -g<EMAIL_ADDRESS>

By the way, if the cicero-cli is not downwards compatible (Template with cicero version 0.4.4-0 can not be executed with cicero-cli 0.5.0), it should probably rather be template specific dependency instead of a global one.
Shouldnt the cli be version independent and just delegate to the cicero engine that a template depends on localy (in its package.json) ? This would feel like a cleaner and less confusing pattern to me. Or am I missing something?

Many thanks, @FelixKuehl, can you provide a link to the getting started tutorial that had the incorrect instruction, please? I'll make sure that it's updated.
Newer templates versions do include a semantic version which is checked by the template loader and you get a slightly better error message. The CLI does have a dependency on the cicero-engine version that matches, as you describe.
Unfortunately, the version tests are quite strict while we iterate towards a 1.0 release. i.e there are lots of changes that are not guaranteed to be backwards compatible. Generally, a minor version increment implies a breaking change for 0.x releases. From version 1.0 onwards we plan to adopt the following principle:

MAJOR version when we make incompatible API changes,
MINOR version when we add functionality in a backwards-compatible manner, and
PATCH version when we make backwards-compatible bug fixes.

This should make this issue less prevalent. This aligns with the Semantic Versioning system (https://semver.org/)
Unfortunately, it's not straightforward to delegate to the engine version that is specified by the template, as a template is not necessarily an npm package, even though it has a package.json! I'm open to suggestions on this.
The documentation could be clearer on these items, we'd be happy to accept a PR 😉 ?
The docs are at https://docs.accordproject.org, and built from the repo at https://github.com/accordproject/techdocs

Thanks @mttrbrts for clarification. I looked up the doc and it was actually not even explaining how to install the correct version of cicero-cli. Pull request is made: https://github.com/accordproject/techdocs/pull/10

Can we consider this closed?

Following up on this issue being closed @dselman @mttrbrts @jeromesimeon

Following up on this issue being closed @dselman @mttrbrts @jeromesimeon

The packages are owned by @dselman on NPMJS so I don't think it can be resolved by anyone else.
Sample commands for deprecating:
npm deprecate cicero-core "This package has been replaced by @accordproject/cicero-core"


I want to be able to easily retrieve the device's local image data and customize the rendering to the widget

When I was developing app, I sometimes wanted to get pictures of the device. Although the image_picker package in plugin was available, it couldn't make me customize the page, so it felt bad.
We want to have access to the device's local albums and images, so we can customize the page rendering and select the images ourselves.

As a workaround you could fork the plugin and replace the UI with your own.

I recently discorvered this
https://pub.dartlang.org/packages/photo#-readme-tab-
and this
https://pub.dartlang.org/packages/photo_manager
Hope it helps


Publish speclets, clean C# guide titles and title suffix metadata

Publish the two speclets that are available in preview (lock object, and and params collections).
In addition, clean up the title and title suffixes throughout the C# Guide.

Remove old title suffixes in individual articles. These included:

(C#)
C#
C# Programming Guide
C# [Rr]eference
"in C#"

Clean other titles so that C# appears only once in the final built pages.

Internal previews
Toggle expand/collapse

📄 File
🔗 Preview link

docs/csharp/advanced-topics/interface-implementation/default-interface-methods-versions.md
Tutorial: Update interfaces with default interface methods

docs/csharp/advanced-topics/interop/how-to-access-office-interop-objects.md
How to access Office interop objects

docs/csharp/advanced-topics/interop/how-to-use-named-and-optional-arguments-in-office-programming.md
"How to use named and optional arguments in Office programming"

docs/csharp/advanced-topics/interop/walkthrough-creating-and-using-dynamic-objects.md
Walkthrough: Creating and Using Dynamic Objects in C#

docs/csharp/advanced-topics/interop/walkthrough-office-programming.md
docs/csharp/advanced-topics/interop/walkthrough-office-programming

docs/csharp/advanced-topics/reflection-and-attributes/how-to-create-a-c-cpp-union-by-using-attributes.md
How to create a C/C++ union by using attributes in C#

docs/csharp/asynchronous-programming/async-scenarios.md
Asynchronous programming scenarios

docs/csharp/asynchronous-programming/index.md
Asynchronous programming with async and await

docs/csharp/asynchronous-programming/using-async-for-file-access.md
Asynchronous file access (C#)

docs/csharp/delegates-overview.md
docs/csharp/delegates-overview

docs/csharp/fundamentals/coding-style/coding-conventions.md
Common C# code conventions

docs/csharp/fundamentals/coding-style/identifier-names.md
"Identifier names - rules and conventions"

docs/csharp/fundamentals/exceptions/exception-handling.md
Exception Handling (C# Programming Guide)

docs/csharp/fundamentals/functional/pattern-matching.md
docs/csharp/fundamentals/functional/pattern-matching

docs/csharp/fundamentals/object-oriented/index.md
Overview of object oriented techniques in C#

docs/csharp/fundamentals/object-oriented/inheritance.md
Inheritance - derive types to create more specialized behavior

docs/csharp/fundamentals/program-structure/index.md
"General Structure of a Program"

docs/csharp/fundamentals/tutorials/classes.md
Explore object oriented programming with classes and objects

docs/csharp/fundamentals/tutorials/inheritance.md
docs/csharp/fundamentals/tutorials/inheritance

docs/csharp/fundamentals/tutorials/oop.md
Object-Oriented programming (C#)

docs/csharp/fundamentals/types/index.md
The C# type system

docs/csharp/fundamentals/types/records.md
"Record types"

docs/csharp/how-to/compare-strings.md
How to compare strings in C#

docs/csharp/how-to/concatenate-multiple-strings.md
How to concatenate multiple strings (C# Guide)

docs/csharp/how-to/index.md
docs/csharp/how-to/index

docs/csharp/how-to/modify-string-contents.md
How to modify string contents in C#

docs/csharp/how-to/parse-strings-using-split.md
How to separate strings using String.Split in C#

docs/csharp/how-to/search-strings.md
"How to search strings "

docs/csharp/language-reference/attributes/caller-information.md
Determine caller information using attributes interpreted by the C# compiler

docs/csharp/language-reference/attributes/general.md
docs/csharp/language-reference/attributes/general

Note
This table shows preview links for the 30 files with the most changes. For preview links for other files in this PR, select OpenPublishing.Build Details within checks.

@gewarren
This is ready for review. Most of the warnings will be fixed by dotnet/csharplang#8129.
I'm looking at the others to figure out why they appeared suddenly.


Handle edge cases needed to support mutation of inlined maps and arrays during iteration

Closes #355
Atree inlining supports mutation of inlined maps and arrays during iteration.  However, some mutations can trigger slab operations such as slab merging or slab splitting.
These edge cases need to be handled and tested in order to support mutation of values during iteration.
This improves atree inlining feature, which has not been deployed yet.

Closed by #359


Upgrade graph-learn version

What do these changes do?

Related issue number

Fixes #1497

Codecov Report

Merging #1516 (af05edb) into main (779c93d) will decrease coverage by 32.97%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #1516       +/-   ##
===========================================
- Coverage   73.59%   40.61%   -32.98%
===========================================
  Files          88       88
  Lines        9680     9680
===========================================
- Hits         7124     3932     -3192
- Misses       2556     5748     +3192

Impacted Files
Coverage Δ

python/graphscope/tests/unittest/test_java_app.py
0.00% <0.00%> (-100.00%)
:arrow_down:

...ython/graphscope/tests/unittest/test_cython_ast.py
0.00% <0.00%> (-100.00%)
:arrow_down:

...ython/graphscope/tests/unittest/test_serailaize.py
0.00% <0.00%> (-100.00%)
:arrow_down:

python/graphscope/analytical/udf/patch.py
3.47% <0.00%> (-96.53%)
:arrow_down:

python/graphscope/tests/unittest/test_lazy.py
0.00% <0.00%> (-96.30%)
:arrow_down:

...thon/graphscope/tests/unittest/test_scalability.py
0.00% <0.00%> (-96.16%)
:arrow_down:

python/graphscope/tests/unittest/test_app.py
0.00% <0.00%> (-95.66%)
:arrow_down:

...hon/graphscope/tests/unittest/test_create_graph.py
0.00% <0.00%> (-92.00%)
:arrow_down:

python/graphscope/tests/unittest/test_graph.py
0.00% <0.00%> (-84.93%)
:arrow_down:

python/graphscope/tests/unittest/test_context.py
0.00% <0.00%> (-81.04%)
:arrow_down:

... and 39 more

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 779c93d...af05edb. Read the comment docs.