home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

8 rows where author_association = "OWNER", issue = 267515836 and user = 9599 sorted by updated_at descending

✖
✖
✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: created_at (date), updated_at (date)

user 1

  • simonw · 8 ✖

issue 1

  • Make URLs immutable · 8 ✖

author_association 1

  • OWNER · 8 ✖
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
338806718 https://github.com/simonw/datasette/issues/4#issuecomment-338806718 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODgwNjcxOA== simonw 9599 2017-10-23T21:47:53Z 2017-10-23T21:47:53Z OWNER

Here's what the homepage of cloudflare.com does (with newlines added within the link header for clarity):

$ curl -i 'https://www.cloudflare.com/' 
HTTP/1.1 200 OK
Date: Mon, 23 Oct 2017 21:45:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
link:
    </vendor/bitdashplayer.min.css>; rel=preload; as=style,
    </vendor/bitdash-controls.min.css>; rel=preload; as=style,
    </video/marketing-video/cloudflare-marketing-video.mpd>; rel=preload,
    </video/marketing-video/cloudflare-marketing-video.m3u8>; rel=preload,
    </video/marketing-video/video_0_800000/dash/init.mp4>; rel=preload; as=video,
    </video/marketing-video/audio_0_128000/dash/init.mp4>; rel=preload; as=video,
    </video/marketing-video/video_0_800000/dash/segment_0.m4s>; rel=preload; as=video,
    </video/marketing-video/audio_0_128000/dash/segment_0.m4s>; rel=preload; as=video,
    </video/new-short-optimized-22.mp4>; rel=preload; as=video,
    </video/marketing-video/poster.jpg>; rel=preload; as=image

The original header looked like this:

link: </vendor/bitdashplayer.min.css>; rel=preload; as=style, </vendor/bitdash-controls.min.css>; rel=preload; as=style, </video/marketing-video/cloudflare-marketing-video.mpd>; rel=preload, </video/marketing-video/cloudflare-marketing-video.m3u8>; rel=preload, </video/marketing-video/video_0_800000/dash/init.mp4>; rel=preload; as=video, </video/marketing-video/audio_0_128000/dash/init.mp4>; rel=preload; as=video, </video/marketing-video/video_0_800000/dash/segment_0.m4s>; rel=preload; as=video, </video/marketing-video/audio_0_128000/dash/segment_0.m4s>; rel=preload; as=video, </video/new-short-optimized-22.mp4>; rel=preload; as=video, </video/marketing-video/poster.jpg>; rel=preload; as=image
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make URLs immutable 267515836  
338804173 https://github.com/simonw/datasette/issues/4#issuecomment-338804173 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODgwNDE3Mw== simonw 9599 2017-10-23T21:36:37Z 2017-10-23T21:36:37Z OWNER

Looks like the easiest way to implement HTTP/2 server push today is to run behind Cloudflare and use this:

Link: </asset/to/push.js>; rel=preload; as=script

https://blog.cloudflare.com/announcing-support-for-http-2-server-push-2/

Here's the W3C draft: https://w3c.github.io/preload/

From https://w3c.github.io/preload/#as-attribute it looks like I should use as=fetch if the content is intended for consumption by fetch() or XMLHTTPRequest.

Unclear if I should throw as=fetch crossorigin in there. Need to experiment on that.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make URLs immutable 267515836  
338799438 https://github.com/simonw/datasette/issues/4#issuecomment-338799438 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODc5OTQzOA== simonw 9599 2017-10-23T21:17:25Z 2017-10-23T21:17:25Z OWNER

Can I take advantage of HTTP/2 so even if you get redirected I start serving you the correct resource straight away?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make URLs immutable 267515836  
338789734 https://github.com/simonw/datasette/issues/4#issuecomment-338789734 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODc4OTczNA== simonw 9599 2017-10-23T20:40:25Z 2017-10-23T21:10:19Z OWNER

URL design:

 /database/table.json - redirects to /database-6753f4a/table.json

So we always redirect to the version with the truncated hash in the URL.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make URLs immutable 267515836  
338797522 https://github.com/simonw/datasette/issues/4#issuecomment-338797522 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODc5NzUyMg== simonw 9599 2017-10-23T21:09:33Z 2017-10-23T21:09:33Z OWNER

https://stackoverflow.com/a/18134919/6083 is a good answer about how many characters of the hash are needed to be unique. I say we default to 7 characters, like git does - but allow extras to be configured.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make URLs immutable 267515836  
338531827 https://github.com/simonw/datasette/issues/4#issuecomment-338531827 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODUzMTgyNw== simonw 9599 2017-10-23T02:28:31Z 2017-10-23T02:29:05Z OWNER

Many of the applications I want to implement with this would benefit from having permanent real URLs.

So let’s have both. The sha1 urls will serve far future cache headers (and an etag derived from their path). The non sha1 URLs will serve 302 uncached redirects to the sha1 locations.

We will have a setting that lets people opt out of this behavior.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make URLs immutable 267515836  
338530480 https://github.com/simonw/datasette/issues/4#issuecomment-338530480 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODUzMDQ4MA== simonw 9599 2017-10-23T02:16:33Z 2017-10-23T02:16:33Z OWNER

How about when the service starts up it checks for a compile.json file and, if it is missing, creates it using the same code we run at compile time normally

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make URLs immutable 267515836  
338530389 https://github.com/simonw/datasette/issues/4#issuecomment-338530389 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODUzMDM4OQ== simonw 9599 2017-10-23T02:15:41Z 2017-10-23T02:15:41Z OWNER

This means I need a good solution for these compile time options while running in development mode

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Make URLs immutable 267515836  

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
, [performed_via_github_app] TEXT);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Queries took 451.375ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows