Byla vydána nová major verze 28.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.
Český telekomunikační úřad zveřejnil Výroční zprávu za rok 2024 (pdf), kde shrnuje své aktivity v loňském roce a přináší i základní popis situace na trhu. Celkový objem přenesených mobilních dat za rok 2024 dosáhl dle odhadu hodnoty přibližně 1,73 tis. PB a jeho meziroční nárůst činí zhruba 30 %. Průměrná měsíční spotřeba dat na datovou SIM kartu odhadem dosáhla 12,5 GB – v předchozím roce šlo o 9,8 GB.
Z novinek představených na Google I/O 2025: Přehledy od AI (AI Overviews) se rozšiřují do dalších zemí. Užitečné, syntetizované přehledy od generativní AI jsou nově k dispozici i českým uživatelům Vyhledávače.
Šestice firem označovaných jako „MAMAAN“ – tedy Meta (Facebook, Instagram), Alphabet (Google), Microsoft, Apple, Amazon a Netflix – je zodpovědná za více než padesát procent světového internetového provozu. Dalšími velkými hráči jsou TikTok a Disney+. Společně tak zásadně určují podobu digitálního prostředí, spotřebitelského chování i budoucích trendů v oblasti technologií. I přesto, že se podíl těchto gigantů od roku 2023 o něco snížil, jejich dominantní postavení zvyšuje volání po regulaci.
Evropská komise (EK) navrhuje zavést plošný poplatek ve výši dvou eur (zhruba 50 Kč) za každý malý balík vstupující do Evropské unie. Poplatek se má týkat balíků v hodnotě do 150 eur (zhruba 3700 Kč), které v EU nepodléhají clu. V loňském roce bylo do EU doručeno kolem 4,6 miliardy takovýchto balíků. Poplatek má krýt náklady na kontroly rostoucího počtu zásilek levného zboží, které pochází především z Číny.
Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevily v únicích dat a případně se nechat na další úniky upozorňovat.
Jen tak, před nedávnem, z dlouhé chvíle vzniklo toliko kódu…
#include "iostream" using namespace std; class CsSuccesor { public: CsSuccesor(); CsSuccesor(CsSuccesor &that); ~CsSuccesor(); CsSuccesor& Succesor(CsSuccesor &that); friend ostream& operator <<(ostream &stream, CsSuccesor succesor); CsSuccesor& operator =(CsSuccesor &that); CsSuccesor& operator +(CsSuccesor &that); CsSuccesor& operator -(CsSuccesor &that); unsigned long long int ToInteger(); private: CsSuccesor *m_pSucc; }; CsSuccesor::CsSuccesor() { m_pSucc = NULL; } CsSuccesor::CsSuccesor(CsSuccesor &that) { m_pSucc = NULL; if (that.m_pSucc != NULL) { m_pSucc = new CsSuccesor(*(that.m_pSucc)); } } CsSuccesor::~CsSuccesor() { if (m_pSucc != NULL) { delete m_pSucc; m_pSucc = NULL; } } CsSuccesor& CsSuccesor::Succesor(CsSuccesor &that) { m_pSucc = new CsSuccesor(); if (that.m_pSucc != NULL) { m_pSucc->Succesor(*(that.m_pSucc)); } return *this; } ostream& operator <<(ostream &stream, CsSuccesor succesor) { if (succesor.m_pSucc) { stream << "Succ(" << *(succesor.m_pSucc) << ")"; } else { stream << "Zero"; } return stream; } CsSuccesor& CsSuccesor::operator =(CsSuccesor &that) { if (this != &that) { if (m_pSucc != NULL) { delete m_pSucc; m_pSucc = NULL; } if (that.m_pSucc) { m_pSucc = new CsSuccesor(*that.m_pSucc); } } return *this; } CsSuccesor& CsSuccesor::operator +(CsSuccesor& that) { CsSuccesor* out = new CsSuccesor(); if (m_pSucc != NULL) { out->m_pSucc = new CsSuccesor(*m_pSucc + that); } else { if (that.m_pSucc != NULL) { out = new CsSuccesor(that); } } return *out; } CsSuccesor& CsSuccesor::operator -(CsSuccesor& that) { CsSuccesor* out = new CsSuccesor(*this); if (that.m_pSucc != NULL) { if (m_pSucc != NULL) { delete out; out = new CsSuccesor(*m_pSucc - *that.m_pSucc); } } return *out; } unsigned long long int CsSuccesor::ToInteger() { return (m_pSucc != NULL ? m_pSucc->ToInteger() + 1 : 0); } int main() { CsSuccesor succ1; cout << succ1 << '\n' << succ1.ToInteger() << '\n'; CsSuccesor succ2(succ1); cout << succ2 << '\n' << succ2.ToInteger() << '\n'; CsSuccesor succ3(succ1.Succesor(succ2)); cout << succ3 << '\n' << succ3.ToInteger() << '\n'; CsSuccesor succ4 = succ3; cout << succ4 << '\n' << succ4.ToInteger() << '\n'; CsSuccesor succ5 = succ3 + succ4; cout << succ5 << '\n' << succ5.ToInteger() << '\n'; CsSuccesor succ6 = succ5 - succ3; cout << succ6 << '\n' << succ6.ToInteger() << '\n'; return 0; }
…netvrdím, že ve všech rysech je to dokonalé, ale zábavné a hravé.
Tiskni
Sdílej:
void do(int A[], int s) {
int i, j, k, l;
k = size / 2;
while (k > 0) {
for (i = k; i < s; i++) {
j = i;
l = A[i];
while ((j >= k) && (A[j-k] > l)) {
A[j] = A[j - k];
j = j - k;
}
A[j] = l;
}
if (k == 2)
k = 1;
else
k = (int) (k / 2.2);
}
}
Eliminace poznámek a (tím blbým způsobem jsou i vhodné názvy proměnných formou poznámek a přesto znám programátory, kteří používají jména jako: xx, yy, xxx, yyy, xxxx, yyyy) substituce názvů proměnných jejich stručnějším ekvivalentem, zde imho naprosto znečitelnila tento (jinak profláklý) kus kódu.
Ono to zcela jistě bylo myšleno jako ironie, ale někdo by se té citace mohl chytnout.
(Přebráno s mírnou úpravou z wikipedie.)
void do(int A[], int s) { int i, j, k, l; k = size / 2; while (k > 0) { for (i = k; i < s; i++) { j = i; l = A[i]; while ((j >= k) && (A[j-k] > l)) { A[j] = A[j - k]; j = j - k; } A[j] = l; } if (k == 2) k = 1; else k = (int) (k / 2.2); } }
#!/bin/bash echo "Nejaky text" echo "Nejaky text" echo "Nejaky text" echo "Nejaky text" echo "Nejaky text" echo "Nejaky text"
CsSuccesor& CsSuccesor::operator -(CsSuccesor& that) { CsSuccesor* out = new CsSuccesor(*this); if (that.m_pSucc != NULL) { if (m_pSucc != NULL) { delete out; out = new CsSuccesor(*m_pSucc - *that.m_pSucc); } } return *out; }tak se mi udelalo nevolno a ted jdu uz radsi spat... jen tak na okraj - pan je Javista ???
Nechybi, ta je tam implicitni - po urcite dobe bude prislusny proces automaticky ukoncen operacnim systemem.Alebo ujom z elektrarni