Simplify UI for devices that only have a power state

Only add the TelevisionSpeaker service if we have a device with mute state implemented (which is required for TelevisionSpeaker), which simplifies the UI displayed in HomeKit for things that only have a power state.
Additionally, the empty array checks in the Homebridge callbacks weren't working as it turns out [] is truthy - which was causing Homebridge to complain that the callback was never called. This check shouldn't actually be needed any more with the first change, but I fixed that before realising the service could be removed completely.
I ran into this troubleshooting a warning from Homebridge:
[homebridge-television-universal-control] This plugin slows down Homebridge. The read handler for the characteristic 'Mute' didn't respond at all!. Please check that you properly call the callback! See https://git.io/JtMGR for more info.

with a very basic config for my projector:
{
  "groups": [
    {
      "name": "Projector",
      "devices": {
        "serial": [
          {
            "name": "Projector",
            "path": "/dev/ttyUSB0",
            "requestTimeout": 150,
            "delimiter": "\u0003",
            "getStatus": {
              "power": {
                "command": "\u0002QPW\u0003",
                "onResponse": "\u0002001",
                "offResponse": "\u0002000"
              }
            }
          }
        ]
      },
      "power": {
        "on": {
          "commands": [
            {
              "serial": [
                {
                  "commands": ["\u0002PON\u0003"],
                  "device": "Projector"
                }
              ]
            }
          ]
        },
        "off": {
          "commands": [
            {
              "serial": [
                {
                  "commands": ["\u0002POF\u0003"],
                  "device": "Projector"
                }
              ]
            }
          ]
        }
      },
      "inputs": [],
      "manufacturer": "Panasonic",
      "model": "AT6000E"
    }
  ],
  "platform": "TelevisionUniversalControl"
}

@pkmnct it looks like you were prodding some of this in #17, any chance this could get reviewed / merged?

@pkmnct it looks like you were prodding some of this in #17, any chance this could get reviewed / merged?

Hey! Sorry for the delay, I commented some suggestions but this overall is looking sensible!

This fixes #8

@pkmnct it looks like you were prodding some of this in #17, any chance this could get reviewed / merged?

Hey! Sorry for the delay, I commented some suggestions but this overall is looking sensible!

Heya - I can't see them I'm afraid!
If they're in a review, double-check the whole review was submitted at the top of the page 😄


link headings (not exactly bug)

It may be wanted, but for me not make sense. Actual working example
'use strict'

var toc = require('markdown-toc')
var res = toc('# API\n ## [letta](./index.js#L14)\nfoo bar\n## BBB\n## [.promisify](./index.js#L37)\n## CCC\nfoo')

console.log(res.content)

gives
- [API](#api)
  * [[letta](./index.js#L14)](#-letta---indexjs-l14-)
  * [BBB](#bbb)
  * [[.promisify](./index.js#L37)](#-promisify---indexjs-l37-)
  * [CCC](#ccc)

so render like

API

[letta](#-letta---indexjs-l14-)
BBB
[.promisify](#-promisify---indexjs-l37-)
CCC

(huh, strange why github renders it here so indented but nevermind, that's not the case)
Are you noticing the [[letta](./index.js#L14)](#-letta---indexjs-l14-) thing? Which is not okey for table of contents. Because toc link will not redirect you to the section where's that heading, but to the link that heading redirects to, in case to index.js file.

Because toc link will not redirect you to the section where's that heading, but to the link that heading redirects to, in case to index.js file.

But you're defining a link in your heading. So it's using the link as the bullet text. It's out of the scope of this lib to decide what you wanted the text to be. The best solution is for you to create a custom linkify function that strips the junk out of your headings, or a filter function that removes headings that are badly formatted so you can use whatever practices you want.
closing since this isn't really a bug. but feel free to ask questions

Best solution but it's not possible currently in verb. I faced this thing before months when started testing 0.9.0, so I completely disabled the toc. And that's the main reason that I'm not using it, because my last heading in readmes is my name and some badges.


'Concatenation of two strings' is added in the 'other' section of C file'

Have you read the Contributing Guidelines on Pull Requests?
Yes, I have read the contribution guidelines.
Description
Concatenation of two strings without using strcat() function.
Checklist

[/] I've read the contribution guidelines.
[ /] I've checked the issue list before deciding what to submit.
[ ] I've edited the README.md and link to my code.

We don't accept PRs without any Issue.

We don't accept PRs without any Issue.

Sir, This PR has a issue.
Issue number : #3024

@HarshCasper Sir Can you please recheck this? My issue number is #3011 and it's my another pull request #3103.


Error pulling repo information. Consult the stacktrace for more info

"Error pulling repo information. Consult the stacktrace for more info" error running "python install.py -t TOKEN--clean"
obs@obs:~/objectscale-developer-edition-master$ python install.py -t TOKEN--clean
Hello, Developer.
Starting dependency installations for Linux.
Hit:1 http://sg.archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://sg.archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:3 http://sg.archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:4 https://download.docker.com/linux/ubuntu jammy InRelease
Get:5 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Fetched 110 kB in 2s (62.0 kB/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-pip is already the newest version (22.0.2+dfsg-1ubuntu0.1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
gcc is already the newest version (4:11.2.0-1ubuntu1).
python3-dev is already the newest version (3.10.6-1~22.04).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (5.9.4)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Dependency installations complete
-----Libraries & Prerequisites-----
Checking libraries..
Checking pip installation.
pip installation confirmed.
Checking for psutil.
Psutil installed.
Checking for OpenSSL.
OpenSSL installed.
Checking for pyGithub.
pyGithub installed.
----- END Libraries & Prerequisites -----
Error pulling repo information. Consult the stacktrace for more info
Error pulling repo information. Consult the stacktrace for more info
Version set to v0.33.0
Starting installation for Linux.

Oh no!  Hey @choiseokjoo, This is ObjectScale Developer edition- A project that has been in retirement for a long time.
Did you mean to try out ObjectScale Community Edition?  It's much newer than this version ever supported.  You can find it here:
https://www.dell.com/community/ObjectScale/Try-out-the-free-Community-Edition-of-Dell-ObjectScale/td-p/8167165

checked  30TB free community edition but it requires tanzu or openshift and
min 3 nodes.
I'm looking for a single node option with minikube.
2023년 2월 26일 (일) 오후 2:36, Brice A Johnson @.***>님이 작성:

Oh no! Hey @choiseokjoo https://github.com/choiseokjoo, This is
ObjectScale Developer edition- A project that has been in retirement for a
long time.
Did you mean to try out ObjectScale Community Edition? It's much newer
than this version ever supported. You can find it here:
https://www.dell.com/community/ObjectScale/Try-out-the-free-Community-Edition-of-Dell-ObjectScale/td-p/8167165
—
Reply to this email directly, view it on GitHub
https://github.com/EMCECS/objectscale-developer-edition/issues/8#issuecomment-1445280212,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AF4BPFKG2CMOCF2RDTJZ6WTWZL2XZANCNFSM6AAAAAAVICFKU4
.
You are receiving this because you were mentioned.Message ID:
@.***>


(InvitingGuests) - Members list is empty after adding group member

I created a new group and added an existing user using their email address. After saving, the member list was empty. Refreshing the page solved the problem.

@nicolaasmatthijs was this while the server was having issues?

@mrvisser : This happened after the server issues. FWIW, I was using Safari.

This is not reproduceable when the server is stable


Cant install/publish plugin

Hello!
There is my build.gradle file https://github.com/robohorse/RoboPOJOGenerator/blob/master/build.gradle
I have success completed task runIdea, but i cant install my plugin on current version 2016.3.
“Plugin is incompatible with this installation” error occurs.
I unzipped gradle-built archive and it has different structure, than archive, created by intellij by default plugin builder. Is it reason to fail and could you fix it plz?

ok, the problem was in version: IC-2016.2 was solved my problem. But there is another question: how about Android Studio?

intellij.alternativeIdePath

Is it reason to fail and could you fix it plz?

no, it's not the reason

“Plugin is incompatible with this installation” error occurs.

This literally means that plugin is incompatible with the IDE. It has nothing to do with gradle-intellij-plugin


Add Daniel Grossmann-Kavanagh as maintainer

Add Daniel Grossmann-Kavanagh as an external contributor to Connexion.

:+1:

Welcome @dtkav :smile:

thanks!! :wave:


SimpleDLNA not always visible in Windows Media Player

I don't understand this.  Sometimes when you start SimpleDLNA, it appears in Windows Media Player (under "Other Libraries"), but most of the time it does not.  I don't seem to be able to recreate the case that it is visible reliably.  Is there some point where SimpleDLNA is not ready (at the beginning) and then becomes ready after having scanned the media library or something?  I use a cache file whose name is explicitly given to sdlna.exe.
On a similar note, SimpleDLNA 1.0 worked flawlessly for me the other day, when I had a lot of other DLNA servers installed (Kodi, Serviio, Plex) but after I removed these, my Sony Bravia TV can't see it anymore.  I suspect the issue is something with the firewall, but I can't confirm this.  If I disable the firewall, which should solve all firewall issues, my TV still can't see SimpleDLNA.  I had everything working and decided to switch to SimpleDLNA but now nothing works anymore.

I have a similar issue where often it takes a long time for a DLNA Client to detect SimpleDLNA. I leave the server running most of the time so it isn't a startup issue. It seems to just be waiting long intervals to announce its existence. I often have to sit there on the server listing of the client, upwards of 3-6+ minutes, before SimpleDLNA appears. This isn't a network issue as other DLNA servers on my network (WMP, Kodi, etc) all appear near instantly in my DLNA clients.


blog page text editor

blog page text editor: blog page should have code editor for customization

Problem solved


Different notifications for monitor states.

⚠ Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find similar feature request

🏷 Feature Request Type
New Notification, Other
🔖 Feature description
ability to select different notifications based on monitor status changes.
basically, if the monitor/service is changed to DOWN, send notification1 and if the if the monitor/service is changed to UP, send notification2.
✔ Solution
i would like there to be a notification potion for each of the different monitor states, or at the very least the UP and DOWN states. beside each of these state options, the current notification options exist. in this way, notification1 (such as an 'urgent' notice that could wake people up) can be used for the monitor when it goes DOWN and notification2 (such as an 'all clear' notice that would not wake people up) can be used for the monitor when it changes into the UP state.
❓ Alternatives
keep the urgent notice as the only notice. after receiving the notice, enable maintenance on the affected monitor, fix the issue(s) that triggered the notice, wait for a monitoring cycle after the fix was finished and disable maintenance.
issue1: this method requires additional steps (and time) to be taken and can give the appearance of a false-positive if the steps for maintenance are missed.
issue2: there are times that notification cannot reach their destination to alert for DOWN, but the issue is able to resolve itself, and then the urgent notice gets sent for the UP status, this gives a false-positive as he monitor no longer needing an urgent level of care.
📝 Additional Context
Uptime Kuma is an absolutely great product. this project has reduced manual logging and checking down to miniscule levels. keep up the great work, one and all!

Exactly - I want the same thing. UK can already let you select multiple Notifications. If the Notifications had a Status attribute for Up or Down - then the setting for sound played and such could be set accordingly and only the proper Notification (based on Status) would be sent. As is it - if it goes up or down - I get the obnoxious notification I need so I WILL get the notice when systems are down - I don't want this same sound and volume used when the system comes back up. I am using Pushover, and this COULD work great with this feature being added.

@Schwoby
We are consolidating duplicate issues a bit to make issue management easier.
I think, we should track this issue in https://github.com/louislam/uptime-kuma/issues/1233 as this can be implemented by the mechanism proposed there
⇒ I am going to close this as a duplicate.


Type error when accessing admin/config

When accessing above mentioned url, this error occurs template: admin/config:82:38: executing "admin/config" at <.Service.DisableMini...>: DisableMinimumKeySizeCheck is not a field of struct type interface {}
I'm on version <IP_ADDRESS>5
DISABLE_MINIMUM_KEY_SIZE_CHECK is not set in custom/conf/app.ini

Hi! I also posted this issue https://github.com/gogits/gogs/issues/2449. This is a duplicate off https://github.com/gogits/gogs/issues/2416

Oh sorry, I forgot to search for the issue before posting. Closing this :)

Thanks! :+1:


DisplayFlush equivalent in wl package?

Hi,
I'm currently building something with GTK4 and Wayland and I've successfully managed to use this wonderful library to implement https://wayland.app/protocols/wlr-foreign-toplevel-management-unstable-v1. However:
I'm running into an issue where at certain conditions the application would freeze or I can't "zwlr_foreign_toplevel_handle_v1:request:activate".
Looking it other pure C code, I noticed wl_display_flush being used.
How can I use libwayland.func DisplayFlush(d *Display) (n int, err error) with a wl.Display?
I tried moving to libwayland directly, but then got stuck on registering the protocol, since there's no wl_registry_bind equivalent in libwayland.
Regards

In general there are two ways to use this project,
A) via the underlying libwayland C library (https://pkg.go.dev/github.com/neurlang/wayland/libwayland)
B) without involving C at all - via wl (https://pkg.go.dev/github.com/neurlang/wayland/wl) or it's highlevel wrapper window<EMAIL_ADDRESS>A) libwayland

if your app uses 3d graphics (vulkan, opengl, whatever), you must use A) libwayland
used by the go-wayland-cube demo (3d cube)
requires CGO (calling C from go), therefore you are unable to use the "cool" features of pure golang like race decector, possibly fuzzer like pure golang projecs can.
this project's libwayland api is incomplete (PRs welcome)
DisplayFlush(d *Display) (n int, err error) is available

B) wl

this is a linux only lowlevel api
used by the simple demos (simple shm, image viewer)
In general you do not need to flush, the library writes everything automatically, and you handle the callbacks once they come from display.Context().Run() or from display.Context().RunTill(specific_callback_to_run_till)
If you need to flush, call display.Sync(), it will tell you a callback, if you are interested to run until that callback comes, run display.Context().RunTill(specific_callback_to_run_till), otherwise call  display.Sync() again or display.Context().Run() to run pretty much forever

B) wl + wlclient

wlclient is a helper functions library which you can use on top of wl
wlclient allows you to run your mainloop in a goroutine
wlclient.DisplayRoundtrip() is basically a single flush
wlclient.DisplayRun() is basically pretty much run forever
see simple-shm demo how it flushes twice using wlclient.DisplayRoundtrip() after hooking up the RegistryAddListener(..)

B) wl + window

in this case you run forever via window.DisplayRun(Display *Display)
(d *Display) Exit() from other goroutine? XXX: Not thread safe

If you want to hook in the C library GTK4 (QT, whatever) you again have two options:

A) libwayland

DisplayFlush(d *Display) (n int, err error) is available

B) wl / wl + wlclient / window

you have to tell the C library GTK4 (QT, whatever) to paint its window's content into a []byte (RGBA) or (BGRA)

(optional - if the colors are wrong) convert between RGBA and BGRA using swizzle (https://pkg.go.dev/github.com/neurlang/wayland/external/swizzle)

then you put the []byte on screen via wl / wl + wlclient / window

The whole point is getting the C library GTK4 (QT, whatever) to paint its window's content into a []byte using the API which they may or may not provide
Good luck

Note to self, If you manage to get GTK4 to draw the window frame using the current linux distribution's theme (into a PNG file)
DrawFrame(totalWidth, totalHeight int, titleText string, titleSub string, pngFileName string, bgColor uint32) error
that alone might be a significant achievement, as other go users can then spawn a native looking windows with little effort and draw into the green area a size of which they can easily detect from the png.

This is the idea

You can dump the frame just once, no need to do it in loop or anything special, really.


Updated to latest dspal and cmake_hexagon

DriverFramework has to be updated to update dspal to the ATLFlight version of dspal.
This depends on https://github.com/PX4/DriverFramework/pull/193
Signed-off-by: Mark Charlebois<EMAIL_ADDRESS>

@mcharleb CI failure

@mcharleb @jywilson For changes like this one mutual review and merging might make a lot of sense.


feat(process): implement miranum process-core for c7/8

Description
The process use case is now implemented for Camunda 7 and 8. For testing purposes there now is a process-example which provides a REST-API to start a process. The process-example is going to be replaced by a more useful example in future.
Checklist

Code is easy to understand
No obvious errors or bugs
Tests were implemented

Just fyi, the current Cloudevents Spec for this command is here: https://github.com/backoffice-plus/cloudevents-schemas/blob/main/docs/bpmn/command/CreateProcessInstanceRequest.schema.md
I think it would make sense if the REST Api uses the same schema for this? We can discuss it in the next weekly next Wednesday

Thank you Julian. We'll discuss that.

Just fyi, the current Cloudevents Spec for this command is here: https://github.com/backoffice-plus/cloudevents-schemas/blob/main/docs/bpmn/command/CreateProcessInstanceRequest.schema.md
I think it would make sense if the REST Api uses the same schema for this? We can discuss it in the next weekly next Wednesday

Thank you Julian. We will definitely discuss it next Week! The REST-API was just for testing purposes and did not intend to be anything we want to use in future.


Scons compile fails "typedefs.h: No such file or directory"

Despite all dependencies with correct versions apparently being installed, Scons compile fails with the following message:
compilation terminated.
scons: *** [extractor.o] Error 1
scons: building terminated because of errors.```

I'm compiling for the first time on Fedora 15 64bit.

A file called typedefs.h does exist within the OSRM directory.

Unfortunately messages from the old sourceforge forum seem to have been removed so I cannot follow past debugging procedure with Scons.

Thanks,

Sam.

Thanks for the ticket. Reason was a missing "../". Fixed with latest commit.


Fix issues with examples

fix #3874 (Examples not working with nested model in array)
fix #3872 (Examples not working when type is union)
Additionally found the following issues that this fix:

not working when type was unknown
not working with Record

:x: There is undocummented changes. Run chronus add to add a changeset or click here.
The following packages have changes but are not documented.

:x:@typespec/compiler

Show changes

You can try these changes here

🛝 Playground
🌐 Website
📚 Next docs


Plotly cannot draw a single neurite

When using the plotly drawing module, I would like to be able to draw a single neurite as shown in the tutorial notebook. Currently this is not possible, input and error:
fig, ax = plotly.draw(neuron.neurites[0], inline=True)
>>> AttributeError: 'Neurite' object has no attribute 'soma'

See also this comment: https://github.com/BlueBrain/NeuroM/issues/670#issuecomment-442819943

Fixed in #797


failed to compile using falco-builder container + eBPF

Hello.
I was trying to build using using falco-builder container

clone falco and sysdig to /home/user/src/
Added -e BUILD_BPF=ON to compilation command and mapped /lib/modules/uname -r/build
cmake:

docker run --user $(id -u):$(id -g) -v /etc/passwd:/etc/passwd:ro -e MAKE_JOBS=4 -e BUILD_BPF=ON -it -v /home/user/src:/source -v /home/user/build/falco:/build -v /lib/modules/uname -r/build:/lib/modules/uname -r/build falcosecurity/falco-builder cmake

Added -e BUILD_BPF=ON to compilation command and mapped /lib/modules/uname -r/build and ran
docker run --user $(id -u):$(id -g) -v /etc/passwd:/etc/passwd:ro -e MAKE_JOBS=4 -e BUILD_BPF=ON -it -v /home/user/src:/source -v /home/user/build/falco:/build -v /lib/modules/uname -r/build:/lib/modules/uname -r/build falcosecurity/falco-builder package

It fails to build ebpf module:
Scanning dependencies of target bpf
[ 55%] Built target docker-local-rule-list_sub_front.yaml
make[3]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
[ 56%] Built target docker-local-rule-invalid_missing_macro_name.yaml
make[4]: *** /lib/modules/5.0.0-36-generic/build: No such file or directory.  Stop.
make[3]: *** [Makefile:18: all] Error 2
make[2]: *** [driver/bpf/CMakeFiles/bpf.dir/build.make:57: driver/bpf/CMakeFiles/bpf] Error 2
make[1]: *** [CMakeFiles/Makefile2:7203: driver/bpf/CMakeFiles/bpf.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 58%] Built target catch2
[ 62%] Built target scap
[ 64%] Built target fakeit-external
make: *** [Makefile:150: all] Error 2

Any ideas?
Thanks in advance.
P.S. If instead of opening an issue I should have done anything different - please tell me

@2rigor: There is not a label identifying the kind of this issue.
Please specify it either using /kind <group> or manually from the side menu.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

/triage support

Hello.
I was trying to build using using falco-builder container

clone falco and sysdig to /home/user/src/
Added -e BUILD_BPF=ON to compilation command and mapped /lib/modules/uname -r/build
cmake:

docker run --user $(id -u):$(id -g) -v /etc/passwd:/etc/passwd:ro -e MAKE_JOBS=4 -e BUILD_BPF=ON -it -v /home/user/src:/source -v /home/user/build/falco:/build -v /lib/modules/uname -r/build:/lib/modules/uname -r/build falcosecurity/falco-builder cmake

Added -e BUILD_BPF=ON to compilation command and mapped /lib/modules/uname -r/build and ran
docker run --user $(id -u):$(id -g) -v /etc/passwd:/etc/passwd:ro -e MAKE_JOBS=4 -e BUILD_BPF=ON -it -v /home/user/src:/source -v /home/user/build/falco:/build -v /lib/modules/uname -r/build:/lib/modules/uname -r/build falcosecurity/falco-builder package

It fails to build ebpf module:
Scanning dependencies of target bpf
[ 55%] Built target docker-local-rule-list_sub_front.yaml
make[3]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
[ 56%] Built target docker-local-rule-invalid_missing_macro_name.yaml
make[4]: *** /lib/modules/5.0.0-36-generic/build: No such file or directory.  Stop.
make[3]: *** [Makefile:18: all] Error 2
make[2]: *** [driver/bpf/CMakeFiles/bpf.dir/build.make:57: driver/bpf/CMakeFiles/bpf] Error 2
make[1]: *** [CMakeFiles/Makefile2:7203: driver/bpf/CMakeFiles/bpf.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 58%] Built target catch2
[ 62%] Built target scap
[ 64%] Built target fakeit-external
make: *** [Makefile:150: all] Error 2

Any ideas?
Thanks in advance.
P.S. If instead of opening an issue I should have done anything different - please tell me

Apologize for the mess..

/kind ebpf_compilation

Thanks for opening 2rigor ! Even if you are in a container, compiling the BPF probe is very tied to the actual host machine kernel ABI and hence it’s headers. From what I can see it looks like you are missing the kernel headers on your host machine.
If your host machine is an Ubuntu (I’m inferring this from what you posted) you can achieve that by installing them and then retry the build :
sudo apt install linux-headers-$(uname -r)

@fntlnz thanks a lot!
I was already compiling ebfp on this machine.
In any case I've run
sudo apt install linux-headers-$(uname -r)
as well as
sudo apt-get install build-essential llvm clang
BTW, I also found I need to map /lib/modules (not not just /lib/modules/uname -r/build) for the container. The command I run now is:
docker run --user $(id -u):$(id -g) -v /etc/passwd:/etc/passwd:ro -e BUILD_BPF=ON -it -v /home/user/src:/source -v /home/user/build/falco:/build -v /lib/modules:/lib/modules -v /usr/src:/usr/src falcosecurity/falco-builder package
It fails (the above command didn't help) at not finding clang.

@2rigor i didn’t understand, did it work for you or not ? If it didn’t can you please post the logs ?

@2rigor - Good news! So the only missing problem you have is that you can't find clang right? Should we add it to the falco builder? It makes sense to me.

After adding (mapping) clang, i had some libraries missing. After mapping them, the version of some libraries was too old, so I started to change LD_LIBRARY_PATH, so didn't succeed.
I feel I'm doing smth. wrong..
Do you need logs? I will be able to post them on Sunday
@fntlnz thanks a lot in advance!

Yes those would speed up things @2rigor - maybe it’s something we already know!
The builder container is very “complicated” and needs some love to update the tool chains, if we can’t sort this out we could also have one specific for the eBPF probe.

I wanted to repeat all the steps I did from the very beginning, so I've installed Ubuntu from scratch.
Also due to errors I get I add mapping for /lib/modules/ and for /usr/src/ (the latter since /lib/modules/5.3.0-23-generic/build -> /usr/src/linux-headers-5.3.0-23-generic)
This time I installed 19.10 (previously it was 18.04).
I executed:
sudo apt install build-essential cmake autoconf wget automake patch elfutils libelf-dev pkg-config libtool linux-headers-$(uname -r) llvm clang > cmake_bpf.txt
Then, after cloning falco and sysdig sources to /home/aa/src, I ran:
docker run --user $(id -u):$(id -g) -v /etc/passwd:/etc/passwd:ro -it -v /home/aa/src:/source -v /home/aa/build_ebpf/falco:/build -e BUILD_BPF=ON -e HTTP_PROXY=http://<IP_ADDRESS>:8080 -e HTTPS_PROXY=http://<IP_ADDRESS>:8080 -v /lib/modules/:/lib/modules/ -v /usr/src/:/usr/src falcosecurity/falco-builder package > package_bpf.txt
Attached /etc/os-release content, cmake_bpf.txt and package_bpf.txt.
os-release.txt
cmake_bpf.txt
package_bpf.txt
Here the problem was missing clang. Then I tried to map directories relevant for clang playing with PATH and LD_LIBRARY_PATH - but it did not work..
How can I install clang and then start "package"?

I know that @jalseth is working on this on his issue #900 - I've been able to install clang on the bpf builder using the llvm-toolset-7 package but let's wait for @jalseth to submit a PR.
In the meanwhile, since this issue is newer and duplicated let's keep the conversation on #900 and close this.
Thanks @2rigor for all the details, feel free to continue the conversation on #900 - we will certainly need your feedback again once the docker image is updated.
/triage duplicate
/close

@fntlnz: Closing this issue.

In response to this:

I know that @jalseth is working on this on his issue #900 - I've been able to install clang on the bpf builder using the llvm-toolset-7 package but let's wait for @jalseth to submit a PR.
In the meanwhile, since this issue is newer and duplicated let's keep the conversation on #900 and close this.
Thanks @2rigor for all the details, feel free to continue the conversation on #900 - we will certainly need your feedback again once the docker image is updated.
/triage duplicate
/close

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.


Treat as type of array literals as the alias of the element type.

Resolves #2122.

Nice test set!

Awesome!


Make color indicator bigger

As a user editing code, I want to see the color indicator more clearly.

We could make it bigger.
This is defined in https://github.com/vizhub-core/vzcode/blob/main/src/client/CodeEditor/widgets.ts#L304

I agree that the indicator should be bigger. However, I also think it should be bounded in size so that it does not increase the spacing between lines in a jarring way.


"Stopped: Maximum iterations exceeded!"

⚠ Check for existing issues before proceeding. ⚠

[X] I have searched the existing issues, and there is no existing issue for my problem

Where are you using SuperAGI?
Windows
Which branch of SuperAGI are you using?
Main
Do you use OpenAI GPT-3.5 or GPT-4?
GPT-3.5
Which area covers your issue best?
Prompt
Describe your issue.
"Stopped: Maximum iterations exceeded!" What is the cause of this error??

How to replicate your Issue?
No response
Upload Error Log Content
celery_1           | [2023-07-09 23:11:37,551: INFO/ForkPoolWorker-8] ITERATION_LIMIT_CROSSED

Hey, you can increase the maximum iterations when you're creating an agent in the advanced settings.

You configure it upto 100.

Even if I set it to 100, it still doesn't work. Could this problem be because I am not a gpt plus subscriber?

Can you let me know what do you mean by not working?
It is stuck or it stops after a few iterations not going till 100?

Can you let me know what do you mean by not working? It is stuck or it stops after a few iterations not going till 100?

it gave the warning in the image I gave above, then it stopped. so it gave me no result. i tried everything; gpt-3.5, gpt-4, different tools... it still gives the same error. I think this might be because I didn't get an OpenAI subscription and upgrade to gpt 4.

I think the above error is linked to 2 things they system is hard coded to use 1 steps, the reason for this I believe is to keep it focused on results rather than just making list, 2nd if there isn't enough information in the instructions it runs out of information and just say it finished, 3 when you have given it lots of information and you reach the limit you just re run the system and it picks up from were it left if (I believe) I still change the first line to say pick up from were you finished to prime it to search for the last work it did.

I have ran that code and had to keep telling it to run again until it finished its code, im ising github codespace but i dint use templete i lounched it by connecting to code space in vs code at bottom left and onve in i used docker-compose up --build
…
________________________________ From: Ulaş @.> Sent: 10 July 2023 13:30 To: TransformerOptimus/SuperAGI @.> Cc: Darren Tarmey @.>; Comment @.> Subject: Re: [TransformerOptimus/SuperAGI] "Stopped: Maximum iterations exceeded!" (Issue #705) I think the above error is linked to 2 things they system is hard coded to use 1 steps, the reason for this I believe is to keep it focused on results rather than just making list, 2nd if there isn't enough information in the instructions it runs out of information and just say it finished, 3 when you have given it lots of information and you reach the limit you just re run the system and it picks up from were it left if (I believe) I still change the first line to say pick up from were you finished to prime it to search for the last work it did. I think you are wrong, what I am trying to get AI to do is not a complex project. Let me prove it to you like this: I run the program without using "Windows" or "codespaces", I run it with "SuperAGI Cloud" by logging in from the application's web address. I log in with my Github account and enter the OpenAI API Key. So, until this stage, there cannot be any error in the "config" file or any inadequacy in my computer. Let's create an "agent". I use the "SuperCode" template that I downloaded from the "Marketplace". As an example, I run the program without changing any input previously entered (I tried all "gpt" models.) BUT again the same error: "Stopped: Maximum iterations exceeded!" [image]https://user-images.githubusercontent.com/96961115/252339111-c816a942-5251-489b-84a8-db39302c4ec7.png — Reply to this email directly, view it on GitHub<#705 (comment)>, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAEQFCSPDPM3733TZBVJUQTXPPYW3ANCNFSM6AAAAAA2DZDZDU. You are receiving this because you commented.Message ID: @.***>

i have already run this code in "codespace". after making sure that everything is working properly, i connected to the port and tried again. none of these steps worked sorry. if you ask me, the problem will be solved when i buy OpenAI plus subscription.
Because in the "OpenAI API" key I have only default "gpt-3" is available. The SuperAGI program requires at least "gpt-3.5" (or "gpt-4"). Do you think I have the right idea? Am I right?

I too am having this issue recently. This is a curl test to test both the model, and my key.
┌─[siraj@white] - [~/ai/controllers/SuperAGI] - [2023-07-10 11:59:45]
└─[0] <git:(main 2b1ae8aa) > curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Say this is a test!"}],
     "temperature": 0.7
   }'
{
  "id": "chatcmpl-7anaqDhyHXflA61FNCN6X9m9wVJFw",
  "object": "chat.completion",
  "created":<PHONE_NUMBER>,
  "model": "gpt-3.5-turbo-0613",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "This is a test!"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 13,
    "completion_tokens": 5,
    "total_tokens": 18
  }
}

However, when I launch SuperAGI and start the task agent I get the following in the error log after attempting to connect several times:
celery_1           | Ensure the response can be parsed by Python json.loads.
celery_1           | [2023-07-10 16:03:20,315: INFO/ForkPoolWorker-8] error_code=invalid_api_key error_message='Incorrect API key provided: 5545454. You can find your API key at https://platform.openai.com/account/api-keys.' error_param=None error_type=invalid_request_error message='OpenAI API error received' stream_error=False
celery_1           | 2023-07-10 16:03:20 UTC - Super AGI - INFO - [/app/superagi/llms/openai.py:79] - Exception:
celery_1           | [2023-07-10 16:03:20,315: INFO/ForkPoolWorker-8] Exception:
celery_1           | 2023-07-10 16:03:20 UTC - Super AGI - INFO - [/app/superagi/llms/openai.py:79] - Incorrect API key provided: 5545454. You can find your API key at https://platform.openai.com/account/api-keys.
The API key is working as shown in the curl test. Maybe I'll look through recent merges to see if something could have created this problem during a merge.

The changes in this recent PR from 5 hours ago change the session call in super_agi.py:
https://github.com/TransformerOptimus/SuperAGI/pull/714/commits/e99afbd1cdaf41d5b0dd8478b81e8985c65b02ef
I haven't reviewed this PR but it's making changes to portions of the agent script that could cause an issue with the api key:
https://github.com/TransformerOptimus/SuperAGI/pull/714/commits/e99afbd1cdaf41d5b0dd8478b81e8985c65b02ef

Hi there,
I have tried several times and gotten “Stopped: Maximum iterations exceeded!”
That halted all testing.
Just wanted to reflect the problem and situations.
Thanks

Having the same issue!!

[WORKING SOLUTION]
I was facing the same issue on the Super AGI "Super Coder" agent and tried a few more, had the same issue.
However, I have resolved it for me now and its working.
STEPS TO RESOLVE:

While setting up the environment make sure to add these 4 API keys in the "config.yaml" file which should be a renamed version of "config-template.yaml":

Open AI API key
Pinecone API key
Google Console Search API key
Custom Search Engine ID (not an API key)

Make sure to check that your API key has available quota for usage try to run it into a python script like below:
`import openai

openai.api_key = 'YOUR-API_KEY'
def is_api_key_valid():
try:
response = openai.Completion.create(
engine="davinci",
prompt="This is a test.",
max_tokens=5
)
except:
return False
else:
return True
Check the validity of the API key
api_key_valid = is_api_key_valid()
print("API key is valid:", api_key_valid)
`
3. Start with simpler automations for any task, like say building a calculator using SuperCoder Agent.

If all the above steps are performed and the Open AI API key has usage limit available the AGI shall work fine.

Feel free to share if you're still facing any issues :)


resin-init-flasher-board: Correctly overwrite board init script

The board init scrip was not being properly installed so U-Boot and its
environment were not being correctly installed by the installer script.
Change-type: patch
Signed-off-by: Alex Gonzalez<EMAIL_ADDRESS>

@balena-ci I self-certify!

@balena-ci I self-certify!


fails to create coreos-stable on digitalocean

When trying to create a coreos-stable machine on Digitalocean, I keep getting the Maximum number of retries (60) exceeded error.
$ docker-machine create --driver digitalocean --digitalocean-access-token=xxxxxxxxxx --digitalocean-image=coreos-stable my-machine
Running pre-create checks...
Creating machine...
(digi) Creating SSH key...
(digi) Creating Digital Ocean droplet...
(digi) Waiting for IP address to be assigned to the Droplet...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Error creating machine: Error detecting OS: Too many retries waiting for SSH to be available.  Last error: Maximum number of retries (60) exceeded

Try adding --digitalocean-ssh-user core as well

works like a charm. thanks, @nathanleclaire!


Values persisted in "Download Data Source" window

Expected behavior
Each time the “Download Data Source” window is opened, the values contained in it should be cleared / reset.  (An exception might be the temporal and regional constraints)
See also #308
Actual behavior
The following values in the “Download Data Source” window are persisted the next time the window is opened:
•	Time Constraints (if set)
•	Region Constraints (if set)
•	Variable Constraints (if set)
•	Unique ID for the new local data source
•	Data source title
This can have some unwanted effects :
•	Time Constraints which were correct for the old dataset, are now are shown as “out of range” if the new dataset has different temporal coverage.
•	Variables are still selected from the old dataset even if they don’t exist in the new one
•	The default unique ID which is displayed has already been used. So if the user does not change it, the new data is not downloaded and an error message is generated.
(Note: values are persisted also when cate is closed and re-opened)
Steps to reproduce the problem

Open GUI

From ESA CCI Open Data Portal list, select esacci.AEROSOL.5-days.L3C.AEX.GOMOS.Envisat.aergom.2-19.r1 then click on “Download and/or open remote dataset”

In the “Download Data Source”, enter:
•	Time constraint: 2011-01-01 to 2012-01-01
•	Region: Lon. from -100 to 100, lat. from -70 to 70
•	Select variables: AEX550 (km-1), altitude (km), latitude (degrees_north), longitude (degrees_east)
•	Check “Download and make local data source”
•	Keep default unique ID: local.AEROSOL.5-days.L3C.AEX.GOMOS.Envisat.aergom.2-19.r1
•	Data source title: “title1”

Click “Download”.

Now from ESA CCI Open Data Portal list, select esacci.OZONE.mon.L3.NP.multi-sensor.multi-platform.MERGED.fv0002.r1 then click on “Download and/or open remote dataset”

In the “Download Data Source”, observe:
•	Time constraint: Now shown as “Out of range”
•	Region: Lon. From -100 to 100, lat. from -70 to 70 (as before)
•	Variable : AEX550, altitude, latitude, longitude (as before, but these variables don’t exist in the Ozone dataset)
•	Unique ID: local.AEROSOL.5-days.L3C.AEX.GOMOS.Envisat.aergom.2-19.r1 (as before, but is now incorrect)
•	Data source title: “title1” (as before)

Specifications
Cate 0.9.0-dev.4
Windows 7 Professional

I agree, an exception should be the temporal and regional constraints for time being. Later we might add drop-down lists from where users can select and reuse recently entered values.

Using the steps above with cate.0.9.0.dev.6,
Variables and data source title are cleared. Unique ID still has value from previous download.
Unique ID should also be cleared because if the user does not change it, the new data is not downloaded and an error message is generated.
Ticket needs to stay open and be re-assigned.

Good catch

Removed cu_mandatory because it is implied by  cu_review

Using the "steps to reproduce" with cate.0.9.0.dev.7,
Unique ID still has value from previous download (same as in cate.0.9.0.dev.6, see comment above)

Please re-test with 1.0.0.dev1

Confirmed it is fixed in 1.0.0.dev1. Closing issue.


update front-end to support nextPageToken

https://github.com/CanDIG/ga4gh-server/pull/61

closing issue!


does 3DFT support schedule animation export

i have an itwin with schedule linked and exported form Synchro. in the limitations section of the repository it states that schedule animation is not possible however in the showcase video it clearly showcase that schedule animation is possible for 4D animations of construction. Can this please be confirmed?

Exactly, the documentation is correct, schedule animation is not supported.
The video you're referring to is a presentation we did at the Unreal Fest 2022 to talk about 3DFT technology and some projects based on that technology. There was a demo that included schedule animation, which was done modifying this plugin, but not using this plugin as is.
Since this plugin is open source, you can modify it for many use cases like animation, simulation, etc. wherever your imagination and UE5 can take you :)
Please, be aware that this project is a Technical Preview and is available for testing purposes only, and not to be used in production.

Thanks for response Daniel, any luck or literature on how to modify the plugin to support schedule animation. As of now i have been using itwin data smith export to be able to play schedule animation in unreal engine.

I'd start by looking for how to export and read Synchro animations. Then, check the plugin's code to see which parts are generating the dynamic meshes that Unreal render, and modify its visibility e.g. using a lookup texture that changes according to the schedule.

Thanks to you!


Conflicting information in README

Description
This is more of a clarification question. I would like to help and update the docs/ terminal output if it is found either need to be updated. Below is what I noticed.
https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#github-pages
This section states :
...

Actual behavior
When you run npm run build you do not see that list of git commands, you instead see
  npm install -g pushstate-server
  pushstate-server build
  open http://localhost:9000

Environment
Run these commands in the project folder and fill in their results:

npm ls react-scripts (if you haven’t ejected<EMAIL_ADDRESS>node -v:  v6.6.0
npm -v: 3.10.8

Then, specify:

Operating system: Linux
Browser and version: Chrome

Reproducible Demo

I believe it is expected to see that aforementioned git commands after setting up the homepage script and performing an npm run build.

What is your homepage set to?

I have the homepage script set to "http://maxehnert.github.io/my-apps-name"

With a package.json like
  "name": "testing",
  "version": "0.0.1",
  "private": true,
  "homepage": "http://maxehnert.github.io/my-apps-name",
  ...
}

I see this in the console:

I’m not sure what you mean by “homepage script” because it shouldn’t be in "scripts". It should be a top-level package.json entry.

I see. The problem appears to be my own misunderstanding. I was under the impression homepage needed to be listed as a script and not a top level entry.
It all looks fine and well now! I'll close this out.

scripts is a special field in package.json, it lets you run code on npm run <command>.


Document the kubectl api-resources command

This is a...

[X] Feature Request
[ ] Bug Report

Problem:
With kubernetes/kubernetes#42873 merged, we need a page to document this nice feature.
Proposed Solution:

Add new page about this in reference section
Add pointer to the new page from the following pages (not a complete list):

https://kubernetes.io/docs/concepts/overview/kubernetes-api/
https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/
https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/

Page to Update:
See above.
Kubernetes Version:
v1.11

Closed by #9443


Integrate Timestamp module and test.

Timings improved with https://github.com/enjoy-digital/litex_m2sdr/commit/88a7fe6b596a948bd525e7633e01537eb4d322c9.


Updated docker build file for v<IP_ADDRESS>

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 98.22%. Comparing base (1aa3502) to head (e2c18bf).
Report is 2 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #89   +/-   ##
=======================================
  Coverage   98.22%   98.22%
=======================================
  Files          60       60
  Lines        2923     2923
  Branches      407      407
=======================================
  Hits         2871     2871
  Misses         32       32
  Partials       20       20

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Investigate allowing optional package parameters when parsing Protobuf schema

Per this discussion in gitter

Anton Semenov @a7emenov 04:40
@dmarticus thank you for the response, really appreciate it! Basically confirms all my assumptions. Though I really love Mu, this may be the reason why we'd have to switch to ScalaPB as it allows to be very flexible when generating packages.
Is it likely that in the future skeuomorph and, by extension, mu will support options like java_package?

It seems like at least one person would want us to allow for optional package generation within skeuomorph and mu.  I'm not sure at this point how significant of an undertaking that work would be but I figured it's worth making a task to track it so we can triage at some point in the future

@dmarticus, to add some clarity, my problems with the package option are:

It is mandatory for skeuomorph to function, but not for protoc.
It influences where the resulting files will be generated. While there are workarounds around this, I am inclined to believe it should have only "semantic" meaning, i.e. how services should be referenced.

As for a real-world example, my original .proto files do not have the package option and I cannot really change them as they are used across multiple teams. But even adding the package option is kind of fruitless without the muSrcGenIdiomaticEndpoints as clients generated by protoc will not be able to reference the service without the package prefix.

@a7emenov do you have an example protobuf file that i could work with that you'd like to be able to use with mu and skeuomorph?  I'm planning on implementing this behavior this week and I'd love to have a file that you want to be able to convert to use as a test case

@dmarticus, sure, thank you so much for a swift response.
Example 1:

File:
syntax = "proto3";
option java_package = "my_package";

service MyService {
  rpc Check(MyRequest) returns (MyResponse);
}

message MyRequest {
  string value = 1;
}

message MyResponse {
  string value = 1;
}

Expected:
MyService service will be generated in "my_package" package.

Actual:
Service generation fails as the package option is not provided.

Example 2:

File:
syntax = "proto3";
package other_package;

option java_package = "my_package";

service MyService {
  rpc Check(MyRequest) returns (MyResponse);
}

message MyRequest {
  string value = 1;
}

message MyResponse {
  string value = 1;
}

Expected:
MyService service will be generated in "my_package" package.

Actual:
MyService service is generated in "other_package" package.

Thank you for sharing!  These will be some great test cases for my implementation; I appreciate it!

@a7emenov we should be releasing this change this week!  Thanks for your help in providing the context around it and I hope you find the changes helpful :)

@dmarticus, I can't properly express how much this helps! Much obliged for acting so swiftly, this basically allows to keep using mu in the project. Looking forward to the release!

@a7emenov my pleasure!  It's great to have users who push the envelope of what we've made and identify gaps, so I appreciate you for that.  The release went out today (https://gitter.im/47deg/mu?at=5f4d6fa5dfaaed4ef521757a), and I'll publish the changes to sbt-mu-srcgen shortly.


Minion: Properly handle server reboots.

If an instance reboots, the minion code is unlikely to handle this gracefully.  In general, instances can reboot for image upgrades, power outages etc. So it's very important that we test for this.

migrated to https://trello.com/c/JiGHrXeS/124-minion-properly-handle-server-reboots


Can not build

checking for embedded Python support... yes, shared
checking for python-config... /usr/bin/python-config
checking for Python includes... -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7
checking for Python libraries... -L/usr/lib/python2.7/config-x86_64-linux-gnu -L/usr/lib -lpthread -ldl  -lutil -lm  -lpython2.7 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
checking for pthread_create in -lpthread... yes
checking for dlopen in -ldl... yes
checking consistency of Python build environment... no
configure: error:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
ERROR!
You probably have to install the development version of the Python package
for your distribution.  The exact name of this package varies among them.

@nickl- how'd it work out?  :)


feat: graphQL subscriptions support

TODO

[x]  Update subscription hooks params
[x] Create liveProvider for @pankod/refine-hasura
[x] Create liveProvider for @pankod/refine-nhost
[x] Create liveProvider for @pankod/refine-graphql

@pankod/refine-core

Added extra params to useSubscription and useResourceSubscription
useOne, useMany and useList passed extra params to own subscription hook.

@pankod/refine-hasura

Added liveProvider.

@pankod/refine-nhost

Added liveProvider.

@pankod/refine-graphql

Added liveProvider.

#closes #2091

Are we going to add live provider options to documentation? 🤔
Also maybe we can add comments on examples to say using liveProvider is optional and dataProvider is not depending on an existing liveProvider. With the current codebase, they look a bit confusing and users might think that liveProvider is a requirement rather than an opt-in feature 😅
Maybe we can even create separate examples for live providers and only mention them in comments of the data provider examples to keep it simple 🤔


issue Resolved for dounloading button added

Resolved the Problem of Dounloading the Notes file

Added the Download Button

NO sir i have not deleted anything

NO sir i have not deleted anything

can you contact me again? I'll tell you what is the issue


XPT2046 Touch screen control on other SPI bus

With the ESP32-2432S028 and other similar displays the touch control chip is on the second buss of the ESP32 but tcMenu has no options when the TFT and touch are on different bus.

Need more information to understand what plugins you're using etc.
For example, the TFT-eSPI plugin uses the libraries internal interrogator, and therefore would be configured within that library. So does the BSP touch plugin.
The only other plugin is the ArduinoLibrary based plugin, I am assuming that. However, someone will need to determine how the plugin needs to change in order to pass in other than the default bus, is it in the variable definition, here in the plugin:
https://github.com/davetcc/tcMenu/blob/master/xmlPlugins/core-display/ArduinoTouchLibraryIntegration.xml#L58

If you add GFX_Library_for_Arduino for the ESP devices as selection it will simplify things as many displays are preconfigured for use .
In the PDQgraphicstest example are Arduino_GFX_databus.h , Arduino_GFX_dev_device.h , Arduino_GFX_display.h , Arduino_GFX_pins.h .  Arduino_GFX_dev_device.h contains a large number of displays by uncommenting the used display the configuration is taken care of and in the TouchCalibration example touch.h just needs the GPIO numbers used
Regards Paul

Hi, I've just been trying the same sort of thing e.g. trying the get tcMenu to run on an ESP32 2432S028R Cheap Yellow Display (CYD) using the XPT2046 Touch screen SPI  (VSPI) controller. The GPIO pins are as detailed by paulvk2 above. I've tried all the related examples but I've failed to get any tcMenu input working from the touch screen of the CYD.
Do you know of any working code examples of tcMenu on the CYD with its XPT2046 VSPI resistive touch screen input device? Thanks.

A successful workaround for (this) issue https://github.com/TcMenu/tcMenu/issues/471 is in Github repo https://github.com/AtmosphEng/TcmTouch-XPT2046.git. tcMenuDesigner is used to generate the XPT2046 touchscreen as per normal and the workaround code is found by searching for the tag: WORKAROUND_TCMENU_WITH_ESP32_CYD. Basically the ESP32_CYD uses a different SPI for the resistive touchscreen on SPI2 (VSPI). The io pin set for VSPI is put in *_main.cpp and is used to create mySPI. the tcMenuDesigner generated file tcMenuAdaTouchDriver.h is modded to access mySPI via an extern. Iin its init(), theTouchDevice(); is then modded to theTouchDevice(mySpi);.
Thanks to Brian Lough for the initial ESP32_CYD resistive touch code sample at: https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/tree/main/Examples/Basics/2-TouchTest.


Etherbase e2e tests

Description
Sister PR to https://github.com/celo-org/celo-blockchain/issues/738
Changes use of etherbase to validator and tx-fee-recipient in a backwards compatible way.
Tested
Ran e2e tests
Related issues

Fixes https://github.com/celo-org/celo-blockchain/issues/738

Backwards compatibility
Yes

@lucasege Does this PR need to be merged still?

Closing as this PR has become stale. Please feel free to reopen with updates if it is still relevant!


Separate type application from function application

As discussed in #28931, currently the type application for the function with generic parameters is tied to that function application.
Specialize the value of the function with generics is only possible during the call. So the following compiles fine:
function id<V> (v : V) { return v }

const some : Date = id<Date>(new Date())

But this does not:
function id<V> (v : V) { return v }

type IdDate         = typeof id<Date> // TS1005: ';' expected

const dateId        = id<Date> // TS1109: Expression expected.

It would be very beneficial to separate type application from function application. For example (the original reason of this request), it will allow mixins with generic parameters:
export type Constructable<T extends any> = new (...args : any[]) => T
export type AnyFunction             = (...input: any[]) => any
export type Mixin<T extends AnyFunction> = InstanceType<ReturnType<T>>

export const Atom = <V, T extends Constructable<Object>>(base : T) =>

class Atom extends base {
    value               : V

    hasValue () : boolean {
        return this.hasOwnProperty('value')
    }
}

export type Atom = Mixin<typeof Atom> // this currently works, but does not have generic argument

export type Atom<V> = Mixin<typeof Atom<V>> // this is the goal

Any hope for this feature? I think it will unblock many other advanced use cases.

Any hope for a proper solution? Having a generic argument for a mixin function is a very common requirement.

Checking in to see if this is on the radar

Please and thank you.


Gzip performance

This is how perf report looks for docker push.

Looks like compress/gzip in golang is quite slow. To check this I write gzip and gunzip that can work with compress/gzip and code.google.com/p/vitess/go/cgzip.
gzip.go:
package main

import (
	"compress/gzip"
	"code.google.com/p/vitess/go/cgzip"
	"flag"
	"io"
	"log"
	"os"
)

func main() {
	l := flag.Int("l", -1, "compression level")
	c := flag.Bool("c", false, "use cgzip")
	flag.Parse()

	var w io.Writer
	var err error

	if *c {
		w, err = cgzip.NewWriterLevel(os.Stdout, *l)
	} else {
		w, err = gzip.NewWriterLevel(os.Stdout, *l)
	}

	if err != nil {
		log.Fatal(err)
	}

	io.Copy(w, os.Stdin)
}

gunzip.go:
package main

import (
	"compress/gzip"
	"code.google.com/p/vitess/go/cgzip"
	"os"
	"io"
	"log"
	"flag"
)

func main() {
	c := flag.Bool("c", false, "use cgzip")
	flag.Parse()

	var r io.Reader
	var err error

	if *c {
		r, err = cgzip.NewReader(os.Stdin)
	} else {
		r, err = gzip.NewReader(os.Stdin)
	}

	if err != nil {
		log.Fatal(err)
	}

	io.Copy(os.Stdout, r)
}

I have test layer that is 521mb in tar and 66mb in gzipped tar with default compression level. This is real image and final layer of our production image. Now it takes 90s+ to push 2 layers to the registry and this is mostly CPU-bound issue.
Below my tests on on my mbp (core i5 with ssd, so it's not io bound). I ran every command twice and picked best result.
Gunzip:

cmd
time
slowdown

`time cat layer.tar.gz
gunzip > /dev/null`
0m1.041s

`time cat layer.tar.gz
./bin/gunzip > /dev/null`
0m4.596s

`time cat layer.tar.gz
./bin/gunzip -c > /dev/null`
0m1.134s

Gzip:

cmd
time
slowdown

`time cat layer.tar
gzip -c > /dev/null`
0m12.567s

`time cat layer.tar
./bin/gzip > /dev/null`
0m25.794s

`time cat layer.tar
./bin/gzip -c > /dev/null`
0m12.854s

Clearly current performance is far from perfect.
This issue is related to #7291 where comments are restricted to collaborators. If docker migrates to cgzip then #9060 is going to improve too.
cc @unclejack

@bobrik We can only switch to cgzip for pushing right now. cgzip was running into problems when decompressing layers produced by the compress/gzip package the last time I've tried this.
This means we'd have to do a static link for zlib in the static build and link zlib dynamically in the dynamic link build. Both options would require that we actually add a new dependency. Using cgzip for compression needs to be discussed before we can add this.

Do you have a link for issues you were having with cgzip?
Speed benefits overweight additional dependency in my opinion.
What do you think about creating an issue about gzip performance in golang repo? Maybe it's their problem after all.

I thought external gzip was added as part of #7542, but browsing through the changes, it doesn't appear so.
Is there any reason we don't try to detect and use an external gzip? We could then detect the pigz utility as well for even faster operations.

Currently docker can saturate only one core, with pigz it can use more resources, but this is not necessarily a good thing.

@bobrik pigz was just a nice bonus. If you're concerned about docker using more than 1 core, then I would put forth a few comments.

You're still going to be bottle necked by network throughput. If the network can't handle the data being pushed through it, pigz will slow down. Thus pigz will only use the resources it needs to keep up.
Docker has never committed that the daemon won't use more than one core (that I am aware of). Such behavior is at the control of the GO scheduler. It is entirely possible for the scheduler to change in which it will start using multiple cores (without having to set GOMAXPROCS).
Go can do detection of the GOMAXPROCS value. If set to 1, don't use pigz.

10Gbps of gzip can easily saturate many cores, I assume. I like the idea of using GOMAXPROCS for pigz.
I'd love to know about cgzip issues, because I had no success googling them myself.

I compiled docker with cgzip and ran into an error when tried to download image packed with usual docker instance:
FATA[0004] Error pulling image (2015-01-13.1) from <redacted>, ApplyLayer exit status 1 stdout:  stderr: unexpected EOF

@unclejack is this what you meant?
My gunzip.go -c works as expected without any errors on the same layer file.

I hacked applyLayer to write stdin to a file:
func applyLayer() {
	runtime.LockOSThread()
	flag.Parse()

	f, err := os.Create(fmt.Sprintf("/var/tmp/docker-layer-%s.tar", path.Base(path.Dir(flag.Arg(0)))))
	if err != nil {
		fatal(err)
	}

	defer f.Close()

	io.Copy(f, os.Stdin)

	encoder := json.NewEncoder(os.Stdout)
	if err = encoder.Encode(applyLayerResponse{8}); err != nil {
		fatal(fmt.Errorf("unable to encode layerSize JSON: %s", err))
	}

	flush(os.Stdout)
	flush(os.Stdin)
	os.Exit(0)
}

Looks like for each docker pull stdin gets different length:
web605 ~ # ls -la /var/tmp/docker-layers-*/docker-layer-fe95bf7d5f5090fdaf5c5d442f9f05211f9cb338107a41ff10c7a46be4be2dea.tar
-rw-r--r-- 1 root root 196949644 Jan 22 11:18 /var/tmp/docker-layers-1/docker-layer-fe95bf7d5f5090fdaf5c5d442f9f05211f9cb338107a41ff10c7a46be4be2dea.tar
-rw-r--r-- 1 root root 196934405 Jan 22 11:37 /var/tmp/docker-layers-2/docker-layer-fe95bf7d5f5090fdaf5c5d442f9f05211f9cb338107a41ff10c7a46be4be2dea.tar
-rw-r--r-- 1 root root 196912275 Jan 22 11:43 /var/tmp/docker-layers-3/docker-layer-fe95bf7d5f5090fdaf5c5d442f9f05211f9cb338107a41ff10c7a46be4be2dea.tar

@alainjobart looks like you written cgzip, do you have any idea what could be wrong?

Okay, I only replaced compression code in 1.4.1 (master has #10269) and here's what I've got:

version
time
win

1.4.1+gzip
80s
baseline

1.4.1+cgzip
58s
28% faster

Pretty nice improvement, if you ask me :)
Pulls work just fine for those images on vanilla docker 1.4.1.

@unclejack any updates on this?

@bobrik I'll ping you on a PR soon.

@unclejack how soon, btw?

One should try LZO or lrzip instea dof gzip. I've found this to beat gzip in both compression and time to compress.

@bobrik I've looked into this a while ago and had working code. However, the code has been changed quite a bit since then and I need to look into this again.

Any news? I tried migrating v1->v2 registry on 1.8.1 and it takes forever even with a small registry when v1 takes less than 100gb on disk.

@bobrik This will most likely be fixed through the upgrade to Go 1.6. Both compression and decompression performance will be improved.
There's no point in doing anything else for this now as there are many high priority actionable items to take care of before doing this.
Even though this will be fixed automatically when upgrading to Go 1.6, this issue should stay open because we could make other improvements in the meantime.

@unclejack do you have any links that makes you think that go 1.6 will improve things dramatically?

Ping @vatts @aaronlehmann: I wasn't aware of this, thought you might find it interesting.

I looked at the git history for Go's compress/flate package and didn't see any recent changes that look like they will boost deflate speed. There are some optimizations to inflate, but I don't think they will close the decompression speed gap. @unclejack, which Go 1.6 changes are you thinking of?
I came across https://github.com/klauspost/compress, which looks promising. But I wonder how we would convince ourselves that this package is robust enough to switch over to it.

@bobrik @icecrime @aaronlehmann https://go-review.googlesource.com/#/c/14080/ is one such important change which affects both compression and decompression speeds on CPUs with that instruction.
https://go-review.googlesource.com/#/c/15651/ is yet another change.
https://github.com/klauspost/compress is indeed promising, but those changes need to go into the stdlib's version of gzip. There's a lot more to be done regarding the performance of the gzip package.
Anyone interested in improving performance should look into 1) improving https://github.com/klauspost/compress 2) getting those changes into the stdlib 3) improving the testing of all compression related packages 4) finding and getting rid of differences between gzip archives produced by the Go gzip package and by those produced using the gzip command (the zlib based one)

Another approach here would be to avoid compressing inline during the push. If we saved the image artifacts, and do the compression at commit time, the cost would be amortized for every push. It would also contribute to layer hash stability and dramatically decrease registry storage requirements.

@stevvooe That would have to be done as background jobs. Everyone would complain about slow commits otherwise.


feat: Added support for null in useTableListener

resolves #1228

Is this just a nicety from the types perspective? As in most places we would call this we'd need to do useTableListener(table ?? undefined) right now? Or is there a distinct reason for null value?
Looks like there's other hooks (useTable, useTableColumn) that would want the same treatment if that's the case, but the few use cases the table type is Table | undefined

This just happened to be for a use case I am working on another PR. Also, it was a chance to add test coverage to this one hook but yes, this is just a convenience to avoid the coalescing.


add string as documentation for the getter

Great work so far for this plugin,
I would like to suggest a usability improvement: when generating the getters, please also generate documentation comment for each with the string it represents.
Thanks,
Regards

Thanks @d-silveira.
Could you submit a pr for this?


ci: replace with sepolia

all heil sepolia

@mattsse can we add dispatch? this wont build unless is a push onto master so not exactly ideal

would like to keep thing as they are, thanks!

would like to keep thing as they are, thanks!

Close the corresponding issue then while your at it 😉


On Windows Phone 8 remodal popups did not block document scroll

To reproduce the issue create a simple page with scrolling content ad a remodal popup. When the popup is open it seem all ok (the background is ok and the popup is right centered) but I can still scroll the page and the popup overlay scroll with the page.
My device screenshot:

Solved, just add this style:
html.remodal-is-locked {
    touch-action:none;
}

perhaps body { overflow:hidden;} would fix it


Numbering in lists is wierd

By the spec, and with this example below, you can see the numbering always continues even though perhaps it should not
  Unordered

  + Create a list by starting a line with `+`, `-`, or `*`
  + Sub-lists are made by indenting 2 spaces:
    - Marker character change forces new list start:
      * Ac tristique libero volutpat at
      + Facilisis in pretium nisl aliquet
      - Nulla volutpat aliquam velit
  + Very easy!

  Ordered

  1. Lorem ipsum dolor sit amet
  2. Consectetur adipiscing elit
  3. Integer molestie lorem at massa

  1. You can use sequential numbers...
  1. ...or keep all the numbers as `1.`

  Start numbering with offset:

  57. foo
  1. bar

iOS
Android

Turns out common spec does not support this anyway


Simplify assert and stdout from library + Lightweight listener sockets

Fixes #221, #242, #241
The CSP core never emits calls to printf, instead it uses error counters for typical errors. And a global errno with codes for rare errors. The packet and protocol logs have been converted into flags, which enable the printf to stdout of these two. lock debugging have been wiped, i didn't feel it was necessary or used ever.
The new error counters will be able to catch many more overflow, and underruns than the old string based error log system. While the errno should simply always be 0. If it's not something is not setup correctly or there is a bug in the code.
The can interface gets it's own errno, because an error on the CAN bus isn't necessarily a bug within CSP. But rather on the bus.
The way to access these variables is to include <csp/csp_debug.h> from your application.
One final note: All posix stuff, like socketcan, uart_linux, and zmq just uses printf directly as printf is assumed to be available on posix.
PART 2:
do not use csp_conn objects for listener sockets
We now demand the user allocate a csp_socket_t, then calls csp_bind, csp_listen and csp_accept on that socket as per usual.
a call to csp_socket() is not longer necessary.
sock->opts can still be set manually.
Rationale: csp_conn is a very  heavy object, namely because of the rx queue and the RDP rx and tx queues. For listener sockets, all that is really neaded is a single queue to accept new connections on. This can be somewhat smaller than the conn rx_queue, and also there is no need for RDP, idin, idout and all that jazz.
Callbacks will now be bound directly to the port number, instead of through a socket object. Saving even more memory.
PART 3:
Uses global RDP retransmission queue.
It was not neceassary for each connection to have it's own RDP queue. So we flipped it around, so there is one RX and one TX queue for RDP, and it serches for the conn id on each queued packet. This saves A LOT of memory too.

From Gomspace point of view, we have 2 main concerns.

The pollution of stdout with printf. We prefer to have printouts done via a macro, so that we can override these and print to a different stream if wanted.
Loosing the ability to override the printouts from CSP (CSP_USE_EXTERNAL_DEBUG)

@bfol
Okay to me it sounds a little like the same thing. But I get your point. This is why there is no printf or stdout of any kind left inside CSP.
Regarding those few cases that remain, the old macro system was a little cumbersome and convoluted. How about we make a macro like this:
#ifndef CSP_PRINTF
#define CSP_PRINTF printf
#endif

And the the build script could replace CSP_PRINTF with any function from your log system as long as it keeps the format, vaargs arguments.

Actually it would be even cooler if we could get error codes for the last interfaces too, so there would be no need for stdout at all.
Regarding the very useful packet printout. It think we should make that as a user hook on incoming and outgoing. In fact that could even be used for stuff other than just the printout.
And the RDP debugging is something that is only rarely used, but I want to leave it in place with a toggle, and perhaps a compilation option to disable it, to save the large amount of strings inside.

Another thing is that I might want to do is add weak linked implementations of many of the hooks. How do you like that idea?

Converting the remaining printf to error codes and weak linked hooks would be the best option in my view. Especially a hook on packet input / output would be really usefull

Okay, great I will do that.

Global error number vs return values
I don't see the point of having a global variable, csp_dbg_errno, instead of just a simple return value.  It's racy under multi-threads env we are all in.
Despite the name, it's not even a debugging facility.  It's actually the obligation of application authors to check how functions behaved.
This csp_dbg_errno thing is a big NAK from me.
This is related #234
Subsystem error counter
I like the idea.  I'm not sure we should have fixed csp_dbg_ prefix though.
If it's not atomic, we should use mutex to protect it. Yes, with ARM instruction, integer increment is atomic if and only if one thread is writing.  But, it should be good practice and relates to the next point.
We should allow variable sizes for the counter.  Some mission might want to use 64 bits for the counter.  If 64 bits are chosen, we need a lock or the counter must be atomic.
I don't know it's a good idea to make the variables global.  If the value is read-only for applications, it might be better to have a read accessor for them.
Debugging printf
As have already mentioned, we, Space Cubics, wanted to replace them with our own custom functions.  But with subsystem error counters installed, and good error indication from function return values, we might not need it at all.  I haven't checked it fully just yet.
stdio is huge and we don't want it in our spacecraft.  But I'm sure it's nice to have while debugging.
Other comments
I've started review this PR but honestly it's quite hard to see what's going on.
As noted by you, the PR consists 3 different issues with 9 commits, without telling which one does which.  I'll just list them here for me and any one visiting this PR in future.  No other intention is associated with it.

Remove assert from csp

This should be the one for #221

merge master

It says "merge master" but it's not every merge commit.
This has the new debug APIs in it.  New symbols, csp_dbg_init_errno, csp_dbg_inval_reply and many other csp_dbg_*; new defines CSP_DBG_* in csp_debug.h
This commit replaces csp_log_*() with printf() by introducing (temporarily?) stdio.h.
So this is definitely for #221, but two big parts listed above. (nice to split)
But I might have missed something from "merge" part.

Cleanup in debug header

This moves newly introduced symbols in csp_debug.c, and
Remove unused csp_debug related macros.
Rename a few newly introduced symbols.
This should be part of the former part of the previous commit (squashed to one after the split)

Fix examples and add color to packet and rdp print

This actually has four parts:

fixing code under examples/ by removing old symbols
introducing terminal colors in macros in csp_debug.h
csp_print_packet() fix for newline handling
removing redundant debug part from the build systems

do not use csp_conn objects for listener sockets

csp_port.c indeed introduce two new callbacks, csp_port_get_callback() and csp_bind_callback().
And, csp_listen() now call csp_queue_create_static()
So this is #242
But, many other parts are debug macro renames, which hide the important changes in csp_port.c
somehow csp_types.h now includes csp_queue.h and csp_semaphore.h, along with struct csp_socket_s from csp.h.

Fix build on freertos" and "Fix example and cmake build

fix regression caused by other commits

Global RDP retransmission queue

#241

Updated changelog

just as it says.

First of all, thank a lot for a very good review. I have been looking forwards to this one.
First of all, once again I can only apologise for the messy commits. The thing is that I couldn't implement these things without eachother. And the way GitHub handles merges, it automatically takes every into one pull request.
Also the merge commit was a mistake, it should have been a rebase, but after fixing a conflict it turned into a merge.
Your dissertation of the individual changes is perfect. So no comments on that. I will address each of the major points in separate replies below

Global error number vs return values

Okay, i know that it's racy, but it may be the best solution and here is why.

It does not replace any return values. And the user is never required to check the error number for anything. Period.
It is only used for very rare error events that previously had a printf. For example if a null pointer is passed to csp_close or stuff like that. Stuff that shouldn't ever happen.
All the print outs that actually can happen, under normal operation like buffer underrun, and connection flooded are now in counters. A counter is much better than a printf.
Removing the printfs saves code size
Including the very rare stuff as special return values, just leaves the problem to the user to handle. And this adds to the code size and leads to more confusing API.
For many functions all that matters is wether it was successful or not. And like with the new csp_send() it is fire and forget. So CSP handles any errors internally.
The value of the CSP errno should always be zero. All the errors going in here is a sign of a malfunctioning system. So controlling that it's zero is only required if any network issues appear.

I think as a solution to the global errno, I will add a hook together with a weak implementation, so the user can catch the error codes themselves and do what they want with it. So CSP will default to a global.

Subsystem error counters

Each interface already has error counters, so I just expanded it to cover other parts of the stack.
Again it's not something that requires to be checked by any means. But if there is an issue, and you are loosing packets. Reading the debugging counters can point to the cause.
Suggestions for better names?
I want the memory address to be accessible from the outside. In order to map the variables to our parameter system. For remote read access.
Also I don't want any runtime setup, the symbols should be available to the linker. Because the mapping happens compile time.
Adding acessor functions just adds more code to do runtime what can be done compile time.
The csp_conf struct is also a global, on order to reduce namespace clutter i could put the counters inside a struct.
I think this is the simplest solution to just have them being accessible as a global. And they are prefixed with csp_ so it's not like it should conflict with other variables.
Regarding atomic access, we should let the compiler handle that and use <stdatomic.h>. We don't want to introduce locks inside of a debugging function that can happen inside an isr. So maybe we just use 'atomic_uint_8'
The compiler actually reduces this to a single atomic instruction on most platforms. Which is pretty nice.
I chose uint8 for the space savings, and because it doesn't matter if an error counter wraps around. It's not the absolute number that's interesting. It's the fact that there was a change between two events for example. So usually while debugging you read out the value first, then perform an action and read out again. So no need for uint64.

Debugging printf

We have only two places where CSP would make calls to printfs left. And that is the packet printout, and the protocol debugging, which i still actively use when working with RDP.
I think I just agreed with bfol, to make the packet in/out event into a hook, with a weak implementation defaulting to printf when that flag is set.
And the protocol debug i think will be changed into a compile time enable, because it's actually only meant for the developer.
We do have some printfs remaining on Linux only stuff like zmq and socketcan. But let's try to remove those too.
Finally stdio.h isn't that bad, if you use picolibc. It's tiny, low stack usage and does not use malloc().

Final comment. Globals aren't always bad. Especially on Embedded. Because it can be a tedious task to pass down and cary around a CSP instance pointer through each and every function call. Especially because CSP is not designed to be multiple instances. It will always be the same pointer anyways.
And making the variables static means we would need a function call to get a pointer, which produces larger code and runs way slower. And if that function always returns the same pointer it might as well be available as a symbol.

Globals aren't always bad.

No, of course not.  Passing a parameter to a deep function chain pollute CPU registers and slow things down.  So if you have to run a tight loop with a value under a deep calls, global variables can save you.  But, we don't have a deep call chain in CSP.  We don't want a deep call chain because of limited stack size.

Adding acessor functions just adds more code to do runtime what can be done compile time.

That's true! If the accessor code for each rarely used variables adds up, that's bad for restricted devicees.  And this is a good and a valid reason to use global variables.  So I agree on using global variables.  A bit more on below.
But,

Because it can be a tedious task to pass down and cary around a CSP instance pointer through each and every function call.

I don't think this is a good reason.  tedious to write?  embedded software is tedious to write because all nominal passes are about 20 % of the total system.  80 % is error checking and abdominal code pass we don't want to happen in the field.  OK you didn't mean this. :stuck_out_tongue_winking_eye:  But, we write reusable code once because we don't want to repeat tedious work again.  But someone must write that code for this messy unpredictable real-world so that all others can lazily use the code.  (Being a lazy is a good thing for a programmer, right :wink:)

CSP is not designed to be multiple instances

If so, I can understand and I think it's a valid reason to have one single global csp instance and all function referencing to it.  That will reduce register pollution as well.

making the variables static means we would need a function call to get a pointer

This is a good point to use global variables in embedded system until LTO is widely used!  Both GCC and Clang already supports -flto.  But Zephyr doesn't not support it yet.  How about FreeRTOS?

i could put the counters inside a struct.

A good pre defined prefix should be enough, IMHO.  Or is there any merit of using struct that I don't see?

But someone must write that code for this messy unpredictable real-world so that all others can lazily use the code. (Being a lazy is a good thing for a programmer, right 😉)

I cannot agree more on this. Best example is csp_send. CSP should be so easy to use, that it is not even required to check the return value of the send function, in order to avoid a buffer leak.
(If we want the old behaviour back, it will be a different function, which allows for retrying with the same buffer.)
The debug variables are really meant as lazy mans measure, to get the cause, if something is not looking right. The normal use cases, should not be polluted with extremely rare return values, that the user won't check for anyways.
In general it was a mistake to carry along FreeRTOS convention of returning pdTRUE which is a define set to 1. I believe it's nicer to use the zero good everything else bad approach. But that is another issue #209

Final call,
I took care of a bunch of stuff and wiped the last few issues i had remaining. It's a little all or nothing with this commit. If there's something you don't like we can still change it on develop after the merge.


Switch staging hub on openscapes hub to its own EFS

As part of https://github.com/2i2c-org/infrastructure/issues/4453, we want to support running one EFS per hub. This allows accurate cost allocation per hub for home directory storage.
This task requires:

[x] Modify our terraform code to allow creation of multiple EFS instances (taking care to not damage the existing ones). Equivalent work done on GCP in https://github.com/2i2c-org/infrastructure/issues/4334. https://github.com/2i2c-org/infrastructure/pull/4498
[x] Setup an EFS instance for staging. The existing EFS can be retained for prod (and temporarily, workshop) https://github.com/2i2c-org/infrastructure/pull/4503
[x] Move the staging hub to use the new EFS instance set up for it. Existing data for the staging hub does not need to be migrated, and can be deleted.

Definition of done
The staging hub uses a new EFS instance set up specifically for it.

I have finished the tasks of this issue. Only remaining bit is deleting the previous contents of the staging homedir. Will do so in a later iteration, after doing a workshop migration so I can still use it for testing.
Note
This task was a bit more complex than initially anticipated and required more effort than planned (first sub-task). Not sure what to do with this info, but leaving it here for reference.


Release 2022.12.23

This release adds the following PRs:

#24

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

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


possible memory leak

Hi I am on linux debian jessie 8.2 I am getting a memory leak report from valgrind. Here's the light output, if you would like the full leak trace let me know.
==20651== 72 bytes in 1 blocks are definitely lost in loss record 41 of 58
==20651==    at 0x4C29986: calloc (vg_replace_malloc.c:711)
==20651==    by 0x57EBB70: XkbGetMap (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==20651==    by 0x503F6C7: createKeyTables (x11_init.c:244)
==20651==    by 0x50407B8: initExtensions (x11_init.c:579)
==20651==    by 0x5040EF4: _glfwPlatformInit (x11_init.c:743)
==20651==    by 0x503AE23: glfwInit (init.c:125)
==20651==    by 0x4E343C8: init_glfw (core_engine.c:125)
==20651==    by 0x4E34535: init (core_engine.c:161)
==20651==    by 0x4E344D4: ce_init (core_engine.c:146)
==20651==    by 0x401364: main (main.c:106)

these are the lines of code in question
static int init_glfw(int w, int h, const char *title) {
    if (!glfwInit()) return -1;
    main_window = glfwCreateWindow(w, h, title, NULL, NULL);
    if (!main_window) {
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(main_window);
    gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
    glfwGetWindowSize(main_window, &window_width, &window_height);

    glfwSwapInterval(1);
    return 1;
}

i call these functions to cleanup glfw at the end
static void cleanup(void) {
    ce_quit();

    glfwDestroyWindow(main_window);
    glfwTerminate();
}

You and Valgrind are both right, but the issue has already been fixed with #662.


Update privacy policy

Change privacy policy to reflect new functionality
Inline translations into static page to make updates less painful

Jira ticket URL
https://dfedigital.atlassian.net/browse/TEVA-1994

Review app deployed to https://teaching-vacancies-review-pr-2807.london.cloudapps.digital


expose xml as res.body

never thought I'd say this, but for amazon shit it's necessary

I was able to use the solution from @laurilarjo, so Thanks!
For those who want to use that solution as well, there's a little typo in his code. Don't forget the error comes first in the callback function on end.
var request = superagent.get(url);
request.buffer();
request.type('xml');
request.end(function(err, res) {
    console.log(res.text);
});

or better yet,
const request = superagent.get(url)
 .buffer()
 .type('xml')
 .end((err, res) => {
    console.log(res.text);
});

I also was able to use solution from @laurilarjo, thx!
The key point is enable buffering with .buffer(), the .type() refers to the request body and useless if you are only interested on the response body:
superagent.get(url).buffer().end((err, res) => console.log(res.text);

@susumuasaga, your solution worked for me!


DllNotFoundException: App Error on Android Device

hey :)
I'm using the FirebaseAnalytics plugin for unity and I got this error message.:
DllNotFoundException: App
03-14 19:12:21.159 12740 12759 E Unity   :   at (wrapper managed-to-native) Firebase.AppUtilPINVOKE/SWIGExceptionHelper:SWIGRegisterExceptionCallbacks_AppUtil (Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate,Firebase.AppUtilPINVOKE/SWIGExceptionHelper/ExceptionDelegate)
I build the game and test it on an android device. I got this error while running the app and see it in the android logcat console. So in the start function in unity I'm running the firebase code and at this point the game stucks and throws this error

@Oni22 for future reference, it would be great to point out when you cross post an issue.
This is cross posted here https://stackoverflow.com/questions/49285840/firebase-unity-error-dllnotfoundexception-app
We (like many other plugins) use the Android Resolver to download and incorporate Android library dependencies:
https://github.com/googlesamples/unity-jar-resolver#auto-resolution
From my response to https://github.com/firebase/quickstart-unity/issues/53
"
Perhaps you have no AAR files in your project under Plugins/Android?
You may have disabled the Android Resolver which would add the AAR dependencies for you. You can enable the Android Resolver from the menu under
Assets --> Play Services Resolver--> Android --> Settings
Then check Enable Background Resolution
Finally, since resolution was probably disabled run it manually using the
Assets --> Play Services Resolver--> Android --> Force Resolve menu option
"
Cheers,
Stewart

Okey, I will pay attention :)
So but the problem is I cant find this option "Enable Background Resolution" and I installed the newest Playe Service Resolver...

This is my Path
Assets --> Play Services Resolver--> Android Resolver --> Settings

'Enable Background Resolution' was renamed to 'Enable Auto-Resolution' looks like you have it checked.

Oh okey and I do Force Resolve but nothing changed

I'm using Unity 2017.3.1f1 and JDK 8u162, android sdk is up to date

Which architecture are you building for?
What is in your Plugins/Android/ directory?

for android

I guess there missing files how you said

Is the Android Resolver failing?  Did you check the console for error messages?
You've shared a screenshot of the folder view, it should contains a load of files / folders like com.google.firebase.* etc.

Yeah i know. So after I clicked on Force Resolve this window appears:

I  hit yes but after that this error appears:

and I got "Gradle failed to fetch dependencies" error in the unity console

Any chance you could share your Unity.log file?  It sounds like a bug in the resolver that we just happen to be looking at right now.

Ok we resolved an issue with the Android Resolver, you can give this a try https://github.com/googlesamples/unity-jar-resolver/blob/master/play-services-resolver-<IP_ADDRESS>.unitypackage

Hmm same issue. I got the same error windows as I showed you in the previous post of me. So here is my editor log file:
Editor.log
Meanwhile I tested if the issue appears on another machine but nothing of them. On another machine the plugin imports all files and folder. I thought my android  sdk or something like that is broken but after reinstall of all components nothing changed.

Here the Error from the console:
Gradle failed to fetch dependencies.
Failed to run 'C:\Users\On\Desktop\TEEEST\Test\Temp\PlayServicesResolverGradle\gradlew.bat -b "C:\Users\On\Desktop\TEEEST\Test\Temp\PlayServicesResolverGradle\PlayServicesResolver.scripts.download_artifacts.gradle" --daemon "-PANDROID_HOME=C:/Users/On/AppData/Local/Android/Sdk" "-PTARGET_DIR=C:\Users\On\Desktop\TEEEST\Test\Assets\Plugins\Android" "-PMAVEN_REPOS=" "-PPACKAGES_TO_COPY="'
stdout:
Starting a Gradle Daemon (subsequent builds will be faster)
stderr:
FAILURE: Build failed with an exception.

What went wrong:
Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at https://docs.gradle.org/4.2.1/userguide/gradle_daemon.html
Please read the following process output to find out more:

FAILURE: Build failed with an exception.

What went wrong:
Could not create service of type ClassLoaderRegistry using GlobalScopeServices.createClassLoaderRegistry().

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

Get more help at https://help.gradle.org

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

Get more help at https://help.gradle.org

exit code: 1
UnityEngine.Debug:LogError(Object)
Google.Logger:Log(String, LogLevel)
GooglePlayServices.PlayServicesResolver:Log(String, LogLevel)
GooglePlayServices.c__AnonStorey14:<>m__1F(Result)
GooglePlayServices.c__AnonStorey15:<>m__28()
GooglePlayServices.PlayServicesResolver:PumpUpdateQueue()
UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

@Oni22 is it possible you have any anti-virus software or anything else on your machine that is preventing Gradle from executing?
If you manually run the command that is failing from the command line does it work?

I tested both but no change.

I reinstall JDK and Android SDK but nothing changed this is very strange

@Oni22 when you mention you tested both, what do you mean?  Did you try running Gradle from the command line (you'll need to keep Unity open so that it doesn't delete the Temp directory) ?
Have you reproduced this on another machine?
Is there anything you can share regarding your OS version or anything else installed on your machine that may be causing this to fail?  It's certainly very strange that it simply can't run Gradle.  Is the machine not connected to the internet, if so the Gradle wrapper (which bootstraps Gradle) won't be able to fetch Gradle or download the Android dependencies.

Yes I run gradle from command line while Unity was open. I import the package on another machine but there was everything ok. On the other machine my app works well after building. So no I couldn't reproduce this on another machine. My internet works. On my machine unity always trys to import the m2repository and after that it fails. On the other machine nothing of this happened.
Im using:
-Windows 10 Version 1709 Pro

JDK 8u162
Latest Android SDK all compnents are up to date
Unity 2017.3.1f1

I had a quick Google on this since it's related more to Gradle than our use of it...
https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/modification-development/2881869-could-not-create-service-of-type
Thread ends on a solution here:
https://stackoverflow.com/questions/30840526/gradle-could-not-create-service-of-type-initscripthandler-using-buildscopeservic

nothing helps still same error...

Hello, I've got the same problem. Is there anything new? I've read this  and there i found that this error is because of missing (C/C++) .so files. Where are these files located? I've seen a lot of .arr libs, even .pom and .srcaar, but no .so.
Build will proceed without errors, but when I start application and try to use anything from Firebase (like FirebaseStorage or FirebaseDatabase), the error from original question will apear (even with library version so:
DllNotFoundException: App-4.5.2
I attach full error

Thanks in advance, guys

@vratislavino it sounds like you didn't run the Android Resolver (by default it runs automatically) to pull the Android components required by Firebase into your build.  The .so files for Android are in the *.srcaar files that are distributed as part of the plugin.
@Oni22 I suggest opening up a ticket with support https://firebase.google.com/support/ where you can have someone debug this with you.

Haven't heard from anyone on this in a while, I'll assume you solved the issue, closing this out.

Hello @stewartmiles I am struggling with the same problem in Firebase SDK 5.5.0. I read all your answers but nothing help. I am using latest GPS and AdMob services in my game.  Pass through all the step in firebase.com. Can you help ?

Can you open a new issue and give some more detail on what steps you took? Have you tried reproducing the issue in the quickstart testapp? If you can get the quickstart working, we can start drilling down into what might be wrong in your app.