Je tu nové vydání Computertrends 6/2025

3. 6. 2025

Sdílet

Obálka Computertrends
Autor: Internet Info DG
Magazín přináší klíčové IT trendy, které formují budoucnost firem, státní správy i průmyslu. Od umělé inteligence v datových centrech přes revoluci Wi-Fi 7 až po nové přístupy k zálohování dat – rozebíráme jejich reálný dopad. Každý článek nabízí praktické rady, zkušenosti z praxe a varování před problémy.

Co najdete v novém vydání největšího magazínu pro IT profesionály na českém trhu?

Jak zvládnout drony: Lekce z ukrajinské fronty

Konflikt na Ukrajině proměnil bezpilotní letouny v klíčovou součást moderní války. Článek rozebírá, jak se armády obou stran vypořádávají s elektronickým rušením. Ukrajina sází na autonomní drony s umělou inteligencí, které zvládají navigaci i bez spojení. 

Rusko naopak nasazuje drony řízené přes optická vlákna, imunní vůči rušičkám. Ponoříme se do strategií, které se osvědčily, a zkoumáme dopady masové výroby levných FPV dronů. Text odhaluje i psychologické aspekty – jak drony mění pohled vojáků na bojiště – a ukazuje, proč je Ukrajina dnes laboratoří pro vývoj nových vojenských technologií.

Gigawatty z moře: Datové centrum budoucnosti v Portugalsku


V portugalském Sines vzniká Start Campus – jedno z největších a nejudržitelnějších datových center v Evropě s plánovanou kapacitou 1,2 GW. Projekt využívá mořskou vodu k chlazení a staví na infrastruktuře bývalé uhelné elektrárny. Článek vysvětluje, proč je tato lokalita unikátní: kombinuje ekologické inovace s výjimečnou konektivitou díky podmořským kabelům. 

Chcete dostávat do mailu týdenní přehled článků z Computertrends? Objednejte si náš mailový servis a žádná důležitá informace vám neuteče. Objednat si lze také newsletter To hlavní, páteční souhrn nejdůležitějších článků ze všech našich serverů. Newslettery si můžete objednat na této stránce.

Ukazujeme, jak recyklace průmyslových areálů urychluje výstavbu a snižuje dopady na životní prostředí. Start Campus je inspirací pro projekty, které propojují technologický pokrok s udržitelností, a ukazuje cestu k evropskému digitálnímu uzlu budoucnosti.

Datová centra v éře AI: Energetická revoluce

Rozmach umělé inteligence zvyšuje nároky na datová centra, zejména v oblasti energetické efektivity a udržitelnosti. Článek rozebírá, proč obnovitelné zdroje už nestačí pokrýt rostoucí spotřebu, a představuje alternativy: malé modulární jaderné reaktory, vodíkové elektrárny či přesun serveroven do chladnějších oblastí. Firmy experimentují s kapalinovým chlazením, edge computingem a modulárními řešeními, aby snížily náklady. 

Upozorňujeme, že úspory musí začít už při návrhu infrastruktury a zahrnovat celou organizaci. Text završuje přehledem trendů v automatizaci, kde AI a systémy DCIM (Data Center Infrastructure Management) hrají stále větší roli při optimalizaci provozu.

Wi-Fi 7: Nová éra bezdrátových sítí

Wi-Fi 7 přináší revoluci do podnikových i domácích sítí. Kromě vyšší rychlosti a nižší latence otevírá nové možnosti pro správu, bezpečnost a škálování. Článek zkoumá, jak tato technologie mění trh s WLAN zařízeními a konkurenční prostředí mezi výrobci. 

Popisujeme praktické výzvy – od zpětné kompatibility po správu různorodých zařízení v jedné síti. Wi-Fi 7 umožňuje zvládat náročné aplikace a masivní připojení IoT, což firmám i domácnostem otevírá nové příležitosti. Text nabízí praktická doporučení pro nasazení a varuje před úskalími, která mohou komplikovat přechod na nový standard.

Zálohování dat: Strategie pro moderní IT

V éře cloudu, kontejnerizace a mikroslužeb se mění požadavky na ochranu dat. Článek vysvětluje, proč je automatizace zálohování nezbytností, a rozebírá rozdíly mezi typy záloh. Zaměřujeme se na specifika zálohování v kontejnerových prostředích, kde je klíčová konzistence a rychlá obnova. 

Představujeme trendy, jako je využití AI a principů zero-trust, a nabízíme doporučení pro IT správce. Upozorňujeme na časté chyby, které vedou ke ztrátě dat nebo výpadkům. Moderní zálohování musí být flexibilní, bezpečné a snadno spravovatelné, aby odpovídalo dynamickému prostředí IT.

docker + kubernetes školení s dotací tip

Samoobslužná analytika: Jak GenAI mění rozhodování

Pokročilá datová analytika s podporou generativní AI se stává klíčem k úspěchu firem, ale její adopce není samozřejmostí. Na základě ankety mezi organizacemi ukazujeme, proč některé firmy už analytiku aktivně využívají a zpřístupňují ji širšímu okruhu zaměstnanců, zatímco jiné váhají. 

Rozebíráme hlavní bariéry – od nedostatku dovedností po skepticismus k přínosům – a radíme, jak analytické nástroje nastavit, aby skutečně podporovaly rozhodování. Článek zdůrazňuje, jak generativní AI zjednodušuje samoobslužnou analytiku a otevírá nové možnosti pro firmy všech velikostí. 

 

Computertrends si můžete objednat i jako klasický časopis. Je jediným odborným magazínem na českém a slovenském trhu zaměreným na profesionály v oblasti informačních a komunikačních technologií (ICT). Díky silnému zázemí přináší aktuální zpravodajství, analýzy, komentáře a přehledy nejnovejších technologií dříve a na vyšší odborné úrovni, než ostatní periodika na tuzemském trhu.

Obsah Computertrends je určen odborníkům a manažerům z firem a institucí, kteří se podílejí na rozhodovacím procesu při nákupu ICT technologií. Jednotlivá čísla si můžete objednat i v digitální podobě.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }