Allow users to leave comments

This one requires a bit of thought about how to input the text using a textbox.

I'm going to take a shot at adding this feature.  I'm new to curses so this might take me a bit of time for learning so if anyone else already has curses experience and wants to take care of this just let me know so I don't continue working on it.  :)

Ohh I just started testing/implementing it...
Can I take care of it?
https://github.com/yskmt/rtv/commit/77c6d59ca02391edf939b7fa8c631e0dcfdc87c0

Yep no problem.

On Mar 12, 2015, at 18:48, Yusuke Sakamoto<EMAIL_ADDRESS>wrote:
Ohh I just started testing/implementing it...
Can I take care of it?
yskmt@77c6d59
—
Reply to this email directly or view it on GitHub.

OK I implemented add_comment function. Right now it's only good for a one-line comment, but I am thinking I should create a message box in the middle of screen for commenting. What do you think?
https://github.com/michael-lazar/rtv/compare/master...yskmt:post-comment
I am also trying to implement add_reply function too. It seems much more difficult because I need to specify the object that I want to reply to.

I would also try out splitting the screen in half and using the bottom half for the comment. That way you could get away with just a horizontal bar --------- instead of a full box outline. For add reply, I think you could just select whichever comment the cursor is focused on. Something like
content.get(cursor_position)['object'].add_reply()

Also, don't forget to check if the user is logged in before opening the textbox!

I added the reply functionality too. Press c on the submission page and you can post some comment or reply to a comment.
There are a lot of rooms for improvements, such as:

Better textbox for editing comment.
Error handling.
Prompt to log in if you are not.
Refresh the page and jump to your comment after you post it.

3 and 4 should be implemented in different functions though.

The comment box now occupies the bottom half of the terminal. However I found a bug in curses, in which I can only use overwrite-mode for textbox.
http://bugs.python.org/issue13051

curses is just full of fun surprises!

Merged in #38
The current textpad has the following limitations:

Can't resize the window while entering text
Can't type characters in insert mode (http://bugs.python.org/issue13051)
Text doesn't scroll up when you reach the end of the textpad.

In the future we may want to look into an alternate solution (not curses) to handle text input for comments.

How about using a temporary text file, and them opening it in your default editor ($EDITOR). The same way git does commit messages. This actually sounds decently easy to implement. And would allow the user to enter the text anyway they want.
Just a thought, might look into writing a pull request for it tomorrow. (I'm going to Boston, so it wouldn't be till late).

Go for it, I think its a cool idea!

I actually started writing some module that is intended to replace curses.textpad with more functionality such as page scrolling, loading text, refreshing on resize, etc. It is little buggy right now, but I'll let you know if it works out.
https://github.com/yskmt/texteditpad

@yskmt keep me updated on this!

@michael-lazar I might be late on this matter, but take a look on this pull request https://github.com/michael-lazar/rtv/pull/49


Wrap match-cases in parens

This fixes #584 and makes match a quite powerful pattern-matching tool.
Test included.
Compiles:
match 1, 3, 3
| 1, 1, 2 or 3 => ok 0
| 1, 2 or 3, 3 => ok 1
| _            => ok 0

To:
// Generated by LiveScript 1.4.0
(function(){
  var ref$;
  switch (ref$ = [1, 3, 3], false) {
  case !(1 === ref$[0] && 1 === ref$[1] && (2 === ref$[2] || 3 === ref$[2])):
    ok(0);
    break;
  case !(1 === ref$[0] && (2 === ref$[1] || 3 === ref$[1]) && 3 === ref$[2]):
    ok(1);
    break;
  default:
    ok(0);
  }
}).call(this);

Thanks.

:kissing:

I wanted to find another fix (changing LEVEL_PAREN below), but since I didn't figure out the problem offhand... Thanks! :)


gcp extra

Here it'd be better to raise an error that instruct users to install the gcp lamindb extra.

Unfortunately i don't think we can catch UPath errors like this.


cmd: add lsirqaff tool

import a slightly amended version of fromanirh/numalign/irqcheck
Signed-off-by: Francesco Romani<EMAIL_ADDRESS>

superseded by https://github.com/openshift-kni/debug-tools/pull/8

Let's continue (and I'll address the comment from @MarSik ) in https://github.com/openshift-kni/debug-tools/pull/8


Connection errors

This is the DB and display side of unitedstates/inspectors-general#291

Note that deploying will require deleting and re-creating the dashboard ES index.

Note that deploying will require deleting and re-creating the dashboard ES index.

:+1: for that.


Clarification on files in config_gan_train.yaml

Hi,
I am working on en2de data.
I have some questions regarding the gan train step:

What is the difference between train.src_path, train.dst_path and generator.src_path, generator.dst_path ?

and what is the size of discriminator.dis_positive_data, discriminator.dis_negative_data, discriminator.dis_source_data? is it the same file as in the discriminator pretraining (1 million sentences) or is it the whole data set this time (4.5 million)?

What is the variable that represents the λ variable in your paper?

when does the gan training stop? I didn't find an evaluation part in the gan training code.

Thanks!

There is no difference between the train.src_path and generator.src_path. Actually, they are not used at the same time. The former is used to pre-train the model and the latter is used to train the generator during the gan training.
The dis_positive_data and the dis_negative_data is generated automatically. In our experiments, it will includes 5000 sentence for training the discriminator during gan training.
the parameter  λ is not defined in the config file, just set in the model.py
We stop the training when the model achieves no improvement on the development sets. The process for the evaluating is the same with the testing. We didn't test the PPL score for evaluation.

Hi,
Thanks for the answer!
You said that the dis_positive_data and the dis_negative_data are generated automatically, but we need to generate it for the first iteration of the first epoch right?
Another question about the evaluation - did you use evaulate.sh for evaluation?
When did you evaluate bleu score on the dev set? every epoch?
Did you stop training when the model achieves no improvement for the tenth evaluation on the dev set or first evaluation or another number?
Thanks!

After the preprocessing you start training with GANs, do you use early stopping there as well (with patience 10?) or do you have another way to decide when to stop training? (similar to @zoharai's last question)

@zoharai @borgr  During the GAN training, you do not need to generate the dis_positive_data and dis_negative_data even for the first epoch. You can find the logic behind in the gan_train.py.  For the evaluation, we stop training when the model achieves no improvement for the tenth evaluation on the dev set, which has been clarified in our paper.  And we evaluate the model at regular intervals.

@zoharai @ZhenYangIACAS Sorry to bother both of you. I am still confused about the evaluation. I can't find it where it is used. Could help me ?


Sampling negative samples other classes only

Description
The original code will have a chance to sample negative samples from the same class of the anchors

Thank you @jonbakerfish ! This PR looks good to me.


Show why a process is in PENDING state

Feature Request
When a process perpetually remains in PENDING state, allow a way for the user to see why it is in pending state.
Use Case:
Let's say a process Foo depends_on on some state of 7 other process. If Foo is pending, how does the user know which of the 7 processes is causing it to be pending?
Right now they have to look at the YAML file (or the code that generates it) and do a O(n) scan for all those processes. This doesn't scale.
Proposed Change:
Add a keybinding, column or something that enables the user to instantly see which relationship is causing the PENDING state. For bonus points, allow navigating to the process in question.
Who Benefits From The Change(s)?
Everyone that uses non-trivial config.
Alternative Approaches

Hi @srid,
You can see the list of dependencies in the process info dialog (F3).

Ah, yes, thanks!

I'll close this issue. I do think it would be nice to show the 'current blocking process' directly in the UI; I'll think about this.


ipython notebook tutorial GCAL_Tutorial.ipynb issues

While waiting on the GUI issue to be resolved, I thought i try the notebook tutorials. When trying to run the GCAL_Tutorial.ipynb tutorial it runs into import issues. Is this tutorial supposed to run out of the box? Note i am using a git clone of topographica.
I tried:

without touching my PYTHONPATH running from the doc/Tutorials directory/
putting the topographica path in my PYTHONPATH - Then it cannot find 'param'
putting the externals paths in my PYTHONPATH - Still cannot find param...

It seems the modules definitions and paths are not defined and ipython cannot find them.

How are you running the notebooks? Topographica has a notebook command for the command line, which will set up the environment correctly. Try:
./topographica -n

Great thanks.
On Sep 29, 2015 9:46 AM, "Philipp Rudiger"<EMAIL_ADDRESS>wrote:

How are you running the notebooks? Topographica has a notebook command for
the command line, which will set up the environment correctly. Try:
./topographica -n
—
Reply to this email directly or view it on GitHub
https://github.com/ioam/topographica/issues/631#issuecomment-143920675.

All seems to work in tutorial until the command
topo.sim.Retina.input_generator.anim(50)
which fails with output:
KeyError
None
If i change the value 50 to anything other than 0, it produces same error. If use anim(0) i get a pattern displayed.

After further investigation, it seems the actual call to anim(50) is not the problem. So if I do:
myv = topo.sim.Retina.input_generator.anim(50)
I can examine myv and display all the maps one by one by typing myv[n]. But it seems displaying the lot by simply typing 'myv' is triggering the "KeyError \n None". Am I supposed to see a tiled view of the input patterns (0 to 50)?
BTW Other than that, all to seem to work ok in the tutorial.

I found out the issue and will file an issue with HoloViews. For now though you can remove the call to:
holoviews.archive.auto()

This call tries to archive all the plotted figures in the notebook and seems to be failing in this particular case.

Thanks Philipp. That seems to do the trick and now that tutorial can work and I can see the animation. Cool... I think the Notebook is a good approach, but it will require me to change my entire present work flow. Something I will invest in eventually, but first I need to work out ways to take advantage of GPUs in the settling sheets, so i am stuck with the inability to display projections in the GUI if I am to look at integrating the sparce/GPU work somehow.


A copy all button on each file

On each file there should be a copy button at the top so you don’t have to cmd + a, copy. Like a copy to clipboard button.

Hey,  is this file  handling the same thing ? But I couldn't find the copy implementation anywhere. Thanks :)


Replace youmubot-osu API implementation with rosu-v2

i.e. https://lib.rs/crates/rosu-v2, or the osu! v2 API.
We can also hand roll our own implementation of the API calls if needed (in the case that rosu-v2 is not updated frequently enough)

Done in #32


2605.5.0 building kernel modules doesn't work

Description
Broken makefile in build/ stops the ability to build modules which use --with-linux-obj=/usr/lib64/modules/5.4.66-flatcar/build.
See 2512.5.0 in /usr/lib64/modules/5.4.66-flatcar/build/Makefile vs 2605.5.0:
2512.5.0
# Automatically generated by ../source/scripts/mkmakefile: don't edit

VERSION = 4
PATCHLEVEL = 19

lastword = $(word $(words $(1)),$(1))
makedir := $(dir $(call lastword,$(MAKEFILE_LIST)))

ifeq ("$(origin V)", "command line")
VERBOSE := $(V)
endif
ifneq ($(VERBOSE),1)
Q := @
endif

MAKEARGS := -C ../source
MAKEARGS += O=$(if $(patsubst /%,,$(makedir)),$(CURDIR)/)$(patsubst %/,%,$(makedir))

MAKEFLAGS += --no-print-directory

.PHONY: __sub-make $(MAKECMDGOALS)

__sub-make:
	$(Q)$(MAKE) $(MAKEARGS) $(MAKECMDGOALS)

$(filter-out __sub-make, $(MAKECMDGOALS)): __sub-make
	@:

2605.5.0
# Automatically generated by /build/amd64-usr/var/tmp/portage/sys-kernel/coreos-modules-5.4.66/work/coreos-modules-5.4.66/source/scripts/mkmakefile: don't edit
include /build/amd64-usr/var/tmp/portage/sys-kernel/coreos-modules-5.4.66/work/coreos-modules-5.4.66/source/Makefile

/build/amd64-usr/var/tmp/portage/sys-kernel/coreos-modules-5.4.66/work/coreos-modules-5.4.66/source doesn't exist..
I was able to get builds working by changing the Makefile to use include /usr/lib64/modules/5.4.66-flatcar/source/Makefile
Impact
Can't build kernel modules
Environment and steps to reproduce

Set-up: wget both the 2605.5.0 and the 2512.5.0 developer developer containers, and try to compile a module which uses --with-linux-obj=...

Expected behavior
Worked previously

This is the solution I'm using
sed -i "s|/build/amd64-usr/var/tmp/portage/sys-kernel/coreos-modules-.*/work/coreos-modules-.*/source|/lib/modules/${KV}/source|g" /lib/modules/${KV}/build/Makefile

Where KV is the kernel version

This has been fixed with flatcar-linux/coreos-overlay#614, which will be included in the upcoming releases.

Looks like it was released on https://www.flatcar-linux.org/releases/#release-2605.6.0


napari hub preview tests are failing

The napari hub preview is failing in CI/CD. We'll need to fix this ahead of the 0.4.0 release.
Example of a failing run:
https://github.com/mehta-lab/recOrder/actions/runs/5662596981/job/15342834387#step:15:862

Submitted https://github.com/chanzuckerberg/napari-hub-preview-action/issues/10.

Submitted chanzuckerberg/napari-hub-preview-action#10.

Confirmed to be an upstream bug and a fix is underway.

Fixed upstream


Reduce scope of hidden non-Playing conditions to only Intro

Addresses #28. This also works with #35 .

Thanks 👍


Added downloading of speeches

Added basic functionality for downloading a speech.
Usage example:
# ID = some otter speech id
otter.download_speech(ID) # downloads ID.zip with all formats available for ID
otter.download_speech(ID, fileformat="pdf") # downloads ID.pdf
otter.download_speech(ID, fileformat="pdf", name="speech") # downloads ID pdf as speech.pdf

Had to make small edit to _handle_response, I think the code explains itself well but I'm also happy to answer questions!
:slightly_smiling_face:

@biosafetylvl5 Just to confirm, without this pr, the api is unable to download speeches?

@biosafetylvl5 Thanks for this PR. Will it be able to use this to download all the speeches? I have 1000s of conversations on Otter and I would like to export them.

@biosafetylvl5 Thanks for this PR. Will it be able to use this to download all the speeches? I have 1000s of conversations on Otter and I would like to export them.

Did you ever find a solution to your exporting issue? I am going to fork @biosafetylvl5 additions and begin to look into what it would take to add transcript exportation to the API. There is more than likely a reason @gmchad and @biosafetylvl5 did not implement it, and experience tells me it has a high probability of being more hassle than it is reasonably worth.

Did you ever find a solution to your exporting issue?

Yes, I can export, and I have downloaded thousands of notes from Otter. These downloads also contain the transcription.

Did you ever find a solution to your exporting issue?

Yes, I can export, and I have downloaded thousands of notes from Otter. These downloads also contain the transcription.

I just learned, myself, no less than 3 days ago, this pull request allows the downloading of transcripts. This is so awesome! @gmchad needs to merge it.

Tested it for a transcript, looks good. Sorry, this took so long to merge.

Thanks @gmchad, sorry to other folks for not responding.


Does setup.py really need argparse?

Python3 has argparse package built-in, so nothing needed from PIP. In fact, the latest version on PIP was 2015! Can it be removed from setup.py?

Hi!
Surely it's not needed there, seems it was put accidentally, but it shouldn't affect behaviour of the tool and installation process.
P.S.
I was writing the tool being a bachelor student..so, even while it works correctly there is a lot of strange solutions in it and it hardly can be called as optimised in any way 🥲
Best

The problem is PIP wants to install the old version of argparse, which will then take precedence over the modern version built into Python 3 today. I had to override PIP (pip install svist4get --no-deps).

I see, i will update it soon
Thanks


feat: change some styles in popover

Description

Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation
and context. List any dependencies that are required for this change
Links to Notion, Figma, Zeplin or any other documents that might be relevant to the PR

Add a TL;DR when description is extra long (helps content team)

Fixes # (issue)

if no issue exists, please create an issue and ask the maintainers about this first

Depends on # (pr)

every PR in the design-system repository should have a corresponding PR in the appsmith repository to ensure that changes
here don't break existing flows. Link the corresponding PR here to trigger dpulls and prevent accidental merging.
If relevant, link the enterprise PR here as well.

Type of change

Please delete options that are not relevant.

Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to not work as expected)
Chore (housekeeping or task changes that don't impact user perception)
This change requires a documentation update

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions, so we can reproduce.
Please also list any relevant details for your test configuration.
Delete anything that is not important

Manual on storybook
Manual on main repo
Jest
Cypress

Test Plan

Add Testsmith test cases links that relate to this PR

Issues raised during DP testing

Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)

Checklist:
Dev activity

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

QA activity:

[ ] Test plan has been approved by relevant developers
[ ] Test plan has been peer reviewed by QA
[ ] Cypress test cases have been added and approved by either SDET or manual QA
[ ] Organized project review call with relevant stakeholders after Round 1/2 of QA
[ ] Added Test Plan Approved label after reveiwing all Cypress test

This PR needs testing to

check if the width and max-height conform to zeplin
check if the shadow conforms to zeplin

As per the above design file:

Box shadow - Pass
Max Height - Pass
Width - Pass
Border - Inconsistent with the borders of other similar components in the same section (Entity Explorer). This is not what we had agreed upon in the technical grooming meeting.
Cc: @rohitagarwal88

@vasanthappsmith waiting on you to update the designs in zeplin and provide a list of components this has been changed in so that QA can test accurately. Alternatively, please let us know if design thinks it is a better idea to change all the popover borders to gray-300 instead. However, the impact of the latter change is greater and will have to be estimated separately.
cc @AbhaySM

/generate-alpha

Only Menu and Popover fall under the content category.
Updated Menu and Popover to Border Muted.
Menu : https://zpl.io/xmMY9Zk
Popover : https://zpl.io/KGmqBzP

@vasanthappsmith there is a discrepancy between Date picker & Date Range picker border color. Please update the correct color:

Cc: @rohitagarwal88 , @tanvibhakta , @albinAppsmith , @BharghaviK

In storybook tested container border of:

Date/Date range picker - Pass

Menu - Pass

Popover - Pass

Select - Pass

@shadabbuchh I made changes to this when we talked about it. I'm not certain why it was saved in its original form.t was saved in its original form.

Verified: Button parent dimensions

/generate-alpha

Button nesting has been removed

/generate-alpha

Verified the latest DP:
Button dimensions are correct now.


Log Analytics docs updates - 202408

More details about events with link to AS docs
New columns in execution metrics

@davidiseminger
Can you review the proposed changes?
Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Looks good to me.


Add mentors participation names in mentors list

To add hacktoberfest mentors list follow the below steps

Fork this repository.
Clone your forked repository to your local machine.

Will check hacktoberfest  profile

Hi, just to make sure what is considered a mentor in this context? :) Someone a person (hacktoberfest participant) can go to to get advice regarding hacktoberfest? :)


[CB-17504] add piping for options to skip being passed into datalakedr service from

cloudbreak

@yg-gd have you answered these questions? https://github.com/hortonworks/cloudbreak/pull/13042#pullrequestreview-1045448458
A more descriptive commit message would be helpful :) I mean I couldn't find out without looking at the code what is the intention of the pr, but maybe it's just me.

@lacikaaa I've added more details and the answers to these questions in the commit message


Patch the MD firmware to fix the SDS lockup bug?

I admit this is ambitious, but I've been looking for relevant materials for a while.
Most significantly: https://github.com/mamedev/mame/blob/master/src/mame/drivers/elektronmono.cpp
... documents the specs and address space layout for the coldfire m68k processor.
https://edgeemu.net/details-39651.htm
... provides decoded binary image of the firmware.
Now, IF the bootloader is separated from the actual firmware, we can simply hack the firmware image, re-encode sysex, and burn it in without worrying about bricking the device (just be careful about I/O).
Toolings:

gcc-m68k is good
needs better decompiler than just objdump, maybe: https://github.com/REDasmOrg/REDasm

I'll see if I can write a m68k extension for this.

Ghidra is the way to go: https://ghidra-sre.org/

Emulation environment

Get MAME: https://www.mamedev.org/

Unarchive it to, say: ~/mame/

Get MachineDrum firmware dump:

https://edgeemu.net/details-39651.htm
extract it to ~/mame/roms/machdrum/elektron_sps1-1uw_os1.63.bin

Open up a terminal. Navigate to ~/mame
./mame64 machdrum -debug
Get the guts of MD running as if in an IDE. 🚀

ColdFire internal modules mapping
How to interpret instructions like: move.l  D0, $300068.l
Search for $68 in the 5206e manual. It corresponds to an internal register, pretty much like the AVR PORTA DDRA stuff.

MBAR = 0x300000
MBAR + $64 CSAR0 16 Chip Select Address Register - Bank 0
MBAR + $68 CSMR0 32 Chip Select Mask Register - Bank 0
MBAR + $CA Pin Assignment register (PAR)
MBAR + $6E CSCR0 16 Chip Select Control Register - Bank 0
MBAR + $70 CSAR1 16 Chip Select Address Register - Bank 1
MBAR + $74 CSMR1 32 Chip Select Mask Register - Bank 1
MBAR +$7A CSCR1 16 Chip Select Control Register - Bank 1
MBAR + $7C CSAR2 16 Chip Select Address Register - Bank 2
MBAR + $80 CSMR2 32 Chip Select Mask Register - Bank 2
MBAR + $86 CSCR2 16 Chip Select Control Register - Bank 2
MBAR + $88 CSAR3 16 Chip Select Address Register - Bank 3
MBAR + $8C CSMR3 32 Chip Select Mask Register - Bank 3
MBAR + $92 CSCR3 16 Chip Select Control Register - Bank 3
MBAR + $A0 CSAR5 16 Chip Select Address Register - Bank 5
MBAR + $A4 CSMR5 32 Chip Select Mask Register - Bank 5
MBAR + $AA CSCR5 16 Chip Select Control Register - Bank 5
MBAR + $1C5 PPDDR 8 Port A Data Direction Register
MBAR + $1C9 PPDAT 8 Port A Data Register
MBAR + $C6 DMCR 16 Default Memory Control Register

UART stuff

