database changed
This commit is contained in:
1 parent
987020ef78
commit
ef8c28a3db
1 file changed
+20
-8
+20
-8
@@ -11806,6 +11806,18 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`,
|
||||
(3882,'hpr3882.flac','flac',54360165,'e60818c0a46437e1179d93996eb74d7271fb8a29','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 136909306 samples'),
|
||||
(3882,'hpr3882.opus','opus',6727905,'9be328c07dbe2b1d64aaaf6f4cff328e3f05e613','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3882,'hpr3882.wav','wav',273820004,'6fdc5731efabab479eb01e8c2586024df7f41dc2','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
|
||||
(3911,'hpr3911.wav','wav',513148682,'93f2932f3275e5a884cc074f650e673b99528223','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
|
||||
(3911,'hpr3911.opus','opus',10876322,'604ab331a0454b637c5e1e97a1fafb1d45aaec3f','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3911,'hpr3911.flac','flac',110219633,'cd90467374ddaa60368ed640cf048a909d8dff5c','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 256573628 samples'),
|
||||
(3911,'hpr3911.spx','spx',5047843,'e078ec0a9a3be203a76f9fd7557e19b14645e06f','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
|
||||
(3911,'hpr3911.mp3','mp3',10692602,'8308f5f474be43e9727ccafbb68007683202f2de','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
|
||||
(3911,'hpr3911.ogg','ogg',10876043,'3ab129313300659091838f675fb4fafcffe79159','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3909,'hpr3909.wav','wav',295280682,'2b377d1593a72360f22001d66947a162187fc42e','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
|
||||
(3909,'hpr3909.opus','opus',6557954,'76d0db82381de0fffea8194e5c7e53f22a7b1e0e','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3909,'hpr3909.flac','flac',65658915,'4441bf5a6e622608c9b8f9351bdad7f1f0d6a9d0','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 147639641 samples'),
|
||||
(3909,'hpr3909.ogg','ogg',6557700,'8616fbace90b55454e87e7e8d094518bf5e0e13a','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3909,'hpr3909.spx','spx',2904807,'a38d4f36bc857420a490fc6a33551c4affe6c136','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
|
||||
(3909,'hpr3909.mp3','mp3',6153505,'5d51a934988b05b530ee037660667d0440c4d825','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
|
||||
(3918,'hpr3918.wav','wav',362884612,'1a2b811348de659603ea17022da088127311f26c','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
|
||||
(3918,'hpr3918.opus','opus',9763346,'334febfe10ff35618f74099f986a36c275ca1519','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3918,'hpr3918.flac','flac',80541238,'4bedc14329dbc32b1fc8b183a60a0f8974b3e7e7','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 181441585 samples'),
|
||||
@@ -11824,8 +11836,8 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`,
|
||||
(3907,'hpr3907.spx','spx',4660478,'fda59e684c2f3de3018bc90a4952c712c0c739a7','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
|
||||
(3907,'hpr3907.ogg','ogg',10420362,'6030efc0bc1e573e7aed0727c4a632fb2c14fdc8','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3907,'hpr3907.mp3','mp3',9872127,'a87a1f13834a36dfabca3b1e17afc0d5f937aabd','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
|
||||
(3906,'hpr3906.opus','opus',16836657,'5417251e9ec069fddde80d10c2831dfd17a59e19','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3906,'hpr3906.wav','wav',699501690,'e072d436f9694533f0ca96e41bee396a8eba5fb1','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
|
||||
(3906,'hpr3906.opus','opus',16836657,'5417251e9ec069fddde80d10c2831dfd17a59e19','audio/ogg; charset=binary','setgid Ogg data, Opus audio,');
|
||||
INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, `mime_type`, `file_type`) VALUES (3906,'hpr3906.wav','wav',699501690,'e072d436f9694533f0ca96e41bee396a8eba5fb1','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
|
||||
(3906,'hpr3906.spx','spx',6880715,'007e994ff273f11f06a8b9fa865233aa93d8cd3c','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
|
||||
(3906,'hpr3906.flac','flac',140014547,'4945a658a11f64a924b15d1574976263f7075df5','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 349750144 samples'),
|
||||
(3906,'hpr3906.ogg','ogg',16836401,'47625058a4c126034eddb9e2537e37b396d66db3','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
@@ -11836,8 +11848,8 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`,
|
||||
(3905,'hpr3905.flac','flac',71162579,'8c7c77cfbce4d0d3876abe4e6b59b2ae65892091','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 227683945 samples'),
|
||||
(3905,'hpr3905.ogg','ogg',10114612,'70eb849253d54a52b4f184e9c803f7963c808e98','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3905,'hpr3905.mp3','mp3',9488725,'bd52905dfaf233df2270b31f5617d19294888485','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
|
||||
(3904,'hpr3904.wav','wav',1129741862,'abfb46102ee60e968d9d3f75bbed40a3185de639','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz');
|
||||
INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, `mime_type`, `file_type`) VALUES (3904,'hpr3904.opus','opus',28330314,'324d8803561bd73eaac30dc93be923905ce92743','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3904,'hpr3904.wav','wav',1129741862,'abfb46102ee60e968d9d3f75bbed40a3185de639','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
|
||||
(3904,'hpr3904.opus','opus',28330314,'324d8803561bd73eaac30dc93be923905ce92743','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
(3904,'hpr3904.flac','flac',223630948,'1f24e3807cd26d62c678e1fccab9974f7b9c039c','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 564870226 samples'),
|
||||
(3904,'hpr3904.spx','spx',11112564,'0e755c1438baac24098366eaa712bee529d40cab','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
|
||||
(3904,'hpr3904.ogg','ogg',28330051,'3fc541c45a79cf7e8a551a018f23673e7f3d1ca8','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
|
||||
@@ -19713,7 +19725,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
|
||||
(3645,'2022-07-22','How to set up a small Linux Wireguard VPN',855,'I set up a small VPN and wrote a blog post about it. This is just an audiorecording of that','<p>The blogpost where I describe how to set up a Wireguard VPN network:<br />\n<a href=\"https://www.jeroenbaten.nl/the-complete-guide-to-setting-up-a-multi-peer-wireguard-vpn/\" class=\"uri\">https://www.jeroenbaten.nl/the-complete-guide-to-setting-up-a-multi-peer-wireguard-vpn/</a></p>\n',369,61,0,'CC-BY-SA','wireguard,linux, vpn',0,0,1),
|
||||
(3648,'2022-07-27','A response to tomorrows show',1682,'Ken brings the DeLorean up to 141.6Kph to address monochromec\'s comment on stats','<hr />\r\n<h3>\r\nCounter Point\r\n</h3>\r\n<p>\r\nThis show is a counter point to: <a href=\"https://hackerpublicradio.org/eps.php?id=3649\">hpr3649 :: Linux Inlaws S01E61: 20 years in review</a>\r\n</p>\r\n<hr />\r\n<p><em>There are three kinds of lies: <a href=\"https://en.wikipedia.org/wiki/Lies%2C_damned_lies%2C_and_statistics\">Lies, damned lies, and statistics</a></em></p>\r\n<p>In today\'s show we discover that Hacker Public Radio is <strong>not</strong> a Podcast Hosting Platform.</p>\r\n<p>Each day your show will be heard by as many people as can squeeze into the main auditorium at FOSDEM, or between two and three <a href=\"https://en.wikipedia.org/wiki/Airbus_A380\">Airbus A380-800</a>. You know the big double decker passenger plane. Every month we have on average 33,584 downloads, that\'s about 40 fully loaded <a href=\"https://en.wikipedia.org/wiki/Airbus_A380\">Airbus A380-800</a>.</p>\r\n<p><a href=\"https://commons.wikimedia.org/wiki/File:FOSDEM%2712_-_Opening_Talk.jpg\"><img src=\"eps/hpr3648/thumb-FOSDEM12-Opening_Talk.jpg\" alt=\"\" /></a></p>\r\n<p>Podcast \"Hosting\" Sites, like Spotify, Apple Podcast or Google Podcasts, etc. do not host the media, they are essentially monetizing Hacker Public Radio content. And we are all absolutely fine with that because our shows are released under a <a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">Creative Commons Attribution-ShareAlike 3.0 Unported license</a>.</p>\r\n<p><a href=\"eps/hpr3648/10-actual_hpr_downloads.png\"><img src=\"eps/hpr3648/thumb-10-actual_hpr_downloads.png\" alt=\"actual_hpr_downloads\" /></a></p>\r\n<p>Every one of those dots is a download that is <strong>not without cost</strong>, but is provided <strong>entirely free of charge</strong> to us by our kind hosting Provider <a href=\"https://anhonesthost.com/hosting/shared-hosting\">AnHonestHost.com</a> and the volunteer project <a href=\"https://archive.org/donate/\">the Internet Archive</a>. Both of which donates terabytes of storage and data transfer to us for free.</p>\r\n<p>The people to thank are our own <a href=\"https://hackerpublicradio.org/correspondents.php?hostid=174\">Josh Knapp</a> over at <a href=\"https://anhonesthost.com/hosting/shared-hosting\">AnHonestHost.com</a>, who provides the Hacker Public Radio web site.</p>\r\n<p>And <a href=\"https://archive.org/donate/\">the Internet Archive</a> which is an American digital library with the stated mission of \"universal access to all knowledge\", who provide hosting for the media.</p>\r\n<p>\r\n<strong>For more details, <a href=\"eps/hpr3648/index.html\">see the full show notes</a>.</strong>\r\n</p>\r\n',30,0,1,'CC-BY-SA','statistics,syndication,reality',0,0,1),
|
||||
(3637,'2022-07-12','HPR feed to Sqlite',454,'First step in creating a static copy of HPR','<ul>\n<li>Mailing list discussion - Source Code for the HPR website\n<ul>\n<li>What are the best ways to reproduce the HPR site using a static site generator.</li>\n<li>I would like the DB to be made public, but I understand why that may not be possible</li>\n</ul></li>\n</ul>\n<p>One interesting thing I read during the discussion is Ken said Every thing needed to recreate an HPR site is in the feed</p>\n<ul>\n<li>Challenge accepted\n<ul>\n<li>A lot of my toy projects have been around RSS and podcasts</li>\n<li>I am working on a Episode describing a project I did looking for podcasts that have podfaded.</li>\n<li>I starting thinking about what data is in the feed and thinking through a process for using the RSS data to recreate the HPR site</li>\n</ul></li>\n<li>Project\n<ul>\n<li>Link to Project <a href=\"https://gitlab.com/norrist/hprfeed2db\" class=\"uri\">https://gitlab.com/norrist/hprfeed2db</a></li>\n</ul></li>\n<li>DATA pulled directly from feed\n<ul>\n<li><p>explicit</p></li>\n<li><p>title</p></li>\n<li><p>author_name</p></li>\n<li><p>author_email</p></li>\n<li><p>link</p></li>\n<li><p>description</p></li>\n<li><p>summary - I think this is the same as description</p></li>\n<li><p>pubdate</p></li>\n<li><p>enclosures</p></li>\n<li><p>Episode ID - extracted from title - HPR2341</p></li>\n<li><p>feedparser and peewee</p></li>\n<li><p>full feed to SQLite specs</p>\n<ul>\n<li>40 Seconds on <strong>My Machine</strong></li>\n<li>20M hpr.sqlite</li>\n</ul></li>\n</ul></li>\n<li>Notably Missing from the RSS feeds\n<ul>\n<li>Episode Series</li>\n<li>Episode Tags</li>\n</ul></li>\n<li>Next steps\n<ul>\n<li>markdown from db info\n<ul>\n<li>Main page</li>\n<li>Corespondent pages</li>\n<li>Episode pages</li>\n<li>comments from comments feed</li>\n</ul></li>\n<li>Manually build other markdown for static pages</li>\n<li>about, contributing, ...</li>\n<li>Static site generator</li>\n<li>I don\'t think the tags are in the feed data</li>\n</ul></li>\n</ul>\n<pre class=\"bash\"><code>git clone https://gitlab.com/norrist/hprfeed2db\ncd hprfeed2db/\npython3 -m venv venv\nsource venv/bin/activate\npip install feedparser peewee\npython data_models.py\npython feed.py\nsqlite3 hpr.sqlite "select count(*) from episode"</code></pre>\n',342,0,0,'CC-BY-SA','python, rss, sqlite',0,0,1),
|
||||
(3916,'2023-08-07','HPR Community News for July 2023',0,'HPR Volunteers talk about shows released and comments posted in July 2023','<style>\ntable td.shrink {\n white-space:nowrap\n}\nhr.thin {\n border: 0;\n height: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}\np#ignore, li#ignore {\n background-color: lightgreen;\n color:maroon;\n}\ndiv#highlight {\n border-style: solid;\n border-color: red;\n padding-right: 20px;\n padding-left: 20px;\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0420.html\" target=\"_blank\">HopperMCS</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0421.html\" target=\"_blank\">Reto</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3891/index.html\" target=\"_blank\">3891</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3891/index.html\" target=\"_blank\">HPR Community News for June 2023</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3892/index.html\" target=\"_blank\">3892</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3892/index.html\" target=\"_blank\">Emacs package curation, part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3893/index.html\" target=\"_blank\">3893</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3893/index.html\" target=\"_blank\">Game card design resources</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3894/index.html\" target=\"_blank\">3894</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3894/index.html\" target=\"_blank\">The Page 42 Show: Ugly News Week, Show\'s Epoch!</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0420.html\" target=\"_blank\">HopperMCS</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3895/index.html\" target=\"_blank\">3895</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3895/index.html\" target=\"_blank\">What\'s in my backpack</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html\" target=\"_blank\">3896</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html\" target=\"_blank\">The Brochs of Glenelg</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3897/index.html\" target=\"_blank\">3897</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3897/index.html\" target=\"_blank\">HPR AudioBook Club 22 - Murder at Avedon Hill</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0157.html\" target=\"_blank\">HPR_AudioBookClub</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3898/index.html\" target=\"_blank\">3898</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3898/index.html\" target=\"_blank\">The Oh No! News.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3899/index.html\" target=\"_blank\">3899</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-07-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3899/index.html\" target=\"_blank\">Repair corrupt video files for free with untruc</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3900/index.html\" target=\"_blank\">3900</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-07-14</td>\n<td><a href=\"https://hackerpublicradioLine truncated
|
||||
(3916,'2023-08-07','HPR Community News for July 2023',0,'HPR Volunteers talk about shows released and comments posted in July 2023','<style>\ntable td.shrink {\n white-space:nowrap\n}\nhr.thin {\n border: 0;\n height: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}\np#ignore, li#ignore {\n background-color: lightgreen;\n color:maroon;\n}\ndiv#highlight {\n border-style: solid;\n border-color: red;\n padding-right: 20px;\n padding-left: 20px;\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0420.html\" target=\"_blank\">HopperMCS</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0421.html\" target=\"_blank\">Reto</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3891/index.html\" target=\"_blank\">3891</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3891/index.html\" target=\"_blank\">HPR Community News for June 2023</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3892/index.html\" target=\"_blank\">3892</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3892/index.html\" target=\"_blank\">Emacs package curation, part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3893/index.html\" target=\"_blank\">3893</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3893/index.html\" target=\"_blank\">Game card design resources</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3894/index.html\" target=\"_blank\">3894</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3894/index.html\" target=\"_blank\">The Page 42 Show: Ugly News Week, Show\'s Epoch!</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0420.html\" target=\"_blank\">HopperMCS</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3895/index.html\" target=\"_blank\">3895</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3895/index.html\" target=\"_blank\">What\'s in my backpack</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html\" target=\"_blank\">3896</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html\" target=\"_blank\">The Brochs of Glenelg</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3897/index.html\" target=\"_blank\">3897</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3897/index.html\" target=\"_blank\">HPR AudioBook Club 22 - Murder at Avedon Hill</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0157.html\" target=\"_blank\">HPR_AudioBookClub</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3898/index.html\" target=\"_blank\">3898</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3898/index.html\" target=\"_blank\">The Oh No! News.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3899/index.html\" target=\"_blank\">3899</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-07-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3899/index.html\" target=\"_blank\">Repair corrupt video files for free with untruc</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3900/index.html\" target=\"_blank\">3900</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-07-14</td>\n<td><a href=\"https://hackerpublicradioLine truncated
|
||||
(3643,'2022-07-20','My computing history and the software I use',3345,'Rambling about my computing history and tech stack. ','<p>I introduce myself by describing my computing history and tech stack. Disjointed rambling and tangentially related thoughts ensue.</p>\n',406,0,1,'CC-BY-SA','UNIX, Linux, first show, BSD, Android',0,0,1),
|
||||
(3658,'2022-08-10','Linux Inlaws S01E62: HPR\'s inner workings',1975,'An overview of HPRs inner workings and stats based on a ludicrous claim by the Inlaws','<p>In this episode our two ageing heroes explore the inner workings of a podcast (or podcast hosting platform depending on your perspective) called Hacker Public Radio. Yes, the platform that the Inlaws have been using since the very inception of this rapidly growing FLOSS podcast content. Wondering what the heck this episode is all about, why exactly Martin and Chris are talking about this now and the importance of statistics, lies and damned lies? Then just listen to this episode. You may also find out the difference between mere caching and content syndication. Never mind HPR\'s inner workings.</p>\n<h2>Links:</h2>\n<ul>\n<li>hpr3648: <a href=\"https://hackerpublicradio.org/eps.php?id=3648\" target=_blank>https://hackerpublicradio.org/eps.php?id=3648</a></li>\n<li>The Internet Archive: <a href=\"https://archive.org\" target=_blank>https://archive.org</a></li>\n<li>Extraterrestrial sheep: <a href=\"https://aliens.fandom.com/wiki/Sheep_(Kaeloo)\" target=_blank>https://aliens.fandom.com/wiki/Sheep_(Kaeloo)</a></li>\n<li>QuickAxe: <a href=\"https://fireemblem.fandom.com/wiki/Quick_Axe\" target=_blank>https://fireemblem.fandom.com/wiki/Quick_Axe</a></li>\n<li>Linux Episode S01E35 (The Free Software Foundation Europe): <a href=\"https://hackerpublicradio.org/eps.php?id=3388\" target=_blank>https://hackerpublicradio.org/eps.php?id=3388</a></li>\n<li>Ford v Ferrari: <a href=\"https://www.imdb.com/title/tt1950186/?ref_=nv_sr_srsg_0\" target=_blank>https://www.imdb.com/title/tt1950186/?ref_=nv_sr_srsg_0</a></li>\n<li>Book of Monsters: <a href=\"https://www.imdb.com/title/tt7260818/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt7260818/?ref_=fn_al_tt_1</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','Lies, damned lies, stats, projections, CDNs, Ford, Ferrari, Monsters, Books',0,0,1),
|
||||
(3679,'2022-09-08','Linux Inlaws S01E64: Non-profits in the US: A closer look at 501(c)s',2177,'The Ins and Outs of 501(c)s','<p>In this episode, Martin and Chris shed more light on the riveting subject of non-profit\nand not-for-profit organisations especially in the US with a special focus on the all-\nimportant topic of tax implications. Warning: Due to the fast-paced and gripping never\nmind explicit nature of this topic, people with sleeping disabilities or who are easily startled\n/ offended by graphic content should consult a member of the medical profession to ensure\nthat they are capable of handling this episode. You have been warned.</p>\n<h2>Links:</h2>\n<ul>\n<li>501(c) overview: <a href=\"https://en.wikipedia.org/wiki/501(c)_organization\" target=_blank>https://en.wikipedia.org/wiki/501(c)_organization</a></li>\n<li>501(c)3: <a href=\"https://en.wikipedia.org/wiki/501(c)(3)_organization\" target=_blank>https://en.wikipedia.org/wiki/501(c)(3)_organization</a></li>\n<li>NATO 5th article: <a href=\"https://www.nato.int/cps/en/natohq/topics_110496.htm\" target=_blank>https://www.nato.int/cps/en/natohq/topics_110496.htm</a></li>\n<li>Johnson amendment: <a href=\"https://en.wikipedia.org/wiki/Johnson_Amendment\" target=_blank>https://en.wikipedia.org/wiki/Johnson_Amendment</a></li>\n<li>St IGNUcius / Church of Emacs: <a href=\"https://stallman.org/saint.html\" target=_blank>https://stallman.org/saint.html</a></li>\n<li>Richard Stallman rejoins the FSF board: <a href=\"https://www.theregister.com/2021/03/22/richard_stallman_back_on_fsf_board\" target=_blank>https://www.theregister.com/2021/03/22/richard_stallman_back_on_fsf_board</a></li>\n<li>The Undeclared War: <a href=\"https://en.wikipedia.org/wiki/The_Undeclared_War\" target=_blank>https://en.wikipedia.org/wiki/The_Undeclared_War</a></li>\n<li>Serviettenknödel: <a href=\"http://gingerandbread.com/2014/12/19/serviettenknodel-a-dumpling-for-special-occasions\" target=_blank>http://gingerandbread.com/2014/12/19/serviettenknodel-a-dumpling-for-special-occasions</a></li>\n<li>HPR website project (discussion on the mailing list): <a href=\"http://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-July/thread.html\" target=_blank>http://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-July/thread.html</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','501(c)3, 501(c)6, non-profits, not-for-profits, Church of Emacs, RMS, Serviettenknödel',0,0,1),
|
||||
@@ -19979,8 +19991,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
|
||||
(3906,'2023-07-24','The Oh No! News.',1741,'Sgoti discusses the threat of convenience.','<h2 id=\"the-oh-no-news.\">The <em>Oh No!</em> news.</h2>\n<h2 id=\"oh-no-news-is-good-news.\"><em>Oh No!</em> News is Good\nNews.</h2>\n<ul>\n<li><strong>TAGS:</strong> Oh No News, InfoSec, browser security,\nsession tokens, session id</li>\n</ul>\n<hr />\n<h3 id=\"infosec-the-language-of-security.\"><strong>InfoSec; the language\nof security.</strong></h3>\n<ul>\n<li><strong>Source:</strong> <a\nhref=\"https://en.wikipedia.org/wiki/Session_ID\">Session ID.</a><br />\n</li>\n<li><strong>Source:</strong> <a\nhref=\"https://en.wikipedia.org/wiki/JSON_Web_Token\">JSON Web\nToken.</a><br />\n\n<ul>\n<li><strong><a\nhref=\"https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use\">Terms\nof Use:</a></strong> Copyleft, free content<br />\n</li>\n</ul></li>\n<li><strong>Source:</strong> <a\nhref=\"https://www.geeksforgeeks.org/session-vs-token-based-authentication/\">Session\nvs Token Based Authentication.</a><br />\n\n<ul>\n<li><strong><a\nhref=\"https://www.geeksforgeeks.org/legal/copyright-information/\">Terms\nof Use:</a></strong> CC-BY-SA (with CC-BY-NC-SA elements).<br />\n</li>\n</ul></li>\n<li><strong>Source:</strong> <a\nhref=\"https://attack.mitre.org/techniques/T1528/\">Steal Application\nAccess Token.</a> Adversaries can steal application access tokens as a\nmeans of acquiring credentials to access remote systems and resources.\nApplication access tokens are used to make authorized API requests on\nbehalf of a user or service and are commonly used as a way to access\nresources in cloud and container-based applications and\nsoftware-as-a-service (SaaS).<br />\n\n<ul>\n<li><strong><a\nhref=\"https://attack.mitre.org/resources/terms-of-use/\">Terms of\nUse:</a></strong> Similar to CC-BY-SA<br />\n</li>\n</ul></li>\n<li><strong>Source:</strong> <a\nhref=\"https://blog.isc2.org/isc2_blog/2023/02/analysis-circleci-attackers-stole-session-cookie-to-bypass-mfa.html\">Analysis:\nCircleCI attackers stole session cookie to bypass MFA.</a><br />\n\n<ul>\n<li><strong><a href=\"https://www.typepad.com/tos\">Terms of\nUse:</a></strong> Section 8. CONTENT AND CONTENT LICENSES. NOT\ncertain<br />\n</li>\n</ul></li>\n<li><strong>Source:</strong> <a\nhref=\"https://www.baeldung.com/cs/session-hijacking\">How to Prevent\nSession Hijacking?</a><br />\n\n<ul>\n<li><strong><a href=\"https://www.baeldung.com/terms-of-service\">Terms of\nUse:</a></strong> Copyright, restrictive<br />\n</li>\n</ul></li>\n</ul>\n<hr />\n<ul>\n<li><strong>Additional Information.</strong>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Data_breach\"\ntitle=\"From Wikipedia, the free encyclopedia.\">What is a \"Data\nBreach\"?</a> A data breach is a security violation, in which sensitive,\nprotected or confidential data is copied, transmitted, viewed, stolen,\naltered or used by an individual unauthorized to do so.</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Malware\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is \"Malware\"?</a>\nMalware (a <a href=\"https://en.wikipedia.org/wiki/Portmanteau\"\ntitle=\"From Wikipedia, the free encyclopedia\">portmanteau</a> for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy.</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Payload_(computing)\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is a \"Payload\"?</a>\nIn the context of a computer virus or worm, the payload is the portion\nof the malware which performs malicious action; deleting data, sending\nspam or encrypting data. In addition to the payload, such malware also\ntypically has overhead code aimed at simply spreading itself, or\navoiding detection.</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Phishing\"\ntitle=\"From Wikipedia, the free encyclopedia.\">What is \"Phishing\"?</a>\nPhishing is a form of <a\nhref=\"https://en.wikipedia.org/wiki/Social_engineering_(security)\"\ntitle=\"From Wikipedia, the free encyclopedia\">social engineering</a>\nwhere attackers deceive people into revealing sensitive information or\ninstalling malware such as <a\nhref=\"https://en.wikipedia.org/wiki/Ransomware\"\ntitle=\"From Wikipedia, the free encyclopedia\">ransomware</a>. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim.</li>\n<li><a\nhref=\"https://en.wikipedia.org/wiki/Social_engineering_(security)\">Social\nengineering (security)</a> In the context of information security,\nsocial engineering is the <a\nhref=\"https://en.wikipedia.org/wiki/Psychological_manLine truncated
|
||||
INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3908,'2023-07-26','Emacs package curation, part 2',667,'Let\'s go through every single package installed in my Emacs configuration. File 2 of 3.','<p>We discuss the packages installed in the second of three files that\nmake up my emacs config.</p>\n<pre class=\"elisp\"><code>;;; init-base.el --- The basics\n;;; Commentary:\n;;; Packages for my personal and work laptop, but not termux.\n\n;;; Code:\n\n;;;;;;;;;;;;;;;\n;;; Writing ;;;\n;;;;;;;;;;;;;;;\n\n;; Focused writing mode\n(use-package olivetti\n :hook (olivetti-mode . typewriter-mode-toggle)\n :bind ("C-x C-w" . olivetti-mode)\n :custom (olivetti-body-width 64)\n :config\n (defvar-local typewriter-mode nil\n "Typewriter mode, automatically scroll down to keep cursor in\n the middle of the screen. Setting this variable explicitly will\n not do anything, use typewriter-mode-on, typewriter-mode-off\n and typewriter-mode-toggle instead.")\n (defun typewriter-mode-on()\n "Automatically scroll down to keep cursor in the middle of screen."\n (interactive)\n (setq-local typewriter-mode t)\n (centered-cursor-mode +1))\n (defun typewriter-mode-off()\n "Automatically scroll down to keep cursor in the middle of screen."\n (interactive)\n (kill-local-variable 'typewriter-mode)\n (centered-cursor-mode -1))\n (defun typewriter-mode-toggle()\n "Toggle typewriter scrolling mode on and off."\n (interactive)\n (if typewriter-mode (typewriter-mode-off) (typewriter-mode-on))))\n\n(use-package centered-cursor-mode)\n\n;; Check for weasel words and some other simple rules\n(use-package writegood-mode\n :bind ("C-c g" . writegood-mode))\n\n;; spellchecking\n(use-package flyspell-correct\n :after flyspell\n :bind (:map flyspell-mode-map\n ("C-;" . flyspell-correct-wrapper)))\n\n;; show correction options in a popup instead of the minibuffer\n(use-package flyspell-correct-popup\n :after (flyspell-correct))\n\n;online thesaurus service from powerthesaurus.org\n(use-package powerthesaurus)\n\n;; WordNet Thesaurus replacement\n(use-package synosaurus\n :custom (synosaurus-choose-method 'default)\n :config (when window-system\n (if (string= (x-server-vendor) "Microsoft Corp.")\n (setq synosaurus-wordnet--command "C:\\\\Program Files (x86)\\\\WordNet\\\\2.1\\\\bin\\\\wn.exe"))))\n\n;; WordNet search and view\n(use-package wordnut\n :bind ("C-c s" . wordnut-search)\n :config (when window-system\n (if (string= (x-server-vendor) "Microsoft Corp.")\n (setq wordnut-cmd "C:\\\\Program Files (x86)\\\\WordNet\\\\2.1\\\\bin\\\\wn.exe"))))\n\n;; fill and unfill with the same key\n(use-package unfill\n :bind ("M-q" . unfill-toggle))\n\n;; Markdown...\n(use-package markdown-mode)\n\n;;;;;;;;;;;;;;\n;;; Coding ;;;\n;;;;;;;;;;;;;;\n\n;; Syntax checking\n(use-package flycheck\n :diminish\n :init (global-flycheck-mode))\n\n(use-package flycheck-popup-tip\n :after (flycheck)\n :hook (flycheck-mode-hook . flycheck-popup-tip-mode))\n\n;; Web design\n(use-package emmet-mode\n :hook (sgml-mode . emmet-mode) ;; Auto-start on any markup modes\n (css-mode . emmet-mode)) ;; enable Emmet's css abbreviation.\n\n(use-package sass-mode)\n\n(use-package web-mode)\n\n;; Python\n(use-package python\n :mode ("\\\\.py\\\\'" . python-mode)\n :interpreter ("python" . python-mode))\n\n;; highlight todo items everywhere\n(use-package hl-todo\n :straight (:host github :repo "tarsius/hl-todo")\n :custom (hl-todo-keyword-faces\n `(("FIXME" error bold)\n ("STUB" error bold)\n ("REPLACETHIS" error bold)\n ("REVISIT" error bold)))\n (hl-todo-exclude-modes nil)\n :config (add-to-list 'hl-todo-include-modes 'org-mode)\n :init (global-hl-todo-mode))\n\n;; git\n(use-package magit)\n\n(use-package git-timemachine)\n\n;; rest APIs via org source block\n(use-package ob-restclient)\n\n;;; END ;;;\n\n(provide 'init-base)\n;;; init-base.el ends here</code></pre>\n',399,0,0,'CC-BY-SA','emacs,elisp',0,0,1),
|
||||
(3918,'2023-08-09','Emacs package curation, part 3',864,'Let\'s go through every single package installed in my Emacs configuration. The last one.','<p>We discuss the packages installed in the second of three files that\nmake up my emacs config.</p>\n<p>Since recording, I pulled in some EXWM (the Emacs X Window Manager,\nthat\'s right), even though I\'m not actually using it, I\'m still using\nstumpWM.</p>\n<p>I have also added pass, the password manager, khardel, an emacs\npackage for the khard CLI address book application.</p>\n<p>I also moved (server-start) to this file, so that it\'ll only happen\nwhen I\'m on linux.</p>\n<pre class=\"elisp\"><code>;;; init-extra.el --- Extra init stuff\n;;; Commentary:\n;;; Stuff just for my personal laptop, not for my work laptop or termux, for example.\n\n;;; Code:\n\n;;;;;;;;;;;;;;;;\n;;; org-roam ;;;\n;;;;;;;;;;;;;;;;\n\n(use-package org-roam\n :demand t\n :straight (:host github :repo "org-roam/org-roam"\n :files (:defaults "extensions/*"))\n :custom (org-roam-mode-sections (list #'org-roam-backlinks-section\n #'org-roam-reflinks-section\n #'org-roam-unlinked-references-section))\n :init (setq org-roam-directory "~/org/roam/"\n org-roam-capture-templates\n '(("o" "outline" plain\n "%?"\n :if-new\n (file+head "${slug}.org" "#+title: ${title}\\n#+filetags: :outline:\\n")\n :immediate-finish t\n :unnarrowed t)\n ("r" "reference" plain "%?"\n :if-new\n (file+head "${slug}.org" "#+title: ${title}\\n")\n :immediate-finish t\n :unnarrowed t)\n ("m" "memo" entry "* ${title}\\n%?"\n :if-new\n (file "memos.org")\n :immediate-finish t\n :unnarrowed t)))\n :bind (("C-c n l" . org-roam-buffer-toggle)\n ("C-c n f" . org-roam-node-find)\n ("C-c n g" . org-roam-graph)\n ("C-c n i" . org-roam-node-insert)\n ("C-c n c" . org-roam-capture)\n ;; Dailies\n ("C-c n j" . org-roam-dailies-capture-today))\n :config\n ;; If you're using a vertical completion framework, you might want a more informative completion interface\n (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag)))\n (org-roam-db-autosync-mode)\n ;; If using org-roam-protocol\n (require 'org-roam-protocol))\n\n;; citations\n(use-package citar\n :after org-roam\n :custom (org-cite-insert-processor 'citar)\n (org-cite-follow-processor 'citar)\n (org-cite-activate-processor 'citar)\n (citar-bibliography '("~/org/biblio.bib"))\n (citar-notes-paths '("~/org/roam"))\n (citar-file-note-extensions '("org"))\n :hook (LaTeX-mode . citar-capf-setup)\n (org-mode . citar-capf-setup)\n :bind (("C-c n b" . #'citar-open-notes)\n :map org-mode-map :package org\n ("C-c b" . #'org-cite-insert)))\n\n;; view your org-roam notes on a map\n(use-package org-roam-ui\n :after org-roam\n :custom (org-roam-ui-sync-theme t)\n (org-roam-ui-follow t)\n (org-roam-ui-update-on-save t)\n (org-roam-ui-open-on-start t))\n\n;; archive web pages in org attachments\n(use-package org-board\n :after org\n :custom (org-board-default-browser #'browse-url)\n (org-board-property "ROAM_REFS")\n :bind (:map org-mode-map\n ("C-c B a" . org-board-archive)\n ("C-c B o" . org-board-open)\n ("C-c B D" . org-board-delete-all)))\n\n;;;;;;;;;;;;;;;\n;;; Writing ;;;\n;;;;;;;;;;;;;;;\n\n; something like grammarly, but open source\n(use-package langtool)\n\n;; better than docview, for pdf\n(use-package pdf-tools)\n\n;; annotating docs in org files\n(use-package org-noter)\n\n;; epub\n(use-package nov\n :mode ("\\\\.epub$" . nov-mode))\n\n;;; Invoke quick emacs windows to edit anything anywhere.\n;;; bind a key in xorg to ~emacsclient -c (emacs-everywhere)~\n(use-package emacs-everywhere)\n\n;;;;;;;;;;;;;;\n;;; Auctex ;;;\n;;;;;;;;;;;;;;\n(straight-use-package '( auctex\n :host nil :repo "https://git.savannah.gnu.org/git/auctex.git"\n :pre-build (("./autogen.sh")\n ("./configure" "--without-texmf-dir" "--with-lispdir=.")\n ("make&qLine truncated
|
||||
(3909,'2023-07-27','Permission tickets. ',688,'Collective delusions of elective conclusions. ','<p>No special knowledge nor resources.<br />\nThis is a preview show for some future, self referential tangle of\ncryptographic distraction.</p>\n<p>So far, I see money as some social credit by proxy.<br />\nI recognise the utility of keeping track of resource recipes.<br />\nI also see dangers in over abstracting relations beyond robustly\nprovable outcomes.</p>\n',398,0,1,'CC-BY-SA','ledger , cryptographic , consensus , permission , integrity ',0,0,0),
|
||||
(3911,'2023-07-31','An overview of the \'ack\' command',1255,'A Perl-based \'grep\'-like tool that can search by file type','<article>\n<h2 id=\"introduction\">Introduction</h2>\n<p>I have occasionally been using a tool called <code>ack</code> for a\nfew years now. It’s billed as <em>“an alternative to grep for\nprogrammers”</em>.</p>\n<p>There are several features I find particularly useful:</p>\n<ul>\n<li><p>It can restrict text searches to files of a particular\n<em>type</em></p></li>\n<li><p>It uses Perl regular expressions which may be the most powerful\nand feature rich types of RE’s available at present</p></li>\n<li><p>You can limit the search area within a file if desired</p></li>\n</ul>\n<p>It is a very comprehensive and useful tool, though maybe quite\ncomplex to use. Personally I use it in special cases where I need its\npower, and otherwise use the usual <code>grep</code>.</p>\n<p>In this episode I will give you the flavour of its capabilities and\notherwise leave you to research more if it sounds interesting.</p>\n<h2 id=\"installing-ack\">Installing <code>ack</code></h2>\n<p>The tool can be found in repositories. I use Debian, and\n<code>ack</code> is in the Debian repo and can be installed with:</p>\n<pre><code>sudo apt install ack</code></pre>\n<p>Installing it this way the version I have (and am describing here) is\n3.6.0. There is a new version, 3.7.0 available from the <a\nhref=\"https://beyondgrep.com/\">website</a>.</p>\n<p>The documentation on the website suggests installing it as a Perl\nmodule using <code>CPAN</code>, which is something I will do soon I\nthink.</p>\n<h2 id=\"perl-regular-expressions\">Perl regular expressions</h2>\n<p>These are very sophisticated.</p>\n<p>A project to convert the Perl regular expression capabilities into a\nportable library form was undertaken by Philip Hazel of Cambridge\nUniversity in 1997, and was called <em>Perl Compatible Regular\nExpressions</em> or PCRE.</p>\n<p>Philip Hazel was the originator of the <code>exim</code> mail\ntransfer agent (MTA, or mail server), and wanted to use PCRE within\nit.</p>\n<p>Since then PCRE (and later PCRE2) is the way regular expressions are\nimplemented in a lot of other software, which shows how widespread use\nof the Perl RE has become.</p>\n<p>The <code>ack</code> documentation refers to the Perl manual for\ndetails of this type of regular expression, and to a tutorial, if you\nwish to gain a deeper understanding.</p>\n<p>It should be noted that GNU <code>grep</code> can use Perl compatible\nregular expressions when matching lines in files, but this feature is\nmarked as experimental.</p>\n<h2 id=\"file-types\">File types</h2>\n<p>The <code>ack</code> command has rules for recognising file types. It\ndoes this by looking at the name extensions (<code>\'.html\'</code> or\n<code>\'.py\'</code> for example), and in some cases by examining their\ncontents. The complete list of types can be found by running:</p>\n<pre><code>ack --help-types</code></pre>\n<p>… or, for a more detailed but less readable list:</p>\n<pre><code>ack --dump</code></pre>\n<p>Some examples are:</p>\n<ul>\n<li><code>cc</code> for C files</li>\n<li><code>haskell</code> for Haskell files</li>\n<li><code>lua</code> for Lua files</li>\n<li><code>python</code> for Python files</li>\n<li><code>shell</code> for Bash, and other shell command files</li>\n</ul>\n<p>These names can be used with the options <code>-t TYPE</code> and\n<code>--type=TYPE</code> and also by simply preceding them with two\ndashes (<code>--TYPE</code>). There are also ways of requesting files\nnot of a given type: <code>-T TYPE</code>, <code>--type=noTYPE</code>\nand <code>--noTYPE</code>.</p>\n<p>To check files in the current directory of type <code>shell</code> an\n<code>ack</code> command like the following might be used and the\nfollowing type of output produced:</p>\n<pre><code>$ ack --shell declare\nBash_snippet__using_coproc_with_SQLite/examples/coproc_test.sh\n11:declare -a com=('date +%F' 'whoami' 'id' 'echo "$BASH_VERSION"'</code></pre>\n<p>Note that <code>ack</code> reports the file path and numbered lines\nwithin it that match.</p>\n<p>You can add your own file types to <code>ack</code>. There is a\nconfiguration file called <code>.ackrc</code> in which new types can be\ndeclared. See below for more information.</p>\n<p>The file type feature is one that makes me use <code>ack</code> again\nand again.</p>\n<h2 id=\"the-.ackrc-file\">The <code>.ackrc</code> file</h2>\n<p>This file contains <em>“command-line options that are prepended to\nthe command line before processing”</em>.</p>\n<p>It’s a useful way to add new types (or even modify existing\nones).</p>\n<p>It can be located in a number of places. Mine is\n<code>~/.ackrc</code> with other configuration files in my home\ndirectory.</p>\n<p>It’s possible to generate a new <code>.ackrc</code> with the option\n<code>--create-ackrc</code>. This saves all theLine truncated
|
||||
(3909,'2023-07-27','Permission tickets. ',688,'Collective delusions of elective conclusions. ','<p>No special knowledge nor resources.<br />\nThis is a preview show for some future, self referential tangle of\ncryptographic distraction.</p>\n<p>So far, I see money as some social credit by proxy.<br />\nI recognise the utility of keeping track of resource recipes.<br />\nI also see dangers in over abstracting relations beyond robustly\nprovable outcomes.</p>\n',398,0,1,'CC-BY-SA','ledger , cryptographic , consensus , permission , integrity ',0,0,1),
|
||||
(3911,'2023-07-31','An overview of the \'ack\' command',1255,'A Perl-based \'grep\'-like tool that can search by file type','<article>\n<h2 id=\"introduction\">Introduction</h2>\n<p>I have occasionally been using a tool called <code>ack</code> for a\nfew years now. It’s billed as <em>“an alternative to grep for\nprogrammers”</em>.</p>\n<p>There are several features I find particularly useful:</p>\n<ul>\n<li><p>It can restrict text searches to files of a particular\n<em>type</em></p></li>\n<li><p>It uses Perl regular expressions which may be the most powerful\nand feature rich types of RE’s available at present</p></li>\n<li><p>You can limit the search area within a file if desired</p></li>\n</ul>\n<p>It is a very comprehensive and useful tool, though maybe quite\ncomplex to use. Personally I use it in special cases where I need its\npower, and otherwise use the usual <code>grep</code>.</p>\n<p>In this episode I will give you the flavour of its capabilities and\notherwise leave you to research more if it sounds interesting.</p>\n<h2 id=\"installing-ack\">Installing <code>ack</code></h2>\n<p>The tool can be found in repositories. I use Debian, and\n<code>ack</code> is in the Debian repo and can be installed with:</p>\n<pre><code>sudo apt install ack</code></pre>\n<p>Installing it this way the version I have (and am describing here) is\n3.6.0. There is a new version, 3.7.0 available from the <a\nhref=\"https://beyondgrep.com/\">website</a>.</p>\n<p>The documentation on the website suggests installing it as a Perl\nmodule using <code>CPAN</code>, which is something I will do soon I\nthink.</p>\n<h2 id=\"perl-regular-expressions\">Perl regular expressions</h2>\n<p>These are very sophisticated.</p>\n<p>A project to convert the Perl regular expression capabilities into a\nportable library form was undertaken by Philip Hazel of Cambridge\nUniversity in 1997, and was called <em>Perl Compatible Regular\nExpressions</em> or PCRE.</p>\n<p>Philip Hazel was the originator of the <code>exim</code> mail\ntransfer agent (MTA, or mail server), and wanted to use PCRE within\nit.</p>\n<p>Since then PCRE (and later PCRE2) is the way regular expressions are\nimplemented in a lot of other software, which shows how widespread use\nof the Perl RE has become.</p>\n<p>The <code>ack</code> documentation refers to the Perl manual for\ndetails of this type of regular expression, and to a tutorial, if you\nwish to gain a deeper understanding.</p>\n<p>It should be noted that GNU <code>grep</code> can use Perl compatible\nregular expressions when matching lines in files, but this feature is\nmarked as experimental.</p>\n<h2 id=\"file-types\">File types</h2>\n<p>The <code>ack</code> command has rules for recognising file types. It\ndoes this by looking at the name extensions (<code>\'.html\'</code> or\n<code>\'.py\'</code> for example), and in some cases by examining their\ncontents. The complete list of types can be found by running:</p>\n<pre><code>ack --help-types</code></pre>\n<p>… or, for a more detailed but less readable list:</p>\n<pre><code>ack --dump</code></pre>\n<p>Some examples are:</p>\n<ul>\n<li><code>cc</code> for C files</li>\n<li><code>haskell</code> for Haskell files</li>\n<li><code>lua</code> for Lua files</li>\n<li><code>python</code> for Python files</li>\n<li><code>shell</code> for Bash, and other shell command files</li>\n</ul>\n<p>These names can be used with the options <code>-t TYPE</code> and\n<code>--type=TYPE</code> and also by simply preceding them with two\ndashes (<code>--TYPE</code>). There are also ways of requesting files\nnot of a given type: <code>-T TYPE</code>, <code>--type=noTYPE</code>\nand <code>--noTYPE</code>.</p>\n<p>To check files in the current directory of type <code>shell</code> an\n<code>ack</code> command like the following might be used and the\nfollowing type of output produced:</p>\n<pre><code>$ ack --shell declare\nBash_snippet__using_coproc_with_SQLite/examples/coproc_test.sh\n11:declare -a com=('date +%F' 'whoami' 'id' 'echo "$BASH_VERSION"'</code></pre>\n<p>Note that <code>ack</code> reports the file path and numbered lines\nwithin it that match.</p>\n<p>You can add your own file types to <code>ack</code>. There is a\nconfiguration file called <code>.ackrc</code> in which new types can be\ndeclared. See below for more information.</p>\n<p>The file type feature is one that makes me use <code>ack</code> again\nand again.</p>\n<h2 id=\"the-.ackrc-file\">The <code>.ackrc</code> file</h2>\n<p>This file contains <em>“command-line options that are prepended to\nthe command line before processing”</em>.</p>\n<p>It’s a useful way to add new types (or even modify existing\nones).</p>\n<p>It can be located in a number of places. Mine is\n<code>~/.ackrc</code> with other configuration files in my home\ndirectory.</p>\n<p>It’s possible to generate a new <code>.ackrc</code> with the option\n<code>--create-ackrc</code>. This saves all theLine truncated
|
||||
/*!40000 ALTER TABLE `eps` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
@@ -20900,4 +20912,4 @@ UNLOCK TABLES;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2023-07-27 6:16:32
|
||||
-- Dump completed on 2023-07-28 7:42:10
|
||||
Reference in new issue
Block a user