Windows 8 a Windows Phone 8 mají společné více než jen číslo v názvu. Stačí se podívat na tyto dva operační systémy a můžete říct, že Microsoft chce sjednotit zařízení s Windows Phone, tablety a počítače s Windows 8 a herní konzoli Xbox.
Jako hlavní klíč teď funguje Microsoft Account (dříve Live ID). Připojuje ke SkyDrive, Xboxu a obchodům s aplikacemi Microsoftu, ale také propojuje ostatní online účty, jako ten na Facebooku, Googlu, LinkedIn a Twitteru.
Všechny tyto funkce se poté integrují do Windows 8 a WP8. Můžete tak vaše fotografie na Facebooku sledovat v aplikaci People, tedy Lidé, nebo je nahrávat do jiných aplikací. Lidé, které sledujete na LinkedInu a Twitteru, se objeví ve vašich seznamech kontaktů. Přidružený účet Google zase umožňuje synchronizaci kontaktů, kalendáře a Gmailu. Žádná jiná platforma není tak dobře integrovaná s ostatními online službami.
Ve chvíli, kdy jste všechny tyto účty propojili skrze Microsoft ID, budou integrovány ve všech vašich tabletech s Windows 8 nebo smartphonech s WP8. Kromě přihlášení už pro synchronizaci nemusíte dělat vůbec nic.
Přemýšlejte o tom tímto způsobem: v minulosti jste mohli používat Windows, aniž byste si vytvářeli Microsoft ID, a byli jste spokojeni. S Windows 8 a WP8 byste bez přihlášení k Microsoft Account přišli o velkou porci funkcionalit. V této oblasti totiž panuje mnohem hlubší sjednocení těchto dvou platforem.
Samozřejmě to znamená, že nejnovější systém Windows je odlišný od toho, který jsme se my, počítačoví veteráni, v minulosti naučili mít rádi. Ale v tom to je: vize Microsoftu pro telefony s WP8 a počítače se zaměřuje na jiný typ uživatele – uživatele, který má v jedné ruce telefon, ve druhé tablet a v cloudu data.
';
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';
}
}
O2 rozšiřuje nabídku svého bezpečnostního centra (O2 SEC) - služby, které dosud mohly využívat největší korporace a státní správa, jsou nově dostupné i pro střední a velké firmy. O2 Security Centrum přináší platformu pro bezpečnostní dohled, správu a analýzu logů, pokročilé SIEM technologie a podporu při splnění požadavků nové legislativy NIS2 – to vše jako službu.
3. 6.
Ředitelé internetu se sejdou v Praze
Organizace ICANN, klíčová organizace, která má na starosti správu a koordinaci různých aspektů internetové infrastruktury, bude mít zasedání v Praze, a to konkrétně 9. až 12. června proběhne v Praze ICANN83 Policy Forum.
ICANN83 v pražském Kongresovém centru spojí účastníky z vlád, občanské společnosti, soukromého sektoru a technické komunity, aby společně pracovali na důležitých politických otázkách týkajících se systému doménových jmen (DNS) a jedinečných identifikačních systémů internetu.
2. 6.
Spojení na dráze
Na začátku června došlo k oficiálnímu spojení společností ČD - Telematika a ČD - Informační Systémy (ČD-IS). „Nová“ ČD - Telematika má přibližně 900 zaměstnanců a stává se jedním z největších poskytovatelů ICT služeb v oblasti dopravy a státní správy v České republice.
Fúze přináší sjednocení klíčových kompetencí obou firem, zjednodušení procesů, posílení inovačního potenciálu a zákazníkům širší portfolio služeb.
19. 5.
Pozvánka: Spravujte kontejnery efektivně a bezpečně
Řešení pro správu kontejnerů napříč datovými centry a cloudy spolu s nejnovějšími trendy a technologiemi v oblasti kontejnerizace budou v centru pozornosti konference Kontajnery v praxi, která se uskuteční 27. května 2025 v prezenční formě v bratislavském hotelu Lindner.
Konference nabídne i praktické pohledy na využití, správu, škálování a zabezpečení kontejnerů. Slovenští a čeští odborníci zde představí i konkrétní příklady z praxe a zaměří se na témata jako migrace, automatizace nebo zálohovaní a obnova dat. Více informací a registrace zde.
6. 5.
Miliony pro DecisionRules
Český startup DecisionRules, který vyvíjí cloudovou
platformu pro automatizaci rozhodovacích procesů bez nutnosti programování, uzavřel investiční kolo ve výši 1,6 milionu eur. Kolo vedl fond Lighthouse Ventures za účasti Czech
Founders VC, BD Partners, Chilli Ventures a andělských investorů Oryho Weihse a Michaela
Rostocka-Poplara.
Investice bude použita na rozšíření působnosti v USA a Velké Británii, kde již firma zaznamenala silný
zájem, a dále na rozvoj produktu, včetně nových funkcí postavených na umělé inteligenci. Cílem je
zpřístupnit automatizaci rozhodování širšímu spektru firem, včetně malých a středních podniků a týmů
bez technického zázemí.