UART1 UART2
MBAR+$140 MBAR+$180 Mode Register (UMR1, UMR2) Mode Register (UMR1, UMR2)
MBAR+$144 MBAR+$184 Status Register (USR) Clock-Select Register (UCSR)
MBAR+$148 MBAR+$188                                    Command Register (UCR)
MBAR+$14C MBAR+$18C Receiver Buffer (URB) Transmitter Buffer (UTB)
MBAR+$150 MBAR+$190 Input Port Change Register (UIPCR) Auxiliary Control Register (UACR)
MBAR+$154 MBAR+$194 Interrupt Status Register (UISR) Interrupt Mask Register (UIMR)
MBAR+$158 MBAR+$198 Baud Rate Generator Prescale MSB (UBG1) Baud Rate Generator Prescale MSB (UBG1)
MBAR+$15C MBAR+$19C Baud Rate Generator Prescale LSB (UBG2) Baud Rate Generator Prescale LSB (UBG2)
MBAR+$170 MBAR+$1B0 Interrupt Vector Register (UIVR) Interrupt Vector Register (UIVR)
MBAR+$174 MBAR+$1B4 Input Port Register (UIP)
DO NOT ACCESS 1
MBAR+$178 MBAR+$1B8
DO NOT ACCESS 1 Output Port Bit Set CMD (UOP1) 2
MBAR+$17C MBAR+$1BC
DO NOT ACCESS 1 Output Port Bit Reset CMD (UOP0) 2

The first 1MB is the firmware code section.
Chop it out:
dd if=elektron_sps1-1uw_os1.63.bin of=os_code.bin bs=1024 count=1024

Disassemble it -- when running as OS, the base address should be 0x10000000:
m68k-linux-gnu-objdump --adjust-vma 0x10000000 -b binary -mm68k:5206e -D os_code.bin

Note: better first find the entry point for the OS! The head of the firmware may be the bootloader!

Nice.
I was looking at the binary over the weekend (trying to find Elvis)
The bootloader text (hold function on power on) can be seen at 0x24EO

There's also another possibility of manipulating MDRAM in realtime by sending a corrupt Kit.
I'm guessing that the LFOD is not being ranged checked. So perhaps this is an entry point for manipulating certain memory addresses.

The bootloader text (hold function on power on) can be seen at 0x24EO

That sounds a little scary XD

There must be some kind of critical jump that switches from the bootloader to the OS.

@yatli you might find this interesting.
This time last year I had a brief correspondence with the author of the skeleton driver.
Yes, about 4 years ago we merged the MESS project (which was applying the MAME core emulation to non-arcade machines) into MAME itself and we'd already been working on various synths and drum machines, e.g. https://www.youtube.com/watch?v=ulQo5SjNTaQ&frags=pl%2Cwn .  Most recently we got ROMs for the Akai/Roger Linn MPC-3000, which for reasons we don't understand is also the sound section of the SNK Hyper NeoGeo-64 arcade system.

