text:
No error handler for no data response

Describe the bug
Geocoder fals when other geo objects functions get empty data from osm (that's just my assumption). In the following case seems railways request caused problem.
Full error outout
EmptyOverpassResponse                     Traceback (most recent call last)
Cell In[11], line 1
----> 1 result = Geocoder(osm_city_name='Камчатский край', osm_city_level=5).run(osm_id = 4139922, tags = {"admin_level": ["5"]}, date = "2024-04-22T00:00:00Z", df=df, text_column='text', group_column = "group_name")
File C:\Projects\ITMO\sloyka\sloyka\src\geocoder.py:1157, in Geocoder.run(self, osm_id, tags, date, df, text_column, group_column)
[1155](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:1155) df[text_column] = df[text_column].str.replace('\n', ' ')
[1156](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:1156) df[text_column] = df[text_column].apply(str)
-> [1157](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:1157) df_obj = OtherGeoObjects.run(self.osm_city_name, df, text_column)
[1158](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:1158) street_names = Streets.run(self.osm_city_name, self.osm_city_level)
[1160](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:1160) df = self.get_street(df, text_column)
File C:\Projects\ITMO\sloyka\sloyka\src\geocoder.py:583, in OtherGeoObjects.run(osm_city_name, df, text_column)
[581](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:581) df_obj = df.copy()
[582](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:582) df_obj['Numbers'] = np.nan
--> [583](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:583) osm_combined_df = OtherGeoObjects.run_OSM_dfs(osm_city_name)
[584](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:584) logger.info('find_other_geo_obj started')
[585](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:585) df_obj['other_geo_obj'] = df_obj[text_column].apply(OtherGeoObjects.extract_geo_obj)
File C:\Projects\ITMO\sloyka\sloyka\src\geocoder.py:445, in OtherGeoObjects.run_OSM_dfs(osm_city_name)
[433](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:433) logger.info('run_OSM_dfs started')
[435](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:435) osm_functions = [
[436](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:436)     OtherGeoObjects.get_OSM_green_obj,
[437](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:437)     OtherGeoObjects.get_OSM_num_obj,
(...)
[442](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:442)     OtherGeoObjects.get_OSM_historic
[443](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:443) ]
--> [445](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:445) osm_dfs = [OtherGeoObjects.get_and_process_osm_data(osm_city_name, func) for func in osm_functions]
[446](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:446) osm_combined_df = pd.concat(osm_dfs, axis=0)
[448](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:448) return osm_combined_df
File C:\Projects\ITMO\sloyka\sloyka\src\geocoder.py:445, in (.0)
[433](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:433) logger.info('run_OSM_dfs started')
[435](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:435) osm_functions = [
[436](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:436)     OtherGeoObjects.get_OSM_green_obj,
[437](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:437)     OtherGeoObjects.get_OSM_num_obj,
(...)
[442](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:442)     OtherGeoObjects.get_OSM_historic
[443](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:443) ]
--> [445](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:445) osm_dfs = [OtherGeoObjects.get_and_process_osm_data(osm_city_name, func) for func in osm_functions]
[446](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:446) osm_combined_df = pd.concat(osm_dfs, axis=0)
[448](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:448) return osm_combined_df
File C:\Projects\ITMO\sloyka\sloyka\src\geocoder.py:424, in OtherGeoObjects.get_and_process_osm_data(osm_city_name, get_data_function)
[420](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:420) def get_and_process_osm_data(osm_city_name, get_data_function) -> pd.DataFrame:
[421](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:421)     """
[422](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:422)     This function allows you to build an OSM array for different urban objects.
[423](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:423)     """
--> [424](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:424)     df = get_data_function(osm_city_name)
[425](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:425)     df['geometry'] = df['geometry'].apply(OtherGeoObjects.calculate_centroid)
[426](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:426)     df.rename(columns={df.columns[2]: 'geo_obj_tag'}, inplace=True)
File C:\Projects\ITMO\sloyka\sloyka\src\geocoder.py:366, in OtherGeoObjects.get_OSM_railway(osm_city_name)
[362](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:362) """
[363](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:363) This function sets spatial data from OSM about railway obj.
[364](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:364) """
[365](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:365) tags = {'railway': ['station', 'subway']}
--> [366](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:366) osm_railway = ox.geometries_from_place(osm_city_name, tags)
[367](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:367) osm_railway_df = pd.DataFrame(osm_railway)
[368](file:///C:/Projects/ITMO/sloyka/sloyka/src/geocoder.py:368) osm_railway_df = osm_railway_df.dropna(subset=['name'])
File c:\Users\thebe\AppData\Local\pypoetry\Cache\virtualenvs\sloyka-B5Yiy4FA-py3.11\Lib\site-packages\osmnx\geometries.py:127, in geometries_from_place(query, tags, which_result, buffer_dist)
[103](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/geometries.py:103) """
[104](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/geometries.py:104) Do not use: deprecated.
[105](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/geometries.py:105)
(...)
[124](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/geometries.py:124) gdf : geopandas.GeoDataFrame
[125](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/geometries.py:125) """
[126](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/geometries.py:126) warn(DEP_MSG, stacklevel=2)
--> [127](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/geometries.py:127) return features.features_from_place(query, tags, which_result, buffer_dist)
File c:\Users\thebe\AppData\Local\pypoetry\Cache\virtualenvs\sloyka-B5Yiy4FA-py3.11\Lib\site-packages\osmnx\features.py:279, in features_from_place(query, tags, which_result, buffer_dist)
[276](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:276) utils.log("Constructed place geometry polygon(s) to query API")
[278](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:278) # create GeoDataFrame using this polygon(s) geometry
--> [279](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:279) gdf = features_from_polygon(polygon, tags)
[281](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:281) return gdf
File c:\Users\thebe\AppData\Local\pypoetry\Cache\virtualenvs\sloyka-B5Yiy4FA-py3.11\Lib\site-packages\osmnx\features.py:330, in features_from_polygon(polygon, tags)
[327](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:327) response_jsons = _downloader._osm_features_download(polygon, tags)
[329](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:329) # create GeoDataFrame from the downloaded data
--> [330](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:330) gdf = _create_gdf(response_jsons, polygon, tags)
[332](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:332) return gdf
File c:\Users\thebe\AppData\Local\pypoetry\Cache\virtualenvs\sloyka-B5Yiy4FA-py3.11\Lib\site-packages\osmnx\features.py:410, in _create_gdf(response_jsons, polygon, tags)
[406](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:406) if elements_count == 0:
[407](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:407)     msg = (
[408](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:408)         "There are no data elements in the server response. Check log and query location/tags."
[409](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:409)     )
--> [410](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:410)     raise EmptyOverpassResponse(msg)
[412](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:412) # begin processing the elements retrieved from the server
[413](file:///C:/Users/thebe/AppData/Local/pypoetry/Cache/virtualenvs/sloyka-B5Yiy4FA-py3.11/Lib/site-packages/osmnx/features.py:413) utils.log(f"Converting {elements_count} elements in JSON responses to features")
EmptyOverpassResponse: There are no data elements in the server response. Check log and query location/tags.
To Reproduce

Go to the feat/group_names
import geocoder
load the attached data to pd.DataFrame object (sep = ',') Don't ask me why, I though we were done with commas as separators. Just in case link to csv: https://niuitmo-my.sharepoint.com/:x:/g/personal/412499_niuitmo_ru/EZfm9rXpYPlFi4gS8b1nLW8BPQfqxxOjIVdQDwMn91ED-w?e=KGb82S
Use the run function with following parameters: result = Geocoder(osm_city_name='Камчатский край', osm_city_level=5).run(osm_id = 4139922, tags = {"admin_level": ["5"]}, date = "2024-04-22T00:00:00Z", df=df, text_column='text', group_column = "group_name")
Expected behavior
Function should return gpd.GeoDataFrame object and handle osm server exceptions.

Desktop (please complete the following information):

OS: Windows 11
VSCode 1.90
Python 3.11.8
feat/group_names

kamchatrip.csv

thanks, we will fix it soon

authors: GeorgeKontsevik LeonDeTur

repo: GeorgeKontsevik/sloyka


text:
Update image export code to use correct S2 provisional product name

Proposed changes
This PR makes a simple fix to update the Sentinel-2 provisional OWS product name to its correct value, in order to make the data appear on the interactive map in the Exporting_satellite_imagery.ipynb notebook.
To test, run the Exporting_satellite_imagery.ipynb notebook, then select "Sentinel-2 NRT" and the 17th October 2022 from the date dropdown in the interactive app. Provisional Sentinel-2 data should appear on the map.
Closes issues (optional)

Closes Issue #963

Hi @robbibt! I have checked that the data shows up when accessing the notebook through the DEA sandbox (please find image below). Does it also need to be checked on NCI? I am not sure how to access the notebooks through NCI but would love to be shown!

Thanks so much @geoscience-aman! At the moment it's OK to not review on the NCI - only because the environment there is too outdated to work reliably. But I think @omad and @Ariana-B are working on that as I speak, so hopefully soon!
I'd be happy to walk you through loading up notebooks on the NCI, but don't have much free time between now and when I leave for a conference next week - maybe someone like @BexDunn or @erin-telfer could give you a tour? Otherwise, I can when I get back next month. 😃

No worries, thanks @robbibt. I'll approve the review now in that case :)

source: gharchive/pull-request

authors: geoscience-aman robbibt

repo: GeoscienceAustralia/dea-notebooks

license_type: permissive

license_source: github-api


text:
URL nettoyées à compléter

Dans la version 3.1, plusieurs caractères spéciaux (accents, tirets, guillements, /, ...) ont été remplacés dans les URL pour qu'elles aient une forme plus lisible et éviter des problèmes d'affichage, de référencement ou de chargement des pages.
Il faudrait aussi ajouter le caratère % que j'ai croisé dans certains titres, donc dans certaines URL qui renvoyaient alors une 404.
Et à priori cela a été fait sur les URL des randos et des services, mais pas des pages statiques.
A faire aussi sur ces pages.

OK le % est désormais échappé des URL.
Et le nettoyage des URL a été intégré aussi sur les pages statiques.
Exemple : https://rando.ecrins-parcnational.fr/information/18-Acces-&-Transports

source: gharchive/issue

license: MIT


text:
InvalidOperationException: The response cannot be cleared, it has already started sending.

We are using CMS 12 (on .NET 7) with the 5.0.6 version of Geta.NotFoundHandler.Optimizely and we have started seeing the following error in our logs for the path /apple-touch-icon-precomposed.png.
We are probably fixing the issue by just creating the file at that location but the same error is happening for any path with extension in the root of the site which would normally trigger a 404. It seems it is trying to clear the response which is not allowed:
Message: The response cannot be cleared, it has already started sending.
Exception type: System.InvalidOperationException |
Failed method: Geta.NotFoundHandler.Infrastructure.Web.HttpContextExtensions.Redirect
System.InvalidOperationException:
at Microsoft.AspNetCore.Http.ResponseExtensions.Clear (Microsoft.AspNetCore.Http.Extensions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
at Geta.NotFoundHandler.Infrastructure.Web.HttpContextExtensions.Redirect (Geta.NotFoundHandler, Version=5.0.6.0, Culture=neutral, PublicKeyToken=null)
at Geta.NotFoundHandler.Core.RequestHandler.Handle (Geta.NotFoundHandler, Version=5.0.6.0, Culture=neutral, PublicKeyToken=null)
at Geta.NotFoundHandler.Infrastructure.Initialization.NotFoundHandlerMiddleware+d__2.MoveNext (Geta.NotFoundHandler, Version=5.0.6.0, Culture=neutral, PublicKeyToken=null)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Microsoft.AspNetCore.Builder.StatusCodePagesExtensions+<>c__DisplayClass7_0+<b__0>d.MoveNext (Microsoft.AspNetCore.Diagnostics, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware+d__3.MoveNext (Microsoft.AspNetCore.Diagnostics, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at EPiServer.Cms.Shell.UI.Internal.RegisterAdminUserMiddleware+d__5.MoveNext (EPiServer.Cms.Shell.UI, Version=12.22.5.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl+<g__Awaited|8_0>d.MoveNext (Microsoft.AspNetCore.Diagnostics, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)

It seems that adding if (context.Response.HasStarted) return; on top of the Redirect extension method resolves the problem but I am not sure why it happens in the first place.
https://github.com/Geta/geta-notfoundhandler/blob/2ed3c5f746d5497fd9f0a6432aa453935e2b8a9e/src/Geta.NotFoundHandler/Infrastructure/Web/HttpContextExtensions.cs#L48

Another possible solution is to compare whether the NewUrl and OldUrl is same in the following method. Because in that case, we are handling the already redirect response (which has also a 404 response code), which is the default 404 page defined in a custom INotFoundHandler.
https://github.com/Geta/geta-notfoundhandler/blob/2ed3c5f746d5497fd9f0a6432aa453935e2b8a9e/src/Geta.NotFoundHandler/Core/RequestHandler.cs#L128

After decompiling and putting more logging in production version I found the cause which is not a bug. We had put the line:
app.UseStatusCodePagesWithReExecute("/error/{0}/");
above the lines to use the middleware:
app.UseCustomNotFoundHandler();
app.UseOptimizelyNotFoundHandler();
That seemed to cause it to fail for physical paths (ending in an extension) that did not exist.

authors: andreas-valtech erdihu

repo: Geta/geta-notfoundhandler


text:
Added New Illustration Website TranshumansXYZ

Hi @Gilbishkosma,
I'd like to contribute for hacktoberfest.
PR

Added new website to content folder

hi @stevenanthonyrevo , thankyou so much for contributing to this repo. The changes has been deployed.

hi @Gilbishkosma, thanks!

authors: Gilbishkosma stevenanthonyrevo

repo: Gilbishkosma/illustratorhunt


text:
Configurable events

Inspired by the closing of #9 yesterday (and particularly the mention that recently Google seems to have fixed API support for non-birthday events), I checked that the API had in fact been fixed (it has!), and then I did a big refactor to configurably handle birthdays and anniversaries, and custom events (potentially more than one per contact, which required looping) with added labels per custom event. It has been running nicely for me under various test-runs (in English and Greek). I am very aware that @GioBonvi said

...I want to keep this project focused on birthdays only to avoid unnecessary complications for inexperienced users.

but I wanted this functionality for my own use anyway (even more than the birthday functionality). Therefore - now that the API handles it - I did these changes and made them as non-invasive as possible from the user-perspective (if users don't edit the default eventTypes array under OPTIONAL CUSTOMIZATION then it should behave the same as before, with the exception of some more generic wording in titles, to make sense for more than just birthdays). @GioBonvi I am posting the changes in this PR because:

When you see how nice (and non-invasive for users) it is you might change your mind :-)
I did a few other unrelated commits along the way which you will probably want either way. If you want them but not the non-birthday refactor commits then let me know which ones you want and I will rebase and PR them separately - I didn't wan't to spend time on that though until I was sure you don't want to just use all my commits as is.

If you want to include these changes then perhaps the repo could afford another rename (e.g. GoogleBirthdayNotifier -> GoogleContactsEventsNotifier) at some point, but before that maybe the changes should stay in a non-master ("devel"?) branch for a while until other translators have caught up with rewordings. If you don't want to include the non-birthday functionality I will maintain my changes as a patch-fork in my own repo, called GoogleContactsEventsNotifier.

Hello @rowanthorpe, it's nice to hear from you again!
I've rapidly skimmed over your code and from what I could see you've done an oustdanding work - as usual ;-)
However, in these days I don't have the time to thoroughly analyze it and don't want to take hasty decisions, so I'll have to park this PR for now.
I will get back to you as soon as I manage to finish my exams, which should mean a week or so.
Thank you again!

OK, no rush. Good luck with the exams.

Hi, I was away from internet for a few days, but am back now, so will get a chance to look at this and make changes hopefully tomorrow, or the day after at the latest :-)

I just rebased the branch to address all the changes you suggested. For the naming of the calendar in the comments I used a wording which I think strikes a balance between "most likely default name" and "making it clear it might have a non-default name anyway". Of course if I missed something, made any presumptions you don't like, or need to do more changes, let me know.

Does GitHub let you change the target branch for this PR form master to my repository's/configurable-events?
Otherwise I'll merge manually.

Yes, I just changed the target branch as requested.

authors: GioBonvi rowanthorpe

repo: GioBonvi/GoogleBirthdayNotifier


text:
Update deps eframe and egui to v0.24

Similar to the  previous pull request.
Packages who use this repo as dependency has egui versions conflict "error[E0308]: mismatched types - two different versions of crate egui are being used".

As a temporary dependency solution you can use this pull request in your Cargo.toml:
[dependencies]
egui-plotter = { git = "https://github.com/Gip-Gip/egui-plotter.git", rev = "refs/pull/11/head" }

https://github.com/emilk/egui/releases/tag/0.25.0

authors: MikMikus ohmyarch

repo: Gip-Gip/egui-plotter


text:
Initial ContextMenu cells are not accessibility buttons

This will eg. just say “Lock” and will not announce this is a button.

Bug Report Dump (Auto-generated)

Version 1.22.0 (1532006598)
Device: iPhone X (iOS 11.4.1)
TestFlight: true

Hey, I'm relatively new to the app and the project... How can I access this menu and maybe do you know in which file this is?

Nvm, found it :)

repo: GitHawkApp/GitHawk


text:
Re-enable StyleCop for this project

At some point, this seems to have been removed, and we should add this back in.

I can look into getting this enabled again, unless you plan to do that in todays stream.
There probably will be a few conflicts between the editorconfig, and stylecop.
In these cases, I would probably lean towards the stylecop rules instead of editorconfig though.

@AdmiringWorm said...
In these cases, I would probably lean towards the stylecop rules instead of editorconfig though.

Agreed

Just enabled StyleCop (and FxCop) locally, and got hit with 728 warnings (most related to missing file license text, I think).

Well, time to start configuring the warnings then (as not everything can be configured through a ruleset file).

When this gets finished, we need to add this to GitVersion as well

@AdmiringWorm you are a brave man!  Thanks for doing this! 😄

@arturcic I will NOT volunteer to do that 😆.
@gep13 any thoughts about the StyleCop rule of having xml file headers for all files?
It could be as simple as
// -----------------------------------------------------------------------
// <copyright file="GitHubProfile.cs" company="GitTools Contributors">
// Copyright (c) 2015 - Present - GitTools Contributors
// </copyright>
// -----------------------------------------------------------------------

@AdmiringWorm that makes sense to me, yes!

:+1:
Only 412 warnings left (267 being from Stylecop, rest from FxCop).
Most warnings was related to this vs not this

@AdmiringWorm did you re-enable StyleCop by adding the analyzers from NuGet?
Last time I tried those I couldn't get that to work, because Visual Studio for Mac was missing support for consuming StyleCop rules.
Anyways, while we are at it, we should maybe consider adding Roslynator.Analyzers to the project too?

@Cheesebaron yes, I did. also added FxCop as well.
Not sure about the Roslynator analyzers (Only because I have never done those myself).

@Cheesebaron I would happily add that for this rule alone...
https://github.com/JosefPihrt/Roslynator/blob/master/docs/analyzers/RCS1090.md
I would see that as a separate addition to this work though.

@gep13 I Believe that is already added in the FxCop analyzers. (Either that, or one of my extensions make it happen).
Unfortunately, fxcop don't report warnings on the console though (Well, not for me anyhow), only in the IDE, so it could be useful to add Roslynator as well.

While doing the GitLabProvider spike, I noticed at least one other place where we were still calling .Result on an async method.  That might come up in the work you are doing here.

I don't think it will. I don't know of any rules in either StyleCop, nor FxCop that covers the usage of .Result.

The .Result stuff is only in the tests. Those could probably be made async too since NUnit supports that.

@Cheesebaron it was these ones that I was referring to...
https://github.com/GitTools/GitReleaseManager/blob/b2b806615b9d2c8c94a92b2aba25b2971059dd98/Source/GitReleaseManager/GitHubProvider.cs#L82-L97

Ah, I missed that one!

authors: AdmiringWorm Cheesebaron arturcic gep13

repo: GitTools/GitReleaseManager

license: mit

license_source: bigquery


text:
🛑 orkut is down

In bc83c5d, orkut (orkut.com.br) was down:

HTTP code: 404
Response time: 113 ms

Resolved: orkut is back up in e3c32f3.


text:
🛑 feestid is down

In c425e83, feestid (feestid.nl) was down:

HTTP code: 0
Response time: 0 ms

Resolved: feestid is back up in 4183dfa.


text:
🛑 orkut is down

In 47e573f, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in 0c2c491.


text:
🛑 orkut is down

In 30fa054, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in 468690e.


text:
🛑 orkut is down

In fc3d56e, orkut (orkut.com.br) was down:

HTTP code: 403
Response time: 227 ms

Resolved: orkut is back up in 10c462e.


text:
🛑 orkut is down

In 48a3f31, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in 66e8c14.


text:
🛑 hcr is down

In 38d1612, hcr (hcr.co.uk) was down:

HTTP code: 401
Response time: 597 ms

Resolved: hcr is back up in 14c04f0.


text:
🛑 orkut is down

In 6488352, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in bfc0aa2.


text:
🛑 penispedia is down

In a36d69b, penispedia (penispedia.de) was down:

HTTP code: 0
Response time: 0 ms

Resolved: penispedia is back up in ac8961e.


text:
🛑 hcr is down

In f591798, hcr (hcr.co.uk) was down:

HTTP code: 401
Response time: 742 ms

Resolved: hcr is back up in 1946351.


text:
🛑 orkut is down

In 369ba5f, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in c90b8a6.


text:
🛑 orkut is down

In f12d915, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in f59b3a0.


text:
🛑 penispedia is down

In d986444, penispedia (penispedia.de) was down:

HTTP code: 0
Response time: 0 ms

Resolved: penispedia is back up in a36f86c.


text:
🛑 orkut is down

In f01c119, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in 4764dab.


text:
🛑 orkut is down

In 9b58bf3, orkut (orkut.com.br) was down:

HTTP code: 429
Response time: 584 ms

Resolved: orkut is back up in e60cd20.


text:
🛑 ojolink is down

In 0e2460c, ojolink (ojolink.net) was down:

HTTP code: 403
Response time: 519 ms

Resolved: Ojolink is back up in 8c6c02b.


text:
🛑 penispedia is down

In c6c9794, penispedia (penispedia.de) was down:

HTTP code: 0
Response time: 0 ms

Resolved: penispedia is back up in 21295d1.


text:
🛑 ojolink is down

In 6f0c1b1, ojolink (ojolink.net) was down:

HTTP code: 403
Response time: 371 ms

Resolved: Ojolink is back up in bbf50e6.


text:
🛑 penispedia is down

In edd488c, penispedia (penispedia.de) was down:

HTTP code: 0
Response time: 0 ms

Resolved: penispedia is back up in ff288cc.


text:
🛑 inkcityusa is down

In 5fda36a, inkcityusa (inkcityusa.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: inkcityusa is back up in 9de03d1.


text:
🛑 ojolink is down

In f6d9b3a, ojolink (ojolink.net) was down:

HTTP code: 403
Response time: 436 ms

Resolved: Ojolink is back up in 909b6f8.


text:
🛑 ojolink is down

In 252421b, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in c020a0c.


text:
🛑 ojolink is down

In c54ab04, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in 9e956a2.


text:
🛑 penisdicke is down

In 85b6249, penisdicke (penisdicke.de) was down:

HTTP code: 0
Response time: 0 ms

Resolved: penisdicke is back up in 2dfe3a1.


text:
🛑 ojolink is down

In 43c3800, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in e5718a5.


text:
🛑 ojolink is down

In b0e4d99, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in 1171166.


text:
🛑 ojolink is down

In 30aac58, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in 153a536.


text:
🛑 ojolink is down

In 3df83cc, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in c12b034 after 835 days, 3 hours, 21 minutes.


text:
🛑 ojolink is down

In a2c2b50, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in b5e4a61 after 45 minutes.


text:
🛑 carlinha is down

In 944e307, carlinha (carlinha.org) was down:

HTTP code: 0
Response time: 0 ms

Resolved: carlinha is back up in 9142fc6 after 14 minutes.


text:
🛑 porsche is down

In b06b41b, porsche (porsche.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: porsche is back up in 59e7662 after 1 hour, 21 minutes.


text:
🛑 orkut is down

In 2fa6958, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in 9aa53fb.


text:
🛑 hcr is down

In 6e2bee9, hcr (hcr.co.uk) was down:

HTTP code: 429
Response time: 690 ms

Resolved: hcr is back up in 829a700 after .


text:
🛑 ojolink is down

In c8f4889, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in d2dcd37 after 13 minutes.


text:
🛑 penisdicke is down

In a1ee2ec, penisdicke (penisdicke.de) was down:

HTTP code: 0
Response time: 0 ms

Resolved: penisdicke is back up in d99e122.


text:
🛑 rapishare is down

In ae94ae1, rapishare (rapishare.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: rapishare is back up in d127270 after 41 minutes.


text:
🛑 twoc is down

In 6645e11, twoc (twoc.co.uk) was down:

HTTP code: 0
Response time: 0 ms

Resolved: twoc is back up in 234fff8 after 33 minutes.


text:
🛑 twoc is down

In a79f3e8, twoc (twoc.co.uk) was down:

HTTP code: 0
Response time: 0 ms

Resolved: twoc is back up in 49bafc7 after 14 minutes.


text:
🛑 ojolink is down

In 57ee992, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in a83bf60 after 13 minutes.


text:
🛑 ojolink is down

In 7cd611e, ojolink (ojolink.fr) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Ojolink is back up in 7444211 after 12 minutes.


text:
🛑 orkut is down

In a7ba60a, orkut (orkut.com.br) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in 88cca18.


text:
🛑 orkut is down

In e466243, orkut (orkut.co.in) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in d3dafb0 after 17 minutes.


text:
🛑 orkut is down

In 7785c0e, orkut (orkut.co.in) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in 8e1afa4 after 39 minutes.


text:
🛑 fc2 is down

In eb49253, fc2 (fc2.com) was down:

HTTP code: 404
Response time: 197 ms

Resolved: fc2 is back up in fefd389 after 6 hours, 8 minutes.


text:
🛑 orkut is down

In 79b2dac, orkut (orkut.co.in) was down:

HTTP code: 0
Response time: 0 ms

Resolved: orkut is back up in adc44bc after 8 minutes.


text:
Database version 163

Hello,
When trying this program, I get this error message:

Does someone know how to extract my signal backup?
Thanks!

The reactions column has been renamed to reaction in the db.
2022-12-04 15:29:16 | INFO - This is signal2html version 0.2.11
2022-12-04 15:29:16 | INFO - Found Signal database version: 163.
2022-12-04 15:29:16 | WARNING - This database version is untested, please report errors.
2022-12-04 15:29:16 | WARNING - Group for recipient 21 is 'textsecure_group!238da296da5e10924c9709681bef1b9b' which does not exist.
Traceback (most recent call last):
File ".local/bin/signal2html", line 8, in
sys.exit(main())
File ".local/lib/python3.10/site-packages/signal2html/main.py", line 20, in main
sys.exit(main())
File ".local/lib/python3.10/site-packages/signal2html/ui.py", line 37, in main
process_backup(args.input_dir, args.output_dir)
File ".local/lib/python3.10/site-packages/signal2html/core.py", line 699, in process_backup
populate_thread(
File ".local/lib/python3.10/site-packages/signal2html/core.py", line 652, in populate_thread
mms_records = get_mms_records(
File ".local/lib/python3.10/site-packages/signal2html/core.py", line 486, in get_mms_records
qry = db.execute(
sqlite3.OperationalError: no such column: reactions

Replace your versioninfo.py and html.py with mine and it should work now. https://github.com/CSnowRules/signal2html-contrib/tree/master/signal2html

I have replaced these 2 files in the signal2html folder that pip created, but it doesn't work either :/

I download all your fork of this repo, and it's works with your repo !!!
Thanks a lot 😄

authors: Baptiste-mrch CSnowRules


text:
Chore: Delta tables should not require an empty directory

Description
Currently, when copying to a Delta table, a user needs to create an empty directory, and then pass that empty directory in to the COPY TO command, e.g.:
COPY (SELECT 1) TO 'file:///Users/path/to/your_empty_directory'

This will raise an error if the directory does not exist, and will also raise an error if the directory is not empty. Instead, we should create the directory for the user before copying the Delta table to it. This removes ambiguity for the function and is also more consistent with the behavior of other COPY TO formats.
When copying to a CSV or Parquet, the file is created directly. If a Delta table is comprised of a directory with some files and logs in it, it makes sense that we would create the entire Delta table, including the directory, instead of filling an existing directory with the contents of a Delta table.
Instead, when copying to a delta table, it should look like this:
COPY (SELECT 1) TO 'file:///Users/path/to/not_yet_created_directory'

This is a pretty ambiguous case, though it doesn't seem it: on the surface, the thing you expect, should just work or be able to work, but if you dig in a bit further it becomes really hard to make the semantics come out reasonable.
There are a couple of high level facts and assumptions here:

the delta specification assumes that there can be multiple independent writers to a single table.
delta (and iceberg and lance) write data to more than one file as part of their MVCC transaction process
many outputs only write to a single file. (json, bson, etc.)
glaredb would like to expose consistent semantics for a given data source/format: this is confusing for users and leads to documentation that lists lots of exceptions to rules that confuse and frustrate users.
object storage and file systems have different underlying semantics

directories in object storage don't exist: it's (basically) flat key-value system, with "paths" just being keys with specific prefixes.
operations to a single key are atomic

There's already some degree of awkward semantics around COPY TO, depending if the target of the operation exists or not. If the target doesn't exist, then everything should create the resources. If the target data source exists, then the operation should overwrite existing data. This is a pretty reasonable high level target, but it's hard to actually implement this:

for single file outputs on object storage, this is easy: copy to will create or overwrite the file, and if there are multiple writers you will always get the output of one and only one of the writers.
for single file outputs on local file systems, you generally don't get atomic operations, (or at least) it's a touch harder to get this to work consistently given different filesystems. I'm not sure if our file system library would do an atomic write (e.g. you have to write to a temporary issue, and then use rename)
for multifile outputs remotely, the fact that directories don't work, are in our favor: two writes can race, but the write that updates the metadata (index of pointers to versions) "wins" and readers will only see one at a time. I don't think we support this at the time.
for multifile outputs locally, there's no way to "delete" the previous files from a previous write operation cleanly so that other readers wouldn't view the table as dropped. I think most of our applicable data sources just error if there is already data where the table "should `go".
native storage, in local operation is in theory susceptible to multiple-writes, but in practice isn't really (or at least can be made to do this correctly because we don't allow multiple glaredb processes to write to the same local storage.
for (some) database systems you can do this as part of a transaction, though you're probably still better to write it to a temporary table first and then do the rename and drop in a transaction.

None of these are exactly the case we have here. I think we might be able to relax the requirement for the empty directory and just create the directory, but if there is a directory that exists and is empty, should we write into it? What about data that isn't delta-related data? It's a lot harder to say...

I hear you. In service of trying to keep this simpler, I'm trying to paint with a broad brush, while also realizing that we're not capturing some nuance here. Taking that approach, I would say:

In the case of, say, a local CSV, COPY TO will overwrite the file if it exists.
Given that a Delta table consists of a directory containing some files, if COPY TO is used, it would overwrite the directory and anything inside of it. I don't think it should write into an empty directory.

That said, I think we should consider an "overwrite" or "if not exists" argument with COPY TO (for all file types), and we may want to consider setting the default there to raising an error instead of overwriting.

Given that a Delta table consists of a directory containing some files,  if COPY TO is used, it would overwrite the directory and anything inside of it.

This isn't really possible as an atomic operation. (that's sort of the crux of the problem). It's not (particularly) possible in the cloud, but our tools aren't as clear there.

I don't think it should write into an empty directory.

This is fine, but "will write into a directory with files in it but not if the directory exists and is empty."
If, however, you have two threads or operations running at the same time (locally) what do you do?

The "most correct answer" is to not put tables in the file system in the addressable path that a user tells us to, and rather write the files to a directory with a UUID as a name and then map table names to tables at the catalog layer. This also means that "deletes" can be a metadata operation (delete from the catalog) with cleanup deletes happening later. (I think we do something similar for native storage, or certainly can), but when we're writing files out for people it's a different story.
The multi threaded experience is worse for writing (single) local files than it is for object store files: locally we'll end up corrupting the file (on most filesystems, though perhaps not (always) on windows, definitely a silver lining) whereas on object storage only one operation can succeed.

I am in favor of "if not exists" and "overwrite" being options.

Could you explain a bit more about atomicity and multi-threading here? I guess, more specifically, how does this case differ from, say, two people trying to write the same large Parquet file at the same time?

"will write into a directory with files in it but not if the directory exists and is empty."

I don't think it should do this either. I would think that COPY TO would fail if the directory exists at all.

The "most correct answer" is to not put tables in the file system in the addressable path that a user tells us to, and rather write the files to a directory with a UUID as a name and then map table names to tables at the catalog layer. This also means that "deletes" can be a metadata operation (delete from the catalog) with cleanup deletes happening later. (I think we do something similar for native storage, or certainly can), but when we're writing files out for people it's a different story.

Could you say a bit more about this? It feels kind of like an additional layer of log file, on top of the log file that's already built in to a Delta table. Where would the mapping live? For clarity's sake, could you sketch out what this would look like for the initial write, and then for any subsequent operations?
I think you understand the internals here much better than I do, so ELI5 here would be really helpful to get aligned.

Could you explain a bit more about atomicity and multi-threading here? I guess, more specifically, how does this case differ from, say, two people trying to write the same large Parquet file at the same time?

Delta saves data in multiple files (i.e. only the changes/"deltas") and has a single metadata file that maps where data are and tells the client how to assemble a single table from a bunch of parquet files. This means that individual write operations can be very small (write the data to the parquet file and then the metadata file as the commit) which means that multiple writers can write to a single delta table without coordination (because of the all-or-nothing promise of the metadata write to a single file,) you get full MVCC semantics without coordination, which is pretty nifty.
There might be edge cases about two writers trying to create a single table (haven't read the details around the spec). Filesystems don't (all) have the same kinds of atomic write promises that object storage has (in change for other promises,) which means "external local filesystem tables (which might have multiple writers)" and "native storage on local file systems with a cluster of worker nodes," are not (to my mind, at the moment) definitely safe (without further testing and investigation).

I can see how this would apply to INSERTs (I imagine that when inserting into Delta, we're actually creating a new file with the changes), but does it apply to COPY TO as well (in a way that's different from the other COPY TO formats)?
Could you also explain why creating the directory changes the outcome here? Is it that it takes two steps instead of one (creating the directory and then creating the table)?

Could you also explain why creating the directory changes the outcome here? Is it that it takes two steps instead of one (creating the directory and then creating the table)?

Exactly.
Earlier you said we should have the following semantics:

Given that a Delta table consists of a directory containing some files, if COPY TO is used, it would overwrite the directory and anything inside of it.

On object storage, you don't actually have to delete anything to write a new table.
and then

I would think that COPY TO would fail if the directory exists at all.

These can't both exist at the same time.
The first rule isn't really possible to implement locally because the second writer would start deleting things that the first writer. You can implement this in object storage, because I think we just don't delete things, until a later vacuum operation.
The second rule is possible to implement (locally and in object storage) but does mean that you'd have to go in and manually clean up after failed operations, which is dodgy, and I think isn't super useful.

To be clear, the current behavior is weird as hell, and I think we should change it. The problem is but to what. I think we try and make a directory if possible, and maybe just proceed with directories that have files in them already (there are unlikely to be name collisions, and this is essentially what happens in object storage.

Ah, thanks for explaining. That all makes sense.
What you propose seems reasonable. I think that creating the directory if it doesn't exist, and otherwise writing to the existing directory seems OK. It would help if we log what we're doing (creating a new directory vs writing to an existing directory) to make it less surprising for people.

Where do you think we should be logging or noting this (and do we have other logging like this that people might expected to look at?

I was imagining this would happen in the same place where we output the number of rows written, or that the operation succeeded or failed. E.g. currently this:
create table abc as select 1

outputs Table created. I'm imagining this would in the same place. There may need to be a bit of logic to rephrase based on whether this is local (Directory created) vs Cloud storage (Prefix created).

There may need to be a bit of logic to rephrase based on whether this is local (Directory created) vs Cloud storage (Prefix created).

We can't do this for cloud as prefixes aren't explicitly created (e.g. objects with a prefix are created.)

I was imagining this would happen in the same place where we output the number of rows written, or that the operation succeeded or failed.

This is only an artifact of the shell itself, and I believe not something that is happening lower in the database. Plumbing the message from the data source up to the shell is a pretty big lift, and it doesn't quite answer what we do in the bindings.

We can't do this for cloud as prefixes aren't explicitly created (e.g. objects with a prefix are created.)

Could we check to see whether objects with the prefix exist, and message accordingly?

This is only an artifact of the shell itself, and I believe not something that is happening lower in the database. Plumbing the message from the data source up to the shell is a pretty big lift, and it doesn't quite answer what we do in the bindings.

I'm not quite following here. Could you explain with a bit more detail?
Do you have any suggestions for another approach?

I'm not quite following here. Could you explain with a bit more detail?

From the perspective of user's there isn't really anything/anywhere to log during successful operations, or at least not consistently given the different ways glaredb is used/called, because conceptually it's still client/server and the results of a successful operation are a [conceptual] cursor of results.

Do you have any suggestions for another approach?

Nope. I don't think "logging on success" is a thing we can (or should) do. We can definitely log normally, user's will (mostly) not see this.

Currently, when I call something like:
con.sql("copy (select 1) to 'hello.csv'").show()

I see a table with the message:

result

0
Copy success

How does this differ from logging if a table is created?

These results are rendered here and while we could have a different message, it'd be a bit of a bodge. Also, I think it would be good if this operation (like all operations that write data) return a message with the total number of rows written.

I think that having generally useful information about the write would be good, including the number of rows and whether it was successful.

authors: talagluck tychoish

repo: GlareDB/glaredb


text:
Package Command for debug information

[x] Atom version
[x] Atom Beautify version
[x] Operating System (Mac, Linux, Windows, etc)
[x] Beautification Options

[x] all options
[x] paths to .jsbeautifyrc files that are being used

[x] Atom Beautify Package configuration
[x] Original file

[x] contents of file
[x] path of file (extension included)
[x] Atom grammar of file editor

[ ] Error report

run test beautification and list all errors

Atom Beautify - Debugging information
The following debugging information was generated by Atom Beautify on Mon Mar 16 2015 01:38:21 GMT-0300 (ADT).

Platform: darwin
Versions
Atom Version: 0.187.0
Atom Beautify Version: 0.21.6
Original file to be beautified
Original File Path: /Users/glavin/Documents/Project Dev/atom-beautify/lib/beautify.coffee
Original File Grammar: CoffeeScript
Original File Contents:
# global atom

"use strict"
pkg = require('../package.json')
# Dependencies
plugin = module.exports
_ = require("lodash")
beautifier = require("./language-options")
languages = beautifier.languages
defaultLanguageOptions = beautifier.defaultLanguageOptions
options = require "./options"
# Lazy loaded dependencies
fs = null
path = require("path")
strip = null
yaml = null
async = null
dir = null # Node-Dir
LoadingView = null
MessagePanelView = null
PlainMessageView = null
$ = null
#MessageView = require "./message-view"

# function cleanOptions(data, types) {
#   nopt.clean(data, types);
#   return data;
# }
getCursors = (editor) ->
  cursors = editor.getCursors()
  posArray = []
  for cursor in cursors
    bufferPosition = cursor.getBufferPosition()
    posArray.push [
      bufferPosition.row
      bufferPosition.column
    ]
  posArray

setCursors = (editor, posArray) ->
  # console.log "setCursors: #{posArray}"
  for bufferPosition, i in posArray
    if i is 0
      editor.setCursorBufferPosition bufferPosition
      continue
    editor.addCursorAtBufferPosition bufferPosition
  return

beautify = ({onSave}) ->
  path ?= require("path")
  MessagePanelView ?= require('atom-message-panel').MessagePanelView
  PlainMessageView ?= require('atom-message-panel').PlainMessageView
  LoadingView ?= require "./loading-view"
  @messagePanel ?= new MessagePanelView title: 'Atom Beautify Error Messages'
  @loadingView ?= new LoadingView()
  @loadingView.show()
  forceEntireFile = onSave && atom.config.get("atom-beautify.beautifyEntireFileOnSave")
  # Show error
  showError = (e) =>
      @loadingView.hide()
      if not atom.config.get("atom-beautify.muteAllErrors")
        # console.log(e)
        @messagePanel.attach()
        @messagePanel.add(new PlainMessageView({
          message: e.message,
          className: 'text-error'
        }))

  # Get the path to the config file
  # All of the options
  # Listed in order from default (base) to the one with the highest priority
  # Left = Default, Right = Will override the left.
  # Atom Editor
  #
  # User's Home path
  # Project path
  # Asynchronously and callback-style
  beautifyCompleted = (text) =>
    # console.log 'beautifyCompleted'
    if not text?
      # Do nothing, is undefined
    else if text instanceof Error
      showError(text)
    else if typeof text is "string"
      if oldText isnt text
        # console.log "Replacing current editor's text with new text"
        posArray = getCursors(editor)
        # console.log "posArray: #{posArray}"
        origScrollTop = editor.getScrollTop()
        # console.log "origScrollTop: #{origScrollTop}"
        if not forceEntireFile and isSelection
          selectedBufferRange = editor.getSelectedBufferRange()
          # console.log "selectedBufferRange: #{selectedBufferRange}"
          editor.setTextInBufferRange selectedBufferRange, text
        else
          # console.log "setText"
          editor.setText text
        # console.log "setCursors"
        setCursors editor, posArray
        # console.log "Done setCursors"
        # Let the scrollTop setting run after all the save related stuff is run,
        # otherwise setScrollTop is not working, probably because the cursor
        # addition happens asynchronously
        setTimeout (->
          # console.log "setScrollTop"
          editor.setScrollTop origScrollTop
          return
        ), 0
    else
      showError(new Error("Unsupported beautification result '#{text}'."))
    # else
      # console.log "Already Beautiful!"
    @loadingView.hide()
    return
  # console.log 'Beautify time!'

  # Get current editor
  editor = atom.workspace.getActiveTextEditor()
  # Check if there is an active editor
  if not editor?
    return showError(new Error("Active Editor not found. "
                "Please select a Text Editor first to beautify."))

  isSelection = !!editor.getSelectedText()
  # Get editor path and configurations for paths
  editedFilePath = editor.getPath()
  # Get all options
  allOptions = options.getOptionsForPath(editedFilePath, editor)

  # Get current editor's text
  text = undefined
  if not forceEntireFile and isSelection
    text = editor.getSelectedText()
  else
    text = editor.getText()
  oldText = text
  # Get Grammar
  grammarName = editor.getGrammar().name
  # Finally, beautify!
  try
    beautifier.beautify text, grammarName, allOptions, beautifyCompleted
  catch e
    showError(e)
  return

beautifyFilePath = (filePath, callback) ->
  # Show in progress indicate on file's tree-view entry
  $ ?= require("space-pen").$
  $el = $(".icon-file-text[data-path=\"#{filePath}\"]")
  $el.addClass('beautifying')
  # Cleanup and return callback function
  cb = (err, result) ->
    $el = $(".icon-file-text[data-path=\"#{filePath}\"]")
    $el.removeClass('beautifying')
    return callback(err, result)
  # Get contents of file
  fs ?= require "fs"
  fs.readFile(filePath, (err, data) ->
    return cb(err) if err
    input = data?.toString()
    grammar = atom.grammars.selectGrammar(filePath, input)
    grammarName = grammar.name
    # Get the options
    allOptions = options.getOptionsForPath(filePath)
    # Beautify File
    completionFun = (output) ->
      if output instanceof Error
        return cb(output, null) # output == Error
      else if typeof output is "string"
        fs.writeFile(filePath, output, (err) ->
            return cb(err) if err
            return cb(null, output)
        )
      else
        return cb(new Error("Unknown beautification result #{output}."), output)
    try
      beautifier.beautify input, grammarName, allOptions, completionFun
    catch e
      return cb(e)
  )

beautifyFile = ({target}) ->
  filePath = target.dataset.path
  return unless filePath
  beautifyFilePath(filePath, (err, result) ->
      return console.error('beautifyFile error', err, result) if err
      # console.log("Beautify File #{filePath} complete with result: ", result)
  )
  return

beautifyDirectory = ({target}) ->
  dirPath = target.dataset.path
  return unless dirPath
  # Show in progress indicate on directory's tree-view entry
  $ ?= require("space-pen").$
  $el = $(".icon-file-directory[data-path=\"#{dirPath}\"]")
  $el.addClass('beautifying')
  # Process Directory
  dir ?= require "node-dir"
  async ?= require "async"
  dir.files(dirPath, (err, files) ->
    return console.error('beautifyDirectory error', err) if err
    async.each(files, (filePath, callback) ->
      # Ignore errors
      beautifyFilePath(filePath, -> callback())
    , (err) ->
      $el = $(".icon-file-directory[data-path=\"#{dirPath}\"]")
      $el.removeClass('beautifying')
      # console.log('Completed beautifying directory!', dirPath)
    )
  )
  return

debug = () ->

    return unless confirm('Are you ready to debug Atom Beautify?\n\n'+
        'Warning: This will change your current clipboard contents.')

    debugInfo = ""
    addInfo = (key, val) ->
        debugInfo += "**#{key}**: #{val}\n\n"

    addHeader = (level, title) ->
        debugInfo += "#{Array(level+1).join('#')} #{title}\n\n"

    addHeader(1, "Atom Beautify - Debugging information")

    debugInfo += "The following debugging information was " +
        "generated by `Atom Beautify` on `#{new Date()}`."+
        "\n\n---\n\n"

    # Platform
    addInfo('Platform', process.platform)

    addHeader(2, "Versions")

    # Atom Version
    addInfo('Atom Version', atom.appVersion)

    # Atom Beautify Version
    addInfo('Atom Beautify Version', pkg.version)

    addHeader(2, "Original file to be beautified")

    # Original file
    # Get current editor
    editor = atom.workspace.getActiveTextEditor()
    # Check if there is an active editor
    if not editor?
        return showError(new Error("Active Editor not found.\n"
                    "Please select a Text Editor first to beautify."))

    # Get editor path and configurations for paths
    filePath = editor.getPath()
    # Path
    addInfo('Original File Path', "`#{filePath}`")

    # Get Grammar
    grammarName = editor.getGrammar().name
    # Grammar
    addInfo('Original File Grammar', grammarName)

    # Contents
    # Get current editor's text
    text = editor.getText()
    addInfo('Original File Contents', "\n```#{grammarName}\n#{text}\n```")

    addHeader(2, "Beautification options")

    # Beautification Options
    # Get all options
    allOptions = options.getOptionsForPath(filePath, editor)
    [
      editorOptions
      configOptions
      homeOptions
      editorConfigOptions
    ] = allOptions
    projectOptions = allOptions[4..]

    addInfo('Editor Options', "\n"+
        "Options from Atom Editor settings\n"+
        "```json\n#{JSON.stringify(editorOptions, undefined, 4)}\n```")
    addInfo('Config Options', "\n"+
        "Options from Atom Beautify package settings\n"+
        "```json\n#{JSON.stringify(configOptions, undefined, 4)}\n```")
    addInfo('Home Options', "\n"+
        "Options from `#{path.resolve(options.getUserHome(), '.jsbeautifyrc')}`\n"+
        "```json\n#{JSON.stringify(homeOptions, undefined, 4)}\n```")
    addInfo('EditorConfig Options', "\n"+
        "Options from [EditorConfig](http://editorconfig.org/) file\n"+
        "```json\n#{JSON.stringify(editorConfigOptions, undefined, 4)}\n```")
    addInfo('Project Options', "\n"+
        "Options from `.jsbeautifyrc` files starting from directory `#{path.dirname(filePath)}` and going up to root\n" +
        "```json\n#{JSON.stringify(projectOptions, undefined, 4)}\n```")

    addHeader(2, "Logs")

    # Error logs
    addInfo('Error logs', '*Not yet supported*')

    # Save to clipboard
    atom.clipboard.write(debugInfo)

    confirm('Atom Beautify debugging information is now in your clipboard.\n'+
    'You can now paste this into an Issue you are reporting here\n'+
    'https://github.com/Glavin001/atom-beautify/issues/ \n\n'+
    'Warning: Be sure to look over the debug info before you send it,
    to ensure you are not sharing undesirable private information.')

handleSaveEvent = =>
  atom.workspace.observeTextEditors (editor) =>
    buffer = editor.getBuffer()
    plugin.unsubscribe buffer
    if atom.config.get("atom-beautify.beautifyOnSave")
      events = "will-be-saved"
      plugin.subscribe buffer, events, beautify.bind(@, {onSave:true})
    return
  return

{Subscriber} = require path.join(atom.packages.resourcePath, 'node_modules', 'emissary')
Subscriber.extend plugin
plugin.config = _.merge(
  analytics:
    type: 'boolean'
    default: true
    description: "Automatically send usage information (NEVER CODE) to Google Analytics"
  _analyticsUserId:
    type: 'string'
    default: ""
    description: "Unique identifier for this user for tracking usage analytics"
  beautifyOnSave:
    type: 'boolean'
    default: false
    description: "Beautify active editor on save"
  beautifyEntireFileOnSave:
    type: 'boolean'
    default: true
    description: "When beautifying on save, use the entire file, even if there is selected text in the editor"
  muteUnsupportedLanguageErrors:
    type: 'boolean'
    default: false
    description: "Do not show \"Unsupported Language\" errors when they occur"
  muteAllErrors:
    type: 'boolean'
    default: false
    description: "Do not show any/all errors when they occur"
  disabledLanguages:
    type: 'array'
    default: []
    items:
      type: 'string'
    description: "An array of languages/grammars to disable Beautification for"
, defaultLanguageOptions)
plugin.activate = ->
  handleSaveEvent()
  plugin.subscribe atom.config.observe("atom-beautify.beautifyOnSave", handleSaveEvent)
  atom.commands.add "atom-workspace", "beautify:beautify-editor", beautify
  atom.commands.add "atom-workspace", "beautify:debug", debug
  atom.commands.add ".tree-view .file .name", "beautify:beautify-file", beautifyFile
  atom.commands.add ".tree-view .directory .name", "beautify:beautify-directory", beautifyDirectory

Beautification options
Editor Options:
Options from Atom Editor settings
{
    "indent_size": 4,
    "indent_char": " ",
    "indent_with_tabs": false
}

Config Options:
Options from Atom Beautify package settings
{
    "js": {
        "wrap_line_length": 80,
        "indent_size": 4,
        "indent_char": " ",
        "indent_level": 0,
        "indent_with_tabs": false,
        "preserve_newlines": true,
        "max_preserve_newlines": 10,
        "space_in_paren": false,
        "jslint_happy": false,
        "space_after_anon_function": false,
        "brace_style": "collapse",
        "break_chained_methods": false,
        "keep_array_indentation": false,
        "keep_function_indentation": false,
        "space_before_conditional": true,
        "eval_code": false,
        "unescape_strings": false,
        "end_with_newline": false
    },
    "php": {
        "beautifier_path": "/Users/glavin/pear/bin/PHP_beautifier",
        "filters": "",
        "directory_filters": ""
    },
    "css": {
        "indent_size": 4,
        "indent_char": " ",
        "selector_separator_newline": false,
        "newline_between_rules": false
    },
    "html": {
        "htmlbeautifier_path": "",
        "indent_inner_html": false,
        "indent_size": 4,
        "indent_char": " ",
        "brace_style": "collapse",
        "indent_scripts": "normal",
        "wrap_line_length": 250,
        "wrap_attributes": "auto",
        "wrap_attributes_indent_size": 4,
        "preserve_newlines": true,
        "max_preserve_newlines": 10,
        "unformatted": [
            "a",
            "sub",
            "sup",
            "b",
            "i",
            "u"
        ],
        "end_with_newline": false
    },
    "sql": {
        "indent_size": 4,
        "keywords": "upper",
        "identifiers": "lower",
        "sqlformat_path": ""
    },
    "markdown": {
        "pandoc_path": "",
        "yaml_front_matter": true
    },
    "perl": {
        "perltidy_path": "perltidy",
        "perltidy_profile": ""
    },
    "python": {
        "autopep8_path": "",
        "max_line_length": 79,
        "indent_size": 4,
        "ignore": [
            "E24"
        ]
    },
    "ruby": {
        "rbeautify_path": ""
    },
    "c": {
        "uncrustifyPath": "",
        "configPath": ""
    },
    "cpp": {
        "uncrustifyPath": "",
        "configPath": ""
    },
    "objectivec": {
        "uncrustifyPath": "",
        "configPath": ""
    },
    "cs": {
        "uncrustifyPath": "",
        "configPath": ""
    },
    "d": {
        "uncrustifyPath": "",
        "configPath": ""
    },
    "java": {
        "uncrustifyPath": "",
        "configPath": ""
    },
    "pawn": {
        "uncrustifyPath": "",
        "configPath": ""
    },
    "vala": {
        "uncrustifyPath": "",
        "configPath": ""
    }
}

Home Options:
Options from /Users/glavin/.jsbeautifyrc
{}

EditorConfig Options:
Options from EditorConfig file
{
    "indent_style": "space",
    "indent_size": 2,
    "end_of_line": "lf",
    "charset": "utf-8",
    "trim_trailing_whitespace": true,
    "insert_final_newline": true,
    "tab_width": 2,
    "indent_char": " "
}

Project Options:
Options from .jsbeautifyrc files starting from directory /Users/glavin/Documents/Project Dev/atom-beautify/lib and going up to root
[
    {},
    {
        "indent_size": 2,
        "indent_char": " ",
        "indent_level": 0,
        "indent_with_tabs": false,
        "preserve_newlines": true,
        "max_preserve_newlines": 2,
        "jslint_happy": true
    },
    {},
    {},
    {},
    {}
]

Logs
Error logs: Not yet supported

Published feature to v0.22.0


text:
Include Apex extension: "trigger"

Omitted from #817

Published to v0.28.23


text:
Moving to ESLint and TSLint deprecation

Given the TS 2019 roadmap (https://github.com/Microsoft/TypeScript/issues/29288) and the future deprecation of TSLint (https://github.com/palantir/tslint/issues/4534), I'm wondering if there will be any work in this library to transfer any TSLint rules that still do not exist in ESLint to ESLint.
Thanks

Migrating from TSLint to ESLint would be great! Pull Requests are welcome 😃.


text:
The "Execution" tab is disabled in Glimpse v0.85

Hi,
I read in the release notes that the "Execution" tab always being disabled was fixed. But, my "Execution" tab always stays disabled. The "Routes", "Views", "Binding" tabs show up fine. My "Session" tab is also disabled. My Glimpse config page at /Glimpse.axd shows all plugins without the strikethru. Is there a reason only my "Execution" and "Session" tabs would be disabled?
Thank You,
Vish

What configuration for Session are you using?
Are those tabs always disabled (grey and unclickable) or only for some
requests?
On Tue, Oct 25, 2011 at 11:09 AM, Vish <
reply@reply.github.com>wrote:

Hi,
I read in the release notes that the "Execution" tab always being disabled
was fixed. But, my "Execution" tab always stays disabled. The "Routes",
"Views", "Binding" tabs show up fine. My "Session" tab is also disabled. My
Glimpse config page at /Glimpse.axd shows all plugins without the
strikethru. Is there a reason only my "Execution" and "Session" tabs would
be disabled?
Thank You,
Vish
--
Reply to this email directly or view it on GitHub:
https://github.com/Glimpse/Glimpse/issues/124

They are always disabled
Thank You,
Vish

What configuration for Session are you using? What version of Glimpse are
you using? What version of MVC? Etc...
Please give us some information so that we can diagnose this problem.
Thanks,
nik
On Tue, Oct 25, 2011 at 4:35 PM, Vish <
reply@reply.github.com>wrote:

They are always disabled
Thank You,
Vish
--
Reply to this email directly or view it on GitHub:
https://github.com/Glimpse/Glimpse/issues/124#issuecomment-2522643

I am using Glimpse 0.85
ASP.NET MVC 3
and i don't have any session configuration stuff in my web.config, so the default session configuration
Thank You,
Vish

I am running the 64-bit cassini web server if that helps here too... Any thoughts on what could be the issue here? Are there any log or trace files created by glimpse that could help with the debugging here?
Thank You,
Vish

Yes, try adding in this attribute on the main Glimpse node in your config file:
 - a log file will be written showing the internals of Glimpse.
Perhaps you have a non serializable object stored in session?

Hey nik,
Your response was probably truncated ... the message is missing what i need to add to the config to enable logging
Thank You,
Vish

@viswaug if you look here http://getglimpse.com/Help/Configuration and find logging you will see how to turn it on. Are you still able to test this out?

authors: avanderhoorn nikmd23 viswaug

repo: Glimpse/Glimpse


text:
Bug

The hell is this? It has been happening to me more often.
https://github.com/user-attachments/assets/79262f07-750d-415b-ac31-ae4b4c5ebdcf

is this still an issue on the latest version?

closing as stale


text:
Too much weaponry mods?

Mods I used:
MC Dungeons Weapons
MC Dungeons Armors
MC Story Mode Armors
Better End
crash-2021-03-07_13.19.30-server.txt
here

medievalweapons-1.0.8-test.zip
please test this (you have to unzip the file)

It's working 100% and no crash i glad i can play survival world now ty!

alright, gonna update it on cf later :)


text:
Wrong material for simply swords mythic metals compat

Minecraft Version
1.19.x
Mod Loader Version
0.14.21
Mod Version
1.2.7
Describe the Issue
When trying to reroll tier on simply swords weapons made of mythic metals materials, the requiered material is always diamond.

latest.log
latest.log
Do you use any other mods except the required ones?
No response

This can get changed via datapacks, check out the future readme


text:
[BUG] CustomContent中模板语法没有被解析

bug 描述
官网文档说在CustomContent，CustomCss，CustomJs中会传入一个FormField类型进行模板渲染。
可以在CustomContent中，使用这样的模板语法来表示编辑时字段的值：{{.Value}}
但实际并没有解析{{.Value}}
FieldCustomJs 亦有此问题
复现步骤
官网介绍：

代码写法：

前端显示：

期望结果
前端不应该直接显示{{.Value}}这个未解析的字符串
复现代码
panel.AddField("xxx", "xxx", db.Varchar, form.Custom).FieldCustomContent("{{.Value}}")
版本信息:

GoAdmin 版本：1.2.13
golang 版本：1.14
浏览器环境：Google Chrome
版本 83.0.4103.106（正式版本） （64 位）
开发环境：goland

其他信息 [如截图等其他信息可以贴在这里]

@hb1707 试一下，GoAdmin升级到 1.2.14，Themes升级到 0.0.37

我今天升级到最新1.2.14版，这个版本的模板错误会被捕获并打印出来，这个改进帮助我排查到了最终原因。
抱歉，经过排查发现确实还是我自己的问题：
我是把 f := types.NewFormPanel()单独提取出来，生成的表单。
f.AddField之后，发现是必须要在后面带上 f.FieldsWithDefaultValue()，模板代码就能被解析了。
不过也因新版本对错误日志的打印，发现另外一个值得改进的地方：github.com\GoAdminGroup\go-admin\template\types\form.go
第302行，可以考虑在 t := template.New("custom")后面加上.Funcs(adminTemplate.DefaultFuncMap)
如此一来Custom部分应该可以复用到你们的func。

repo: GoAdminGroup/go-admin


text:
[请问go-admin有支持mongodb的计划吗？]

需求描述
俺们项目需要基于mongodb来做，请问go-admin有支持mongodb的计划吗？
解决方案 无
其他信息
有或者没有，请问计划或者原因是什么

@orichi 目前没有，mongodb跟sql数据库差别大。当下你们可以使用自定义数据源解决。


text:
数据库主键不为id时，出现错误[BUG]

bug 描述 [详细地描述 bug，让大家都能理解]
我添加了一个测试数据库salaries，

查看时报错

curd代码是自动生成的，

并不包含id键
复现步骤 [清晰描述复现步骤，让别人也能看到问题]
添加一个不含id主键的数据库。
期望结果 [描述你原本期望看到的结果]
正确查询
复现代码 [提供可复现的代码，仓库，或线上示例]
版本信息:

GoAdmin 版本：1.2.23
golang 版本：1.17.3
浏览器环境：operal
开发环境：ubuntu20.10

其他信息 [如截图等其他信息可以贴在这里]

调用了更改主键的函数后

搞定了，键打错了，首字母小写


text:
Mod loading version priority

Load only higher versions of the same mod
Not sure how we should do that since unpacking the pck will always lead to the resources overwriting themselves meaning we can't check the version
One thing I thought was to check the file date, but let me know if there would be a better way

You could try getting the metadata from file to determine it (or even setting custom one when creating them), but the simplest soloution would be if zip files would have same name. Then when downloading new version it would simply overwrite, and there would be no problem with determination of the version, but for that to work you would just need to keep mod to only contain itself and not the dependent mods, so every dependencity would need to be independent mod.
Other thing I can think of is that zip itself is structure in a way that it should be able to list all files without extracting them.
For Godot 4.x they implemanted this https://docs.godotengine.org/en/4.0/classes/class_zipreader.html so it's quite easy
For Godot 3.x I found the addon that lets you load the zip without uncompessing it so you can get file list name or uncompress specific file https://git.sr.ht/~jelle/gdunzip/tree/main/item/addons/gdunzip/gdunzip.gd

For 3.x, I would add a check after the mod zip is unpacked via the manifest and live with the fact that if the zip name is the same, it will override itself (maybe we can provide some indication that this is happening?).
For 4.x, we can open a separate issue to investigate how we can use ZipReader to solve this.

authors: KANAjetzt aesereht otDan

repo: GodotModding/godot-mod-loader


text:
Unknown template GodotScript

I have a C++ NativeScript plugin working well, but when I try to create a subclass of one of the Node types, I get the error: unknown template name 'GodotScript'.
Are these examples written in an older version of Godot? What is the new way to create a subclass of the Node classes?
ie)
class CustomNode : public GodotScript<Node2D>
{
	GODOT_CLASS(CustomNode);

The demos are currently all using NativeScript 1.0. There is a branch nativescript-1.1 which should work with later versions of the C++ bindings.

How would I instantiate this CustomNode subclass within NativeScript? Calling the _new constructor (like for the native classes) throws a runtime.
ie) Sprite::_new() works but CustomNode::_new() does not.
CustomNode * n = CustomNode::_new(); // <- method used for native classes throws runtime error

CustomNode * n = new CustomNode(); // also throws same runtime error

Click to expand backtrace.
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] 1   libsystem_platform.dylib            0x00007fff5767ff5a _sigtramp + 26
[2] 2   ???                                 0x0000000031381edb 0x0 + 825761499
[3] godot::___godot_icall_void_Object_bool(godot_method_bind*, godot::Object const*, godot::Object const*, bool)
[4] void* godot::_godot_class_instance_func<InitGame>(void*, void*)
[5] NativeScript::instance_create(Object*) (in Godot) + 432
[6] Object::set_script(RefPtr const&) (in Godot) + 198
[7] Object::set(StringName const&, Variant const&, bool*) (in Godot) + 300
[8] SceneState::instance(SceneState::GenEditState) const (in Godot) + 4513
[9] PackedScene::instance(PackedScene::GenEditState) const (in Godot) + 30
[10] Main::start() (in Godot) + 17280
[11] main (in Godot) + 795
[12] 12  libdyld.dylib                       0x00007fff57371015 start + 1
-- END OF BACKTRACE --

authors: karroffel t-mullen

repo: GodotNativeTools/GDNative-demos


text:
Add delegation limit by voting (vesting) battery

The following limitations must be implemented for delegation:
Max allowed delegation from account (total delegated_vesting) limited by voting (vesting) battery: max_delegation = max_vests * battery_charge(%) / 100%; delegation must be <= max_delegation
Extracted from #113

#371

authors: kaynarov s-medvedev

repo: GolosChain/golos-smart


text:
surgery update (animal and moth surgery)

About the PR

a lot of animals can be operated on now (mice, mothroach/maggot???, monkeys, kobolds probably)
fixed a bunch of organs not being transplantable like diona brain, arachnid heart, all stomachs, some others
YOU CAN NOW TURN PEOPLE INTO MOTHS BY GIVING THEM MOTH STOMACHS

Why / Balance
"Sec to surgery", the clown blurted out.
"He's turning her into a mothroach!"
more manmade abominations like mice that eat clothes
vox lung bug might be fixed idk didnt test it its very late
Technical details
added new thing in body system to check if an organ can be attached (without this check, you would be able to do things like attach a head to mice. too based for this pr)
Media
idk

Requirements

[X] I have read and am following the Pull Request and Changelog Guidelines.
[X] I have added media to this PR or it does not require an ingame showcase.

Breaking changes
:trollface:
Changelog
:cl:

add: You can now operate on a bunch of animals like mice, spiders and monkeys.
add: You can now remove and install stomachs, including special diets like moths or lizards!
fix: Fixed not being able to reinstall some species organs.
fix: Fixed harpies being immune to the scalpel.

Summary by CodeRabbit

New Features

Enhanced body part management with new event subscriptions for initialization and removal.
Added new surgical actions and steps for attaching and removing body parts.
Introduced new organ components for various species, improving gameplay mechanics.
New Harpy interaction capabilities added with UI components for surgery.

Bug Fixes

Improved validation logic for surgery conditions, ensuring correct attachment checks.

Documentation

Updated documentation for new fields and components added across various entities.

whoever changed the ai slop bot to use the furry prompt its actually good now highly real

killer beat me to it lmao, ill be porting your changes to the EE branch

Surgery is just a week away ancestors were saying. And here we are. He did it.

durk instamerge NOW!

forgot to mention but of course this PRs patch can be used under CC-0 do whatever you want on other works

authors: deltanedas gluesniffler yglop

repo: Goob-Station/Goob-Station


text:
Putting a filter like displacementFilter on a group with many sub groups and sprites renders it white/transparent

Putting a filter like displacementFilter on a group with many sub groups and sprites renders it white/transparent
var displacementTexture = PIXI.Texture.fromImage(require("assets/images/displacementMAP.jpg"));
displacementFilter = new PIXI.DisplacementFilter(displacementTexture);
rootGroup.filters = [displacementFilter]

I've tried several filters and none works.
I've also put on phaser, but one of you can close this issue. https://github.com/photonstorm/phaser/issues/1546
Phaser 2.2.2; PIXI: 2.2.0; webgl

this should be licked for v3. Cheers for sharing your issue! :+1:

authors: GoodBoyDigital bitplanets


text:
Are there any implementations for font atlases and SDF support for Pixi?

At the moment Pixi does not optimize fonts rendering. Are there any plugins or solutions to use characters atlases? And even more challenging what about SDF?
May be any plans or ideas on that?

Hi there! Pixi does indeed support bitmap fonts which is pretty much what you are after. SDF is on the todo list too but not currently implemented. Hope that helps! Thanks :+1:

Does it use font atlas or uploads labels to GPU one by one?
2015-04-18 15:23 GMT+02:00 Mat Groves notifications@github.com:

Closed #1679 https://github.com/GoodBoyDigital/pixi.js/issues/1679.
—
Reply to this email directly or view it on GitHub
https://github.com/GoodBoyDigital/pixi.js/issues/1679#event-284468860.

it uploads a sprite sheet of all characters. Then constructs letters using that sheet, so just the one texture upload at startup.

Great, thank you

authors: GoodBoyDigital PixelsCommander


text:
Handle proper clean up of video / zoom component when FaceReco unmounts

If the FaceReco process is running, and the user:
-> Click back, OR
-> Disonnects camera, OR
-> Switch window / open developer tools
The process is still running but with unmounted component which generates errors. Need to handle this scenario.

fixed

authors: hadarbmdev sirpy

repo: GoodDollar/GoodDAPP


text:
(BUG) Verify email: The long email is displayed outside screen on "Edit profile" page

Precondition:
Edit "profile" page is opened
Steps to reproduce:

Edit the email field by entering the long email
Click the "Save" button
Pay attention to the too-long email on the verification page

Checked on DEV V0.20.2
Reproduced on:
Desktop// Windows 10 x64 // Google Chrome 81.0.4044.138
LG V30+ // Android 8.0 // Google Chrome 81.0.4044.117

The issue isn't reproduced on Dev env v0.20.2
If user have long email address it just wrapped characters to the next line.
Devices used:
Devices used:
Redmi 7 // Android 10
iPhone 6S // iOS 12.4
Desktop: Google Chrome latest


text:
Unable to Access Http Website from Linux Containers but Working on Windows EC2 Containers

Hello @aslushnikov,
We are facing this issue with http internal website (not ssl supported), while accessing it with Puppeteer,  Many thread related to this issue led me on this umbrella thread.
Below is the configurations tested on:
Puppeteer version: 1.12.2, 1.14.0, 1.14.0-next.1554871834316
Environment: Linux Containers (Using AWS ECS)
Puppeteer  args used : [
'--no-sandbox',
'--disable-features=site-per-process',
'--window-size=500,500',
'--ignore-certificate-errors',
'--enable-features=NetworkService',
'--allow-running-insecure-content',
'--disable-web-security'
]
Other flags on page tried with :
await page.setExtraHTTPHeaders({
'upgrade-insecure-requests': '0'
});
await page.setRequestInterception(true)
page.on('request', interceptedRequest => {
interceptedRequest.continue()
})
Headless mode: true
In the error logs:
the request interception changes to https automatically although I have set 'upgrade-insecure-requests': '0' in headers.
Please note this issue arises only in linux containerized environment, Although this complete system works on a windows machine , in production and dev mode both for headless true and false.
Could you please align us to where exactly the cause could be as
Below is the error log:
Windows Envrionement where is this working perfectly: Puppeteer Version: 1.14.0, chromium version: Win64 - 641577 (local chromium)
{
    "method": "Network.requestWillBeSent",
    "params": {
        "requestId": "8A328F784AA627A52ED4A050DFDE2C32",
        "loaderId": "8A328F784AA627A52ED4A050DFDE2C32",
        "documentURL": "http://****ACTUAL URL ****",
        "request": {
            "url": "http://****ACTUAL URL ****",
            "method": "GET",
            "headers": {
                "Upgrade-Insecure-Requests": "0",
                "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/75.0.3760.0 Safari/537.36"
            },
            "mixedContentType": "none",
            "initialPriority": "VeryHigh",
            "referrerPolicy": "no-referrer-when-downgrade"
        },
        "timestamp": 369.322781,
        "wallTime": 1554896629.938341,
        "initiator": {
            "type": "other"
        },
        "type": "Document",
        "frameId": "D1F3B248DD528CB7C9358BF92A36B5EF",
        "hasUserGesture": false
    },
    "sessionId": "***SessionID****"
}

2019-04-10T11:43:50.158Z puppeteer:protocol ◀ RECV
{
    "method": "Network.requestIntercepted",
    "params": {
        "interceptionId": "interception-job-1.2",
        "request": {
            "url": "https://**** REDIRECTED URL *****",
            "method": "GET",
            "headers": {
                "Upgrade-Insecure-Requests": "0",
                "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/75.0.3760.0 Safari/537.36",
                "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
                "Cookie": "ASP.NET_SessionId=vcrwcpfr2zqkxqiuspvzc255"
            },
            "initialPriority": "VeryHigh",
            "referrerPolicy": "no-referrer-when-downgrade"
        },
        "frameId": "D1F3B248DD528CB7C9358BF92A36B5EF",
        "resourceType": "Document",
        "isNavigationRequest": true,
        "requestId": "8A328F784AA627A52ED4A050DFDE2C32"
    },
    "sessionId": "***SessionID****"
}

Error: at page.goto(URL)
{
    "method": "Network.loadingFailed",
    "params": {
        "requestId": "8A328F784AA627A52ED4A050DFDE2C32",
        "timestamp": 370.054342,
        "type": "Document",
        "errorText": "net::ERR_FAILED",
        "canceled": false
    },
    "sessionId": "***SessionID****"
}

******************************* COMPLETE LOG **************************************************************************************
2019-04-10T11:43:49.318Z puppeteer:protocol SEND ► {"method":"Target.createBrowserContext","params":{},"id":2}
2019-04-10T11:43:49.319Z puppeteer:protocol ◀ RECV {"id":2,"result":{"browserContextId":"CB7F4584E9A57A656434E46C287AB2A5"}}
2019-04-10T11:43:49.320Z puppeteer:protocol SEND ► {"method":"Target.createTarget","params":{"url":"about:blank","browserContextId":"CB7F4584E9A57A656434E46C287AB2A5"},"id":3}
2019-04-10T11:43:49.328Z puppeteer:protocol ◀ RECV {"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"D1F3B248DD528CB7C9358BF92A36B5EF","type":"page","title":"","url":"","attached":false,"browserContextId":"CB7F4584E9A57A656434E46C287AB2A5"}}}
2019-04-10T11:43:49.329Z puppeteer:protocol ◀ RECV {"id":3,"result":{"targetId":"D1F3B248DD528CB7C9358BF92A36B5EF"}}
2019-04-10T11:43:49.618Z puppeteer:protocol ◀ RECV {"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"D1F3B248DD528CB7C9358BF92A36B5EF","type":"page","title":"about:blank","url":"about:blank","attached":false,"browserContextId":"CB7F4584E9A57A656434E46C287AB2A5"}}}
2019-04-10T11:43:49.619Z puppeteer:protocol SEND ► {"method":"Target.attachToTarget","params":{"targetId":"D1F3B248DD528CB7C9358BF92A36B5EF","flatten":true},"id":4}
2019-04-10T11:43:49.620Z puppeteer:protocol ◀ RECV {"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"D1F3B248DD528CB7C9358BF92A36B5EF","type":"page","title":"about:blank","url":"about:blank","attached":true,"browserContextId":"CB7F4584E9A57A656434E46C287AB2A5"}}}
2019-04-10T11:43:49.620Z puppeteer:protocol ◀ RECV {"method":"Target.attachedToTarget","params":{"sessionId":"***SessionID****","targetInfo":{"targetId":"D1F3B248DD528CB7C9358BF92A36B5EF","type":"page","title":"about:blank","url":"about:blank","attached":true,"browserContextId":"CB7F4584E9A57A656434E46C287AB2A5"},"waitingForDebugger":false}}
2019-04-10T11:43:49.621Z puppeteer:protocol ◀ RECV {"id":4,"result":{"sessionId":"***SessionID****"}}
2019-04-10T11:43:49.623Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Page.enable","params":{},"id":5}
2019-04-10T11:43:49.624Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Page.getFrameTree","params":{},"id":6}
2019-04-10T11:43:49.625Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Target.setAutoAttach","params":{"autoAttach":true,"waitForDebuggerOnStart":false,"flatten":true},"id":7}
2019-04-10T11:43:49.625Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Performance.enable","params":{},"id":8}
2019-04-10T11:43:49.626Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Log.enable","params":{},"id":9}
2019-04-10T11:43:49.722Z puppeteer:protocol ◀ RECV {"id":5,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.723Z puppeteer:protocol ◀ RECV {"id":6,"result":{"frameTree":{"frame":{"id":"D1F3B248DD528CB7C9358BF92A36B5EF","loaderId":"9298ADF8B0AE00B772E9A92111C353C9","url":"about:blank","securityOrigin":"://","mimeType":"text/html"}}}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.724Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Page.setLifecycleEventsEnabled","params":{"enabled":true},"id":10}
2019-04-10T11:43:49.725Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Runtime.enable","params":{},"id":11}
2019-04-10T11:43:49.725Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Network.enable","params":{},"id":12}
2019-04-10T11:43:49.726Z puppeteer:protocol ◀ RECV {"id":7,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.734Z puppeteer:protocol ◀ RECV {"id":8,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.735Z puppeteer:protocol ◀ RECV {"id":9,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.741Z puppeteer:protocol ◀ RECV {"method":"Page.lifecycleEvent","params":{"frameId":"D1F3B248DD528CB7C9358BF92A36B5EF","loaderId":"9298ADF8B0AE00B772E9A92111C353C9","name":"commit","timestamp":368.924431}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.741Z puppeteer:protocol ◀ RECV {"method":"Page.lifecycleEvent","params":{"frameId":"D1F3B248DD528CB7C9358BF92A36B5EF","loaderId":"9298ADF8B0AE00B772E9A92111C353C9","name":"DOMContentLoaded","timestamp":368.924513}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.742Z puppeteer:protocol ◀ RECV {"method":"Page.lifecycleEvent","params":{"frameId":"D1F3B248DD528CB7C9358BF92A36B5EF","loaderId":"9298ADF8B0AE00B772E9A92111C353C9","name":"load","timestamp":369.000186}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.817Z puppeteer:protocol ◀ RECV {"method":"Page.lifecycleEvent","params":{"frameId":"D1F3B248DD528CB7C9358BF92A36B5EF","loaderId":"9298ADF8B0AE00B772E9A92111C353C9","name":"networkAlmostIdle","timestamp":369.000708}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.818Z puppeteer:protocol ◀ RECV {"method":"Page.lifecycleEvent","params":{"frameId":"D1F3B248DD528CB7C9358BF92A36B5EF","loaderId":"9298ADF8B0AE00B772E9A92111C353C9","name":"networkIdle","timestamp":369.000708}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.818Z puppeteer:protocol ◀ RECV {"id":10,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.818Z puppeteer:protocol ◀ RECV {"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"://","name":"","auxData":{"isDefault":true,"type":"default","frameId":"D1F3B248DD528CB7C9358BF92A36B5EF"}}}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.819Z puppeteer:protocol ◀ RECV {"id":11,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.819Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Page.addScriptToEvaluateOnNewDocument","params":{"source":"//# sourceURL=__puppeteer_evaluation_script__","worldName":"__puppeteer_utility_world__"},"id":13}
2019-04-10T11:43:49.820Z puppeteer:protocol ◀ RECV {"id":12,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.821Z puppeteer:protocol ◀ RECV {"id":13,"result":{"identifier":"1"}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.821Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Page.createIsolatedWorld","params":{"frameId":"D1F3B248DD528CB7C9358BF92A36B5EF","grantUniveralAccess":true,"worldName":"__puppeteer_utility_world__"},"id":14}
2019-04-10T11:43:49.824Z puppeteer:protocol ◀ RECV {"method":"Runtime.executionContextCreated","params":{"context":{"id":2,"origin":"","name":"__puppeteer_utility_world__","auxData":{"isDefault":false,"type":"isolated","frameId":"D1F3B248DD528CB7C9358BF92A36B5EF"}}}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.824Z puppeteer:protocol ◀ RECV {"id":14,"result":{"executionContextId":2}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.825Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Emulation.setDeviceMetricsOverride","params":{"mobile":false,"width":800,"height":600,"deviceScaleFactor":1,"screenOrientation":{"angle":0,"type":"portraitPrimary"}},"id":15}
2019-04-10T11:43:49.825Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Emulation.setTouchEmulationEnabled","params":{"enabled":false},"id":16}
2019-04-10T11:43:49.917Z puppeteer:protocol ◀ RECV {"method":"Page.frameResized","params":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.920Z puppeteer:protocol ◀ RECV {"id":15,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.920Z puppeteer:protocol ◀ RECV {"id":16,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.921Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Network.setExtraHTTPHeaders","params":{"headers":{"upgrade-insecure-requests":"0"}},"id":17}
2019-04-10T11:43:49.922Z puppeteer:protocol ◀ RECV {"id":17,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.922Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Network.setCacheDisabled","params":{"cacheDisabled":true},"id":18}
2019-04-10T11:43:49.923Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Network.setRequestInterception","params":{"patterns":[{"urlPattern":"*"}]},"id":19}
2019-04-10T11:43:49.924Z puppeteer:protocol ◀ RECV {"id":19,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.925Z puppeteer:protocol ◀ RECV {"id":18,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:49.928Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Page.navigate","params":{"url":"http://****ACTUAL URL ****","frameId":"D1F3B248DD528CB7C9358BF92A36B5EF"},"id":20}
2019-04-10T11:43:49.940Z puppeteer:protocol ◀ RECV {"method":"Network.requestWillBeSent","params":{"requestId":"8A328F784AA627A52ED4A050DFDE2C32","loaderId":"8A328F784AA627A52ED4A050DFDE2C32","documentURL":"http://****ACTUAL URL ****","request":{"url":"http://****ACTUAL URL ****
2019-04-10T11:43:50.016Z puppeteer:protocol ◀ RECV {"method":"Network.requestIntercepted","params":{"interceptionId":"interception-job-1.0","request":{"url":"http://****ACTUAL URL ****","method":"GET","headers":{"Upgrade-Insecure-Requests":"0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Geck
2019-04-10T11:43:50.017Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Network.continueInterceptedRequest","params":{"interceptionId":"interception-job-1.0"},"id":21}
2019-04-10T11:43:50.020Z puppeteer:protocol ◀ RECV {"id":21,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:50.101Z puppeteer:protocol ◀ RECV {"method":"Network.requestWillBeSent","params":{"requestId":"8A328F784AA627A52ED4A050DFDE2C32","loaderId":"8A328F784AA627A52ED4A050DFDE2C32","documentURL":"http://**** REDIRECTED URL *****","r
2019-04-10T11:43:50.101Z puppeteer:protocol ◀ RECV {"method":"Network.requestIntercepted","params":{"interceptionId":"interception-job-1.1","request":{"url":"http://**** REDIRECTED URL *****","method":"GET","headers":{"Upgrade-Insecure-Request
2019-04-10T11:43:50.102Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Network.continueInterceptedRequest","params":{"interceptionId":"interception-job-1.1"},"id":22}
2019-04-10T11:43:50.103Z puppeteer:protocol ◀ RECV {"id":22,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:50.117Z puppeteer:protocol ◀ RECV {"method":"Network.requestIntercepted","params":{"interceptionId":"interception-job-1.1","request":{"url":"http://**** REDIRECTED URL *****","method":"GET","headers":{"Upgrade-Insecure-Request
2019-04-10T11:43:50.117Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Network.continueInterceptedRequest","params":{"interceptionId":"interception-job-1.1","authChallengeResponse":{"response":"ProvideCredentials","username":"AD-ONE\\jbuch","password":"Charlie1400!"}},"id":23}
2019-04-10T11:43:50.118Z puppeteer:protocol ◀ RECV {"id":23,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:50.157Z puppeteer:protocol ◀ RECV {"method":"Network.requestWillBeSent","params":{"requestId":"8A328F784AA627A52ED4A050DFDE2C32","loaderId":"8A328F784AA627A52ED4A050DFDE2C32","documentURL":"https://**** REDIRECTED URL *****","
2019-04-10T11:43:50.158Z puppeteer:protocol ◀ RECV {"method":"Network.requestIntercepted","params":{"interceptionId":"interception-job-1.2","request":{"url":"https://**** REDIRECTED URL *****","method":"GET","headers":{"Upgrade-Insecure-Reques
2019-04-10T11:43:50.158Z puppeteer:protocol SEND ► {"sessionId":"***SessionID****","method":"Network.continueInterceptedRequest","params":{"interceptionId":"interception-job-1.2"},"id":24}
2019-04-10T11:43:50.159Z puppeteer:protocol ◀ RECV {"id":24,"result":{}, "sessionId": "***SessionID****"}
2019-04-10T11:43:50.671Z puppeteer:protocol ◀ RECV {"method":"Network.loadingFailed","params":{"requestId":"8A328F784AA627A52ED4A050DFDE2C32","timestamp":370.054342,"type":"Document","errorText":"net::ERR_FAILED","canceled":false}, "sessionId": "***SessionID****"}
2019-04-10T11:43:50.674Z puppeteer:protocol ◀ RECV {"id":20,"result":{"frameId":"D1F3B248DD528CB7C9358BF92A36B5EF","loaderId":"8A328F784AA627A52ED4A050DFDE2C32","errorText":"net::ERR_FAILED"}, "sessionId": "***SessionID****"}
Error: net::ERR_FAILED at http://****ACTUAL URL ****

Originally posted by @ngaba18 in https://github.com/GoogleChrome/puppeteer/issues/3471#issuecomment-481667211

Hey @ngaba18,
So what's going wrong? Do you get "ERR::FAILED" exception?
Any chance I can reproduce it somehow locally?

Hi @aslushnikov ,
This is an internal website, not accessible for outside world.

@ngaba18, could you run it with headless=false? I'm having a similar issue, my website redirects from an https connection to an http connection. If I add "--allow-running-insecure-content", it works with headless=false, but on headless=true it doesn't.

repo: GoogleChrome/puppeteer


text:
Add a new verbose option

Probably safe to default to off. When it's on, the individual log statements about which resources are being precached are logged, in addition to the total precache size. When it's off, just the total precache size is logged.

Closed in https://github.com/GoogleChrome/sw-precache/commit/26d732811c4b361a5e26784845b100063df412b7

repo: GoogleChrome/sw-precache