Feature Request: Fetch GitHub repo stars count API in production only

Description
I would like to suggest a feature that calls the GitHub repo stars to count API only in the production phase of the project, not in the development phase.
Motivation:

What is the motivation behind this feature request?
The motivation behind this feature request is to improve the performance of the website during development by reducing the number of calls to the GitHub repo stars count API. As the API calls are made multiple times during the development phase, it can slow down the website's performance.

How will it benefit the project or its users?
By implementing this feature, the website's performance will be improved during the development phase. It will not only reduce the API calls but also reduce the development time required to build the website.

Thank you for your time and contribution!

The commit for this feature request can be found here: https://github.com/JunDevHarsh/ReadmeEase/commit/f5eb837e9b244aff4fef2d6e851b330ccb1d51ee


feat(GroupTheory/ArchimedeanDensely): discrete iff not densely ordered

Stronger statements than previously proven Ors

[x] depends on: #15846

This fell off the queue when bors crashed yesterday
bors r+
Just in case:
bors d+


added azure and gcp fingerprint checker

@martonsereg

Jenkins build failed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/1332/


Rock paper scissor game

PR Description 📜
Please include summary related to the issue you have fixed and describe your PR in brief over here by specifying the issue number on which you were working below
Fixes # <your_issue_number> #11

Mark the task you have completed ✅

[x ] I have performed a self-review of my own code or work.

[ x] My changes generates no new warnings.

[x ] I have added README file in my folder

[ x] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

Thank you  @Tusharjoshi1703 , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


No device is detected

I followed what is described but no device is detected by the integration even when entering the data

@nimroddolev @elax46 Do you see anything in the logs? some errors?

https://github.com/shaiu/technicolor/issues/11#issuecomment-1040472915

@elax46
can you please add this to your configuration.yaml:
logger:
  default: warning
  logs:
    custom_components.technicolor: debug

then remove the custom component
restart HA
add the component again

Look at the logs and please attach relevant logs here (mask your ips if there are)

here's how you requested!
2022-02-15 21:11:45 WARNING (SyncWorker_4) [homeassistant.loader] We found a custom integration technicolor which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
Traceback (most recent call last): File "/usr/local/lib/python3.9/threading.py", line 973, in _bootstrap_inner self.run() File "/usr/local/lib/python3.9/threading.py", line 910, in run self._target(*self._args, **self._kwargs) File "/usr/local/lib/python3.9/logging/handlers.py", line 1518, in _monitor self.handle(record) File "/usr/local/lib/python3.9/logging/handlers.py", line 1499, in handle handler.handle(record) File "/usr/local/lib/python3.9/logging/__init__.py", line 952, in handle self.emit(record) File "/usr/src/homeassistant/homeassistant/components/system_log/__init__.py", line 192, in emit entry = LogEntry(record, stack, _figure_out_source(record, stack, self.hass)) File "/usr/src/homeassistant/homeassistant/components/system_log/__init__.py", line 99, in __init__ self.message = deque([record.getMessage()], maxlen=5) File "/usr/local/lib/python3.9/logging/__init__.py", line 367, in getMessage msg = msg % self.args TypeError: not all arguments converted during string formatting 2022-02-15 21:13:54 INFO (MainThread) [custom_components.technicolor.device_tracker] add_entities tracked $set()

@elax46
Are there more logs with "custom_components.technicolor"?

@elax46 Are there more logs with "custom_components.technicolor"?

no

I have the same problem. The log shows the message:
2022-03-04 22:22:31 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration technicolor which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

How can I check that connection with router is opened?

@elax46 @potasoa
I need your help.
I need the html page of your device-modal from your router.
You can find it at: http://<IP_ADDRESS>/modals/device-modal.lp (could be that your router has a different ip address)
Please note that this holds all your ip/mac addresses of your router. This is sensitive data. I understand if you don't want to share it so you can just change the numbers to what ever you want. Because all I need is the structure of the page (could be that it's different than mine)
Also what is your router model? You can find that information at: http://<IP_ADDRESS>/modals/gateway-modal.lp
Thanks

Hope this screenshot is useful. Thanks!!!
[image: imagen.png]
El sáb, 5 mar 2022 a las 18:51, Shai Ungar @.***>)
escribió:

@elax46 https://github.com/elax46 @potasoa https://github.com/potasoa
I need your help.
I need the html page of your device-modal from your router.
You can find it at: http://<IP_ADDRESS>/modals/device-modal.lp (could be
that your router has a different ip address)
Please note that this holds all your ip/mac addresses of your router. This
is sensitive data. I understand if you don't want to share it so you can
just change the numbers to what ever you want. Because all I need is the
structure of the page (could be that it's different than mine)
Also what is your router model? You can find that information at:
http://<IP_ADDRESS>/modals/gateway-modal.lp
Thanks
—
Reply to this email directly, view it on GitHub
https://github.com/shaiu/technicolor/issues/11#issuecomment-1059804842,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOEXW2FPRVYPQ6XHMGEWPWDU6ONKLANCNFSM5OG7UCFA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID:
@.***>

@potasoa I don't think you uploaded the image

Sorry, I can see it in my mail program. I attach here

.

@potasoa Are you sure you have a technicolor modem?
Anyway this screenshot doesn't help me.
@nimroddolev @elax46 it will be very helpful if you can give me what I asked for above.
Without more info I can't solve the issue.

Sorry Shaiu, my english is not good ennough. I guess that is a technicolor modem beccause it has been detected by Home Assitant as PnP device:

Regarding to the device-modal, the link provided is in error. Please, giveme  the information needed to look for it in router configuration. The model es Technicolor CGA4233, as you can see in the screenshot
Many thanks

@elax46 why did you close?

@shaiu  Why this issue is closed ? I have exactly the same issue. Thanks for sharing a solution.

@cedricboitte
can you follow this: https://github.com/shaiu/technicolor/issues/11#issuecomment-1040563144
and share the logs?

2022-08-03 17:09:53 WARNING (SyncWorker_6) [homeassistant.loader] We found a custom integration technicolor which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2022-08-03 17:10:51 INFO (MainThread) [custom_components.technicolor.device_tracker] add_entities tracked $set()
Model of Technicolor : CGA4233
Hoping it will help you .

@elax46 why did you close?

I closed the request because my device is customized by my ISP so there is only the motherboard in technicolor

Complete log :
Logger: homeassistant.config_entries
Source: components/system_log/init.py:96
First occurred: 14:52:28 (1 occurrences)
Last logged: 14:52:28
Error setting up entry <IP_ADDRESS> for technicolor
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/init.py", line 29, in srp6authenticate
token = self._br.find(lambda tag: tag.has_attr('name') and tag['name'] == 'CSRFtoken')['content']
TypeError: 'NoneType' object is not subscriptable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/technicolor/router.py", line 42, in setup
await self.hass.async_add_executor_job(self._api.srp6authenticate)
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/init.py", line 60, in srp6authenticate
_LOGGER.error("Authentication failed. Exception: ", e)
File "/usr/local/lib/python3.10/logging/init.py", line 1506, in error
self._log(ERROR, msg, args, **kwargs)
File "/usr/local/lib/python3.10/logging/init.py", line 1624, in _log
self.handle(record)
File "/usr/local/lib/python3.10/logging/init.py", line 1634, in handle
self.callHandlers(record)
File "/usr/local/lib/python3.10/logging/init.py", line 1696, in callHandlers
hdlr.handle(record)
File "/usr/local/lib/python3.10/logging/init.py", line 968, in handle
self.emit(record)
File "/usr/src/homeassistant/homeassistant/components/system_log/init.py", line 179, in emit
entry = LogEntry(
File "/usr/src/homeassistant/homeassistant/components/system_log/init.py", line 96, in init
self.message = deque([record.getMessage()], maxlen=5)
File "/usr/local/lib/python3.10/logging/init.py", line 368, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 357, in async_setup
result = await component.async_setup_entry(hass, self)
File "/config/custom_components/technicolor/init.py", line 46, in async_setup_entry
await technicolor_router.setup()
File "/config/custom_components/technicolor/router.py", line 44, in setup
_LOGGER.exception("Failed to connect to Technicolor", e)
File "/usr/local/lib/python3.10/logging/init.py", line 1512, in exception
self.error(msg, *args, exc_info=exc_info, **kwargs)
File "/usr/local/lib/python3.10/logging/init.py", line 1506, in error
self._log(ERROR, msg, args, **kwargs)
File "/usr/local/lib/python3.10/logging/init.py", line 1624, in _log
self.handle(record)
File "/usr/local/lib/python3.10/logging/init.py", line 1634, in handle
self.callHandlers(record)
File "/usr/local/lib/python3.10/logging/init.py", line 1696, in callHandlers
hdlr.handle(record)
File "/usr/local/lib/python3.10/logging/init.py", line 968, in handle
self.emit(record)
File "/usr/src/homeassistant/homeassistant/components/system_log/init.py", line 179, in emit
entry = LogEntry(
File "/usr/src/homeassistant/homeassistant/components/system_log/init.py", line 96, in init
self.message = deque([record.getMessage()], maxlen=5)
File "/usr/local/lib/python3.10/logging/init.py", line 368, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting

Same probleme here, same error "TypeError: not all arguments converted during string formatting"

I am having the same issue that there is no devices being detected
this is from the log using your debug command in the configuration file
2022-09-24 10:10:44.570 INFO (MainThread) [custom_components.technicolor.router] update_all 2022-09-24 10:10:44.571 INFO (MainThread) [custom_components.technicolor.router] update_device_trackers 2022-09-24 10:10:46.193 INFO (MainThread) [custom_components.technicolor.router] update_device_trackers devices $[] 2022-09-24 10:10:46.206 INFO (MainThread) [custom_components.technicolor.device_tracker] add_entities tracked $set()
and here is the data structure from the router

and the router info

@tproulund @cedricboitte
Can you check if issue is fixed in the new version?

@shaiu thanks for the up-date . Please find herebelow the issue :
Cette erreur provient d'une intégration personnalisée
Logger: custom_components.technicolor.router
Source: custom_components/technicolor/router.py:42
Integration: Technicolor (documentation, issues)
First occurred: 10:38:18 (1 occurrences)
Last logged: 10:38:18
Bad logger message: Failed to connect to Technicolor ((TypeError("'NoneType' object is not subscriptable"),))
Traceback (most recent call last):
File "/config/custom_components/technicolor/router.py", line 42, in setup
await self.hass.async_add_executor_job(self._api.srp6authenticate)
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/init.py", line 29, in srp6authenticate
token = self._br.find(lambda tag: tag.has_attr('name')
TypeError: 'NoneType' object is not subscriptable

@cedricboitte
I need the html source of http://<IP_ADDRESS>/login.lp
or whatever you login page is

@shaiu , hi . please find herebelow. Thanks for your follow-up.

|
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  | Français
  | Nederlands
  | Deutsch
  | English
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  | ©  Technicolor. All rights reserved.
  |
  |
  |
  |
  |
  |  HELP
  |
  |
  |
  |
  | Français
  | Nederlands
  | Deutsch
  | English
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |
  |

@cedricboitte thanks but this doesn't look like the html I need.
I need the page that holds the username/password login page.
The html code should have a form element in it.

I have the same issue. These are the details of my router:
Nome fornitore: Technicolor
Nome prodotto: MediaAccess FGA2130FWB
Versione software: 1.0.1b
Versione firmware: 18.3.n.0482_FW_233_FGA2130
Versione hardware: GBNT-2
I tried the debug, and this is the only log i could find related to the integration:

Logger: technicolorgateway
Source: /usr/local/lib/python3.10/site-packages/technicolorgateway/init.py:63
First occurred: 09:57:45 (1 occurrences)
Last logged: 09:57:45

Authentication failed. Exception: 'NoneType' object is not subscriptable

Logger: custom_components.technicolor.router
Source: custom_components/technicolor/router.py:42
Integration: Technicolor (documentation, issues)
First occurred: 09:57:46 (1 occurrences)
Last logged: 09:57:46

Bad logger message: Failed to connect to Technicolor ((TypeError("'NoneType' object is not subscriptable"),))
Traceback (most recent call last):
File "/config/custom_components/technicolor/router.py", line 42, in setup
await self.hass.async_add_executor_job(self._api.srp6authenticate)
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/init.py", line 31, in srp6authenticate
token = token_tag['content']
TypeError: 'NoneType' object is not subscriptable
Could the Fastweb (my ISP) customization ve the issue? I tried to get the modals as you asked in previous comments, but i couldn't. Another issue with the customization, i guess.
Thanks

@Zi0mele @cedricboitte
I've released a new version 0.3.0
Can you check if it fixes the issue?
Thanks

Hi,
thanks for your answer and for the update.
I tried updating the integration, restarted HA and even deleted and reinstalled the integration, just to be sure. Still same errors:

Logger: custom_components.technicolor.router
Source: custom_components/technicolor/router.py:42
Integration: Technicolor (documentation, issues)
First occurred: 09:25:44 (3 occurrences)
Last logged: 11:22:44

Bad logger message: Failed to connect to Technicolor ((TypeError("'NoneType' object is not subscriptable"),))
Traceback (most recent call last):
File "/config/custom_components/technicolor/router.py", line 42, in setup
await self.hass.async_add_executor_job(self._api.authenticate)
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/init.py", line 67, in authenticate
return self.srp6authenticate()
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/init.py", line 30, in srp6authenticate
token = token_tag['content']
TypeError: 'NoneType' object is not subscriptable

Logger: technicolorgateway
Source: /usr/local/lib/python3.10/site-packages/technicolorgateway/init.py:71
First occurred: 09:25:44 (3 occurrences)
Last logged: 11:22:44

Authentication failed. Exception: 'NoneType' object is not subscriptable

@Zi0mele
can you please follow this:
https://github.com/shaiu/technicolor/issues/11#issuecomment-1040563144
and then post the debug logs?

@elax46
can you please add this to your configuration.yaml:
logger:
  default: warning
  logs:
    custom_components.technicolor: debug

1. then remove the custom component

2. restart HA

3. add the component again

Look at the logs and please attach relevant logs here (mask your ips if there are)

I've got the same issue with a DGA4331, but I cannot find the wanted log.
What is please the path to it in HA?

can you please add this to your configuration.yaml:
logger:
  default: warning
  logs:
    custom_components.technicolor: debug

1. then remove the custom component

2. restart HA

3. add the component again

Look at the logs and please attach relevant logs here (mask your ips if there are)

@shaiu I've got the same issue with a DGA4331, but I cannot find the wanted log.
What is please the path to it in HA?

Did you update the integration to v0.3.0?
Did you add the config in configuration.yaml?

@Cr4z33 Did you update the integration to v0.3.0? Did you add the config in configuration.yaml?
@shaiu yes I did all of the above, but my question was where can I find then the log in HA? :D

@Cr4z33
Settings -> System -> Logs

@Zi0mele can you please follow this:
#11 (comment)
and then post the debug logs?

Tried it and went to check the logs in the config folder, but I fond the same logs I've posted earlier.

@Cr4z33
Settings -> System -> Logs

@shaiu hmmm no error logs for your module... that's strange... 🤔

Check for any log of mine. INFO/DEBUG

Check for any log of mine. INFO/DEBUG
@shaiu please bare with me, but I am still not so used to where to look at in HA. 😅

What' the path to get to your integration's logs please?

@Cr4z33 no worries
You can download the whole log from here:
![Screenshot 2023-04-17 at 13 37 50](https://user-images.githubusercontent.com/1286993/232461102-6da9c6d5-407e-
4324-aac8-1f1ccaf8df82.png)
then just look for logs with the topic 'custom_components.technicolor'

@Cr4z33
Please also add under logs (in configurration.yaml):
technicolorgateway: debug
so the final configuration will be:
logs:
    custom_components.technicolor: debug
    technicolorgateway: debug

then please uninstall the integration and install it again (so we will have a fresh install with all logs)
Thanks

@Cr4z33 great.
Now we are getting somewhere.
I need the following:

go to the page where you see all the addresses
I need the html file of that page
also I need the url of that page

That will let me know why no devices are getting back to the integration
Thanks

Here is the HTML and the URL of that page is .

@Cr4z33 weird.. it was supposed to work. I've tried with the html you gave me and it passed my tests.
I've released version 0.4.0 that contains more debug logs.
Can you update and try again to remove the integration and add it back?
Then paste the logs again.
Thanks!

Still not populating.
Here's the new log, but tell me... is it supposed to contain all that router HTML code in it? 🤔

@Cr4z33
Yes. I intentionally print so much to understand the problem.
You can remove the rows in configuration.yaml and restart HA - that will stop the printing.

@shaiu alright I'll leave the debuggin part in the config until the issue is gone. 😄

@Cr4z33 I've released a new version 0.5.0
Can you please try it?
Thanks

@shaiu bingo it's finally working and populating with entities!
https://imgur.com/a/X33PeO1
Thanks for all your support and efforts!

@Cr4z33 glad to hear that!
Thanks for all your corporation!

Mine isn't working either. Not sure if you want a new issue or if I just post on this one?
Here is the HTML from https://<IP_ADDRESS>/modals/device-modal.lp
device-modal.lp.txt
Here are the HA logs:
Home Assistant Core
2023-05-27 19:45:22.891 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Running pre installation steps
2023-05-27 19:45:22.891 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Pre installation steps completed
2023-05-27 19:45:22.891 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Running installation steps
2023-05-27 19:45:25.824 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Download of router.py completed
2023-05-27 19:45:25.828 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Download of const.py completed
2023-05-27 19:45:25.833 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Download of manifest.json completed
2023-05-27 19:45:25.834 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Download of __init__.py completed
2023-05-27 19:45:25.838 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Download of device_tracker.py completed
2023-05-27 19:45:25.839 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Download of config_flow.py completed
2023-05-27 19:45:25.841 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Download of strings.json completed
2023-05-27 19:45:25.853 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Download of en.json completed
2023-05-27 19:45:26.855 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Installation steps completed
2023-05-27 19:45:26.855 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Running post installation steps
2023-05-27 19:45:26.892 INFO (SyncWorker_6) [homeassistant.loader] Loaded technicolor from custom_components.technicolor
2023-05-27 19:45:26.892 WARNING (SyncWorker_6) [homeassistant.loader] We found a custom integration technicolor which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2023-05-27 19:45:26.904 INFO (MainThread) [custom_components.hacs] <Integration shaiu/technicolor> Post installation steps completed
2023-05-27 19:46:05.658 INFO (MainThread) [homeassistant.setup] Setting up technicolor
2023-05-27 19:46:05.658 INFO (MainThread) [homeassistant.setup] Setup of domain technicolor took 0.0 seconds
2023-05-27 19:46:05.666 INFO (SyncWorker_2) [technicolorgateway] trying srp6authenticate
2023-05-27 19:46:06.469 INFO (SyncWorker_2) [technicolorgateway] srp6authenticate success
2023-05-27 19:46:06.469 INFO (MainThread) [custom_components.technicolor.router] update_all
2023-05-27 19:46:06.469 INFO (MainThread) [custom_components.technicolor.router] update_device_trackers
2023-05-27 19:46:06.692 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry <IP_ADDRESS> for technicolor
File "/config/custom_components/technicolor/__init__.py", line 46, in async_setup_entry
await technicolor_router.setup()
File "/config/custom_components/technicolor/router.py", line 47, in setup
File "/config/custom_components/technicolor/router.py", line 56, in update_all
File "/config/custom_components/technicolor/router.py", line 61, in update_device_trackers
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/__init__.py", line 80, in get_device_modal
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/__init__.py", line 94, in get_device_modals
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/modal.py", line 40, in get_device_modal
File "/usr/local/lib/python3.10/site-packages/technicolorgateway/modal.py", line 63, in get_data_from_rows

@DrSpaldo thanks for reporting.
looks like the modal.lp you provided doesn't have a list/table of ip addresses.
Can you check again?

looks like the modal.lp you provided doesn't have a list/table of ip addresses. Can you check again?

Thanks for the reply @shaiu. Sorry, I didn't realise I had to login first, see logged in version attached:
device-modal.lp.txt

@DrSpaldo I've released a fix. version v0.6.0
Please check in home assistant and update

@DrSpaldo I've released a fix. version v0.6.0 Please check in home assistant and update

Thanks for the quick response and update @shaiu . The integration/device now loads!
I am not sure exactly if it is doing the correct thing or not though. At the moment, I am only getting a device tracker (my router) and nothing else. Should it be displaying any information about the router/modem itself? For example, speeds in & out, etc

@DrSpaldo  It's only a device tracker

Ok, thanks


Making labels

Hi @reshnashrestha
As the maintainer, you'll need to create new labels according to the requirements.

Sure @Mosaddeq107 just let me know if you want something new to label.

Sure @Mosaddeq107 just let me know if you want something new to label.

Hi @reshnashrestha, you can make some new labels, namely, help wanted, fixed, bug, error, etc. Basically, you need to create more new 10 Labels for the grading purpose of our homework.

I have created new labels but I don't think we have to create 10 more new labels. To my understanding, we have to use 10 labels. Let's ask the clarification with prof. @laserlab

Yes you need a total of ten. However it is always a good idea to discuss which to use for every new homework

Yes, prof, and we can create new ones as per requirements.

The requirements jus say you need ten, not ten new ones

Yes I got it, what I mean to say here is that as per the labels required in the issues we can add that label. @laserlab prof.


fix:update intro-description in intro.css for email-sign-up page

Checklist:

[x ] I have read freeCodeCamp's contribution guidelines.
[ x] My pull request has a descriptive title (not a vague title like Update index.md)
[ x] My pull request targets the main branch of freeCodeCamp.
[ x] All the files I changed are in the same world language, for example: only English changes, or only Chinese changes, etc.

Closes #41062

fix:update intro-description in intro.css for email-sign-up page

Hi @manziEric I am going to go ahead and close this to let the work continue on the other PR we have for the same issue.
I see you have more PRs open for other issues, so I hope you will not mind letting the contributor on the other PR get to fix this issue.
Thanks once again for taking the time to work on this, and being a first time code contributor to this repo.


Get TFT button is not working

@zaelgohary After investigating in get tft button I found that issue related to this PR https://github.com/threefoldtech/tfgrid-sdk-ts/pull/2563/files#diff-fce083955bd2accb8ca8a9c35f2f4c1915853c058393a1b14e1ae26dad9aa2c0R43-R45

Work completed:
Reverted grid store changes in funds card.

verified and fixed on devnet and working fine now
version : 85a6fa4
https://github.com/threefoldtech/tfgrid-sdk-ts/assets/110984055/af5c78f2-c5e3-4a63-b00b-d9bb65646fe1


CONFLUENCE: Enable rat gradle task

This PR revert two commits that disable the RAT.
./gradlew rat fails unless we have https://github.com/confluentinc/kafka/pull/282 too, in which case it passes.
More detailed description of your change,
if necessary. The PR title and PR message become
the squashed commit message, so use a separate
comment to ping reviewers.
Summary of testing strategy (including rationale)
for the feature or bug fix. Unit and/or integration
tests are expected for any behaviour change and
system tests should be considered for larger changes.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Latest build is green: https://jenkins.confluent.io/job/confluentinc-pr/job/kafka/job/PR-283/5/
Merging this PR.


HTTP endpoint - INSERT with ON CONFLICT DO UPDATE clause fails in unexpected way

CrateDB version
5.4.3
CrateDB setup information
CrateDB Cloud.
Problem description
INSERT with ON CONFLICT DO UPDATE clause fails in unexpected way.
Steps to Reproduce
(1) Create table
CREATE TABLE IF NOT EXISTS "doc"."agencymeetingreadytoprocess" (
   "id" TEXT NOT NULL,
   "steps" OBJECT(STRICT) AS (
      "transcribe" TEXT,
      "parse" TEXT,
      "load" TEXT
   ),
   "timeline" OBJECT(STRICT) AS (
      "transcribe" TIMESTAMP WITH TIME ZONE,
      "parse" TIMESTAMP WITH TIME ZONE,
      "load" TIMESTAMP WITH TIME ZONE
   ),
   "transcription" OBJECT(STRICT) AS (
      "uniqueId" TEXT,
      "downloader" TEXT
   ),
   "meetingId" TEXT,
   "meetingDate" TIMESTAMP WITH TIME ZONE,
   "publishedDate" TIMESTAMP WITH TIME ZONE,
   "keywords" ARRAY(TEXT),
   "links" ARRAY(OBJECT(STRICT) AS (
      "url" TEXT
   )),
   "sourceType" TEXT,
   "sourceUrl" TEXT,
   "videoURLs" ARRAY(TEXT),
   "title" TEXT,
   "description" TEXT,
   "agency" OBJECT(STRICT) AS (
      "agencyId" BIGINT,
      "name" TEXT,
      "stateCode" TEXT
   ),
   "documents" ARRAY(OBJECT(STRICT) AS (
      "url" TEXT,
      "requestURL" TEXT,
      "type" TEXT,
      "contentType" TEXT,
      "contentLength" BIGINT,
      "filename" TEXT
   )),
   "createdAt" TIMESTAMP WITH TIME ZONE,
   "updatedAt" TIMESTAMP WITH TIME ZONE,
   PRIMARY KEY ("id")
)
CLUSTERED BY ("id") INTO 6 SHARDS
WITH (
   "allocation.max_retries" = 5,
   "blocks.metadata" = false,
   "blocks.read" = false,
   "blocks.read_only" = false,
   "blocks.read_only_allow_delete" = false,
   "blocks.write" = false,
   codec = 'default',
   column_policy = 'strict',
   "mapping.total_fields.limit" = 1000,
   max_ngram_diff = 1,
   max_shingle_diff = 3,
   number_of_replicas = '0-1',
   "routing.allocation.enable" = 'all',
   "routing.allocation.total_shards_per_node" = -1,
   "store.type" = 'fs',
   "translog.durability" = 'REQUEST',
   "translog.flush_threshold_size" = 536870912,
   "translog.sync_interval" = 5000,
   "unassigned.node_left.delayed_timeout" = 60000,
   "write.wait_for_active_shards" = '1'
)

(2) Run the following two times, replacing auth with the basic auth string.
import fetch from 'node-fetch'

const auth = '...'

const getAuthHeader = (auth: string) => ({
  Authorization: 'Basic ' + Buffer.from(auth, 'binary').toString('base64'),
})
const sqlEndpoint =
  'http://localhost:4200/_sql'
const sql = `INSERT INTO "doc"."agencymeetingreadytoprocess" ("meetingId","agency","createdAt","meetingDate","sourceType","sourceUrl","steps","title","updatedAt","videoURLs","timeline","transcription","id") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)
    ON CONFLICT (id) DO UPDATE SET "updatedAt" = ?,"timeline" = ?,"transcription" = ?,"steps"['transcribe'] = ?`

const args = [
  'swagit-coronadousdca-10102023-517',
  {
    agencyId: 72611,
    name: 'Coronado Unified School District',
    stateCode: 'CA',
  },
  '2023-10-10T20:26:19.172Z',
  '2023-10-05T12:00:00.000Z',
  'swagit',
  'http://coronadousdca.swagit.com/specialty',
  { load: 'complete', parse: 'incomplete', transcribe: 'complete' },
  'KCMS 10-5 Broadcast',
  '2023-10-10T21:20:53.694Z',
  [
    'https://admin-v2.swagit.com/podcasts/2023/10/10/10102023-518.360.mp4',
    'https://stream.us-central1-b.swagit.com/vod/_definst_/admin-v2/2023/10/10/10102023-518.360.mp4/playlist.m3u8',
  ],
  {
    transcribe: '2023-10-10T21:10:00.642Z',
    load: '2023-10-10T21:20:53.694Z',
  },
  { uniqueId: '6525b448c484e452fe48df08' },
  '6525b36b3d9cfcf8ec8f732b',
  '2023-10-10T20:30:00.748Z',
  { transcribe: '2023-10-10T20:30:00.748Z' },
  { uniqueId: '6525b448c484e452fe48df08' },
  'pending',
]

const result = await fetch(sqlEndpoint, {
  method: 'post',
  body: JSON.stringify({ stmt: sql, args }),
  headers: { 'Content-Type': 'application/json', ...getAuthHeader(auth) },
})

console.dir(await result.json(), { depth: 10 })

(3) Observe the following error
{
  "error": {
    "message": "SQLParseException[Cannot add column `transcribe` to strict object `agency`]",
    "code": 4000
  }
}

Actual Result
{
  "error": {
    "message": "SQLParseException[Cannot add column `transcribe` to strict object `agency`]",
    "code": 4000
  }
}

Expected Result
Success.

Looks like you are using a wrong JSON payload schema. As stated here https://cratedb.com/docs/crate/reference/en/5.4/interfaces/http.html, the args must be set as the value of an args key.
So the body should be something like:
body: JSON.stringify({ "stmt": sql, "args": args }),

That is just object property shorthand syntax. It's equivalent to "args": args.

This code is part of a library that has been successfully running in production for a year. My guess is that there is a regression in CrateDB. https://www.npmjs.com/package/mongo2crate

It is just a wild guess, without running the example yet: Maybe the notation within the DO UPDATE clause is slightly off at the very end: Is it correct to address the subcolumn like "steps"['transcribe'], or would "steps['transcribe']" be more appropriate?

It is just a wild guess, without running the example yet: Maybe the notation within the DO UPDATE clause is slightly off at the very end: Is it correct to address the subcolumn like "steps"['transcribe'], or would "steps['transcribe']" be more appropriate?

Yes it is, and no "steps['transcribe']" is wrong.

I did not investigate about anything else yet, but the plain SQL variant, without using statement parameters, works well.

testdrive-agencymeeting.sql.txt

@dubiousdavid I could reproduce the issue, thank you for reporting.

A corresponding Python program fails with the same error.
wget -O testdrive-agencymeeting.py https://gist.github.com/amotl/31701b4d4162090e9815f4c209b57cb9

$ python testdrive-agencymeeting.py
Traceback (most recent call last):
  File "/Users/amo/dev/tmp/testdrive/testdrive-agencymeeting.py", line 46, in <module>
    main()
  File "/Users/amo/dev/tmp/testdrive/testdrive-agencymeeting.py", line 42, in main
    cursor.execute(sql, args)
  File "/Users/amo/dev/tmp/testdrive/.venv/lib/python3.9/site-packages/crate/client/cursor.py", line 58, in execute
    self._result = self.connection.client.sql(sql, parameters,
  File "/Users/amo/dev/tmp/testdrive/.venv/lib/python3.9/site-packages/crate/client/http.py", line 454, in sql
    content = self._json_request('POST', self.path, data=data)
  File "/Users/amo/dev/tmp/testdrive/.venv/lib/python3.9/site-packages/crate/client/http.py", line 581, in _json_request
    _raise_for_status(response)
  File "/Users/amo/dev/tmp/testdrive/.venv/lib/python3.9/site-packages/crate/client/http.py", line 199, in _raise_for_status
    return _raise_for_status_real(response)
  File "/Users/amo/dev/tmp/testdrive/.venv/lib/python3.9/site-packages/crate/client/http.py", line 228, in _raise_for_status_real
    raise ProgrammingError(error.get('message', ''),
crate.client.exceptions.ProgrammingError: SQLParseException[Cannot add column `transcribe` to strict object `agency`]

The reason is the very last parameter to the ON CONFLICT clause. When omitting "steps"['transcribe'] = ? and pending, it works.

Hi @dubiousdavid
I think the problem can be worked around by using this expression:
ON CONFLICT (id) DO UPDATE SET "updatedAt" = ?,"timeline" = ?,"transcription" = ?,
"steps" = concat(excluded.steps, concat('{"transcribe":"',?,'"}'))

Please give it a try and let us know if that works for you.
Thank you.

@dubiousdavid
We've fixed the issue by #14931, it will be part of the next 5.4.5 hotfix release.
It was indeed a regression introduced by CrateDB 5.3.0.
Thank you again for reporting.

@dubiousdavid We've fixed the issue by #14931, it will be part of the next 5.4.5 hotfix release. It was indeed a regression introduced by CrateDB 5.3.0. Thank you again for reporting.

Thank you!


Add a "getting started with Parcel" to docs

We have a "getting started" guide in the docs, but that's quite minimal. Leon on Slack noted how we could have a slightly more detailed "getting started with Parcel" to show how one could get a JS project to build with Spago + Parcel:

i guess what i was actively searching in the Spago Readme was some chapter "Getting started: Simple development Setup with Parcel" or something, that explains a typical workflow

compile code using spago build into output/Main/index.js
create index.html in project root and load an index.js file
create index.js, require the compiled purescript file in there and call the main method of it
call parcel index.html to start the dev-server

or something simmilar. the big problem for me was that I'm rather new to Puresript and not that experienced with the JS build ecosystem as well (Parcel, etc), so things like "most of the time, you'll have some kind of index.html, that does some stuff, where you can then import the Purescript File and call main " dont really make it clear what to do when just trying to set up a simple project and get started.
it all makes sense as soon as you understand how the things connect with one another, but as long as you don't, the instructions are rather unclear. maybe a beginners-guide or something that talks about the most common setups and gives examples would be great. maybe having a live-server directly integrated into spago would be great as well

I'll take a run at this one since I've set up projects to do this

and webpack?
trying to use the generated index.js with webpack, leading to "Cannot assign to read only property 'exports' of object '#'"

@swuecho - currently the guide is for purescript,  however I might have some time to add steps to configure for webpack and nodemon (for server-side projects) at some point.

Fixed in #461

@f-f Actually I think I'll add a guide for nodemon and (possibly) webpack as well.   I'll see if I can get a PR up in a reasonable amount of time.

@Benjmhart  https://github.com/purescript/purescript/issues/3613 the module format make it not so easy to work with webpack.

@swuecho - I'm writing webpack docs today.   if you can work with parcel you can work with webpack.

@swuecho - there is a PR up relating to your request:https://github.com/spacchetti/spago/pull/473
you can also look at the docs in my fork to see how to get a webpack development server up and running with Spago and Purescript: https://github.com/Benjmhart/spago

@Benjmhart  Thanks. I did not know there is purs-loader out there. after I copied the loader in my webpack config works greet.
I was expected that I can import the js output directly in js code.

@swuecho  - you can definitely use a webpack in the way you describe, with spago producing an output in js and webpack bundling the JS as a dependancy, however webpack should really be your end-to-end development bundler, with spago being used more for managing dependancies in that workflow.


eslint not catching coding standards violations

In the review I just did (https://github.com/silvermine/serverless-plugin-external-sns-events/pull/8#pullrequestreview-18207943), there were a number of coding standards violations that were not caught. I'm not sure why. Opening the issue here just in case it's a configuration issue with our use of our eslint standards, or the build process, but most likely the real fix will be in one of our eslint repos.
The issues I noted (see the review for all occurrences of them) were:

Indentation

There were several places where indentation violated our standards and was not caught. Search the review for "indentation" and you'll see where I commented on them.

Empty object declaration without spaces

There was one place where an object initialized with { } (note the space), but our standard is {}. Perhaps we didn't have a rule for this, but I thought we did. Please verify, and add a rule if needed.

Uninitialized variables should go last in var declarations

Search the review for "uninitialized variables" and you'll see one place where I commented on this (although it appeared a few places). Our coding standards may not have a rule for this, but should. Please verify, and add a rule if needed.

It looks like 1 is only affecting function calls.  eslint's indent rule seems to ignore function calls all together unless they contain another node type (i.e. function declaration, object declaration, etc.)
I can right a plugin to cover this, but I'm not sure exactly what we want our standards to be. Here are some options.
// first args on same line as function name, second line indented 3 spaces
fun(arg1, arg2,
   arg3,
) {
}

// first args on same line as function name, second line indented to line up with args
// on first line (similar to our var declaration indentation rule)
fun(arg1, arg2,
    arg3,
) {
}

// each arg on separate line, indented 3 spaces
fun(
   arg1,
   arg2,
   arg3
) {
}

These rules have been added/fixed in our eslint config and our plugin


Amos Mandela Emmanuel

Name
Amos Mandela Emmanuel
Profile Image

Country
South Sudan
Region
Juba-Central Equatoria State
Organisation
No response
Languages

English-Good     2.	 Arabic-Fair         3.	 Kakwa-fluent

Skill 1
Web & Software
Qualifications for Skill 1

Certificate in Cyber Security essentials under Cisco Networking provided by Community Technology Empowerment Network CTEN-Uganda
Attended the 2018 #ASKnet training facilitated by CTEN in partnership with r0g_agency
Ability to use Microsoft office suit (word, excel, PowerPoint) - Certificate in computer application provided by Public Information Center (P.I.C)
Ability to use all the social media platforms
Certificate in Hate Speech Mitigation provided by DefyHateNow_rOg

Skill 2
Community & Moderation
Qualifications for Skill 2

Mobilizes and organizes meet-up with the community leaders
Design and plan the group process and select the best tools that best help the community progress towards that outcomes
Ability to ensure that outcomes, actions and questions are properly recorded and actioned, and appropriately dealt with afterwards

Skill 3
Research
Qualifications for Skill 3

Ability to use various tools such as Kobo collect and ODK for collecting data

Skill 4
No response
Qualifications for Skill 4
No response
describe yourself

Participated in public pitch event programme hosted by Community Technology Empowerment Network (CTEN) and HIVE COLAB, aimed to strengthen media literacy, basic IT, access to open information as well as community training methods and workshop development skills
Ability to Identify common problems and apply simple solutions for hardware, software and networks

E-Mail
<EMAIL_ADDRESS>Phone
+211928811709
WhatsApp
+211928811709
Website
No response
Telegram
+211928811709
GitHub
No response
LinkedIn
No response
Twitter
No response
Facebook
Amos Lo Lillias
Instagram
amos_lol_illias
Mastodon
No response
WikiFab
No response
Other
No response

Some prove for qualifications and skills and link to work documentation?

@Math-TECH-Hub is this fellow with CC4D or any old or soon to join ASKnet hubs
@romeoplat and @timmwille what can I do with such unfinished profiles rejected or put on hold

@dutkulang Amos was ASKnet participant in 2018, He was working with YSAT but he is currently in Juba. I'll try connecting to him to get the links and any other relevant info about him.

@dawaedina27 can you help find a better pic for Amos

@dutkulang Use one of these pictures

created profile


TypeORM and TS.ed integration is not working

Informations

Type
Version

Question or Error
4.x

Description
I'm doing an integration of TS.ed and TypeORM but I'm receiving an error after implementing that integration according to the documentation.
The error is ConnectionNotFoundError: Connection "default" was not found as you can see on the following log:
MACs-MacBook-Pro:local jsinner$ docker exec -it project-api-node bash
root@133cd09eb3d4:/var/srv/app# su node
node@133cd09eb3d4:/var/srv/app$ npm start

><EMAIL_ADDRESS>start /var/srv/app
> nodemon --watch '**/*.ts' --ignore 'node_modules/**/*' --exec ts-node src/index.ts

[nodemon] 1.18.3
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: **/*.ts
[nodemon] starting `ts-node src/index.ts`
Reading .env file from /var/srv/app/.env
Reading DB settings from file from /var/srv/app/ormconfig.json:
 [object Object]
[2018-08-29T17:41:06.645] [INFO ] [TSED] - Scan files : /var/srv/app/src/controllers/current/**/*.ts
[2018-08-29T17:41:06.651] [INFO ] [TSED] - Scan files : /var/srv/app/src/controllers/v1/**/*.ts
[2018-08-29T17:41:06.653] [INFO ] [TSED] - Scan files : /var/srv/app/src/middlewares/**/*.ts
[2018-08-29T17:41:06.656] [INFO ] [TSED] - Scan files : /var/srv/app/src/services/**/*.ts
[2018-08-29T17:41:06.657] [INFO ] [TSED] - Scan files : /var/srv/app/src/converters/**/*.ts
[2018-08-29T17:41:06.771] [INFO ] [TSED] - settings.rootDir => /var/srv/app
[2018-08-29T17:41:06.771] [INFO ] [TSED] - settings.env => development
[2018-08-29T17:41:06.771] [INFO ] [TSED] - settings.httpPort => 3080
[2018-08-29T17:41:06.771] [INFO ] [TSED] - settings.httpsPort => 3090
[2018-08-29T17:41:06.771] [INFO ] [TSED] - settings.version => 1.0.0
[2018-08-29T17:41:06.771] [INFO ] [TSED] - settings.uploadDir => /var/srv/app/uploads
[2018-08-29T17:41:06.771] [INFO ] [TSED] - settings.debug => false
[2018-08-29T17:41:06.772] [INFO ] [TSED] - settings.logger => { logRequest: true }
[2018-08-29T17:41:06.774] [INFO ] [TSED] - settings.mount => { '/': '/var/srv/app/src/controllers/current/**/*.ts',
  '/v1': '/var/srv/app/src/controllers/v1/**/*.ts' }
[2018-08-29T17:41:06.774] [INFO ] [TSED] - settings.componentsScan => [ '/var/srv/app/src/middlewares/**/*.ts',
  '/var/srv/app/src/services/**/*.ts',
  '/var/srv/app/src/converters/**/*.ts' ]
[2018-08-29T17:41:06.775] [INFO ] [TSED] - settings.acceptMimes => [ 'application/json' ]
[2018-08-29T17:41:06.775] [INFO ] [TSED] - settings.httpsOptions => { key: <Buffer 2d 2d 2d 2d 2d 42 45 47 49 4e 20 50 52 49 56 41 54 45 20 4b 45 59 2d 2d 2d 2d 2d 0a 4d 49 49 45 76 51 49 42 41 44 41 4e 42 67 6b 71 68 6b 69 47 39 77 ... >,
  cert: <Buffer 2d 2d 2d 2d 2d 42 45 47 49 4e 20 43 45 52 54 49 46 49 43 41 54 45 2d 2d 2d 2d 2d 0a 4d 49 49 45 52 44 43 43 41 79 79 67 41 77 49 42 41 67 49 4a 41 50 ... >,
  passphrase: 'a6ff5a915c7d07c6f1b443d17af8d7c5ab3ed2d1',
  port: '3090' }
[2018-08-29T17:41:06.776] [INFO ] [TSED] - settings.typeorm => { db:
   { name: 'default',
     type: 'postgres',
     host: 'project-db-postgresql',
     port: 5432,
     username: 'project',
     password: 'project',
     database: 'project',
     synchronize: true,
     logging: false,
     cache: { type: 'redis', options: [Object] },
     entities: [ 'src/entity/**/*.ts' ],
     migrations: [ 'src/entity/migrations/**/*.ts' ],
     subscribers: [ 'src/entity/subscribers/**/*.ts' ],
     cli:
      { entitiesDir: 'src/entity',
        migrationsDir: 'src/entity/migrations',
        subscribersDir: 'src/entity/subscribers' } } }
[2018-08-29T17:41:06.776] [INFO ] [TSED] - settings.swagger => { path: '/api-docs' }
[2018-08-29T17:41:06.776] [INFO ] [TSED] - settings.customServiceOptions => {}
[2018-08-29T17:41:06.776] [INFO ] [TSED] - Build services
{ ConnectionNotFoundError: Connection "default" was not found.
    at new ConnectionNotFoundError (/var/srv/app/src/error/ConnectionNotFoundError.ts:8:9)
    at ConnectionManager.get (/var/srv/app/src/connection/ConnectionManager.ts:40:19)
    at Object.getCustomRepository (/var/srv/app/src/index.ts:286:35)
    at new UserService (/var/srv/app/src/services/UserService.ts:27:41)
    at Function.invoke (/var/srv/app/node_modules/@tsed/src/common/di/services/InjectorService.ts:277:16)
    at registry.forEach.provider (/var/srv/app/node_modules/@tsed/src/common/di/services/InjectorService.ts:359:53)
    at Map.forEach (<anonymous>)
    at Registry.forEach (/var/srv/app/node_modules/@tsed/src/core/class/Registry.ts:140:19)
    at Function.buildRegistry (/var/srv/app/node_modules/@tsed/src/common/di/services/InjectorService.ts:357:18)
    at Function.<anonymous> (/var/srv/app/node_modules/@tsed/src/common/di/services/InjectorService.ts:449:14)
  name: 'ConnectionNotFoundError',
  message: 'Connection "default" was not found.' }
(node:102) UnhandledPromiseRejectionWarning: ConnectionNotFoundError: Connection "default" was not found.
    at new ConnectionNotFoundError (/var/srv/app/src/error/ConnectionNotFoundError.ts:8:9)
    at ConnectionManager.get (/var/srv/app/src/connection/ConnectionManager.ts:40:19)
    at Object.getCustomRepository (/var/srv/app/src/index.ts:286:35)
    at new UserService (/var/srv/app/src/services/UserService.ts:27:41)
    at Function.invoke (/var/srv/app/node_modules/@tsed/src/common/di/services/InjectorService.ts:277:16)
    at registry.forEach.provider (/var/srv/app/node_modules/@tsed/src/common/di/services/InjectorService.ts:359:53)
    at Map.forEach (<anonymous>)
    at Registry.forEach (/var/srv/app/node_modules/@tsed/src/core/class/Registry.ts:140:19)
    at Function.buildRegistry (/var/srv/app/node_modules/@tsed/src/common/di/services/InjectorService.ts:357:18)
    at Function.<anonymous> (/var/srv/app/node_modules/@tsed/src/common/di/services/InjectorService.ts:449:14)
(node:102) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3)
(node:102) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
[nodemon] clean exit - waiting for changes before restart

This is my Server class with my configuration
import {ServerLoader, ServerSettings, GlobalAcceptMimesMiddleware} from "@tsed/common";
import { Connection } from 'typeorm';
import * as Fs from "fs";
import * as Path from "path";
import "reflect-metadata";
import "@tsed/swagger";
import "@tsed/typeorm";

const rootDir = Path.resolve(__dirname+'/../..');
const sourceDir = Path.resolve(__dirname+'/..');
const sslKeyFile = Fs.readFileSync(
    Path.resolve(process.cwd()+'/'+process.env.SSL_KEY)
);
const sslCertFile = Fs.readFileSync(
    Path.resolve(process.cwd()+'/'+process.env.SSL_CERT)
);

const sslPassPhrase = process.env.SSL_PASSPHRASE;
const httpPort = process.env.HTTP_PORT;
const httpsPort = process.env.HTTPS_PORT;

const dbSettingsPath = `${rootDir}/ormconfig.json`;
const databaseSettings = JSON.parse(Fs.readFileSync(dbSettingsPath, 'utf8'));

@ServerSettings({
    rootDir,
    acceptMimes: ["application/json"],
    debug: false,
    httpPort,
    httpsPort,
    httpsOptions: {
        key: sslKeyFile,
        cert: sslCertFile,
        passphrase: sslPassPhrase
    },
    typeorm: {
        'db': databaseSettings
    },
    swagger: {
        path: "/api-docs"
    },
    mount: {
        "/": `${sourceDir}/controllers/current/**/*.ts`,
        "/v1": `${sourceDir}/controllers/v1/**/*.ts`
    },
    componentsScan: [
        `${sourceDir}/middlewares/**/*.ts`,
        `${sourceDir}/services/**/*.ts`,
        `${sourceDir}/converters/**/*.ts`
    ],
    customServiceOptions: {}
})
export class Server extends ServerLoader {

    constructor(private processEnv: any) {
        super();
    }

    /**
     * This method let you configure the middleware required by your application to works.
     * @returns {Server}
     */
    public $onMountingMiddlewares(): void|Promise<any> {

        const cookieParser = require('cookie-parser'),
            bodyParser = require('body-parser'),
            compress = require('compression'),
            methodOverride = require('method-override');

        let RateLimit = require('express-rate-limit');

        let apiLimiter = new RateLimit({
            windowMs: 15*60*1000, // 15 minutes
            max: 100,
            message: "Too many requests, please try again later."
        });

        this.use(GlobalAcceptMimesMiddleware)
            .use(cookieParser())
            .use(compress({}))
            .use(methodOverride())
            .use(bodyParser.json())
            .use(bodyParser.urlencoded({extended: true}))
            .use('/api/', apiLimiter);

        return null;
    }

    public $onReady(){
        console.log(`Server started...`);
    }

    public $onServerInitError(err){
        console.error(err);
    }

}

The dabaseSettings variable is a json with this structure:
{
   "name": "default",
   "type": "postgres",
   "host": "project-db-postgresql",
   "port": 5432,
   "username": "project",
   "password": "project",
   "database": "project",
   "synchronize": true,
   "logging": false,
   "cache": {
        "type": "redis",
        "options": {
            "host": "project-cache-redis",
            "port": 6379
        }
   },
   "entities": [
        "src/entity/**/*.ts"
   ],
   "migrations": [
        "src/entity/migrations/**/*.ts"
   ],
   "subscribers": [
        "src/entity/subscribers/**/*.ts"
   ],
   "cli": {
        "entitiesDir": "src/entity",
        "migrationsDir": "src/entity/migrations",
        "subscribersDir": "src/entity/subscribers"
   }
}

I think in the documentation is missing some comments because it looks like the Serve class is trying to get the connection and this connection is not created in no place.
So I've followed the TypeORM documentation and try to create this connection from the index.js file and doing some little changes on my Sever class wrapping the bootstrap process of the server into the promise of the conection creation process, and I'm receiving another error AlreadyHasActiveConnectionError: Cannot create a new connection named "default", because connection with such name already exist and it now has an active connection session.:
[nodemon] restarting due to changes...
[nodemon] starting `ts-node src/index.ts`
Reading .env file from /var/srv/app/.env
[nodemon] restarting due to changes...
[nodemon] starting `ts-node src/index.ts`
[nodemon] restarting due to changes...
[nodemon] starting `ts-node src/index.ts`
Reading .env file from /var/srv/app/.env
Reading DB settings from file from /var/srv/app/ormconfig.json:
 [object Object]
[2018-08-29T17:46:01.230] [INFO ] [TSED] - Scan files : /var/srv/app/src/controllers/current/**/*.ts
[2018-08-29T17:46:01.239] [INFO ] [TSED] - Scan files : /var/srv/app/src/controllers/v1/**/*.ts
[2018-08-29T17:46:01.251] [INFO ] [TSED] - Scan files : /var/srv/app/src/middlewares/**/*.ts
[2018-08-29T17:46:01.275] [INFO ] [TSED] - Scan files : /var/srv/app/src/services/**/*.ts
[2018-08-29T17:46:01.281] [INFO ] [TSED] - Scan files : /var/srv/app/src/converters/**/*.ts
[2018-08-29T17:46:01.345] [INFO ] [TSED] - settings.rootDir => /var/srv/app
[2018-08-29T17:46:01.345] [INFO ] [TSED] - settings.env => development
[2018-08-29T17:46:01.345] [INFO ] [TSED] - settings.httpPort => 3080
[2018-08-29T17:46:01.345] [INFO ] [TSED] - settings.httpsPort => 3090
[2018-08-29T17:46:01.346] [INFO ] [TSED] - settings.version => 1.0.0
[2018-08-29T17:46:01.346] [INFO ] [TSED] - settings.uploadDir => /var/srv/app/uploads
[2018-08-29T17:46:01.346] [INFO ] [TSED] - settings.debug => false
[2018-08-29T17:46:01.346] [INFO ] [TSED] - settings.logger => { logRequest: true }
[2018-08-29T17:46:01.349] [INFO ] [TSED] - settings.mount => { '/': '/var/srv/app/src/controllers/current/**/*.ts',
  '/v1': '/var/srv/app/src/controllers/v1/**/*.ts' }
[2018-08-29T17:46:01.350] [INFO ] [TSED] - settings.componentsScan => [ '/var/srv/app/src/middlewares/**/*.ts',
  '/var/srv/app/src/services/**/*.ts',
  '/var/srv/app/src/converters/**/*.ts' ]
[2018-08-29T17:46:01.351] [INFO ] [TSED] - settings.acceptMimes => [ 'application/json' ]
[2018-08-29T17:46:01.351] [INFO ] [TSED] - settings.httpsOptions => { key: <Buffer 2d 2d 2d 2d 2d 42 45 47 49 4e 20 50 52 49 56 41 54 45 20 4b 45 59 2d 2d 2d 2d 2d 0a 4d 49 49 45 76 51 49 42 41 44 41 4e 42 67 6b 71 68 6b 69 47 39 77 ... >,
  cert: <Buffer 2d 2d 2d 2d 2d 42 45 47 49 4e 20 43 45 52 54 49 46 49 43 41 54 45 2d 2d 2d 2d 2d 0a 4d 49 49 45 52 44 43 43 41 79 79 67 41 77 49 42 41 67 49 4a 41 50 ... >,
  passphrase: 'a6ff5a915c7d07c6f1b443d17af8d7c5ab3ed2d1',
  port: '3090' }
[2018-08-29T17:46:01.352] [INFO ] [TSED] - settings.typeorm => { db:
   { name: 'default',
     type: 'postgres',
     host: 'project-db-postgresql',
     port: 5432,
     username: 'project',
     password: 'project',
     database: 'project',
     synchronize: true,
     logging: false,
     cache: { type: 'redis', options: [Object] },
     entities: [ 'src/entity/**/*.ts' ],
     migrations: [ 'src/entity/migrations/**/*.ts' ],
     subscribers: [ 'src/entity/subscribers/**/*.ts' ],
     cli:
      { entitiesDir: 'src/entity',
        migrationsDir: 'src/entity/migrations',
        subscribersDir: 'src/entity/subscribers' } } }
[2018-08-29T17:46:01.352] [INFO ] [TSED] - settings.swagger => { path: '/api-docs' }
[2018-08-29T17:46:01.353] [INFO ] [TSED] - settings.customServiceOptions => {}
[2018-08-29T17:46:01.353] [INFO ] [TSED] - Build services
[2018-08-29T17:46:01.362] [INFO ] [TSED] - Connect to typeorm database: db
[2018-08-29T17:46:01.364] [ERROR] [TSED] - { AlreadyHasActiveConnectionError: Cannot create a new connection named "default", because connection with such name already exist and it now has an active connection session.
    at new AlreadyHasActiveConnectionError (/var/srv/app/src/error/AlreadyHasActiveConnectionError.ts:8:9)
    at ConnectionManager.create (/var/srv/app/src/connection/ConnectionManager.ts:57:23)
    at Object.<anonymous> (/var/srv/app/src/index.ts:218:35)
    at step (/var/srv/app/node_modules/typeorm/index.js:32:23)
    at Object.next (/var/srv/app/node_modules/typeorm/index.js:13:53)
    at /var/srv/app/node_modules/typeorm/index.js:7:71
    at new Promise (<anonymous>)
    at __awaiter (/var/srv/app/node_modules/typeorm/index.js:3:12)
    at Object.createConnection (/var/srv/app/node_modules/typeorm/index.js:215:12)
    at TypeORMService.<anonymous> (/var/srv/app/node_modules/@tsed/src/typeorm/services/TypeORMService.ts:27:7)
  name: 'AlreadyHasActiveConnectionError',
  message: 'Cannot create a new connection named "default", because connection with such name already exist and it now has an active connection session.' }
[nodemon] clean exit - waiting for changes before restart

It's my index.js file (after I tried to create the database connection by my own) when I'm bootstraping the Server class...
import * as Fs from "fs";
import * as Path from "path";
import {getConnectionManager, createConnection, ConnectionManager, Connection} from "typeorm";
import envVars from "./bootstrap/env";
import {Server} from "./bootstrap/server";
import {UserRepository} from "./entity/repository/UserRepository";
import User from "./entity/User";

const rootDir = Path.resolve(__dirname+'/..');
const dbSettingsPath = `${rootDir}/ormconfig.json`;
const databaseSettings = JSON.parse(Fs.readFileSync(dbSettingsPath, 'utf8'));

createConnection().then(async connection => {
    let server = new Server(envVars, connection);
    server.start();
}).catch (error => {
    console.log(error);
});

And I don't know if I should create the connection by my own or not because if I try it there is an error and if not there is an error as well...
Acceptance criterias

[x] Example (log, usecase, etc...)
[x] Ts.ED version (bug/question)

And I don't know if I should create the connection by my own or not because if I try it there is an error and if not there is an error as well...

Hello @sinner ,
I've added a new example here https://github.com/Romakita/example-ts-express-decorator/tree/4.0.0/example-typeorm
and fixed the documentation: http://tsed.io/tutorials/typeorm.html
For me the connection work as expected, but, I have another issue: EntityMetadataNotFound: No metadata for "User" was found. I don't know why, but I'll investigate on later.
Can you try my example and adapt the example on your project.
I saw in your configuration "name: default", can you remove this line and test it?
See you
Romain

v4.30.6 fix some issue with @tsed/typeorm module. I added a complete example with postgresql here https://github.com/Romakita/example-ts-express-decorator/tree/4.0.0/example-typeorm
See you :)

Hi @Romakita ! Yes, of course, I'll try to do it this weekend.


LUCENE-10607: Fix potential integer overflow in maxArcs computions

Description (or a Jira issue link if you have one)

https://issues.apache.org/jira/projects/LUCENE/issues/LUCENE-10607?filter=allopenissues

Thanks!


Check network range values before propagating them to kubernetes components

How to categorize this PR?

/area networking
/kind enhancement
What this PR does / why we need it:
Check network range values before propagating them to kubernetes components.
Kubernetes components like kube-apiserver, kube-controller-manager and kube-proxy allow specification off multiple IP ranges. However, they only allow up to two ranges. In case two ranges are specified they have to be from different IP families, i.e. one should be IPv4 and one should be IPv6. This very strict configuration is enforced by checks of the command line/configuration options.
To prevent components from crash-looping due to different kind of network ranges this change implements the changes as pre-checks in gardenlet. Therefore, error should be caught by gardenlet before deploying the components.
Please note that provider extensions may change the deployments of some control plane components via web hooks, e.g. disabling the IPAM controller in kube-controller-manager and replacing it with a different one. Unfortunately, this makes the overall setup less straight forward to comprehend.
Which issue(s) this PR fixes:
None.
Special notes for your reviewer:
Release note:

In case multiple network ranges are configured via infrastructure status propagation for pod, service or node network, `gardenlet` will check whether they comply to the requirements of Kubernetes components like `kube-apiserver`, `kube-controller-manager`, and `kube-proxy`.

@ScheererJ Can you explain this a bit more? Does it mean that we will fail to deploy KCM even if an extension disables the IPAM controller, hence, KCM doesn't need the network ranges?

No, we properly check everything we can in gardenlet. However, an extension may then (afterwards) simply disable the relevant part of for example kube-controller-manager so that the check might have been in vain.
In other words, some of these checks should be performed for the final result. However, as far as I know we do not have such a hook as of now. Therefore, we do the next best thing and may do a bit more checks than actually required.

Got it, thanks @ScheererJ
/approve


Using prompt_for_confirmation fails with ModuleNotFoundError on Windows

Using the humanfriendly.prompts.prompt_for_confirmation() function on Windows fails with a ModuleNotFoundError for 'readline'.
Python: 3.6.0 64-bit
Humanfriendly: 4.4.1 (Installed from PyPI using pip)
cmd>python
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import humanfriendly.prompts
>>> humanfriendly.prompts.prompt_for_confirmation("Testing...", default=False)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python36\lib\site-packages\humanfriendly\prompts.py", line 86, in prompt_for_confirmation
    reply = prompt_for_input(prompt_text, '', padding=padding, strip=True)
  File "C:\Program Files\Python36\lib\site-packages\humanfriendly\prompts.py", line 245, in prompt_for_input
    prepare_friendly_prompts()
  File "C:\Program Files\Python36\lib\site-packages\humanfriendly\prompts.py", line 328, in prepare_friendly_prompts
    import readline  # NOQA
ModuleNotFoundError: No module named 'readline'

This is likely due to GNU readline not being available on Windows.
The application I'm using humanfriendly with needs to work on Windows, so it would be nice if there was an option to disable readline usage when the import fails.

Installing pyreadline package seems to fix prompt_for_confirmation() failing on Windows.


Refactor population of transaction JSON

Currently we have multiple locations performing the same task of populating JSON with transaction data, taking into account client-selected API version. As we add more API versions in the future, all these locations will accumulate complexity, while essentially doing the same task. Ideally we should improve code cohesion / reduce duplication by pulling all this logic into single location e.g. STTx::populateJson(Json::Value& target, ReadView const& ledger, unsigned apiVersion ... etc.) (not necessarily inside STTx , just an example).
There are two challenges that need to be solved:

first challenge is pulling the necessary data while managing dependencies (levelization) on ledger, master ledger, context etc. These data are (using JSON names):

validated
close_time_iso / date
ledger_index / inLedger
ledger_hash

second challenge is related to how we pre-populate transaction JSON for any API version inNetworkOPs.cpp  and then adjust it accordingly for a specific version:

perhaps want to populate JSON for a specific API version,
then create function that will transform this JSON from one API version to another ?

I'll mention that clio has exactly the same problems and the added difficulty that it wants to remain in lock step with what rippled supports.  You might check in with the clio folks to see if there's some way these changes can be available to both rippled and clio?

Also, by "currently" I actually mean since https://github.com/XRPLF/rippled/pull/4775


Environment tab should be filled at startup

It should be filled from pods/containers that are associated with a local application. Mapping should be inspired from what compose does (using label)

Fixed by #237


Feat: Compliance report internal workflow for IDIR & BCeID users

#1003
#1004
#1005
#1006
compliance reports list view filter fix

I think i see what happened with the auth. we need to switch over to using enums like this
has_signing_role = user_has_roles(
    user, [RoleEnum.SUPPLIER, RoleEnum.SIGNING_AUTHORITY]
)

resolved all the conflicts and comments.

I wasn't able to successfully test the director approval due to the 403 errors. It may be related to a different merge? Can you please take a look. Code otherwise looks good.

Not sure, but I was able to complete the workflow end-to-end


Add generic types and update tests

Add generic types to on, off and emit to enable some nicer TS
usage if you specify what type you're expecting from the EventData.
Move the tests to be TypeScript source. This will help catch errors in
the tests if there are any type errors.
Create a new test to test the generic types and make sure they pass
and error when expected.
Upgrade to Mocha 8.
Did some tidying up of the package.json scripts.

@developit LMK what you think, thanks!

@developit let me know if I can help do anything to help this ship, thanks!

Will get to this today!

Ah also some sneaky TS errors in the CI output. I think I have a fix in Codespaces, will check tomorrow morning.

Shipped as 2.1.0, no longer a preview release :)


new nvme ssd intel rst problem

Zenbook Pro Duo Variant
i7/i9 UX581GV (9th-gen with RTX 2060)
Bios Version
309
OpenCore Version
1.0.0
use your EFI
macOS Version
Ventura (macOS 13)
Current Behavior
I bought a new nvme ssd (crucial P3 Plus 500GB) to hackintosh UX581GV (i7 model).
after swapping in a new nvme ssd, my laptop gets stuck on 'asus' logo (i cannot access the bios menu)
so I removed the new nvme ssd, after accessing the bios and changing the AHCI to Intel RST premium with acceleration, I can boot from usb with opencore installed, but the nvme ssd is not visible in disk utility.
i had same problem with a Western Digital SN770 250gb.
I would really appreciate it if you could help me out.
sorry for poor english
Expected Behavior
booting from opencore installed usb
installing mac os ventura on crucial p3 plus nvme ssd
Steps To Reproduce
[BIOS setting with Intel RST Premium with acceleration]
i can boot opencore installed usb.
but, i can't see my nvme ssd on disk utility (only visible opencore installed usb)
[BIOS setting with AHCI]
i can't boot opencore installed usb.
and i also can't access bios
so i have to remove the nvme ssd and change the AHCI in the bios to intel rst premium with acceleration.
Anything else?
No response

From what it sounds like, you're unable to enter the BIOS with the Crucial SSD and Intel RST disabled? The only action you'd need to take to disable Intel RST is to set the SATA configuration to AHCI in the BIOS -- but it sounds like you've already tried this though.
In Disk Utility, the Intel SSD won't show up when the SATA configuration is set to Intel RST (Optane) instead of SATA -- this part is expected.
With the Crucial SSD, I'd see if you can press 'Esc' to enter the boot menu and 'Enter Setup' (BIOS) or boot into OpenCore (likely named 'UEFI OS').
As an aside, if you swap back to Windows on the original SSD, you'll need to re-enable Intel RST, boot into safe mode at least once, and then restart to boot into Windows normally.

In Disk Utility, the Intel SSD won't show up when the SATA configuration is set to Intel RST (Optane) instead of SATA -- this part is expected.

Yes, I already read about intel optane disk and intel rst are not working in opencore

With the Crucial SSD, I'd see if you can press 'Esc' to enter the boot menu and 'Enter Setup' (BIOS) or boot into OpenCore (likely named 'UEFI OS').

If i turn on "Intel RST" in bios, and booting with your method(press esc key), the ssd is not recognized by disk utility as shown in the picture
And If i switch back "AHCI" in bios, press esc key in "ASUS" logo screen method is not working in my situation.
Thank you for your response :)

I'd see if you can find and disable an option for VMD in your BIOS (may fall under PCI/IO configuration). My impression is that Intel RST isn't being fully disabled -- I don't see any way it'd halt POSTing otherwise.

Thank you for response
But i can't find any options about VMD(PCI/IO configuration)
My bios only has SATA Mode Selection that i already have switched to

I see, so then Intel RST should be disabled when in AHCI SATA mode. I'll have to take a closer look at the BIOS to try and figure out why there's a post issue with RST disabled.
I'm curious if it still doesn't post with the Intel SSD installed w/ Intel RST disabled -- For now, I'd try to avoid booting into Windows with that disabled.

So you are asking is it possible for a crucial ssd(is it "intel ssd" that you are referring to?) to boot with intel RST disabled?
And i also can't boot windows with AHCI mode.(freezing at ASUS logo)
:(

I was asking if it still freezes when you boot with the Intel SSD installed and Intel RST disabled. It sounded like you already tested the Crucial SSD with and without Intel RST enabled, so I'm just verifying that there isn't a firmware issue preventing boot without Intel RST enabled.

I don't have Intel SSD. I have samsung PM981 nvme ssd from asus, i modified the registry in windows, booted into safe mode and switched Intel RST to AHCI in the bios, which worked.  Like This
But Crucial SSD isn't worked by this method

Ah I see. The newer ZenBook Duo models (like my own) came with Intel SSDs which confused me there. In any case, I suppose that answers my question.
I matched the part number against the P3 Plus data sheet which corresponds to the Gen4 model, but to my knowledge, there shouldn't be any issues with it working in Gen3 w/ AHCI SATA mode.
It may be worth creating a Windows PE drive and try booting with the Crucial SSD (in RST/Optane mode). Depending on how old the drive is, that'd also provide an opportunity to upgrade the SSD firmware, though I doubt there'd be a relevant update for it unfortunately.
I'm not sure if those Registry tweaks to iaStorV (the Intel RST service) affect the BIOS configuration; since it's a PCH/chipset feature, I'm expecting it to be fairly integrated but some controls there appear (by my guess) to only be for controlling behavior of the Windows Boot Manager, which isn't particularly helpful here.

Unfortunately, There is no SSD Firmware Update for Crucial P3 Plus.


Add Raspberry Pi CM4 to Ribbit Network Store

The raspberry Pi CM4 needed for the Frog V3 is currently out of stock everywhere on the internet, but Ribbit Network has around 25 units in stock that we could sell to individuals wanting to build a frog.
We should add these to the Ribbit Network shopify store on ribbitnetwork.org.

This is complete!


there was a deception

I was promised here that you have Dick() and Ass() methods in your lib, but here only some Dig() and As(). I am waiting for corrections and feedback

I was promised here that you have Dick() and Ass() methods in your lib, but here only some Dig() and As(). I am waiting for corrections and feedback

But what about the pusy() method?


Global page is blank

Nothing is displayed for a simple page like this:
export class HelpPage extends React.Component<{ extension: LensRendererExtension }> {
  render() {
    return (

Help yourself

    )
  }
}

export function HelpIcon(props: Component.IconProps) {
  return <Component.Icon {...props} material="help"/>
}

Is there more styling or something that needs to be set for the page content?
These are the extension elements set in the renderer extension:
  globalPages = [
    {
      id: "help",
      components: {
        Page: HelpPage,
      }
    }
  ];

  globalPageMenus = [
    {
      target: { pageId: "help" },
      title: "Help",
      components: {
        Icon: HelpIcon,
      }
    },
  ];

The global page in the generator example is also blank
mac, linux, 4.0.0-rc.1

as far as I remember, use PageLayout to wrap the global page helps. Might be a CSS issue (z-index?)
import { Component } from "@k8slens/extensions";
const { PageLayout } = Component;

const GlobalPage = (): JSX.Element =>
  <PageLayout>

  </PageLayout>

@chenhunghan Yes, I've used a negative z-index to solve this issue https://github.com/lensapp/lens/pull/1565

blank page in generator template is another issue (not CSS) but because I forgot to bind(this), see https://github.com/lensapp/lens/issues/1568


Add Before/After chat survey + chat evaluation

Not ready to merge. Need to update data handling for surverys.

Will be merged after secondary modifications.


ctx.Response.Send multiple times per connection?

Hello Joel,
Me again (; Quick question, is there a way to use the Send command multiple times in a session? I am trying to stream MJPEG over HTTP 1.1 (Chunk method works perfect), but I don't want to end the session after Send.
I.e.
byte[] jpeg = null;
while (true)
{
ctx.Response.Send(Encoding.ASCII.GetBytes(MJPEGHeader));
ctx.Response.Send(Encoding.ASCII.GetBytes("Content-length: " + jpeg.Length.ToString()));
jpeg = Get_Next_JPEG();
ctx.Response.Send(jpeg);
ctx.Response.Send(Encoding.ASCII.GetBytes(MJPEGFooter));
}

Thanks and sorry to bother so much!

Hi @winkmichael - first off, thanks for the sponsorship!  And it's never a bother!
Regarding your question, right now all of the Send methods are final and will close the connection out.  A quick solution would be to use one of the methods that takes a stream as input, but of course, you would have to have the stream built ahead of time.
Would it be of value to you if I researched adding something like a SendPartial method to the server?  The only complication I can really see is that the Content-Length header up front might be a problem, but it would otherwise look like SendChunk and SendFinalChunk.
Cheers, Joel

Another thought - have you given consideration to using a websocket for this use case as well?  Something like https://github.com/jchristn/watsonwebsocket could certainly do the trick - it would allow you to stream messages as you like while keeping the connection open long term.

Regarding your question, right now all of the Send methods are final and will close the connection out. A quick solution would be to use one of the methods that takes a stream as input, but of course, you would have to have the stream built ahead of time.

Yah I was nearly certain I'm pretty familiar with Watson (: As I mentioned (and related to my yesterdays comment) I have this implemented using the chunked encoding
                    byte[] jpeg = jpegFile(UrlEntries[2]);
                    ctx.Response.SendChunk(Encoding.ASCII.GetBytes(MJPEGHeader));
                    ctx.Response.SendChunk(Encoding.ASCII.GetBytes("Content-length: " + jpeg.Length.ToString()));
                    ctx.Response.SendChunk(jpeg);
                    ctx.Response.SendChunk(Encoding.ASCII.GetBytes(MJPEGFooter));

This works perfect for the iOS / Safari realm but the Chrome world wants HTTP 1.1 - and iOS will only accept Chunks... Where is that XKCD graphic about standards..

Would it be of value to you if I researched adding something like a SendPartial method to the server? The only complication I can really see is that the Content-Length header up front might be a problem, but it would otherwise look like SendChunk and SendFinalChunk.

I have done some experimenting and it seems most implementations of MJPEG the Content-Length is wishy washing - meaning it can be there or it can't but, but really it is inline to the content (See here https://en.code-bude.net/2013/01/02/wiki-motion-jpeg/ )
If there was a SendPartial that would be killer, or reuse the methods and toggle based on ctx.Response.ChunkedTransfer = true/false.
Thanks for your time and thoughtful responses as always!

Awesome, thanks @winkmichael I will take a look at the link tomorrow and see what I can do on my end. Cheers!

Hi @winkmichael looking at the link now, the response shown there is HTTP 1.0.  Will this work with HTTP 1.1?
It looks like a simple solution would be for me to exclude the Content-Length header if the Content-Type starts with multipart.  Then I could add two new APIs:
SendMultipart (which wouldn't close)
and
SendMultipartFinal (which would close)
Would you agree?

Yes sir are correct. I misspoke "typed" when I said said 1.1. What I should have said was the differentiator was between start HTTP and Chunked encoding. I've done a test where I completely skip Content-Length and thus far it works fine. I am pretty much positive your proposal of SendMultipart and SendMultipartFinal would work for this exact situation and many others. Thanks again for your time and help!

Awesome - I'm doing this today.  To confirm, this should use HTTP 1.1, correct?

Looks like I'm going to have to go the route of having APIs that allow Send without close.  Not seeing a good native multipart option.  More to come.

Hi @winkmichael I have the code up and running, but I can't seem to get it to not send the initial Content-Length header.  It's streaming the data just fine in chunks (not using chunked transfer, but rather SendWithoutClose APIs) but it's not rendering in either Chrome or Postman.  I'm going to put up a StackOverflow post on this today and see what I can get back.  I hope this isn't a limitation in either HttpListenerResponse or http.sys.  Cheers

https://stackoverflow.com/questions/62582863/multipart-httplistenerresponse-without-using-chunked-transfer
Will keep you posted.

Hi @winkmichael it appears that this kind of capability doesn't exist in HTTP 1.1.  One of the comments on the SO question I asked pointed to the RFC here: https://tools.ietf.org/html/rfc2616#section-4.4
Do you know for sure the client is the same as the one in the link you sent (i.e. using HTTP 1.0)?  Do you know if the client uses HTTP or HTTPS?  It wouldn't be too hard to put together a simple TCP-based HTTP server specifically for this use case (probably take me an hour).  I don't think WatsonWebserver is going to be able to support it because the HttpListenerResponse.ContentLength64 is not nullable, and if it's set to 0, it won't send any data.  Plus the RFC seems to indicate that it would be in clear violation of the protocol spec.
Please let me know your thoughts.  I'd be open to putting together a TCP-based HTTP 1.0 server specifically for your use case.  It might give me a good start on eliminating reliance on http.sys for WatsonWebserver altogether, which I would need to do in order to build in support for HTTP 2.0.
Cheers, Joel

Thank you so very much for all the efforts on this! I was at work very late this evening, but I will setup a test tomorrow morning before I head in. I would say more, but I think it is best I do more testing before commenting further. Thanks again!

Sounds good @winkmichael - I'm about half way through the TCP-based implementation.  Code complete on parsing incoming requests, have a lot of work to do on sending responses.  Will keep you posted on it.  No other news from the SO question yet.

Hi @winkmichael I created a private repo called HttpServerLite that I welcome you to check out.  It's waaaay early (hence no NuGet package) but it's a working TCP-based HTTP server with no dependencies on http.sys or HttpListenerResponse etc.

I invited you to the repo just a moment ago.  If you check out the Test project, you'll see there are three endpoints:

img/watson.jpg - picture of Watson as a puppy, sent immediately and in full with no delay.  Content-Length header is set
img-streamed/watson.jpg - same picture, streamed in 1KB blocks with a brief delay between each block.  Content-Length header is not set
html/index.html - simple HTML file, sent immediately and in full with no delay

It should support SSL (it uses CavemanTcp under the hood, another library I wrote, which supports PFX certificate files for SSL), but I haven't tested it.
It has a lot of issues right now, but they are largely in terms of design, efficiency, and completeness.  It's working though, so I invite you to clone it and run the test app, using the following URLs:

http://localhost:9000/img/watson.jpg
http://localhost:9000/img-streamed/watson.jpg
http://localhost:9000/html/index.html

Here's a screenshot showing the streamed watson.jpg file.  You can see how long it took, and that the content-length header was never set.

Since I'm almost 100% certain we won't be able to accomplish this use case with WatsonWebserver, I'm unfortunately going to close this issue.
However I'm happy to work with you on this prototype to get it going for your needs, and migrate over WatsonWebserver features that you are currently using based on your priority.
I'd like to eventually transition 100% off of http.sys and HttpListenerResponse with WatsonWebserver, and see this as a stepping stone in that direction.  As I'm sure you can appreciate, that's a pretty big undertaking because they do a tremendous amount of work under the hood that I have until this point been able to overlook.
Cheers, Joel

Thanks man this is awesome! I'm just sneaking away on my lunch break to check email (Strict work VPN) I can't wait to get home and check this out! Thanks again, will post back once I get a chance to dive in!

Hi @winkmichael any news on your side?

Hello Joel, I am sorry for the silence I plan to post back code to you a bit later tonight! So far, everything works great. I thought it might be most logical if you create another project to your offering a WatsonMJPEG server or something to that effect?

Hi @winkmichael my only plans are to (eventually) eliminate Watson's dependency on http.sys.  If you want to package it and release it please feel free!  I can also help you put together a nuget package, etc.  If there are any defects (or enhancements) you see in the code please let me know (or submit a PR!)

Ok, I'll definitely wait until you make it into a package, and then will release it with the new package as a dependency. Just working a few details on my end with socket reading, but I am pretty sure this is gonna work perfect. I will keep you posted.

Awesome :)  I'll start slowly porting over Watson features and hopefully have something to release in the next week or two.  Cheers!

Just some performance data for reference.  WatsonWebserver smokes HttpServerLite in performance, but that's to be expected - http.sys (used by Watson) is in the kernel, whereas HttpServerLite is 100% in user-space.
This is a simple test of 10 clients, 1000 requests, to a loopback endpoint (no content delivered).  HttpServerLite is the top set, Watson is the bottom set.  Net-net, Watson is 5x faster (average latency) and 3x throughput.
C:\Users\joelc\Downloads>bombardier-windows-amd64.exe -c 10 -n 1000 http://localhost:9000
Bombarding http://localhost:9000 with 1000 request(s) using 10 connection(s)
 1000 / 1000 [======================================================================================] 100.00% 2481/s 0s
Done!
Statistics        Avg      Stdev        Max
  Reqs/sec      2683.78     384.07    3058.27
  Latency        3.71ms   577.70us    12.97ms
  HTTP codes:
    1xx - 0, 2xx - 1000, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:     1.01MB/s

C:\Users\joelc\Downloads>bombardier-windows-amd64.exe -c 10 -n 1000 http://localhost:9000
Bombarding http://localhost:9000 with 1000 request(s) using 10 connection(s)
 1000 / 1000 [======================================================================================] 100.00% 4954/s 0s
Done!
Statistics        Avg      Stdev        Max
  Reqs/sec     17345.60   15501.15   37627.71
  Latency      598.27us     1.42ms    32.91ms
  HTTP codes:
    1xx - 0, 2xx - 1000, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:     3.19MB/s

The second test was with some content being sent (JPG image).  1000 requests over 10 clients.  Watson (bottom test) was again ~3x faster (latency) and >3x throughput.
C:\Users\joelc\Downloads>bombardier-windows-amd64.exe -c 10 -n 1000 http://localhost:9000/img/watson.jpg
Bombarding http://localhost:9000/img/watson.jpg with 1000 request(s) using 10 connection(s)
 1000 / 1000 [======================================================================================] 100.00% 1243/s 0s
Done!
Statistics        Avg      Stdev        Max
  Reqs/sec      1441.68     211.20    1854.85
  Latency        6.91ms     1.00ms    16.95ms
  HTTP codes:
    1xx - 0, 2xx - 1000, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:   203.24MB/s

C:\Users\joelc\Downloads>bombardier-windows-amd64.exe -c 10 -n 1000 http://localhost:9000/img/watson.jpg
Bombarding http://localhost:9000/img/watson.jpg with 1000 request(s) using 10 connection(s)
 1000 / 1000 [======================================================================================] 100.00% 2470/s 0s
Done!
Statistics        Avg      Stdev        Max
  Reqs/sec      4774.15    2052.52    7068.31
  Latency        2.12ms     2.11ms    49.48ms
  HTTP codes:
    1xx - 0, 2xx - 1000, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:   663.02MB/s

I guess living in the kernel has its advantages.  Still should be pretty fast (given the fact that it's user space).  I only have a few more things left to do to it and will report back here when it's ready.  I'm unlikely to make this the replacement for the innards of WatsonWebserver though because of the tremendous performance difference.

Here you go!  HttpServerLite is live on NuGet.
NuGet v<IP_ADDRESS>: https://www.nuget.org/packages/HttpServerLite/<IP_ADDRESS>
Commit: https://github.com/jchristn/HttpServerLite/commit/19a3e9569ce1c39250bbc3834c72b6baf878708f


Pickit Rules not working

Details
2 questions:

Configured the pickit rules for some low runes and other uniq items but the max quantity rule is unaltered. Example: Put maxquantity 10 pieces for Ral runes, but always take 1 as maximum. Also unmark items but still getting it.

Add some items to the pickit config (unearthedwand Death's web) and I don't know if it's works because the question 1, and the low probabilty to get it ofc.

I've configured in config/nameCharacter/pickit/
Is there any other config rules?
Version
v0.4.0
Logs
time=21:05:40 level=DEBUG msg="For item RalRune found 1 max quantity from pickit rule, number of items in the stash tabs 1"

I've recently updated my Ral pickit to 10 so it does work. The only thing I can think of right now is did you restart the bot after making the update and saving the pickit file? Pickits cannot be updated real time if I remember right and require restart.

Agreed with the above. Main things that go wrong would be:

Making updates in pickit files without bot restart (fully closed)
Making updates in pickit files within a different character config folder
Having the same pickit references in multiple files, or multiple locations in the same file. i.e. having runes referred to in the Misc.nip as well as a new Runes.nip or something.

Well finally I reinstalled again and will try... I don't know what happen really, hope it works. Thanks!


Emulated hue is not discovered by Alexa or Google Home when running in Docker

Home Assistant release (hass --version):
0.48.1
Component/platform:
Emulated Hue
Description of problem:
If I run Home Assistant in Docker (on unraid) the emulated hue platform is not discovered by Alexa or Google Home.  It used to work, and I have tried a number of different settings.  It seems to be running fine if I check the description.xml page and the /api/pi/lights.
If I run Home Assistant without using Docker it works fine.
Problem-relevant configuration.yaml entries and steps to reproduce:
emulated_hue:
  listen_port: 80
  expose_by_default: false

Your container must be run with the host flag set to true for discovery services to work.

Thanks, I have it set like --network=host.  It used to work in the past,
but has not been working now for awhile.
On Thu, Jul 6, 2017 at 12:03 PM John Mihalic<EMAIL_ADDRESS>wrote:

Your container must be run with the host flag set to true for discovery
services to work.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/home-assistant/home-assistant/issues/8355#issuecomment-313441294,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABcAqiSMsUOySWXBEvGKlYwP5wk4yV76ks5sLQVggaJpZM4OOdXw
.

That is odd.  I run the official container with --net="host" and am using emulated_hue without issue.  Have you tried not running with the expose_by_default setting?

I actually haven't tried that :-/  I can give it a try later.  Right now
I've got hass.io running in a VM with Alexa and Google Home working and am
very happy with it :-)
On Thu, Jul 6, 2017 at 1:38 PM John Mihalic<EMAIL_ADDRESS>wrote:

That is odd. I run the official container with --net="host" and am using
emulated_hue without issue. Have you tried not running with the
expose_by_default setting?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/home-assistant/home-assistant/issues/8355#issuecomment-313466841,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABcAqlQ7-GhM9Tn-74tBuJAQ3gQp8q5gks5sLRuFgaJpZM4OOdXw
.

@mezz64 I spent some more time testing and I still cannot get anything discovered by Alexa even without the expose_by_default setting

Have you verified everything is OK on the Alexa side of things?  Both devices on the same network subnet?  I'm seem some other issues occur that were corrected by resetting the echo, have you tried that?

They are all on the same subnet. I have 3 different echos, would I need to
reset them all? I have not tried that yet.
On Sat, Jul 8, 2017, 11:53 PM John Mihalic<EMAIL_ADDRESS>wrote:

Have you verified everything is OK on the Alexa side of things? Both
devices on the same network subnet? I'm seem some other issues occur that
were corrected by resetting the echo, have you tried that?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/home-assistant/home-assistant/issues/8355#issuecomment-313896555,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABcAqhSYpX5S1DDJRjetQAzvyNrmd6XTks5sME7CgaJpZM4OOdXw
.

An ifconfig should show your hosts interfaces. You should not see a eth0 with a 172.20.x.x unless your host also has such an IP.
You should be able to ping the echo's IP from the container.
Running a tracepath to that IP should show no intermediate hops. Of you see them, they are on a different subnet.

If all this is fine, but it still doesn't work, you could try to make a network dump by installing tcpdump and running tcpdump -i any -s 0 -w dump.pcap. You can copy this dump.pcap out of the docker container trough a volume, or by using docker cp from the hosts cli. You can open this file in wireshark. You might notice what's wrong there since it should contain all network traffic your hass instance generates/receives.

Thanks, @michaelarnauts !  I didn't see anything wrong but I'll have to take a look at the pcap in wireshark.

ifconfig command looks good

root@Tower:/usr/src/app# ifconfig | grep -A5 "eth0 "
eth0      Link encap:Ethernet  HWaddr aa:aa:aa:aa:aa:aa
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:243755476 errors:0 dropped:0 overruns:0 frame:0
          TX packets:183479560 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:252291975996 (234.9 GiB)  TX bytes:77463033230 (72.1 GiB)

I can ping my echo.

root@Tower:/usr/src/app# ping -c1 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=64 time=460.222 ms
--- <IP_ADDRESS> ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 460.222/460.222/460.222/0.000 ms

traceroute doesn't show any hops

root@Tower:/usr/src/app# traceroute <IP_ADDRESS>
traceroute to <IP_ADDRESS> (<IP_ADDRESS>), 30 hops max, 60 byte packets
 1  * <IP_ADDRESS> (<IP_ADDRESS>)  655.254 ms  655.255 ms

root@Tower:/usr/src/app# ping -c1 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=64 time=460.222 ms
--- <IP_ADDRESS> ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 460.222/460.222/460.222/0.000 ms

Wait, what? 460ms? That is a lot, and it could explain your issues. Normal local traffic should arrive in a few milliseconds.

Hmm, doesn't always take that long, but longer than a few ms...
root@Tower:/usr/src/app# ping <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=64 time=4.558 ms
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=64 time=42.111 ms
64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=64 time=65.099 ms
64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=64 time=82.598 ms
64 bytes from <IP_ADDRESS>: icmp_seq=4 ttl=64 time=107.483 ms
64 bytes from <IP_ADDRESS>: icmp_seq=5 ttl=64 time=846.829 ms
64 bytes from <IP_ADDRESS>: icmp_seq=6 ttl=64 time=6.741 ms
64 bytes from <IP_ADDRESS>: icmp_seq=7 ttl=64 time=72.956 ms
64 bytes from <IP_ADDRESS>: icmp_seq=8 ttl=64 time=95.432 ms
64 bytes from <IP_ADDRESS>: icmp_seq=9 ttl=64 time=19.550 ms
64 bytes from <IP_ADDRESS>: icmp_seq=10 ttl=64 time=43.933 ms
^C--- <IP_ADDRESS> ping statistics ---
11 packets transmitted, 11 packets received, 0% packet loss
round-trip min/avg/max/stddev = 4.558/126.117/846.829/230.287 ms
On Tue, Jul 11, 2017 at 4:15 PM Michaël Arnauts<EMAIL_ADDRESS>wrote:

root@Tower:/usr/src/app# ping -c1 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=64 time=460.222 ms
--- <IP_ADDRESS> ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 460.222/460.222/460.222/0.000 ms
Wait, what? 460ms? That is a lot, and it could explain your issues. Normal
local traffic should arrive in a few milliseconds.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/home-assistant/home-assistant/issues/8355#issuecomment-314558496,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABcAqsHagi0EI73jLy-oz_sJFymYZBnXks5sM9fLgaJpZM4OOdXw
.

Maybe this is due to the echo going into some low power mode, I don't have an echo so I can't check, but it sure doesn't look nice for a ping reply to be over half a second.
Another explanation could be that your wifi is congested?

Well if this is not an issue for anybody else, feel free to close it and I'll keep investigating.

@nkgilley before moving over to Google Home (which presents its own list of problems) to get my items successfully discovered by Alexa, id have to restart the container and repeatedly press discover in the Alexa app why Home Assistant initialises.


Update client-tssdk.mdx for Fixing bug in OwnedObjects component

Description
The useSuiClientQuery 'owner' parameter was incorrectly set to 'account?.address', causing a bug. This has been fixed by correctly setting it to the 'address' prop passed to the OwnedObjects component.

Thanks for flagging this @phanker!


ARROW-1300: [JAVA] Fix Tests for ListVector

@StevenMPhillips
Fixed the following:
(1) TestListVector.java doesn't include tests for nested lists where the underlying dataVector for a listVector is also a listVector.
(2) The copy test in TestListVector.java only checks the bit vector contents and doesn't verify the actual contents of list vector

For some reason, git shows more diff in changes than I have actually made.
I have added lines 42, 96-115 and 457-572
however, git shows a lot of additional space/tab changes which I haven't really made

It looks like there's still a bunch of style issues in the codebase. Some time ago we added checkstyle checks but it's still showing a lot of working. It would be good to get checkstyle to a clean state cc @icexelloss

thanks @wesm
In the latest commit, I have tried to get rid of most of the tab/space changes.

@wesm, I can help with clean up the style. Track here: https://issues.apache.org/jira/browse/ARROW-1304

+1

Addressed review comments in the latest commit.

+1