With regard to the Elektron and Access gear, most of the initial reverse engineering (including dumping the ROMs and extracting clean ROM dumps from the factory firmware downloads) was actually done by some folks at a Norwegian synth repair shop.  We do plan to continue the emulation, but we have limited resources in terms of people who can and want to work on emulating MIDI stuff.  This is part of why we've been so busy recently converting MAME from a macro jungle to mostly standard C++14; not only does that make tooling more able to work with the code, hopefully it reduces some of the difficulty of learning what's going on.```

FYI the instruction set manual:
CFPRM.pdf

which for reasons we don't understand is also the sound section of the SNK Hyper NeoGeo-64 arcade system.

pro gaming consoles.

0x1BEE starts to write commands to UART1.

I've got REDasm partially working with coldfire. Need a few more days to bring up the full functionality.

@jmamma A lot of auxiliary routines have been decoded.
The critical jump is located at 0x2110:

In summary, it jumps to the main memory start address 0x200000, after unpacking the firmware from 0x4000.
That's why the actual program is not immediately obvious to a disassembler.

The actual unpacking routine, located at 0x1c4:

undefined4 UNPACK_FIRMWARE(byte *src,byte *dst)

{
  uint uvar_D0;
  uint uVar1;
  uint uvar_D1;
  uint uvar_D4;
  int ivar_A0;
  byte *ptr_2;
  byte *ptr_1;

  src = src + 8;
  uvar_D1 = 0;
  uvar_D4 = 1;
  do {
    uvar_D1 = uvar_D1 * 2;
    if ((char)uvar_D1 == '\0') goto LAB_000002c8;
LAB_000001e2:
    ptr_1 = src;
    if ((uvar_D1 & 0x100) == 0) {
      do {
        ivar_A0 = 1;
        do {
          while( true ) {
            uvar_D1 = uvar_D1 * 2;
            if ((char)uvar_D1 == '\0') {
              ptr_2 = ptr_1 + 1;
              uvar_D1 = (uint)*ptr_1 * 2 + 1;
              uvar_D0 = (uint)*ptr_1 * 2 >> 8;
            }
            else {
              uvar_D0 = uvar_D1 >> 8 & 1;
              ptr_2 = ptr_1;
            }
            ivar_A0 = uvar_D0 + ivar_A0 * 2;
            uvar_D1 = uvar_D1 * 2;
            if ((char)uvar_D1 == '\0') break;
            ptr_1 = ptr_2;
            if ((((byte)(uvar_D1 >> 8) ^ 1) & 1) == 0) goto LAB_00000220;
          }
          ptr_1 = ptr_2 + 1;
          uvar_D1 = (uint)*ptr_2 * 2 + 1;
        } while ((((byte)(uvar_D1 >> 8) ^ 1) & 1) != 0);
LAB_00000220:
        if (ivar_A0 != 2) {
          ivar_A0 = ((uint)*ptr_1 - 0x300) + ivar_A0 * 0x100;
          if (ivar_A0 == -1) {
            return 0;
          }
          ptr_1 = ptr_1 + 1;
          uvar_D4 = ivar_A0 + 1;
        }
        uvar_D1 = uvar_D1 * 2;
        if ((char)uvar_D1 == '\0') {
          ptr_2 = ptr_1 + 1;
          uvar_D1 = (uint)*ptr_1 * 2 + 1;
          uvar_D0 = (uint)*ptr_1 * 2 >> 8;
        }
        else {
          uvar_D0 = uvar_D1 >> 8 & 1;
          ptr_2 = ptr_1;
        }
        uvar_D1 = uvar_D1 * 2;
        if ((char)uvar_D1 == '\0') {
          src = ptr_2 + 1;
          uvar_D1 = (uint)*ptr_2 * 2 + 1;
          uVar1 = (uint)*ptr_2 * 2 >> 8;
        }
        else {
          uVar1 = uvar_D1 >> 8 & 1;
          src = ptr_2;
        }
        ivar_A0 = uVar1 + uvar_D0 * 2;
        if (ivar_A0 == 0) {
          ivar_A0 = 1;
          do {
            while ((char)(uvar_D1 * 2) == '\0') {
              ptr_1 = src + 1;
              ivar_A0 = ((uint)*src * 2 >> 8) + ivar_A0 * 2;
              uvar_D1 = ((uint)*src * 2 + 1) * 2;
              src = ptr_1;
              if ((char)uvar_D1 != '\0') goto LAB_00000294;
LAB_00000328:
              src = ptr_1 + 1;
              uvar_D1 = (uint)*ptr_1 * 2 + 1;
              if ((((byte)(uvar_D1 >> 8) ^ 1) & 1) == 0) goto LAB_000002a2;
            }
            ivar_A0 = (uvar_D1 * 2 >> 8 & 1) + ivar_A0 * 2;
            uvar_D1 = uvar_D1 * 4;
            ptr_1 = src;
            if ((char)uvar_D1 == '\0') goto LAB_00000328;
LAB_00000294:
          } while ((((byte)(uvar_D1 >> 8) ^ 1) & 1) != 0);
LAB_000002a2:
          ivar_A0 = ivar_A0 + 2;
        }
        ptr_2 = dst + -uvar_D4;
        ivar_A0 = ivar_A0 - -(0xd00 < uvar_D4);
        *dst = *ptr_2;
        ptr_1 = dst + 1;
        do {
          ptr_2 = ptr_2 + 1;
          dst = ptr_1 + 1;
          *ptr_1 = *ptr_2;
          ivar_A0 = ivar_A0 + -1;
          ptr_1 = dst;
        } while (ivar_A0 != 0);
        uvar_D1 = uvar_D1 * 2;
        if ((char)uvar_D1 != '\0') goto LAB_000001e2;
LAB_000002c8:
        ptr_1 = src + 1;
        uvar_D1 = (uint)*src * 2 + 1;
        if ((char)((uint)*src * 2 >> 8) != '\0') break;
      } while( true );
    }
    src = ptr_1 + 1;
    *dst = *ptr_1;
    dst = dst + 1;
  } while( true );
}

@jmamma does that look like anything you know?
I'm at least sure about one thing, it takes data from src, and writes to dst.

I assume the DSP chips needed to be loaded up with code on boot.

Yep, done before the jump.

So you're trying to ascertain what all the code in the unpack routine is ?
The bottom half looks like it's detecting strings. shrugs

I'm trying to run this piece of code on the host machine and extract the actual OS.

With MAME I can run the code, but it doesn't have the correct address mapping, so no data written

Is it sample loading?

It's a general purpose unpack routine.
Example usage:
      iVar2 = UNPACK_FIRMWARE((byte *)&PTR_DAT_00004000,(byte *)0x200000);
      puVar5 = (undefined4 *)&DAT_01000000;
      if (iVar2 == 1) {
        PRINTLN("E: OS CHECKSUM\n");
        do {
                    /* WARNING: Do nothing block with infinite loop */
        } while( true );
      }
      do {
        puVar5 = puVar5 + 1;
        *puVar5 = 0;
        puVar5 = puVar5;
                    /* bzero internal SRAM 0-0x2000 */
      } while (puVar5 != (undefined4 *)0x1002000);
      goto 0x200000;

What do you mean
doesn't have the correct address mapping, so no data written
?

ah.
so the actual address mapping on MD goes like this:

Such assignment is completely missing from the emulator. The emulator thinks all the addresses map to the ROM (and we cannot write to the ROM at 0x200000)

Did you just answer your own question :D ?
How do you go about configuring the emulator to write to RAM.

Real OS image decode success. Size = 404766, checksum OK (0)

Adding the image to disassembly as an overlay, at 0x200000...

Excellent work.
When you have some time. Add to the documentation how you get the decompiler involved.

Sure :)
Funny thing is, the code doesn't run well on x64.
Have to compile it as 32-bit x86 so that the bit chewing magic could work.

can you dump the extracted rom here ? Want to take a quick look.

machdrum_os.zip

YES!!!!

You've made history.

what happened??

You uncovered Elvis.

nobody has a photo of him. until now.

!

this could be the greatest achievement of the decade 😂

When you first bring up the Elvis thing I thought 🤔 probably you're just joking...
Just dig out the backstory, whoops!

I guess we have a new sprite to add to MCL 2.50

2 frames. I think they're interlaced on display.
Text Should Read "THIS PIECE OF MACHINE IS OK"

#CASE_CLOSED

Is the DSP code unpacked ?
I wonder how easy it would be to disable 12bit emulation

They deliberately crip it down to 12bit??

I haven't unpacked DSP code. It's located somewhere else, and requires some register tampering

We can have a quick sync later today, I'll help to setup the environment for you.

thanks @yatli
It's late evening here. If you have time to document I can async catch up tomorrow during the day.

They deliberately crip it down to 12bit??

Yeah, it was a stylistic/marketing choice when the UW machines were released. Gritty 12bit samples were seen as desirable.
AFAIK the input's and outputs are 24bit, you can see the spec of the audio interface board in the MAME notes.
The sample space consumed is 16bit worth. So they're either truncating on save, or on the way out. Personally if I was coding it, I would just be applying a 12bit effect on the output. I think they also perform some light filtering/eq as well.

I know how to natively decode the firmware now.
Right before the emulator writes to ROM, redirect destination to 0x1000000 the internal RAM. It's always there.
The result: slight difference in decoded image...

Notice row 2, col 13-16, left: 0A2A right: 0D0A
..wat?

Oh well. Lost some of my instincts -- fwrite should be used with mode "wb".
Problem fixed.

Entering MD_MAIN

0722986d88e3ef7c609540cda9de141e0b49af88
😀

This MCL is O.K. Too ❤

I've sent you the invitation link to https://github.com/yatli/mdhack

Getting close:

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void SAMPLE_MGR(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  char *local_34;
  byte abStack29 [25];

  if (_DAT_0028b810 == 0) {
    return;
  }
  FUN_00210f84((int *)&DAT_002819f2,2,7,0x60,0x19,0);
  switch(DAT_0028b804) {
  case 0:
    FUN_0022e7e6();
    return;
  case 1:
    iVar3 = FUN_00211634((int *)&DAT_0025997c,-1,(byte *)s_RECEIVING_SAMPLE_0024756c);
    local_34 = s_RECEIVING_SAMPLE_0024756c;
    goto LAB_0022e90a;
  case 2:
    iVar3 = FUN_00211634((int *)&DAT_0025997c,-1,(byte *)s_CLEANING_0024757d);
    local_34 = s_CLEANING_0024757d;
    uVar5 = 0x13;
    break;
  case 3:
    iVar3 = FUN_00211634((int *)&DAT_0025997c,-1,(byte *)s_LOADING_SAMPLES_0024715f);
    local_34 = s_LOADING_SAMPLES_0024715f;
LAB_0022e90a:
    uVar5 = 0x13;
    break;
  case 4:
    iVar3 = FUN_00211634((int *)&DAT_0025997c,-1,(byte *)s_MEMORY_FULL_00247586);
    iVar4 = -iVar3 + 100;
    if (iVar4 < 0) {
      iVar4 = -iVar3 + 0x65;
    }
    FUN_00211384((int *)&DAT_0025997c,(int *)&DAT_002819f2,iVar4 >> 1,0x13,-1,
                 (byte *)s_MEMORY_FULL_00247586);
    iVar4 = FUN_00211634((int *)&DAT_0025997c,-1,(byte *)s_MAX_SIZE:_00247592);
    iVar3 = DAT_0029e9f0;
    iVar1 = FUN_0020f190();
    iVar2 = FUN_0020e164(DAT_0028b80c);
    iVar3 = ((iVar3 - iVar1) + iVar2) * 2;
    if (iVar3 < 1) {
      FUN_00211d46((char *)abStack29,&DAT_0024755b);
    }
    else {
      FUN_0022deca((char *)abStack29,iVar3);
    }
    iVar3 = FUN_00211634((int *)&DAT_0025997c,-1,abStack29);
    iVar1 = -(iVar4 + iVar3) + 100;
    if (iVar1 < 0) {
      iVar1 = -(iVar4 + iVar3) + 0x65;
    }
    FUN_00211384((int *)&DAT_0025997c,(int *)&DAT_002819f2,iVar1 >> 1,7,-1,
                 (byte *)s_MAX_SIZE:_00247592);
    iVar1 = (iVar4 - iVar3) + 100;
    if (iVar1 < 0) {
      iVar1 = (iVar4 - iVar3) + 0x65;
    }
    FUN_00211384((int *)&DAT_0025997c,(int *)&DAT_002819f2,iVar1 >> 1,7,-1,abStack29);
    return;
  case 5:
    iVar3 = FUN_00211634((int *)&DAT_0025997c,-1,(byte *)s_ERROR_00247022);
    iVar4 = -iVar3 + 100;
    if (iVar4 < 0) {
      iVar4 = -iVar3 + 0x65;
    }
    FUN_00211384((int *)&DAT_0025997c,(int *)&DAT_002819f2,iVar4 >> 1,0x13,-1,
                 (byte *)s_ERROR_00247022);
    if (DAT_0028b808 - 1U < 7) {
      switch(DAT_0028b808) {
      case 1:
        local_34 = s_WRONG_PACKET_002475da;
        break;
      default:
        local_34 = s_WRONG_CHECKSUM_002475a9;
        break;
      case 4:
        local_34 = s_INVALID_POSITION_002475b8;
        break;
      case 5:
        local_34 = s_BUFFER_FULL_0024759d;
        break;
      case 6:
        local_34 = s_FLASH_CONGESTION_002475c9;
        break;
      case 7:
        local_34 = s_INVALID_SMPL_RATE_002475e7;
      }
      FUN_00211d46((char *)abStack29,local_34);
    }
    else {
      FUN_00211d46((char *)abStack29,s_CODE:_%d_002475f9);
    }
    local_34 = (char *)abStack29;
    iVar3 = FUN_00211634((int *)&DAT_0025997c,-1,(byte *)local_34);
    uVar5 = 7;
    break;
  default:
    goto switchD_0022e88a_caseD_6;
  }
  iVar4 = -iVar3 + 100;
  if (iVar4 < 0) {
    iVar4 = -iVar3 + 0x65;
  }
  FUN_00211384((int *)&DAT_0025997c,(int *)&DAT_002819f2,iVar4 >> 1,uVar5,-1,(byte *)local_34);
switchD_0022e88a_caseD_6:
  return;
}

@yatli I would also like to be able to follow your project,
because I would like to learn, to know what tools you are using, and how to.
Thanks for this wonderful work to both of us.

@tomduncalf @TronicLabs please understand that we are still communicating with Elektron to see if we can open more information wrt the firmware.

@yatli no worries, I totally understand that it is a sensitive subject! Really cool that you were able to figure it out!

@yatli
no problem I understand, let's wait with confidence ...


INFLUX_HOST variable has no effect on the behaviour of the influx utility

I'm running influxdb-2.0.0-beta inside a Docker container. Therefore the database is accessed via http://influxdb:9999 not http://localhost:9999.
As per the docs, the variable INFLUX_HOST should be available to set the default host for the influx command.
However the value of this environment variable seems to have no effect on the behaviour of the influx command.
Steps to reproduce:
docker-compose.yml (probably not the cause of this bug, but I include it for completeness):
version: '3'
services:
  telegraf:
    image: telegraf:1.14.1
    volumes:
      - ./etc/telegraf.conf:/etc/telegraf/telegraf.conf:ro
    links:
      - influxdb
    ports:
      - "8092:8092/udp"
      - "8094:8094"
      - "8125:8125/udp"
  influxdb:
    image: quay.io/influxdb/influxdb:2.0.0-beta
    volumes:
      - ./data/influxdb:/var/lib/influxdb
    environment:
      INFLUXDB_UDP_ENABLED: "true"
    ports:
      - "9999:9999"
  influxdb-cli:
    image: quay.io/influxdb/influxdb:2.0.0-beta
    entrypoint:
      - /bin/bash
    links:
      - influxdb

$ docker-compose up -d
$ docker-compose run influxdb-cli
root@abb28ed7c66b:/# INFLUX_HOST=http://influxdb:9999
root@abb28ed7c66b:/# export INFLUX_HOST
root@abb28ed7c66b:/# influx setup
Error: failed to determine if instance has been configured: Get http://localhost:9999/api/v2/setup: dial tcp <IP_ADDRESS>:9999: connect: connection refused
See 'influx setup -h' for help

Expected behavior:
I would expect the value of INFLUX_HOST to be used when influx setup attempts to connect to the database, which would result in a successful connection attempt.
Actual behavior:
influx setup continues to use the default value http://localhost:9999, ignoring the value set by the INFLUX_HOST environment variable. The connection attempt fails because localhost is not the correct host name in this environment.
Environment info:
root@8524f9f092be:/# uname -srm
Linux 5.3.0-46-generic x86_64

root@8524f9f092be:/# influxd version
InfluxDB 2.0.0-beta.8 (git: 41a23242ea) build_date: 2020-04-21T05:01:12Z

$ docker --version
Docker version 18.09.7, build 2d0083d

Note that setting INFLUX_HOST in docker-compose.yml (which makes it set by default in the bash shell from which influx is run) also has no effect on the behaviour of influx.
Note also that specifying the host directly as influx --host=http://influxdb:9999 does operate correctly.

hi @DavidAntliff 👋,
Thanks for creating this issue, I hope I can be of service.  I'll get some eyes on this immediately and get back to you 👍.

hi @DavidAntliff, I was able to reproduce the issue and submit a fix. The corresponding PR should remedy the situation 👍. Thank you for reporting this. It is community members like you that elevate all our offerings here at Influxdata :-)


Enhancement/delete promotions

Covers all tests for the delete feature.

Oh also, please link the PR to the issue too for zenhub


Controller logic, profile editor, connection watcher, etc.

Pull Request Test Coverage Report for Build 61

74 of 169 (43.79%)  changed or added relevant lines in 14 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-8.8%) to 55.319%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/app/actions/message.actions.ts
3
4
75.0%

src/app/components/settings/settings.component.ts
6
7
85.71%

src/app/components/profile/profile.component.ts
2
4
50.0%

src/app/reducers/message.reducer.ts
0
2
0.0%

src/app/actions/watcher.actions.ts
12
16
75.0%

src/app/actions/profile.actions.ts
6
11
54.55%

src/app/components/watcher/watcher.component.ts
8
13
61.54%

src/app/actions/connection.actions.ts
12
18
66.67%

src/app/pipes/message.pipe.ts
6
13
46.15%

src/app/reducers/profile.reducer.ts
0
7
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/app/services/midi.service.ts
2
50.0%

Totals

Change from base Build 58:
-8.8%

Covered Lines:
218

Relevant Lines:
364

💛  - Coveralls


Release 0.3.2

Coverage remained the same at 73.079% when pulling e8fce8edc65962f790a4324670032158732debbd on rel_0_3_2 into 3c1ca50e44a6f696cb3637fa9c9421bf4816e0ad on master.

Coverage remained the same at 73.079% when pulling e8fce8edc65962f790a4324670032158732debbd on rel_0_3_2 into 3c1ca50e44a6f696cb3637fa9c9421bf4816e0ad on master.


Impossible to clone using an SSH key

I initially read this issue about supporting ssh keys (and added a comment on it).
The proposed solution is to add the ssh key to your secret keys, and then in your pipeline do so:
- mkdir /root/.ssh && echo "$SSH_KEY" > /root/.ssh/id_rsa && chomd 0600 /root/.ssh/id_rsa
This doesn't work for me. After investigating, here is what I tried:
I tried to output the key to check that it exists and was read right, this works
Then I tried to add a public key, using the same command, and here's where it gets weird: the public key never appears. I created a secret called ssh_key_pub, same way as I created my ssh_key secret.
Then I did
- echo "$SSH_KEY_PUB" > /root/.ssh/id_rsa.pub
- cat /root/.ssh/id_rsa.pub`

And if I use cat to check the file, it is empty, whereas this worked for the private key.
So first question: Why would the exact same method work for one secret and not the other? Note that I added the secrets in the web UI, as I can't find any documentation for the drone secret command that actually works.
Then, I tried just pasting the public key in my pipeline, and then it worked, I could see both keys correctly in the right files using cat, but git still refuses to pull:

npm ERR! Permission denied (publickey).
23s
32
npm ERR! fatal: Could not read from remote repository.
23s
33
npm ERR!
23s
34
npm ERR! Please make sure you have the correct access rights
23s
35
npm ERR! and the repository exists.
23s
36
npm ERR!
23s
37
npm ERR! exited with error code: 128

So I have no idea how I am actually supposed to get drone to actually properly use a set of SSH keys, because whatever I do, it never works.

It is very much possible to clone a repository using git+ssh. If you look at the build configuration for the official drone project you will see we use this exact feature without issue:
https://github.com/drone/drone/blob/782688872970bc7dea53f167ce4181458892369e/.drone.sh#L9:L17
Alternatively, you can use git+https instead of using ssh keys. Drone creates a netrc file with credentials that git will use to automatically authenticate http requests.
-git@github.com:npm/npm.git
+git+https://github.com/npm/npm.git

If you do not want to change your package.json file you can easily instruct git to globally override and replace git+ssh urls with git+https urls. You can use the below command as documented in this StackOverflow discussion.
git config --global url.https://github.com/.insteadOf<EMAIL_ADDRESS>
Per our issue template, please use our support channel for questions and support requests prior to creating github issues. Thanks


Add randomly generated Api end point for the Hello React front-end part

In this milestone. I have added the following:

[ ] Hello React Front-End
Create a new Rails API app called 'hello-rails-back-end'.
Initialize your project with Git.
Make sure that your project has a Postgres database set up.
Create a table for storing your messages and create 5 different greetings.
Create an API endpoint that selects a random greeting from your table (you will need a controller with an action and rails route).

Thanks @danmainah for your approval.


CI: add Node.js 15

Shamelessly based on this commit: https://github.com/lovell/sharp/commit/edf3fe24c97da74f6a9a29a09a267f9d49b06834

I guess it's still too early.
BTW I suggest giving github actions a try, should be much faster than Travis/AppVeyor.

Coverage remained the same at 100.0% when pulling 0988287debbd1df8f9c286a03bf6672889109952 on nstepien:patch-1 into fbe48d75ddf5c1148d4f6006c5269b20155a73ae on lovell:master.

Node.js 15 ships with npm v7, which now assumes the user permission of the working directory when running install scripts. This means we need to ensure the working directory is owned by root via sudo chown 0.0 ${PWD} - see https://github.com/lovell/sharp/commit/345b3748649b8727aebb250b8b9c59fe372f92a0 for an example of this.

This PR depends on this now: https://github.com/docker-library/official-images/pull/8924

@lovell Looks like we're good to go now, the FreeBSD CI is still failing, but it is failing on master as well so I guess it's expected.

Merci beaucoup!

Thanks! When can we expect v0.26.3 with the prebuilt binaries for Node 15?

The use of N-API means the existing binaries already work with Node.js 15.
$ nvm i 15
Downloading and installing node v15.0.1...
Downloading https://nodejs.org/dist/v15.0.1/node-v15.0.1-linux-x64.tar.xz...
######################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
now using node v15.0.1 (npm v7.0.3)

$ npm i sharp

added 71 packages, and audited 71 packages in 16s

6 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

$ node -p "require('sharp').format"
{
  jpeg: {
    id: 'jpeg',
    input: { file: true, buffer: true, stream: true },
    output: { file: true, buffer: true, stream: true }
  },
...

Mmh, unfortunately it's not working in our CI. Any idea why the prebuilt binaries might not be used?
C:\Jenkins\...>npm install
npm ERR! code 1
npm ERR! path C:\Jenkins\...\node_modules\sharp
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c "(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)"
npm ERR! info sharp Using cached C:\Windows\system32\config\systemprofile\AppData\Local\npm-cache\_libvips\libvips-8.10.0-win32-x64.tar.br
npm ERR! info sharp Creating C:\Jenkins\...\node_modules\sharp\build\Release
npm ERR! info sharp Copying DLLs from C:\Jenkins\...\node_modules\sharp\vendor\8.10.0\lib to C:\Jenkins\...\node_modules\sharp\build\Release
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using<EMAIL_ADDRESS>npm ERR! gyp info using<EMAIL_ADDRESS>| win32 | x64
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration
npm ERR! gyp ERR! find Python Python is not set from environment variable PYTHON
npm ERR! gyp ERR! find Python checking if "python3" can be used
npm ERR! gyp ERR! find Python - "python3" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if "python" can be used
npm ERR! gyp ERR! find Python - "python" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if "python2" can be used
npm ERR! gyp ERR! find Python - "python2" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if Python is C:\Python37\python.exe
npm ERR! gyp ERR! find Python - "C:\Python37\python.exe" could not be run
npm ERR! gyp ERR! find Python checking if Python is C:\Python27\python.exe
npm ERR! gyp ERR! find Python - "C:\Python27\python.exe" could not be run
npm ERR! gyp ERR! find Python checking if the py launcher can be used to find Python
npm ERR! gyp ERR! find Python - "py.exe" is not in PATH or produced an error
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python You need to install the latest version of Python.
npm ERR! gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
npm ERR! gyp ERR! find Python you can try one of the following options:
npm ERR! gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe"
npm ERR! gyp ERR! find Python   (accepted by both node-gyp and npm)
npm ERR! gyp ERR! find Python - Set the environment variable PYTHON
npm ERR! gyp ERR! find Python - Set the npm configuration variable python:
npm ERR! gyp ERR! find Python   npm config set python "C:\Path\To\python.exe"
npm ERR! gyp ERR! find Python For more information consult the documentation at:
npm ERR! gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Could not find any Python installation to use
npm ERR! gyp ERR! stack     at PythonFinder.fail (C:\ProgramData\nvm\v15.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:302:47)
npm ERR! gyp ERR! stack     at PythonFinder.runChecks (C:\ProgramData\nvm\v15.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:136:21)
npm ERR! gyp ERR! stack     at PythonFinder.<anonymous> (C:\ProgramData\nvm\v15.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:200:18)
npm ERR! gyp ERR! stack     at PythonFinder.execFileCallback (C:\ProgramData\nvm\v15.0.0\node_modules\npm\node_modules\node-gyp\lib\find-python.js:266:16)
npm ERR! gyp ERR! stack     at exithandler (node:child_process:316:5)
npm ERR! gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:328:5)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:327:20)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:275:12)
npm ERR! gyp ERR! stack     at onErrorNT (node:internal/child_process:465:16)
npm ERR! gyp ERR! stack     at processTicksAndRejections (node:internal/process/task_queues:80:21)
npm ERR! gyp ERR! System Windows_NT 10.0.14393
npm ERR! gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\ProgramData\\nvm\\v15.0.0\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd C:\Jenkins\...\node_modules\sharp
npm ERR! gyp ERR! node -v v15.0.0
npm ERR! gyp ERR! node-gyp -v v7.1.1
npm ERR! gyp ERR! not ok

Node.js 15 ships with npm v7, which now assumes the user permission of the working directory when running install scripts.

I suspect you've run into this breaking change of npm v7 - check the user permissions on all directories involved.

We've done some investigation, it seems like install/libvips.js works, but install/dll-copy.js fails silently. It does work when ran manually though.
https://ci.appveyor.com/project/lovell/sharp/builds/35915090/job/hudb6bnchusaicyg
https://ci.appveyor.com/project/lovell/sharp/builds/35915090/job/7lqf5ivbvwgp4vbp
It seems like the same thing happens in your own appveyor builds (see Copying DLLs from ...), except there you have the necessary build tools to make it work.
I don't understand why libvips.js works but dll-copy.js doesn't. Or is it an issue with prebuild-install?

npm v7 is far less verbose during installation - please can you trying adding a non-zero exit code here to see if it might be swallowing an error message:
diff --git a/install/dll-copy.js b/install/dll-copy.js
index 1e88b1d..0fcadda 100644
--- a/install/dll-copy.js
+++ b/install/dll-copy.js
@@ -33,5 +33,6 @@ if (platform === 'win32') {
       });
   } catch (err) {
     npmLog.error('sharp', err.message);
+    process.exit(1);
   }

I've been combing through Process Monitor-captured events captured while running npm install sharp, and it appears that dll-copy.js does in fact work -- i.e., the build\Release folder is getting created and populated -- but then prebuild-install is failing, and as a logical result, node-gyp rebuild is being invoked, which removes the just-created build\Release folder and its contents. With node-gyp then failing due to build tools we don't have present on our Jenkins agents (unlike AppVeyor), the overall install fails, as @nstepien reported.
I haven't figured out why prebuild-install is failing. I can see the parent process querying for and locating ...node_modules\.bin\prebuild-install.CMD as the executable to use, followed by what appears to be its execution. If I invoke it manually from ...node_modules\sharp (i.e., running ..\.bin\prebuild-install.cmd), I do indeed get an %ERRORLEVEL% of 1, as I also do if I invoke node ..\prebuild-install\bin.js from the same location (which is ultimately what the cmd file is doing).

