Erin Catto, autor open source 2D fyzikálního enginu Box2D (Wikipedie), představil nový 3D fyzikální engine Box3D. Engine je již používán ve hře The Legend of California.
Byla vydána nová verze 4.0.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy nových filtrů na PIXLS.US.
Český statistický úřad (ČSÚ): Průměrná hrubá měsíční mzda ICT specialistů v roce 2025 meziročně vzrostla o 6 % na téměř 100 tisíc korun. Nejlépe placeni byli vývojáři softwaru. Dlouhodobým trendem zůstává nízké zastoupení žen, a to jak mezi specialisty, tak studenty těchto oborů.
Ochranný svaz autorský (OSA) připravuje žalobu na společnost Suno, která umožňuje generování hudby pomocí umělé inteligence (AI). ČTK to sdělil předseda představenstva OSA Roman Strejček. Suno podle něj bez souhlasu využívá k trénování svých modelů hudbu autorů, které svaz zastupuje. Nedávný investigativní materiál magazínu The Atlantic ukázal, že firmy jako Suno nebo Udio k trénování modelů používají rozsáhlé databáze obsahující miliony skladeb. V databázích, které časopis zveřejnil, lze dohledat i písně řady českých a slovenských umělců.
Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Vyřešen byl problém s macOS 27 Golden Gate. Vývoj lze podpořit na Open Collective a GitHub Sponsors.
EU dnešním dnem zavedla clo ve výši 3 eur na balíky nízké hodnoty dovážené ze zemí mimo EU. To zahrnuje širokou škálu výrobků běžně nakupovaných on-line, jako jsou oděvy, hračky, elektronika a další spotřební zboží v hodnotě až 150 EUR.
Vyšel Redmine 7.0, jeden z nejlepších open source ticketovacích systémů. Došlo k migraci na Rails 8, vylepšení UI/UX, Workflow, byla přidána podpora náhledu pro Microsoft Office a LibreOffice dokumenty, došlo k výkonnostním optimalizacím a přibylo spoustu dalších oprav a novinek. Více informací v oficiálním oznámení.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 166 (pdf).
Blíží se prázdniny a než se rozutečete k moři, je na čase se opět sejít na Virtuální Bastlírně - pravidelném setkání elektroniků, ajťáků, bastlířů a obecně nadšenců do techniky. Co si pro vás strahovští bastlíři připravili tentokrát? Určitě proberou blížící se Linux Days i další události. U softwaru se chvíli zdrží a poví si kupříkladu o tom, jak se zbavit Bambu Cloudu, ale nepřijít o možnost ovládat tiskárnu na dálku. Řeč dojde i na AI,
… více »Vývojáři postmarketOS vydali verzi 26.06 tohoto operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME, KDE Plasma Mobile, Phosh a Sxmo.
Pro čtení rss aktuálně používám mutt a pro jejich stahování kombinaci programů
rsstool a sqlite3 (+
nějaké standardní příkazy) ve vlastním scriptu. Zmínil jsem se o tom a někdo jej chtěl vidět
. Celý script je velmi jednoduchý a tady je.
Nejprve jsem si vytvořil cache pro stažené rss kanály. Je to standardní databáze sqlite3 v souboru $HOME/.rss.db:
/* Pracovní tabulka pro aktuálně stažená data */
CREATE TABLE rsstool_table (
rsstool_dl_url text,
rsstool_dl_date integer,
rsstool_site text,
rsstool_url text,
rsstool_url_md5 varchar(32),
rsstool_url_crc32 varchar(8),
rsstool_date integer,
rsstool_title text,
rsstool_title_md5 varchar(32),
rsstool_title_crc32 varchar(8),
rsstool_desc text
);
/* vlastní cache položek */
create table feeds_data
( rss_site varchar(255)
, rss_url text
, rss_title text
, rss_description text
, rss_date date
, generated boolean
);
Vlastní script vypadá takto. Největší počet řádků připadá na výpis položky
.
#!/bin/bash
# konfigurace
RSSDB="$HOME/.rss.db"
SRCDB="$HOME/.rss_sources"
MDA="maildrop $HOME/.mailfilter"
DELETE_BEFORE=7
SQL="/usr/bin/sqlite3"
GDATE="/usr/bin/date"
GREP="/usr/bin/grep"
RECODE="/usr/bin/cstocs utf8 il2"
SED="/usr/bin/sed"
FOLD="/usr/bin/fold -s"
RSSTOOL="/usr/local/bin/rsstool --sql --shtml --slf"
# výpis položky ve formátu pro mail
print_message() {
URL=$1
echo 'To: Martin Lebeda <mlebeda@centrum.cz>'
echo 'Content-Transfer-Encoding: 8bit'
echo 'Content-Type: text/plain; charset="iso-8859-2"'
echo 'X-target: rss'
$SQL $RSSDB "select 'Subject: '||rss_title from feeds_data where rss_url = '$URL'"
$SQL $RSSDB "select 'From: '||rss_site from feeds_data where rss_url = '$URL'"
echo -n "Date: "
RSSDATE=`$SQL $RSSDB "select rss_date from feeds_data where rss_url = '$URL'"`
$GDATE -R -d "1970-01-01 UTC $RSSDATE seconds"
echo
$SQL $RSSDB "select rss_description from feeds_data where rss_url = '$URL'" | $FOLD
echo
echo $URL
$SQL $RSSDB "update feeds_data set generated = 1 where rss_url = '$URL'"
}
# vlastní stažení ze seznamu kanálů
for i in `$GREP -v '^#' $SRCDB | $GREP -v '^$'`; do
$RSSTOOL "$i" | $GREP 'INSERT INTO' | $RECODE | $SED -e 's/\\'\''//g' | $SQL $RSSDB
done
# vložení nových položek do hlavní tabulky
$SQL $RSSDB " insert into feeds_data ( rss_site, rss_url, rss_title,
rss_description, rss_date, generated )
select rsstool_site, rsstool_url, rsstool_title, rsstool_desc, rsstool_date, 0
from rsstool_table
where not exists (select 1 from feeds_data where rss_url = rsstool_table.rsstool_url)" && \
# čistka
$SQL $RSSDB "delete from rsstool_table"
DELDATE=`date +%s -d -${DELETE_BEFORE}days` && \
$SQL $RSSDB "delete from feeds_data where rss_date < $DELDATE"
# vypsat nové položky
for url in `$SQL $RSSDB 'select rss_url from feeds_data where generated = 0'`; do
print_message "$url" | $MDA
done
v $HOME/.rss_sources je co řádek, to url (ukázka části):
http://www.linuxexpres.cz/modules/rss/rss.php http://www.abclinuxu.cz/auto/abc.rss http://www.abclinuxu.cz/auto/zpravicky.rss
Určitě by to chtělo pár věcí dopracovat (např. respektování kódování v hlavičce kanálu), ale jinak mi už několik měsíců spolehlivě slouží.
Tiskni
Sdílej:
rss2email nebo feed2imap?
Neumím odpovědět, neboť tyto programy neznám.
Jak se tak zběžně koukám na stránky rss2email, tak asi ano, ale je to rozhodně mnohem jednodužší.
a za druhé jsem si nebyl jist, který komentář je původní C (právě tenhle /* … */) a který přišel až s C++(//)