Running ..\prebuild-install\bin.js through the debugger, this is where it exits:
 55 } else if (!(typeof pkg._from === 'string')) {
 56   log.info('install', 'installing standalone, skipping download.')
>57   process.exit(1)

Running the npm install sharp --loglevel verbose, I see the same thing:
425 error command C:\Windows\system32\cmd.exe /d /s /c "(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)"
426 error info sharp Using cached C:\Users\njones\AppData\Local\npm-cache\_libvips\libvips-8.10.0-win32-x64.tar.br
426 error info sharp Creating C:\Users\njones\rando\node_modules\sharp\build\Release
426 error info sharp Copying DLLs from C:\Users\njones\rando\node_modules\sharp\vendor\8.10.0\lib to C:\Users\njones\rando\node_modules\sharp\build\Release
426 error prebuild-install info begin Prebuild-install version 5.3.6
426 error prebuild-install info install installing standalone, skipping download.

Given that the install is running C:\Windows\system32\cmd.exe /d /s /c "(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)", that process.exit(1) from prebuild-install would lead to node-gyp rebuild being run (which also fails, as we lack Python, etc.), which then leads to the overall failure.
It looks like prebuild-install added npm 7 support in 6.0.0. I'll add PR.


App crash

App kept crashing when I activate microphone or camera on my Samsung Galaxy Note20 Ultra. Please let me know what info I can give. Thanks

Thanks for reporting the issue.
Can you please let me know the following details:

The App Version you are using
Your Android OS version

Also, can you try the new update that I have released yesterday. You can find it here : https://github.com/NitishGadangi/Privacy-Indicator-App/releases/tag/2.0

App Version: 2.0
Android OS Version: 11

Can you generate a Bug Report and share it here.
Here are the steps:

Make a crash
Soon after the crash generate the Bug report using the below instructions
https://support.getkeepsafe.com/hc/en-us/articles/360033924731-How-to-get-crash-logs-on-Android-

Have fixed this issue and made a new release.
Please find it here. https://github.com/NitishGadangi/Privacy-Indicator-App/releases/tag/2.1
Closing this issue for now. Feel free to open this again, if the issue still persists.


Fix tests on OS X (#43) and set up Travis CI

Fix breaking MacOS tests and set up Travis CI
This PR is going to be open for a bit while I make sure the build integration is working. I'll ping people when I'm ready for a review.

Phew, okay I have a working build for Python 3.6 and Python 3.7 on Ubuntu.
Adding MacOS builds looks difficult… to say the least. It looks like the Mac build VM wouldn't have Python3 installed and would need a custom install script to add it.
Windows pre-release support was announced yesterday. I know the genesis of this ticket was the failing tests on MacOS, but I'm wondering how much effort to put into running MacOS tests right now versus focusing on documentation and closing up open issues. Eventually Travis will make this multi-platform testing easier.
Thoughts?

I have experience with Python installs on OS X.  It's not difficult, but I don't think this PR should be blocked on it.  It's enough that I can run tests locally when developing changes.

on OS X, test run now hangs right from the start:
$ PYTHONPATH=. python3 -m pytest tests/
=============================== test session starts ================================
platform darwin -- Python 3.6.5, pytest-3.8.1, py-1.6.0, pluggy-0.7.1
rootdir: /Users/john/dev/trio/trio-websocket, inifile: pytest.ini
plugins: trio-0.5.0, pylint-0.12.3, faulthandler-1.5.0, cov-2.6.0
collected 21 items

tests/test_connection.py ...

Yeah, figuring out how to get Travis working from scratch is really painful. That's why I recommend stealing from those who have already done it :-). If you run pip install cookiecutter; cookiecutter gh:python-trio/cookiecutter-trio it generates a project directory with fully-set-up Linux/Mac/Windows testing (using Travis+appveyor), that you can steal from...

OS X is hanging on async with connection: in open_websocket.
https://github.com/HyperionGray/trio-websocket/blob/79452ce195c42d646301cd32854ebeb43c1dc01c/trio_websocket/__init__.py#L47

I don't know why async with connection would block because WebSocketConnection derives from  AsyncResource, which just returns self on __aenter__.

btw, I'm curious to hear how coveralls goes for you... most projects I'm familiar with switched to codecov a few years back, but maybe coveralls has gotten better since then, I wouldn't know because everyone switched :-)

Update:  tests hanging seem to be due to using an older wsproto version (0.11.0).  I wonder if it's the same issue @mehaase was hitting with Python 3.5.  I think we should keep 3.5 support if possible, I'll try restoring it after pinning wsproto.

Python 3.5 still hanging on Travis after wsproto pin.  Working for me locally on OS X, despite all package dependencies matching.
I suggest keeping the 3.5 support in place, and just keep a bug open to investigate the CI issue.


Build error with Visual Studio 2013

The constexpr used in vulkan.hpp is not supported by VS2013, which is specified in BUILD.md.

Visual Studion 2013 is no longer supported with the 1.0.65 SDK release. https://vulkan.lunarg.com/doc/sdk/<IP_ADDRESS>/windows/release_notes-1.0.html

@NorbertGarnysAMD, you are right, that was an oversight in updating BUILD.md.  I will push an update shortly specifying 2015 and above.

Update pushed to Master.
commit cca41b11486b38216de73770c9f7b8d370706cbe
Author: Mark Lobodzinski<EMAIL_ADDRESS>Date:   Tue Nov 7 09:00:48 2017 -0700

    build: Update BUILD.md to specify VS2015

    Change-Id: I9180304a8089db057af68cbf86b73118e1d29c16


Selector filter shows selected objects as well

Hi, :hand:
We're facing an issue when we try to populate the selector with data received via a HTTP request.
Steps to reproduce

Get possible values via a HTTP request. Throw this inside the options variable that angular-selector looks inside (Say A,B,C,D)
Get the pre selected values via a HTTP request. Throw these inside the model variable that angular-selector looks inside. This preselects a few values from the possible values (Say A,B)
Click on selector

Expected result

Selector should allow me to select from C and D. Since A and B are already selected

Actual result

Selector shows everything in the list on the first click (A,B,C,D) and on second click filters to C and D

We were able to reproduce this without a HTTP request as well. If the list is loaded on a simple button click, the same issue happens. Here's a GIF illustrating the problem:

The code that generates this :arrow_up: problem can be found in a plunker here: http://plnkr.co/edit/qeuxv2xP6zj6r3gxmPJO?p=preview

Please let us know if we can help you with any other information. Thanks so much for this. It has helped us out greatly! :beers: :blush:

Hi @shrayasr, thank you for filing this and for providing a plunker. Very nicely written description! :)
This bug is due to a missing filtering of the dropdown list after every value update.
I will resolve this in a minute :)

This is now available in v1.3.1.
Thank you guys for reporting this issue :)

Hi @shrayasr, thank you for filing this and for providing a plunker. Very nicely written description! :)

You're very welcome :)

This bug is due to a missing filtering of the dropdown list after every value update.
I will resolve this in a minute :)
This fix is now available in v1.3.1.
Thank you guys for reporting this issue :)

WOW :scream: You're awesome! Thanks a ton for such a quick fix. We owe you :blush: :+1:


feature added: support for api RolePermissionsBoundary

This PR adds support for PutUserPermissionsBoundary and DeleteRolePermissionsBoundary.
Fixed the response template GET_ROLE_TEMPLATE for RolePermissionBoundary support.
Added test case for PutUserPermissionsBoundary and DeleteRolePermissionsBoundary.
This PR should fix the issue in localstack: localstack/localstack#2888

Coverage decreased (-0.3%) to 94.145% when pulling<PHONE_NUMBER>c85716c6fe450392c0ea7f390c218f on macnev2013:feature-role-boundary into da4de072a9a12818a2a9d869a98d4fd7caf10744 on spulec:master.

Hey @bblommers . Can you help me understand why tests are failing?
I haven't made any changes in the test cases which are failing.
It would be great if you can have a quick look at it.
Thanks.


Add a "preview" button to message-edit UI

Following #11188, there's only one real feature that's present in the compose box but not the message-edit UI: our "preview" feature.  This feature isn't very important in the message-edit UI context, because usually folks are just fixing a small thing and one can just edit twice.  But it'd be nice to have.
If we do this properly (with careful refactoring), we should be able to do it without duplicating code, and that's definitely worth doing here, since the "message edit" preview feature is likely to not get a ton of usage, and thus would be at risk for regressions.

@zulipbot claim


create Multi-Module Projectr for Data Model

No thank you. We like to keep things simple here. You could look at the community org if you want to make the same suggestion there: https://github.com/spring-petclinic.


BIC-197 # Unable to view a list of forms in any browser

Removed use of XPath in favor of jquery
Added helper function for subform processing
added tests for helper function

Tested using develop server pointing at https://blinkm.co/simon/firstlevel_list and opening add, edit, view and delete interactions on the following browsers:
NOTE Testing on mac safari is needed!
Windows

Chrome
Firefox
IE9
IE11
Edge

Android 5.0:

Chrome
mBaaS trial

iPad (iOS 8.2)

Safari
mBaaS

Haha. I forgot to actually checkout the PR, but that's already working in OS X Safari 9 for me with whichever version of the BIC is selected.

interesting. Ray showed me it failing with a console error on safari on his mac Cannot call method trim of undefined when evaluating data.innerHTML.trim() which is so weird because an empty div will return an empty string. It must be an XML quirk.
There was also a cannot call method forEach of undefined on the pending queue as well, perhaps the two are related.
however, XPath needed to be removed, the windows app would crash with the same problem IE11 had - document.execute and the XPath enums did not exist, and IE doesnt have .innerHTML property on XML nodes :(
I expect that this would work on safari for mac, but it would be awesome if someone with a mac could check

Working fine for me in Safari 9 beta.
I did notice this odd double-enhancement though:

But that's nothing to do with this PR.

LGTM :+1:
We should probably update the handful of Forms tests that work with record XML, too.

the double enhancement already has a ticket in FORMS-228
re: the forms tests, a cursory glance shows they do use xpath, this would only effect test run on ie (which means, karma on my machine ha!) so i'll raise a minor ticket for that.
I just did a quick check of the XSLT code, that seems to be ok, using the IE  transformNode function rather than XSLTProcessor. phew.
UX review by ray yesterday.
good to merge ?


[KBFS-1957] Add special files for CPU/trace profiles

Also remove now-unneeded -cpuprofile switch.

Some notes for posterity:

I didn't implement this for Dokan, so Dokan will lose the ability to do any cpu profiling. But we an add that in if needed, anyway.
The traces block on open, which may mean that it won't work if you Ctrl-C out of it. I'll see if I can redo it to support that.


Superlinter is running duplicate workflow actions on github whenever we push to a PR

BUG DESCRIPTION
Problem
I noted while working on some branch updating that I was frequently seeing duplicate superlinter runs.  1 of the runs seems unnecessary.  I think that it is happening unintentionally due to changes to the superlinter yaml.
Steps to reproduce

push a branch to github
Create a PR
[not sure if this is what's causing it] pull

Current behavior
I have seen this a few times now.  One example was a push to an old PR (#901) after I did a rebase.

I got the usual superlinter workflow run labeled with the usual commit hash
but I also got an additional superlinter workflow run started at the same exact time, labeled as "pull request #901"

Expected behavior
When you push a commit to github (whether it's part of a PR or not), it should only trigger 1 workflow action.
Suggested Change
I think that the problem is this line in the new yaml:
https://github.com/Princeton-LSI-ResearchComputing/tracebase/blob/b56030d69a7939aabe14c12f6178606f44fc77b5/.github/workflows/superlinter.yml#L6
I think that when we push a change to a branch that has a pull request, the push action is initiating a workflow as usual, but the pull_request is also initiating a workflow action.
So I think we should remove line 6 (pull_request) from that yaml, as I think it's redundant.  The push is triggering the workflow.
Comment
I can sort of understand the possible intent of adding pull_request to the yaml, but it seems a bit ambiguous.  Intuitively, you think it would trigger upon creation of a pull request, but apparently it triggers whenever a branch that's a part of a PR changes.  I think we should stick with just the push trigger.

ISSUE OWNER SECTION
Assumptions

List of assumptions made WRT the code
E.g. We will assume input is correct (explaining why there is no validation)

Limitations

A list of things this work will specifically not do
E.g. This feature will only handle the most frequent use case X

Affected Components

change: File path or DB table ...
add: Environment variable or server setting
delete: External executable or cron job

Requirements

[ ] 1. List of numbered conditions to be met for the feature
[ ] 2. E.g. Every column/row must display a value, i.e. cannot be empty
[ ] 3. Numbers for reference & checkboxes for progress tracking

DESIGN
GUI Change description

None provided
Code Change Description

None provided
Tests

[ ] 1. A description of at least one test for each requirement above.
[ ] 2. E.g. Test for req 2 that there's an exception when display value is ''
[ ] 3. Numbers for reference & checkboxes for progress tracking

I haven't looked into this too deeply, but there is a difference between running those triggers that is meaningful and I think we should be running both.
The push trigger would run the actions on the most recent commit pushed. The pull_request trigger would run the actions on the merge commit, which is not the same thing.
See https://medium.com/@lizjohnson_83228/the-difference-between-push-and-pull-request-triggers-in-github-d7c0f2bc19db.

Huh.  Perhaps this would prevent merging to main breaking main when there's a migrations conflict created by a separate PR that was merged in.  If that's what it does, that's great.  I'm not convinced it's efficient, but I'm convinced enough it may prevent problems.  Closing.


Dart - Stream.last not returning anything?

Stream.last.then(foo) is never executed. I don't know if it is me using it the wrong way. If it is, then what is the correct way of getting the last element in a Stream? I'm having a hard time finding relevant demos in Dart docs.
Dart SDK : 2.1.0
Platform: Windows, and Dartpad
Demo Code
import 'dart:async';

void main(){
  final sc=StreamController<int>();
  final s=sc.stream;
  sc.add(1);
  sc.add(2);
  print("Printing the last\n");
  s.last.then(print);
  sc.add(3);

  final sc2=StreamController<int>();
  final sbc2=sc2.stream.asBroadcastStream();
  sc2.add(1);
  sc2.add(2);
  print("Broadcast stream printing...\n");
  sbc2.first.then(print);
  sbc2.last.then(print);
  sc2.add(3);
}

Output
Printing the last

Broadcast stream printing...

1

The Stream.last call will not know which event is the last event until you close the stream controller (to send a "done" event). For all it knows, another event may be added at a later time, and then that event should be the "last" event.
Since neither stream is closed, the last futures never complete. You must call sc.close() and sc2.close() to trigger the completion of the last futures.

Oh... Thank you for the reply.

What you are looking for is Stream#value


Wrong version of Python installed into empty conda environments

Testing #18731

Create empty conda env
Select that env as active env
Python 3.10 is installed without asking me.

I want to use Python 3.9, but for some reason 3.10 is used, 3.10 doesn't work well in coda for Jupyter and the like, hence the wrong version was installed.
More reason for a prompt to install instead of installing silently https://github.com/microsoft/vscode-python/issues/18754

I assuming installing conda automatically installs the latest desired Python version (3.9) if it's not already installed?

I think this is covered by https://github.com/microsoft/vscode-python/issues/18754


Give priority on MLB CE when the MLB option is unchecked

As we discussed on the Gamepress thread, it would be good if the script could prioritize a MLB CE if there is both MLB and non-MLB of the same CE onscreen if the MLB option is unchecked.

Not sure how you might change this in this app yet, since I haven't browsed the script files yet (only watched the video so far) but this could be done by providing 2 versions of the CE in the options, one where it looks specifically for MLB and another instance looking for non MLB CE. This is slightly unoptimized since the version looking for non MLB CE will check for both, but it would solve this issue since if it finds the MLB version first, it'll select that one. (This is for the contributors, not for the poster)

That's definitely a good idea. We can make it optional for people who don't want to lose performance (I don't think it will be too major 🤔)


add nohup and make echo use common parser

Need to run v fmt -w on your changed files.

Ran v fmt

Huh. That weird, on my end it says the files are already formatted

I just pulled your PR and checked with v fmt -diff . and it is showing differences.  Mainly with string interpolation changes:  $var to ${var}.
Are you on the latest V?

I'm on the one from the AUR. Let me try installing from source and running fmt

Done 👍

All good to merge 👍


USE BE instead of AE

This issue serves to remind us about that.

I'd be very happy to proof read entire paper towards the end

The spellchecker is using British English, and several PRs have fixed some terms.


cue: decide what a zero Value should be

@rogpeppe mentions that cue.Value{}.Equals(cue.Value{}) returns false, which is surprising.
He also argues that the zero value should not count as incomplete, because it can't become more complete via any Go API operations.
The behavior of cue.Value{} is currently undocumented and unclear. Go encourages zero values to be meaningful in some way, often as the default behavior for an option or an initial valid state for a method receiver type.
@mpvl's intuition appears to be that a zero cue.Value{} should be _, i.e. "top". Note that this may go against some of Roger's intuition above, e.g. the CUE spec doesn't say that top is comparable, and I'm not sure whether top is incomplete or not.

Agree with @mpvl's intuition.

He also argues that the zero value should not count as incomplete

@rogpeppe can you provide some more detail on what you mean here? Concretely (no pun intended) what is not possible/allowed today because of the condition you describe? And how would this change it the zero value were made _?
The _ value is not, to my understand, concrete: we cannot manifest it in JSON, Yaml etc. A configuration where a field has a value of _ is therefore considered to be incomplete. What I'm not clear on is how this influences whether we should make _ comparable, or the proposed change to the zero value of cue.Value.

Note that this may go against some of Roger's intuition above, e.g. the CUE spec doesn't say that top is comparable, and I'm not sure whether top is incomplete or not.

Again would appreciate some more clarity on what is allowed/not allowed today in terms of the API with respect to being incomplete or not.
_ not being defined as being comparable is something we need to fix I suspect as part of this change I agree.


automatic replace of special characters

Hi, I'm trying to implement an automatic translation of these special characters:
¨ → Bitcoin
¸ → Ethereum
¬ → Degree C
¯ → Degree F
¼ → Euro
½ → Won
¾ → Hryvnia

Can you provide the right side of your list? E.g. "€" instead of Euro, to use the correct UTF codes for the original characters.

Hey lubeda, I'm not sure what you mean by the "right side".  I used Fontforge, saving them as SFD files and attempts to get ESPHome/EspHoMaTriXto recognize any Unicode characters resulted in some double-byte error... ie two characters (not the one intended) would be displayed on the matrix clock.
I do still have the full SFD folders for all of the "8" fonts... but there may be more than the 3 unfixed characters... At some point after destroying the higher Unicode characters, I just started saving as BDF files.  I'm attempting a merge now to bring back the missing characters for all 3 sets.  I can't guarantee what's actually there.  A lot of empty space, though, I'm sure.

OK, sorry to have undone your work to the a/b/s but I pulled up the original SFDIR folders and I must have thought that I could save some space in the BIN by using smaller BDF files.  ESPHome already drops characters not specified in "glyphs:" so I might as well just share the full Unicode BDF files.
Thanks for letting me know it was a/b/s that were issues.  I checked similar characters in the Unicode set and they seem fine.  I've included the SFDIR files if you use Fontforge.  You can see the whole character set there.
As for those special characters as above (Euro, Bitcoin, etc) they should be in their usual Unicode spots.  Let me know if you encounter anything... I tend to get more motivated if I feel like someone might be waiting for me to get it done!  ^^

I left this open by accident but this lets me notify you @lubeda because this could get interesting: https://github.com/esphome/esphome/pull/5074
Pillow current branch (instead of a static decade-old one) means Unicode characters possible in ESPHome display...?  I'll wait a bit until this gets pushed to main branch of ESPHome... maybe 20223.7.1?

Now I've figured out how to properly implement TTF bitmap files and I'm even working on a Cyrillic character set.  How about just removing that section from the yaml completely?  It's totally possible to use Unicode characters when using the TTF files.


[BUG] (RunAnd)WaitFor(Request/Response/RequestFinished)Async methods ignore exceptions thrown by action

Context:

Playwright Version: 1.31.0
Operating System: any (Windows, Linux, MacOS)
.NET version: .NET 7
Browser: Edge (Chromium)

Code Snippet
using System.Threading.Tasks;
using Microsoft.Playwright;

class Program
{
    public static async Task Main()
    {
        using var playwright = await Playwright.CreateAsync();
        await using var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        var options = new() { Predicate = r => true };
        var wait = page.RunAndWaitForRequestFinishedAsync(()=>throw new Exception(), options)
        await wait;
        // dead waiting - only timeout and no original exception
    }
}

Description
(RunAnd)WaitFor(Request/Response/RequestFinished)Async method family are implemented by InnerWaitForEventAsync in such a way that ignores exceptions thrown by action. If the action ends up in Failed state (the resulting Task has failed because of some Exception) the actual Wait inside Playwright doesn't inspect the exception and the failed path ends up in timeout state.
The Waiter makes that happen by throwing TimeoutException.
The actual BUG is the fact that the Waiter still waits for some request to filter - but the action that was supposed to trigger some chit-chat that would caused some Requests has thrown in this scenario.
Action throwing -> Exception captured and set on a transient task in WhenAll -> the Waiter waits until timeout.
Secondly there is no CancellationToken to cancel Wait when a caller of (...)WaitFor(...) has some knowledge that the wait became pointless. There is some meaningful amount of time that can be recovered by providing a cancellation here.
So, to summarize:

Exceptions from action are missing
No cancellation option for Waits

The exact places in code:
playwright-dotnet\src\Playwright\Core\Page.cs : 435-438
playwright-dotnet\src\Playwright\Core\Waiter.cs - whole implementation - there should be a RejectOnCancellation or something along those lines.

I would like to. I am currently looking into the test framework. I am considering a TDD path for patch development.

I'm adding this comment for searchability purpose, methods mentioned:
(RunAnd)WaitFor(Request/Response/RequestFinished)Async
(RunAnd)WaitFor(Request/Response/RequestFinished)Async
(RunAnd)WaitFor(Request/Response/RequestFinished)Async

I have attached a preliminary solution for the issue.
Moreover, I have added necessary unit tests and extended some existing tests as well.

I have attached a preliminary solution for the issue.
Moreover I have added necessary unit tests and extended some existing tests as well.

https://github.com/microsoft/playwright-dotnet/pull/2535 depends on :
https://github.com/microsoft/playwright-dotnet/pull/2538
https://github.com/microsoft/playwright-dotnet/pull/2540
https://github.com/microsoft/playwright-dotnet/pull/2542

PR approved, awaiting merge and release.

Thanks!


Buffer dtype mismatch, expected 'long' but got 'long long'

hi, there is an error when I get nodal stress using NodalStress() method. I use the rst file in your closed issues "test_pyansys.rst".
I guess there is something wrong with numpy.int64 type.
the code is below:
stress = result.NodalStress(0)
Traceback (most recent call last):

  File "<ipython-input-12-6342d70f8bcd>", line 1, in <module>
    stress = result.NodalStress(0)

  File "C:\Users\zxmy\Anaconda3\lib\site-packages\pyansys\binary_reader.py", line 977, in NodalStress
    self.edge_idx.astype(np.int64))

  File "pyansys/cython/_rstHelper.pyx", line 158, in pyansys._rstHelper.LoadStress

ValueError: Buffer dtype mismatch, expected 'long' but got 'long long'

Didn't test the latest release on windows.  I'll post an update shortly.

thanks for your effort. I like it .

Fixed the code.  Thanks for posting the bug reports!

I install the update, but the bug is still there.
`stress=result.NodalStress(0)
Traceback (most recent call last):
File "", line 1, in
stress=result.NodalStress(0)
File "C:\Users\zxmy\Anaconda3\lib\site-packages\pyansys\binary_reader.py", line 979, in NodalStress
self.edge_idx.astype(c_long))
File "pyansys\cython_rstHelper.pyx", line 192, in pyansys._rstHelper.LoadStress
ValueError: Buffer dtype mismatch, expected 'long' but got 'long long'`

Try the new version 0.22.3 please. It’s here and on pypi.

yes. it is perfect. thank you very much.

Ok.  I'm closing this issue then.  Thanks for testing it out.  I'll be a bit more diligent about keeping cython platform independent.  To anyone out there who's looking to make platform independent code when using numpy and cython, use the following:
from libc.stdint cimport int32_t, int64_t
# instead of int and long

Otherwise, you'll run into issues where an np.int64 is a long for linux and a long long for windows.

Ok. I'm closing this issue then. Thanks for testing it out. I'll be a bit more diligent about keeping cython platform independent. To anyone out there who's looking to make platform independent code when using numpy and cython, use the following:
from libc.stdint cimport int32_t, int64_t
# instead of int and long

Otherwise, you'll run into issues where an np.int64 is a long for linux and a long long for windows.

Hi @akaszynski ,
I am facing similar issue while running a git code on windows, posted issue here . Could you please help me.


Hello, how to change gas rate?

Hello, thank you very much for this code, I love this work of your friends, I have a question, is there any way to change the price of gas?
Many thanks.

require('dotenv').config()
const { ethers } = require("ethers");
const provider = new ethers.providers.JsonRpcProvider(process.env.JSON_RPC);
const addressReceiver = process.env.ADDRESS;
const privateKeys = [process.env.PRIVATE_KEY_1,
  process.env.PRIVATE_KEY_2,
  process.env.PRIVATE_KEY_3,
  process.env.PRIVATE_KEY_3];
console.log("Made by @rodrigoherrerai Modified by @ayushch80");
const bot = async () => {
  provider.on("block", async () => {
    console.log("Listening new block, waiting...");
    for (let i = 0; i < privateKeys.length; i++) {
      const _target = new ethers.Wallet(privateKeys[i]);
      const target = _target.connect(provider);
      const balance = await provider.getBalance(target.address);
      const txBuffer = ethers.utils.parseEther(process.env.MIN_ETH);
      if (balance.sub(txBuffer) > 0) {
        console.log(`Found an account with ETH balance --> ${ethers.utils.formatEther(balance)}`);
        const amount = balance.sub(txBuffer);
        try {
          await target.sendTransaction({
            to: addressReceiver,
            value: amount,
            gasLimit: 21000,
            gasPrice: ethers.utils.parseUnits("15","gwei") //you can customize gas price in gwei
          });
          const amount_r = ethers.utils.formatEther(amount.toString())
          console.log(`Successfully transfered --> ` + amount_r);
        }
        catch (e) {
            console.log(`Oh no! thats an ERROR : ${e}`);
        }
      }
    }
  });
}

bot();

you can edit gasLimit on line 21 & gasPrice on line 22


began refining the OVN procedure

https://issues.redhat.com/browse/RHOSPDOC-1926
@booxter or @slawqo Can you please review my edits to the procedure and answer the 2 questions I put in this PR? Thanks!

LGTM


Update get_derivetables.sql

When trying this script against AxDB, we included a lengthy list of potential parent tables because we did not know what other tables besides DirPartyTable we'd need to worry about using synapse link. In doing so, we noticed duplication in the output of the columns included in some of the view definitions. When selecting DirOrganizationBase as an example, the view definition for DirPartyTable experienced the duplication. I implemented an additional CTE pull a distinct table/col mapping from the recursive CTE output to mitigate the duplication.

@microsoft-github-policy-service agree company="Nucor Buildings Group"
On Thu, Apr 25, 2024 at 1:04 PM microsoft-github-policy-service[bot] <
@.***> wrote:

@briandpolk https://github.com/briandpolk please read the following
Contributor License Agreement(CLA). If you agree with the CLA, please reply
with the following information.
@microsoft-github-policy-service agree [company="{your company}"]
Options:

(default - no company specified) I have sole ownership of
intellectual property rights to my Submissions and I am not making
Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work
for my employer (or my employer has intellectual property rights in my
Submissions by contract or applicable law). I have permission from my
employer to make Submissions and enter into this Agreement on behalf of my
employer. By signing below, the defined term “You” includes me and my
employer.

@microsoft-github-policy-service agree company="Microsoft"
Contributor License Agreement Contribution License Agreement
This Contribution License Agreement (“Agreement”) is agreed to by the
party signing below (“You”),
and conveys certain license rights to Microsoft Corporation and its
affiliates (“Microsoft”) for Your
contributions to Microsoft open source projects. This Agreement is
effective as of the latest signature
date below.

Definitions.
“Code” means the computer software code, whether in human-readable
or machine-executable form,
that is delivered by You to Microsoft under this Agreement.
“Project” means any of the projects owned or managed by Microsoft
and offered under a license
approved by the Open Source Initiative (www.opensource.org).
“Submit” is the act of uploading, submitting, transmitting, or
distributing code or other content to any
Project, including but not limited to communication on electronic
mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf
of, the Project for the purpose of
discussing and improving that Project, but excluding communication
that is conspicuously marked or
otherwise designated in writing by You as “Not a Submission.”
“Submission” means the Code and any other copyrightable material
Submitted by You, including any
associated comments and documentation.
Your Submission. You must agree to the terms of this Agreement
before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now
or in the future (except as
described in Section 4 below), Submit to any Project.
Originality of Work. You represent that each of Your Submissions
is entirely Your original work.
Should You wish to Submit materials that are not Your original work,
You may Submit them separately
to the Project if You (a) retain all copyright and license information
that was in the materials as You
received them, (b) in the description accompanying Your Submission,
include the phrase “Submission
containing materials of a third party:” followed by the names of the
third party and any licenses or other
restrictions of which You are aware, and (c) follow any other
instructions in the Project’s written
guidelines concerning Submissions.
Your Employer. References to “employer” in this Agreement include
Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a
contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your
employer has intellectual
property rights in Your Submission by contract or applicable law, You
must secure permission from Your
employer to make the Submission before signing this Agreement. In that
case, the term “You” in this
Agreement will refer to You and the employer collectively. If You
change employers in the future and
desire to Submit additional Submissions for the new employer, then You
agree to sign a new Agreement
and secure permission from the new employer before Submitting those
Submissions.
Licenses.

Copyright License. You grant Microsoft, and those who receive the
Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive,
royalty-free, irrevocable license in the
Submission to reproduce, prepare derivative works of, publicly
display, publicly perform, and distribute
the Submission and such derivative works, and to sublicense any or all
of the foregoing rights to third
parties.
Patent License. You grant Microsoft, and those who receive the
Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive,
royalty-free, irrevocable license under
Your patent claims that are necessarily infringed by the Submission or
the combination of the
Submission with the Project to which it was Submitted to make, have
made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the
Project.
Other Rights Reserved. Each party reserves all rights not
expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without
limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.

Representations and Warranties. You represent that You are
legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your
original work (except as You may
have disclosed under Section 3). You represent that You have secured
permission from Your employer to
make the Submission in cases where Your Submission is made in the
course of Your work for Your
employer or Your employer has intellectual property rights in Your
Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You
represent and warrant that You
have the necessary authority to bind the listed employer to the
obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless
You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE
WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6, THE SUBMISSION PROVIDED
UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO,
ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
Notice to Microsoft. You agree to notify Microsoft in writing of
any facts or circumstances of which
You later become aware that would make Your representations in this
Agreement inaccurate in any
respect.
Information about Submissions. You agree that contributions to
Projects and information about
contributions may be maintained indefinitely and disclosed publicly,
including Your name and other
information that You submit with Your Submission.
Governing Law/Jurisdiction. This Agreement is governed by the
laws of the State of Washington, and
the parties consent to exclusive jurisdiction and venue in the federal
courts sitting in King County,
Washington, unless no federal subject matter jurisdiction exists, in
which case the parties consent to
exclusive jurisdiction and venue in the Superior Court of King County,
Washington. The parties waive all
defenses of lack of personal jurisdiction and forum non-conveniens.
Entire Agreement/Assignment. This Agreement is the entire
agreement between the parties, and
supersedes any and all prior agreements, understandings or
communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may
be assigned by Microsoft.

—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/Dynamics-365-FastTrack-Implementation-Assets/pull/325#issuecomment-2077759244,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYVXKB4GVN4BYM7WB3QDQMLY7EZR5AVCNFSM6AAAAABGZIZWF2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZXG42TSMRUGQ
.
You are receiving this because you were mentioned.Message ID:
<microsoft/Dynamics-365-FastTrack-Implementation-Assets/pull/325/c2077759244
@github.com>


Update configuration-settings.md

Hello!
The changes made to this Azure Bastion connection resource link include minor grammatical updates to:
instance  --> changed to Instance and "Instance"
Reason: To reduce user confusion between the regular term and the Azure "Scale Unit".

@cherylmc
Can you review the proposed changes?
IMPORTANT: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@cherylmc
Can you review the proposed changes?
IMPORTANT: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.


Update virtual-network-bandwidth-testing.md

Updating build instructions to include SUSE.  Tested on SLES15 SP2 and SLES12 SP5.

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

Note that publishing in this repository is suspended until Tuesday, March 2. Merging will resume Tuesday. Authors can still review and sign off on PRs during this time. Thanks.

Looks good to me. I'm glad we have updated steps for SUSE now!

Thanks @steveesp. We'll merge this PR on Tuesday.


Hugo server should try to show 404 page on HTTP 404

See
http://discuss.gohugo.io/t/how-to-test-404-html-on-local-server/681

I tried tackling this yesterday and found it surprisingly difficult:
serveFile, which is used by FileServer, doesn't expose an actual error. Instead it has a NotFound handler that it uses when it can't find a file on the file system, which you cannot get around using. See http://golang.org/src/net/http/fs.go#L356 . As of right now, changing this in the standard library is currently a TODO.
I tried implementing my own ResponseWriter type that intercepted WriteHeader to call a handler that handles 404s. However, at that point NotFound had already been called and the response had been written to, so this doesn't seem to be a valid option.
Other options I can think of

Implement our own version of http.FileServer which can allow for 404 handling. This is what Martini does.
Speaking of which, we could use Martini for mux and it's static file handler in server.go. How do hugo developers feel about including third party libraries like this?
Maybe there's some clever way to get our own version of FileSystem to return a 404.html when it can't find the file? Sounds kind of like overkill to me to address this issue, though.

What do other people think?

I thought this would be simple when I jotted down the issue. Maybe @bradfitz could shed some light on this. I think he's the main person behind the http package in Go.
I know @spf13 would hate to increase the binary size with Martini just to get some proper 404 handling.

I've considered adding in httprouter though. Especially if we add a rest API.

https://github.com/julienschmidt/httprouter

Definitely in favor of the simplest, smallest solution for this. httprouter looks very nice :+1:

I just tackled this and the solution I came up with was an enhanced/stipped down http.FileServer handler.
https://github.com/rustyoz/hugo/commit/4a4cebfccbb0663afa6547daf513d1506c8bc97a

A better solution to what I created would be to substitute the standard http package with https://github.com/Masterminds/go-fileserver

@rustyoz I agree, but it still feels that the FileServer devs should have made this extensible in the first place. When they sober up from GopherCon I will post an issue; but that will be Go 1.6 at best.
I guess this discussion can hold until we decide what to do about a REST api.

Anyone resolved this issue?

Related then, adding something in documentation would be a sufficient measure. Currently searching the new (and much improved!) documentation site for 404 returns no results.
https://gohugo.io/templates/404/
At the very end (in Automatic Loading), something like:
Hugo's built in server will not automatically load your custom 404.html file, but you can test the appearance of your custom not-found page by navigating your browser to /404.html.

@solutionroute Done! :)

Cool, thanks. I'll try submitting doc PRs myself.
Cheers
Mike