Nové Google Gears je pluginem pro Internet Explorer a Firefox přinášející možnost používat internetové aplikace i offline. Ačkoliv byl údajně vyvinut ve spolupráci s Mozillou, Operou a Adobe, v Opeře tato funkce asi zatím nefunguje. Naopak Adobe ji plánuje implementovat do své platformy Apollo.
Z pohledu uživatele si musíte pouze stáhnout dotyčný plugin, a pak u konkrétních internetových aplikací, které jej využívají, odfajkovat, že souhlasíte. Není tak samozřejmě možné používat jakoukoliv AJAX aplikaci, ta k tomu musí být uzpůsobena. V tuto chvíli si to můžete otestovat asi pouze na Google Readeru, další kusy z kancelářského balíku nejen Googlu budou jistě pokračovat. Nejedná se totiž o řešení určené pouze pro potřeby Googlu, ten jej naopak nabízí jako otevřený projekt umožňující podporovat offline režim libovolné aplikaci napsané v javascriptu.
V Google Readeru se objevil nový odkaz – „offline“. Po přechodu do tohoto stavu je jistý objem dat uložen na váš disk, v tom případě konkrétně 2000 článku ve čtečce. Dále můžete aplikaci téměř libovolně používat a listovat texty, dokonce je díky lokálnímu uložený dat i o něco svižnější. Nějakým způsobem jsou pravděpodobně i ukládany informace o tom, co s Google Readerem děláte, aby údaje o přečtených textech mohly být po opětovném přihlášení sesynchronizovány s online verzí.
Sledovat vývoj internetových aplikací je fascinující, před rokem by mě vůbec nenapadlo, jak daleko se posune a jak blízkou konkurencí desktopových programů začnou být. V současné době probíhá několik zajímavých iniciativ, které rozhodnou o podobě používání počítačů. Celá tématika je dosti technická a nikdo se jí v Česku systematicky nevěnuje – dokonce bych řekl, že najít srozumitelný zdroj s dobrými znalostmi je těžké i na anglickém internetu. Proto alespoň malý seznam toho, co se děje, jaké změny provázejí prorůstání webového a desktopového světa.
Pro tvorbu desktopovách aplikací existuje jazyků celá řada, v této oblasti však se nijak neorientuji. Pro internetové aplikace je podstatné oddělení samotného chodu programu a jeho rozhraní. Na pozadí může běžet celkem cokoliv, podstatné je právě to, s čím přichází do styku uživatel. Výstup internetové aplikace by mohlo a snad i mělo být obyčejné HTML. Ostatně právě připravované HTML 5, o kterém zasvěceně bloguje Martin Hassman, má ambice dohnat překotný vývoj, který udělal z webu takovou džungli. Pro příklad – pro emaily existuje standardní formát odkazu mailto:, pro kalendáře, mapy atd. nic obdobného nefunguje, ačkoliv se to snaží změnit mikroformáty. Zobrazování obrázků je standardní součást každého prohlížeče, tag IMG se součástí specifikace a nic dalšího není potřeba. Pro přehrávání audia a videa opět nic takového není a je si nutno vypomáhat externími pluginy.
Také proto dnes internetové aplikace pracují nejčastěji s javascriptem a flashem, přičemž z různých důvodů většinou vyhrává javascript, ačkoliv flash se poslední dobou také pěkně chytá a v některých oblastech samozřejmě dominuje (hry, video). Výjimečně se lze setkat i s použitím Javy. Do tohoto obrázku by také měly zapadnout nové technologie – JavaFX Script a Microsoft Silverlight.
Srůstání internetových a desktopovách aplikací je obousměrné, do prohlížeče se dostávají schopnosti pracovat s diskem a offline, mimo prohlížeč unikají aplikace vyvinuté a pracující online. Google Gears je jednoduché rozšíření javascriptu, které umí jednu věc – umožňuje AJAX aplikacím ukládat data na disk uživatele. Dalším pojmem, se kterým se je možné setkat, je runtime. Moc tomu nerozumím, ale představuji si to jako rámcovou aplikaci umožňující chod nějakých programů na počítači. Potom by tuto roli plnil v zásadě každý prohlížeč, který umožňuje chod internetových aplikací, ty však nemají onu funkci provozu offline a mimo rozhraní prohlížeče.
Runtime Mozilly je XULRunner, ten umožňuje chod Firefoxu, ale je na něm postavena i celá řada dalších aplikací od Joostu až po Songbird. V současné době prý v komunitě Mozilly probíhá diskuse, jak daleko by v podpoře této platformy měla jít a do jaké míry by měl být vývoj zaměřen převážně na Firefox – ten by se mimochodem ve třetí verzi měl dočkat podpory offline používání online aplikací, jestli to bude nějak spojeno s Google Gears nevím. V současné chvíli však neexistuje samostatně stahovatelný XULRunner, což předpokládám znamená, že jej každý na něm postavený program má vždy znovu sbalený v sobě. Rád bych v této souvislosti odkázal na iniciativu Matthewa Gertnera z AllPeers – Mozpad.
Neslibněji – ale možná jen proto, že se mi jej myslím podařilo nejlépe pochopit – podle mého názoru vypadá Apollo od Adobe. Tato platforma by měla vývojářům internetových aplikací nabídnout v zásadě 3 věci. 1. překlopení aplikací napsaných jako normální klasické AJAX/flash stránky do desktopové verze, která by vzhledem k využívání lokálních zdrojů běžela rychleji a offline. 2. oproštění od rozhraní prohlížeče – proč by třeba tabulkový procesor měl běžet v rozhraní s adresním řádkem atd.? 3. přístup k lokálním datům.
Apollo je myslím přesně to, na co IT svět čeká. V blízké budoucnosti by se mohl online a offline, lokální a vzdálený, webový a desktopový svět jednoduše prolnout. Z uživatelského pohledu nebude rozdíl mezi webem a desktopem, oboje mu bude schopno nabídnout stejnou funkcionalitu, oboje bude schopno pracovat i bez připojení, oboje bude umět brát si data ze sítě nebo lokálního disku – otázkou bude jen účelnost umístění aplikace. Pravidelně používané programy náročné na rozhraní budou mimo prohlížeč, webové služby, které jsou spíše stránky než aplikace budou v něm. Tam, kde se dá očekávat „brouzdání“, tam je vhodným nástrojem prohlížeč s univerzální schopností prohlížet webové stránky. Pro jednoúčelové aplikace je vhodnější umístění mimo něj, pro ně nemá prohlížeč žádnou přednost.
Omlouvám za případné věcné chyby. Byl bych jen rád, kdyby se konečně našel někdo dostatečně znalý, kdo by o všech těchto platformách byl schopen napsat netechnický, srozumitelný souhrnný přehled. Třeba takový blog na Lupě by byl ideální formou, jak tuto oblast sledovat a překládat pro technicky neznalé. :-)
"Sledovat vývoj internetových aplikací je fascinující, před rokem by mě vůbec nenapadlo, jak daleko se posune a jak blízkou konkurencí desktopových programů začnou být." --- osobně jsem ještě nenarazil na online email, který by konkuroval Outlooku, podobně na čtečku, editor souborů co by konkuroval Wordu 2007, atd. JavaScript je tak omezené a pomalé médium (plus latenci připojení, byť v ms), že to nikdy nebude jiné. Webové aplikace zaujmou pár "migrujících" lidí (obchodníci, studenti), ale drtivá většina lidá má počítač v práci či doma, tam u něj stabilně sedí, a tam používá svoje pokročilé desktopové aplikace, a rozhodně nechce downgrade na 0.1% funkcí online věcí..
[2] pro základní a nouzové použití ano, ale na toto prostě Gmail nemá:
http://radekhulan.cz/img/outlook/Microsoft_Outlook_2007.png
Nehledě na to, že data na lokále mají obrovský význam. Na Vista mám integrované vyhledávání ve všech dokumentech, emailech, souborech. Pokud mám email na Gmailu, mohu hledat tam, ale už se mi to neprováže na obsah mého lokálního / síťového disku.
Gmail je opravdu "z nouce cnost", je to lepší než nic, ale na integrované Vista + Desktop Search + Outlook se to opravdu nikdy nemůže chytat. To by Google muset dělat vlastní online OS ;-)
Web jasně vyhrává. Také Google Docs zatím nejsem ochoten používat, nicméně Gmail je pro velkou většinu uživatelů naprosto optimální - ostatně webmail používá určitě více lidí než desktopové programy. Stejně tak v každé nově se objevivší oblasti dominují vesměs webová řešení - RSS čtečky, mapy apod.
Nicméně ten naznačený vývoj myslím není v protikladu stoupenců desktopu, ten má jasně viditelné výhody, stejně jako své nevýhody. Splýváním obojího by aplikace mohly vzít to lepší z obojího - kontakt se světem, přístup k souborům odkudkoliv, aktualizace bez nové instalace a zároveň lepší stabilitu a rychlost.
"ostatně webmail používá určitě více lidí než desktopové programy" -- to v žádném případě. Neznám jedinou firmu, co by používala webmail, a to je drtivá většina zákazníků ;-)
Pokud chci mít email kdekoliv, mohu onen Gmail použít, proč ne, ale jen jako skladiště emailů a stahování přes POP3 do Outlooku. Tím docílím toho, že mám emaily online i offline (mohu požít třeba nový @hotmail na Live.com).
Navíc si mohu Microsoft Outlook nechat synchronizovat na Windows Mobile chytrý telefon, takže poté mám skutečně "přístup k souborům odkudkoliv", ale jen díky Microsoftu, Google s tím nemá co dělat ;-)
Jen toto spojení mi nabídne skutečně nejvyšší funkčnost a rychlost.
Vezmi si práci na projektu - potřebuji mít přehled o emailech (Outlook), koncepčního zadání projektu (PowerPoint), API rozhraní (PDF soubory na lokálním disku), meetincích (Outlook kalendář), kontaktech (Outlook Kontakty), a toto celé mít kdykoliv online, offline, či mobilně (Windows Mobile). Google je zde pozadu, jeho Gmail používají jen studenti, pro firmy nemá žádný přínos, byl by to donwgrade na 0.1% funkcí.
"ostatně webmail používá určitě více lidí než desktopové programy"
Tohle je spíš výkřik do tmy, než nějaké podložené tvrzení, že? Jsem si jist, že by se o tom dalo s úspěchem pochybovat. Osobně bych tipoval něco mezi 10:1 - 100:1 ve prospěch desktopových klientů oproti webmailu.
[6] napsal jsem k tomu rovnou článek:
http://radekhulan.cz/item/google-je-oproti-microsoftu-velice-pozadu
[13] Já ti jej také neberu. :-) Jednak si myslím, že asi nepoužíváš internet jako řadový uživatel, jednak ani nezpochybňuji výhody desktopových řešení jako je třeba lokální uložení dat. Ale myslím si, že aplikace postupně směřují do integrace obou přístupů. A že bude stále obtížnější poznat, co je webmail a deskmail.
"to je součást výhod internetových aplikací, že je pro lidi jednodušší je používat." -- omyl, nikoliv používat, pouze je jednodušší počáteční zprovoznění. Následné používání je mnohem složitější a méně pohodlné, jak dokazuje fakt, že z Outlooku zpět na online mail ještě nikdo neutekl, naopak ano.
@jilm: Já ti tvůj názor neberu, ale prostě s ním nesouhlasím. Vídím to stejně jako RH, možná je to tím, že mi je taky 34 a jsem také Radek :o)
Další věc je IMHO bezpečnost online aplikací. Nedovedu si představit, že by firmy, řekněme třeba ze sektoru automotive, vypustily svá data do široširého internetu.
"Pokud chci mít email kdekoliv, mohu onen Gmail použít, proč ne, ale jen jako skladiště emailů a stahování přes POP3 do Outlooku. Tím docílím toho, že mám emaily online i offline (mohu požít třeba nový @hotmail na Live.com)."
Přesně tak to dělám já. Také mám účet na gmailu (i když ne klasický @gmail, ale gmail for domain) a online rozhraní jsem viděl poprvé a naposledy při nastavování POP3.
Alternativou k Outlooku je OWA (Outlook Web Access) http://en.wikipedia.org/wiki/Outlook_Web_Access v IE pro radu lidi od Outlooku k nerozeznani. Ve FF uz je teda ten rozdil videt.
xulrunner asi stáhnout odněkud půjde protože:
$ aptitude show xulrunner
Balík: xulrunner
Nový: ano
Stav: nenainstalovaný
Verze: 1.8.0.10-3ubuntu1
Priorita: volitelný
Sekce: universe/devel
Správce: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Velikost po rozbalení: 934k
Závisí na: libbz2-1.0, libc6 (>= 2.5-0ubuntu1), libglib2.0-0 (>= 2.12.9), libgtk2.0-0 (>= 2.10.3), libidl0, libmozjs0d (>= 1.8.0.5), libnspr4-0d (>= 1.8.0.10), libreadline5 (>= 5.2), libstdc++6 (>= 4.1.2), libx11-6, libxt6, libxul0d (>=
1.8.0.1-9)
Navrhuje: xulrunner-gnome-support
Popis: XUL + XPCOM application runner
XULRunner is a single "gecko runtime" that can be used to bootstrap multiple XUL + XPCOM applications that are as rich as Firefox and Thunderbird.
XUL is Mozilla's XML based User Interface language that lets you build feature-rich cross platform applications. These applications are easily customized with alternative text, graphics and layout so that they can be readily branded or
localized for various markets. Web developers already familiar with Dynamic HTML (DHTML) will learn XUL quickly and can start building applications right away.
XPCOM is a cross platform component model. It has multiple language bindings and IDL descriptions so programmers can plug their custom functionality into the framework and connect it with other components.
Trend je jasný - vše směřuje k online aplikacím. Software jako takový se brzy stane součástí historie. Bude to fungovat tak, jak ukazuje Google Gears. Aplikace bude součástí webového prohlížeče a bude nějak jedno, zda jsem nebo nejsem připojen.
Co se týče vášnivé diskuse, tak Microsoft Outlook osobně považuji za strašlivý program, který žere zbytečně paměť. Vyzkoušeno a ověřeno.
Používám Gmail (a v práci na Ubuntu zase používám klienta Mozilla Thunderbird).
Online aplikace? Pro firmu? Jako jediné? Na cizím serveru bez garancí? Nenech se vysmát.. Firma potřebuje Outlook 2007 + Exchange Server + Sharepoint 2007 server:
http://www.microsoft.com/sharepoint/default.mspx
Google se svojím Gmailem je prostě "prodavač zmrzliny na plovárně zdarma". Přitahuje jen studentíky a podobné lidi. Jediný jeho cíl je být "velký bratr", a díky analýze obsahu emailů poskytovat cílenější reklamu pomocí AdWords.
Vždy mě pobaví, když studentíci něco hodnotí ze svéhonezralého pohledu, bez znalosti business prostředí..
[1] Poměr schránek na freemailech vůči těm firemním je snad už jasný. Je plno firem, kterým i dnes stačí mail na Seznamu ;-) Většina firem je totiž těch "malých"! Stejná situace je s tím Wordem. Google Docs bohatě stačí.
[4] A co Google Desktop? Mě docela vyhovuje v kanclu i doma.
[6] Google Apps je normální profesionální služba. Pokud by neměla šanci, tak ji Google nebude nabízet. Ostatně i u nás se už prodává ;-)
[11] Houby, freemail je úspěšný, protože lidi se připojují z práce, z domova, ze školy, z internetové kavárny... prostě z různých míst a z různých počítačů.
[15] Že bych byl výjimka?! Pracuji pro dvě firmy, kde mám účty v Outlooku a přesto jako hlavní mail používám Gmail.
[21] Aplikace Google pro vaši doménu (http://www.google.com/a/) je normální relativně slušně garantovaná služba. Spolehlivost si dovolím tipovat na vyšší než mají spousty firem s mizernými či flákajícími se adminy.
[21] Radku, děkuji za názor. Myslím si, že by si měl každý vybrat to, co mu vyhovuje. Google nabízí premium služby a správu Sharepointu je dnes možné také outsourcovat. Skype, dříve kecálek pro masu, začal poskytovat byznys služby.
MS Project je možná výborný nástroj na správu projektů, ale online BaseCampHQ vyniká jednoduchostí, přehledností a použitelností. Cena je samozřejmě někde jinde.
Seznam.cz používal komerční Oracle a později to hodnotí jako svůj nejhorší omyl atd.
Vždy existuje alternativa. Mělo by ovšem platit, že nejprve si zjistím účel nasazení nějakého řešení a teprve poté vybírám technologii, která tento můj cíl splní. Zatím mám pocit, že naše debata probíhala na úrovni technologií a to je špatně.
"Vždy existuje alternativa." -- jenže ona alternativa téměř neexistuje. Google Gmail je prostě další z mnoha webmailů, nezajímavý. Google Calendar je mírně zajímavější, ale opět je to nedokonalé a omezené řešení. Chybí integrace na firemní řešení a na další (zejména přenosná) zařízení.
Oproti tomu kombinace Sharepoint + Exchange + Outlook + Windows Mobile mi pokrývá veškeré potřebné komponenty, od emailové komunikace s klientem, správu projektu, vedení databáze kontaktů, nesmírně důležitou správu a verzování dokumentů, až po vlastní aplikace (Sharepoint Designer), a to vše mám na PC (offline), online či na chytrém mobilním telefonu.
Toto opravdu nemá konkurenci, a přirovnávat nezralé a ničím vyjímečné Google webové aplikace k tomu, co reálně umí Microsoft, a to co prodává stovkám tisíc firem, to prostě nelze.
"z Outlooku zpět na online mail ještě nikdo neutekl..."
Já ano. Zrovna před pár dny jsem přešel z Outlooku na Gmail. Zčásti to je pokus, který třeba zase stornuju, ale myslím, že jsem svůj krok uvážil dobře.
Studentík zrovna nejsem, e-mail používám v business prostředí už čtrnáctým rokem. Za tu dobu jsem od Outlooku utekl dvakrát. Poprvé asi před pěti lety na Bat, před necelým rokem jsem se k němu zkusil vrátit kvůli zbytku firmy a všem těm geniálním integracím, které popisuje Radek, a teď jsem utekl znovu.
Vrátil bych se k Batu, který stále považuji za nejlepšího desktopového klienta, ale nakonec jsem se rozhodl pro Gmail. Dost s tím souvisí i to, že chci e-mail jako prostředek komunikace co nejvíc omezit -- stejně je rok od roku méně a méně použitelný.
[23] Radku, děkuji za zajímavou diskusi. V této chvíli nemám po ruce konkrétní příklady alternativních řešení pro náhradu kombinace Sharepoint + Exchange + Outlook + Windows Mobile. Bylo by samozřejmě zajímavé zjistit, zda taková náhrada existuje.
Rád bych ale zdůraznil drobnost, kterou jsem svůj příspěvek do diskuse ukončil. Zatím diskutujeme čistě o technologiích (systém XY je lepší než...) a to je špatně.
Když si například já definuji, co bych potřeboval, vyjde mi jako nejlepší a nejvhodnější řešení BasecampHQ nebo Mantis, které poměrem cena/výkon jasně poráží konkurenci. Někdo jiný může dostat jako výsledek úplně jinou technologii.
Vám možná vyšlo nějaké zcela jiné řešení, klidně postavené na bázi Microsoftu. Pokud máte takové cíle + požadavky, které tato kombinace splňuje, je to v pořádku. Nelze ale tvrdit, že produkt XY je za každých okolností nejlepší.
Není. Ve svém bývalém zaměstnání jsme místo Sharepoint nakonec s velkým úspěchem používali pro vzájemné sdílení dokumentů MediaWiki (a to byl Sharepoint součástí našeho serveru). MediaWiki prostě splnila naše cíle a požadavky lépe než komerční řešení od Microsoftu.
Neda mi to a musim napsat.
Od prvniho vyzkouseni Gmailu nepouzivam desktopovy email.
Od prvniho vyzkouseni Google Calendar nepouzivam desktopovy kalendar. (co treba upozorneni pomoci SMS zdarma?)
Od prvniho vyzkouseni Google Documents nepouzivam Word a Excel.
Od prvniho vyzkouseni Google Reader nepouzivam desktopovou RSS ctecku.
Jak sem na tom s mobilem a PDA?
Gmail - jede v mobilu s JAVA a to prostrednictvim specialni aplikace, perfektne pouzitelne, rychle! Jde i bez JAVA aplikace v Opere Mini.
Google Calendar - jede v mobilu pomoci Opera Mini a synchronizace s PDA pomoci programku oggsync.com
Google Documents - pro cteni v jakemkoli prohlizeci pro mobil nebo PDA
Google Reader - jede v jakemkoli prohlizeci pro mobil a PDA
A ted na zaver vyhody Gmailu:
Finta neni v 2GB schrance, to je nesmysl. Finta je v konverzacich! Z dvaceti emailu k jednomu tematu mam jednu krasnou konverzaci, pokud se k tematu vyjadri vic lidi, kazdy je zvyrazneny jinou barvou. Tyto konverzace mam stejne ve velkem Gmailu, tak i v mobilu!!! V mobilu si muzu prohlizet prilohy doc, xls, pdf a co ja vim co jeste bez nutnosti specialnich programu, Gmail je prevede do HTML :-) V mobilu oznacim email jako precteny, hned je ve velkem Gmailu oznaceny jako precteny. Rychle hledani ve vsech 20 000 emailech i v mobilu. Stitkovani, jednomu emailu muze byt, na rozdil od adresaru, prideleno vice stitku. Integrovany Google Talk s ukladanim historie psani na serveru. Umi tohle vas Outlook a Windows mobile? :-)
[33] kdepak, pro IT firmy stojí v rámci Microsoft Action Packu 10 licencí klienta + 1 licence na server na veškerý SW of Microsoftu jen $295:
http://www.microsoft.com/cze/partner/licensing/actionpack/default.mspx
A toto opravdu nemá konkurenci..
Zde je seznam obsaženého SW:
http://www.microsoft.com/cze/partner/licensing/actionpack/licences.mspx
Taky mi to neda... pokud neznate nikoho, kdo utekl od Outlooku ke gmailu, tak ja to treba jsem. A to nejsem student - ve 33 letech uz by to bylo trapne, ze? :) - a s pocitacem pracuji kazdy den, at je to administrace jinych PC nebo tvorba projektu. Proste Gmail mi vic vyhovuje prave kvuli tomu, co napsal cubas vyse. A k nadmernemu vyskytu slova Google, Radime, je to stejne jako nadmerny vyskyt slova Microsoft :)
Podle mne je volba software otazkou volby a osobnich preferenci. Navic myslim ze nekteri lide (hlavne v domacnostech) davaji prednost webmailu proste proto, ze na internetu brouzdaji naprosto bezne a spoustet kvuli mailu specializovanou aplikaci je proste otravne.
pan Hulán může psát jak chce; má na to právo. Otázkou je, kdo ho poslechne. Google služby mám zdarma, jsou svižné, baví mě to s nimi pro to nové workflow - příjemná změna oproti zmatku v MS produktech, a hlavně: neztrácím čas jejich údržbou. Třeba Outlook je moloch, co dělá kraviny (např. Yahoo účet mám řazený hned třikrát..., takže zřejmě moc nepočítá s takovou samozřejmostí, jako jsou web-based maily) . Ten výše zmíněný layout je vzorem neuspořádanosti. Jde to vážně jednodušeji a při zachování úrovně komfortu... Ovšem že třeba Google spresdsheet je spíše na úrovni základní třídy, ale ono se to vyvrbí. Pro pár svých zaměstnanců nemíním investovat cokoliv do planety microsoft. Na big business mám pár let času:) a za tu dobu bude všechno jinak
Haló, tady uživatel:
- primárně používá rozhraní gmail, protože je přehledné, má užitečné fce, a protože sedává u více než jednoho PC (ten uživatel). Občas by neškodilo trochu zrychlit (gmail i uživatel)
- sekundárně používá Thunderbird, soukromně i pracovně
- testuje zrovna něco v Outlooku 2007 a z toho nepřehledného modrého chaosu se určitě každou chvílí zblázní
- je už vážně otrávený z toho pána co se všude vyskytuje a nechává po sobě ty svoje agitky...
Zdravím,
taky nejsem studentík, je mi 33 a na netu a PC pracuji denně již řadu let. Za tu dobu jsem provedl spoustu různých pokusů s migrací na různé platformy. Zároveň musím mít dualboot a na disku se mi točí WIN XP a Linux Mandriva. Mám PC, notebook a mobil s WIN Mobile. Hodně jezdím a potřebuji mít přístup ke svým datům odkudkoliv, také dost spolupracuji s lidmi umístěnými geograficky v jiném městě, státu, kontinentu...
No a teď k věci, samozřejmě uznávám že momentální stav Gůglích aplikací se někomu může zdát směšný ale to jde zvládnout a vývoj je patrný prakticky každý den, největší problém při všech těch mých pokusech byl s udržením konzistence dat při jejich využívání z různých zařízení a OS.
To mě nedávno přivedlo k přechodu na Gmail, Docs nejen s osobními záležitostmi ale i firemními.
Zatím to klape perfektně, sice někteří kolegové ze začátku prskali že se musí kvůli mně znovu něco nového učit, nicméně při troše úsilí se povedlo.
Jsem asi technický fanda a nejsem zcela objektivní, ale tomuto trendu směrem k online office velmi fandím a to o čem jsem nevěřícně před lety četl se stává skutečností a jsem všemi deseti pro.
MMCH, z MS aplikací vlastně používám jen OS.
Priznam se, ze nekolikrat jsem se snazil zapomenout na webove rozhrani gmailu a nekolikrat jsem nastavoval Outlook a stahoval do nej asi 500MB emailu. To se mi stejne nakonec nepodarilo, protoze Google pri velkym mnozstvi najednou stazenych mailu ucet zablokuje. Navic mi v Outlooku chybi moznost skvele vyuzit zobrazeni mailu jako konverzaci, coz sice v Outlooku nejak jde, ale me se to nepodarilo nastavit tak, abych byl spokojen. A hlavne - Outlook zabira docela dost operacni pameti, nez se mu spusti Outlook, nez zmizi "Priprava odeslat a prijmout" a zpravy se skutecne stahnou, nez se Outlook z taskbaru maximalizuje. Kdyz mam spustenej samotnej Outlook (at uz 2003, nebo 2007), tak je to pohadka, ale mam-li spusteny i jiny aplikace, je to des a hruza v jednom. Navic se Outlook trochu opici po Gmailu temi stitky. A razeni do slozek je fakt opruz, slozity nastavovani pravidel, ktery pak stejne fungujou jen z casti. Souhlasim s tim, ze pro firemni pouziti je Outlook dobrej, ale na doma? Dekuji, nechci (ackoliv vim, ze mi ho nikdo nenuti)
chyba s Google gears v0.5.21.0 ve Firefoxu v3.11 a Wordpres Ad media: media-upload.php?post_id=712&type=image&TB_iframe=true
Padá Firefox.
http://o106.com/wordpres-s-google-gears-a-chyba-nahravani-obrazku/
Moc se mi najít tyto aplikace užitečné http://www.onchannel.net
Stejně tak v každé nově se objevivší oblasti dominují vesměs webová řešení - RSS čtečky, mapy apod.
https://blog.lupa.cz/jilm/google-gears-online-aplikace-offline/pridat/snow rider
Řada věcí z července 2007 již neplatí!
Dovolím si hrubě nesouhlasit s názorem na MS Outlook 2007. Považuji ho za naprosto nejhorší aplikaci od Microsoftu. Když pominu jeho naprostou nestabilitu a obrovské systémové nároky, připadá mi navíc velmi nepřehledný (narozdíl od předchozí verze). Nový systém záložek způsobil, že i zdatní uživatelé zmateně klikají a hledají tu či onu funkčnost. Chaos, který způsobilo přesunutí většiny funkčních tlačítek do jiných oblastí, jednoduše nechápu.
GMail dle mého názoru NEKONKURUJE Outlooku! Outlooku spíš konkuruje iGoogle resp. Google Apps. Z hlediska vyhledávání dokumentů na desktopu (Windows Search) bych se zastal Googlu - Google Desktop (je výkonější, rychlejší a stabilnější). Co se týká vyhledávání e-mailů, lokálních dokumentů, apod. platí, že Google Desktop dokáže integrovat vyhledávání lokálních dokumentů s e-maily na Gmail.
Stejně tak nová verze Office 2007 s novými formáty (docx, xlsx, ...), které jsou nekompatibilní zpětně je velmi "příjemná" novinka. Je třeba seriózně uznat, že Google Docs v současné podobě NEJSOU SCHOPNY MS Office konkurovat!!!
Závěrem - na většinu věcí používám MS produkty, protože si to žádá mé okolí - nikoliv proto, že by byly výrazně lepší...
Poměr OWA a přímého Oultooku, nějaké ty problémy...
Vím, že je to trochu mimo téma Google, ale dovolím si poznamenat pár osobních zkušeností. On už to tu někdo "načnul"... Nebudu se zabývat WinMobile aplikacemi ani BlackBerry a podobnými (třeba PUSH) technologiemi.
Alespoň v mém ranku figuruje především klasické připojení Outlooku (vevnitř jednoznačně) a to i zvenčí. Buď via VPN nebo RPC-over-HTTP (firma má pronájem v budově banky a ta jim nepustí nic jiného než 443, kromě WEBu). OWA (Exchange 2003) je uživateli považováno spíše za pomocnou/nouzovou variantu. Navíc nemá to veškeré vybavení jako normální Outlook. Každopádně je to možnost, jak se připojit skutečně odkudkoliv aniž by uživatel musel konfigurovat na cizím stroji třeba VPN. Trochu jiná situace je u OWA 2007... Zde jsou možnosti OVLÁDÁNÍ podstatně rozšířeny. Co je ale trochu tragédie je Outlook 2007. Již ve 3 případech začal bez nějakého jasného důvodu (3 nezávislé firmy) "hltit" databázi Exchange 2003 (u 2007 nevím)! Prostě začne generovat požadavky co síťovka stačí! :-)) Nafukuje obvykle priv1.edb dokud nedoleze ke stropu. Zajímavé je to, že ve 2 z těch 3 případů se to NEPROJEVILO na žádném z mailboxů! Pouze na databázi. Co následuje "na stropě" znáte... Pokud je to počítač výkonný a má dobrou konektivitu je schopen zahltit Exchange 2003 tak, že přestane obsluhovat kohokoliv jiného! Nejedná se o žádné servery-ořezávátka! Pak stačí obvykle OffLine defragmentace databáze a obvykle (ne vždy, jednou to bylo "nakopnutým" profilem Outlooku) to na stanici končí reinstalací Office2007 (Čert nám ji byl dlužen!). Bohužel, uživatelům nevysvětlím, že si budou muset zvykat! :-))
Přeji všem pevné zdraví!
Roman Kubálek
Google Apps a pod...
Nemám proti tomu nic! Neposuzuji MS vs OpenSource! Naopak podobné projekty vítám. Ale teď trochu praxe (firemní).
Odpovězte si na následující otázky, a myslete si, že za to třeba odpovídáte:
1/ Svěřil(a) by jste firemní komunikaci (řekněme firma 500 lidí) do rukou subjektu, který to může (i když je to nepravděpodobné, ale záruky tu nejsou žádné!) přes noc vypnout a zavrhnout?
2/ Svěřil(a) by jste citlivá data (a ta dnes ve vnitropodnikové poště ROZHODNĚ jsou) do rukou "cizího" subjektu? Který navíc neovládáte a těžko se s ním budete třeba i soudit?
3/ INTERNET (konektivita) může mít výpadek (ano, malá pravděpodobnost, ale setkal se s tím každý!), INTRANET jede dál! Pokud je firma "jedna kancelář", není to takový problém (Pepa s Frantou se v té jedné místnosti asi domluví), ale u firmy větší to již problém bude! Ale i Pepa s Frantou mohou mít citlivé informace co nemají opustit firmu!
4/ Řekněte !například! řediteli velké automobilky, že jeho mail s tajnými fotkami nového modelu auta se válí "kdesi" na serveru úplně cizí společnosti a Vaši trvanlivost v minutách spočítáte na prstech jedné ruky!
Tedy WEB-APPS ano, ale ne všude a za každých podmínek...
Přeji pevné zdraví!
Roman Kubálek
I am really impressed with your article. The information you share will be an important document for me to learn more about this topic. slither io
Google Gears was a technology introduced by Google to enable offline access to online applications. It allowed users to interact with web applications even when they were not connected to the internet. The main features of Google Gears included a local server for storing application pages offline, a relational database drift hunters for storing data on the user's computer, and a worker pool for handling background tasks.
Connections Game is a daily game in which players look for similar connections between words. In Connections Game, players try to make four groups of four words while making no more than four mistakes. The Connections gameplay element offers an extra degree of excitement and strategic thought, requiring players to carefully examine their choices and connections.
Je vidět, jak už tehdy začínalo prorůstání webových a desktopových aplikací a jak velká očekávání byla kolem Google Gears nebo Adobe Apollo. Dnes už to bereme skoro jako samozřejmost – offline režimy, progresivní webové aplikace, možnost spouštět webovky jako desktopové appky… Tehdy to ale muselo působit jako velký skok dopředuSpace Waves.
Z pohledu uživatele si musíte pouze stáhnout dotyčný plugin, a pak u konkrétních internetových aplikací, které jej využívají, odfajkovat, že souhlasíte. Není tak samozřejmě možné používat jakoukoli AJAX aplikaci, ta k tomu musí být uzpůsobena. V tuto chvíli si to můžete otestovat asi pouze na Google Readeru, další kusy z kancelářského balíku nejen Googlu budou jistě pokračovat. Nejedná se totiž o řešení určené pouze pro potřeby Googlu, ten jej naopak nabízí jako otevřený projekt umožňující podporovat offline režim libovolné aplikace napsané v JavaScriptu. https://www.lupa.cz/aktuality/chcete-dohlizet-na-ceskou-televizi-v-rade-ct-bude-volne-misto/ https://run3online.pro
Find out which Percy Jackson cabin you truly belong in! Take our fun and insightful Percy Jackson cabin quiz to discover your godly parentage and your rightful place among the demigods.
Nicely I undoubtedly enjoyed reading through this. This sgsoceanside particular tip provided by a person is actually very useful with regard to correct preparing
Nyní bloguji na jilm.cz.
Přečteno 70 038×
Přečteno 69 251×
Přečteno 58 730×
Přečteno 58 437×
Přečteno 57 041×
Warning
File: .../stable/php-libs/appShare/libs/Blogs/BlogsSelection.php:147
137: ->where("opinions.status = %s", "active") 138: ->orderBy("opinions.insert_date DESC") 139: ->limit($count); 140: $data = $query->fetchAll(); 141: foreach ($data as $row) { 142: $row->user_deleted = null; 143: if ($row->user_id) { 144: $user = dibi::getConnection('usersys') 145: ->query('SELECT * FROM users WHERE user_id = %i', $row->user_id) 146: ->fetch(); 147: $row->user_deleted = $user->deleted; 148: } 149: } 150: // ulozeni do CACHE 151: $cache->save($cacheKey, $data, array(
22: protected $commentsCount = 5; 23: 24: public function __construct($blogId = 0) { 25: $this->blogId = $blogId; 26: } 27: 28: public function render() { 29: if (!$this->blogId) return; 30: 31: // [future] Zrefaktorovat komponentu tak, aby se jí daly předávat závislosti 32: $this->getTemplate()->opinions = BlogsSelection::getLastOpinionsForBlog($this->blogId, $this->commentsCount, $this->getPresenter()->getContext()->getByType(CacheFactory::class), $this->getPresenter()->getContext()->getByType(Shared_Blogs_Helper::class)); 33: // render sablony zajisti predek 34: parent::render(); 35: } 36:
| $blogId | 8
|
|---|---|
| $count | 5
|
| $cacheFactory | |
| $blogsHelper |
90: $control->setExtraParameters($parameters[\Shared_BaseComponent::EXTRA_PARAM_NAME]); 91: unset($parameters[\Shared_BaseComponent::EXTRA_PARAM_NAME]); 92: } else { 93: $control->clearExtraParameters(); 94: } 95: } 96: 97: if ($isDebug) { 98: // call method this way is much faster 99: // see http://grokbase.com/t/php/php-internals/115qyp1bjk/call-user-func-performance-and-dynamic-code 100: if (!$parameters) $control->$method(); 101: else call_user_func_array([$control, $method], array_values($parameters)); 102: return; 103: } 104:
87: ob_end_clean(); 88: } else { 89: echo ob_get_clean(); 90: } 91: } 92: ob_start(function () {}); 93: try { 94: echo '<div class="section section--sidebar-in">'; 95: ob_start(); 96: try { 97: IInfo\LatteMacros::renderControl("lastBlogComments", "render", [], $this->global->uiControl); 98: } finally { 99: $ʟ_ifc[3] = rtrim(ob_get_flush()) === ''; 100: } 101: echo '</div>
1: {extends '../@default.latte'} 2: 3: 4: {block sidebarMain-aboveWrapper} 5: {control footerInfo} 6: {/block} 7: 8: 9: {block sidebarMain-content} 10: <div class="page-block--actualities page-block design-box"> 11: {control blogAuthorInfo} 12: <div class="section section--sidebar-in" n:ifcontent>{control htmlBadges}</div> 13: <div class="section section--sidebar-in" n:ifcontent>{control mostReadBlogArticles}</div> 14: <div class="section section--sidebar-in" n:ifcontent>{control lastBlogComments}</div> 15: <div class="section section--sidebar-in" n:ifcontent>{control blogsLabelsTagcloud}</div>
| $control | |
|---|---|
| $method | 'render'
|
| $parameters | array (0)
|
| $container |
299: 300: if (!$block) { 301: $hint = ($t = Latte\Helpers::getSuggestion($this->getBlockNames($layer), $name)) 302: ? ", did you mean '$t'?" 303: : '.'; 304: $name = $layer ? "$layer $name" : $name; 305: throw new Latte\RuntimeException("Cannot include undefined block '$name'$hint"); 306: } 307: 308: $this->filter( 309: function () use ($block, $params): void { reset($block->functions)($params); }, 310: $mod, 311: $block->contentType, 312: "block $name" 313: );
| $ʟ_args | null
|
|---|
354: $block->functions = array_merge($block->functions, $functions); 355: } 356: 357: 358: /** 359: * @param string|\Closure|null $mod content-type name or modifier closure 360: */ 361: private function filter(callable $function, $mod, string $contentType, string $name): void 362: { 363: if ($mod === null || $mod === $contentType) { 364: $function(); 365: 366: } elseif ($mod instanceof \Closure) { 367: echo $mod($this->capture($function), $contentType); 368:
302: ? ", did you mean '$t'?" 303: : '.'; 304: $name = $layer ? "$layer $name" : $name; 305: throw new Latte\RuntimeException("Cannot include undefined block '$name'$hint"); 306: } 307: 308: $this->filter( 309: function () use ($block, $params): void { reset($block->functions)($params); }, 310: $mod, 311: $block->contentType, 312: "block $name" 313: ); 314: } 315: 316:
| $function | |
|---|---|
| $mod | null
|
| $contentType | 'html'
|
| $name | 'block sidebarMain-content'
|
89: public function blockSidebarMain_adverts_sticky_1(array $ʟ_args): void 90: { 91: extract($this->params); 92: extract($ʟ_args); 93: unset($ʟ_args); 94: echo '<div class="page-block--ad_square1 page-block design-box"> 95: '; 96: IInfo\LatteMacros::renderControl("ad", "render", ['sidebar-sticky-1'], $this->global->uiControl); 97: $this->renderBlock('sidebarMain-adverts--sticky-1-aditional-content', get_defined_vars()) /* line 13 */; 98: echo "\n"; 99: $this->renderBlock('sidebarMain-content', get_defined_vars()) /* line 14 */; 100: echo ' 101: </div> 102: '; 103: }
4: 5: {block content}{* [future] possibly remove this block completely since the layout (DOM structure) of all pages should be the same. difference(s) should be present in CSS if needed *} 6: <div id="sidebar" class="js-sticker-wrapper sidebar layout-columns__item--sidebar layout-columns__item design-sidebar design-tile--version-2 design-tile"> 7: 8: {block sidebarMain-adSidebarPartner} 9: {control ad 'sidebar-partner'} 10: {/block} 11: 12: {block sidebarMain-aboveContent}{/block} 13: 14: <div class="js-sticker-wrapper__items"> 15: {block sidebarMain-adverts--sticky-1} 16: <div class="page-block--ad_square1 page-block design-box"> 17: {control ad 'sidebar-sticky-1'} 18:
| $name | 'sidebarMain-content'
|
|---|---|
| $params |
299: 300: if (!$block) { 301: $hint = ($t = Latte\Helpers::getSuggestion($this->getBlockNames($layer), $name)) 302: ? ", did you mean '$t'?" 303: : '.'; 304: $name = $layer ? "$layer $name" : $name; 305: throw new Latte\RuntimeException("Cannot include undefined block '$name'$hint"); 306: } 307: 308: $this->filter( 309: function () use ($block, $params): void { reset($block->functions)($params); }, 310: $mod, 311: $block->contentType, 312: "block $name" 313: );
| $ʟ_args | null
|
|---|
354: $block->functions = array_merge($block->functions, $functions); 355: } 356: 357: 358: /** 359: * @param string|\Closure|null $mod content-type name or modifier closure 360: */ 361: private function filter(callable $function, $mod, string $contentType, string $name): void 362: { 363: if ($mod === null || $mod === $contentType) { 364: $function(); 365: 366: } elseif ($mod instanceof \Closure) { 367: echo $mod($this->capture($function), $contentType); 368:
302: ? ", did you mean '$t'?" 303: : '.'; 304: $name = $layer ? "$layer $name" : $name; 305: throw new Latte\RuntimeException("Cannot include undefined block '$name'$hint"); 306: } 307: 308: $this->filter( 309: function () use ($block, $params): void { reset($block->functions)($params); }, 310: $mod, 311: $block->contentType, 312: "block $name" 313: ); 314: } 315: 316:
| $function | |
|---|---|
| $mod | null
|
| $contentType | 'html'
|
| $name | 'block sidebarMain-adverts--sticky-1'
|
47: extract($ʟ_args); 48: unset($ʟ_args); 49: echo '<div id="sidebar" class="js-sticker-wrapper sidebar layout-columns__item--sidebar layout-columns__item design-sidebar design-tile--version-2 design-tile"> 50: '; 51: $this->renderBlock('sidebarMain-adSidebarPartner', get_defined_vars()) /* line 5 */; 52: echo "\n"; 53: $this->renderBlock('sidebarMain-aboveContent', get_defined_vars()) /* line 8 */; 54: echo ' 55: <div class="js-sticker-wrapper__items"> 56: '; 57: $this->renderBlock('sidebarMain-adverts--sticky-1', get_defined_vars()) /* line 10 */; 58: echo "\n"; 59: $this->renderBlock('sidebarMain-adverts--sticky-2', get_defined_vars()) /* line 28 */; 60: echo "\n"; 61: $this->renderBlock('sidebarMain-adverts--sticky-3', get_defined_vars()) /* line 36 */;
1: {block sidebar__default--columnMainAdditionalContent}{/block} 2: </div> {* for "layout-columns" and related to $isLayoutPageColumnsClosed in "@footer--RootLike.latte" *} 3: 4: 5: {block content}{* [future] possibly remove this block completely since the layout (DOM structure) of all pages should be the same. difference(s) should be present in CSS if needed *} 6: <div id="sidebar" class="js-sticker-wrapper sidebar layout-columns__item--sidebar layout-columns__item design-sidebar design-tile--version-2 design-tile"> 7: 8: {block sidebarMain-adSidebarPartner} 9: {control ad 'sidebar-partner'} 10: {/block} 11: 12: {block sidebarMain-aboveContent}{/block} 13: 14: <div class="js-sticker-wrapper__items"> 15: {block sidebarMain-adverts--sticky-1}
| $name | 'sidebarMain-adverts--sticky-1'
|
|---|---|
| $params |
299: 300: if (!$block) { 301: $hint = ($t = Latte\Helpers::getSuggestion($this->getBlockNames($layer), $name)) 302: ? ", did you mean '$t'?" 303: : '.'; 304: $name = $layer ? "$layer $name" : $name; 305: throw new Latte\RuntimeException("Cannot include undefined block '$name'$hint"); 306: } 307: 308: $this->filter( 309: function () use ($block, $params): void { reset($block->functions)($params); }, 310: $mod, 311: $block->contentType, 312: "block $name" 313: );
| $ʟ_args | null
|
|---|
354: $block->functions = array_merge($block->functions, $functions); 355: } 356: 357: 358: /** 359: * @param string|\Closure|null $mod content-type name or modifier closure 360: */ 361: private function filter(callable $function, $mod, string $contentType, string $name): void 362: { 363: if ($mod === null || $mod === $contentType) { 364: $function(); 365: 366: } elseif ($mod instanceof \Closure) { 367: echo $mod($this->capture($function), $contentType); 368:
302: ? ", did you mean '$t'?" 303: : '.'; 304: $name = $layer ? "$layer $name" : $name; 305: throw new Latte\RuntimeException("Cannot include undefined block '$name'$hint"); 306: } 307: 308: $this->filter( 309: function () use ($block, $params): void { reset($block->functions)($params); }, 310: $mod, 311: $block->contentType, 312: "block $name" 313: ); 314: } 315: 316:
| $function | |
|---|---|
| $mod | null
|
| $contentType | 'html'
|
| $name | 'block content'
|
13: public function main(): array 14: { 15: extract($this->params); 16: if ($this->getParentName()) { 17: return get_defined_vars(); 18: } 19: $this->renderBlock('sidebar__default--columnMainAdditionalContent', get_defined_vars()) /* line 1 */; 20: echo ' 21: </div> 22: '; 23: $this->renderBlock('content', get_defined_vars()) /* line 3 */; 24: return get_defined_vars(); 25: } 26: 27:
1: {block sidebar__default--columnMainAdditionalContent}{/block} 2: </div> {* for "layout-columns" and related to $isLayoutPageColumnsClosed in "@footer--RootLike.latte" *} 3: 4: 5: {block content}{* [future] possibly remove this block completely since the layout (DOM structure) of all pages should be the same. difference(s) should be present in CSS if needed *} 6: <div id="sidebar" class="js-sticker-wrapper sidebar layout-columns__item--sidebar layout-columns__item design-sidebar design-tile--version-2 design-tile"> 7: 8: {block sidebarMain-adSidebarPartner} 9: {control ad 'sidebar-partner'} 10: {/block} 11: 12: {block sidebarMain-aboveContent}{/block} 13: 14: <div class="js-sticker-wrapper__items"> 15: {block sidebarMain-adverts--sticky-1}
| $name | 'content'
|
|---|---|
| $params |
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
193: 194: if ($this->referenceType === 'import') { 195: if ($this->parentName) { 196: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 197: } 198: 199: } elseif ($this->parentName) { // extends 200: ob_start(function () {}); 201: $this->params = $this->main(); 202: ob_end_clean(); 203: $this->createTemplate($this->parentName, $this->params, 'extends')->render($block); 204: 205: } elseif ($block !== null) { // single block rendering 206: $this->renderBlock($block, $this->params); 207:
| $block | null
|
|---|
160: 161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) {
| $block | null
|
|---|
53: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/ArchiveModule/actualities.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 54: } elseif ($isSidebarTypeArchiveLabelDetail) /* line 45 */ { 55: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/ArchiveModule/detail.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 56: } elseif ($isSidebarTypeArticle) /* line 47 */ { 57: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/TextModule/article.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 58: } elseif ($isSidebarTypeGeneralText) /* line 49 */ { 59: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/TextModule/generalText.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 60: } elseif ($isSidebarTypeBlogs) /* line 51 */ { 61: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/BlogsModule/shared.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 62: } elseif ($isSidebarTypeBlogsDetail) /* line 53 */ { 63: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/BlogsModule/detail.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 64: } elseif ($isSidebarTypeBlogsIndex) /* line 55 */ { 65: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/BlogsModule/index.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 66: } elseif ($isSidebarTypeDatabaseCatalog) /* line 57 */ { 67: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/DatabaseNew/catalog.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render();
1: {default $isSidebarTypeActuality = false} 2: {default $isSidebarTypeAnniversaryComics = false} 3: {default $isSidebarTypeArchiveActualities = false} 4: {default $isSidebarTypeArchiveLabelDetail = false} 5: {default $isSidebarTypeArticle = false} 6: {default $isSidebarTypeAwards = false} 7: {default $isSidebarTypeBlogs = false} 8: {default $isSidebarTypeBlogsDetail = false} 9: {default $isSidebarTypeBlogsIndex = false} 10: {default $isSidebarTypeConsultingDetail = false} 11: {default $isSidebarTypeConsultingQuestions = false} 12: {default $isSidebarTypeDatabaseCatalog = false} 13: {default $isSidebarTypeDatabaseView = false} 14: {default $isSidebarTypeDiscussionDetail = false} 15: {default $isSidebarTypeIndex = false}
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
193: 194: if ($this->referenceType === 'import') { 195: if ($this->parentName) { 196: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 197: } 198: 199: } elseif ($this->parentName) { // extends 200: ob_start(function () {}); 201: $this->params = $this->main(); 202: ob_end_clean(); 203: $this->createTemplate($this->parentName, $this->params, 'extends')->render($block); 204: 205: } elseif ($block !== null) { // single block rendering 206: $this->renderBlock($block, $this->params); 207:
| $block | null
|
|---|
160: 161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) {
| $block | null
|
|---|
110: '; 111: IInfo\LatteMacros::renderControl("similarArticles", "render", [], $this->global->uiControl); 112: echo '</div> 113: '; 114: if (isset($opinionsListing) && $opinionsListing) /* line 80 */ { 115: $_HT_macro_arg = $opinionsListing /* line 81 */; 116: IInfo\LatteMacros::renderLazyControl($this->global->uiPresenter, $_HT_macro_arg, []); 117: } 118: echo '</div> 119: '; 120: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('../../../footer.latte', $this->getName(), false), ['isSidebarTypeBlogsDetail' => true] + $this->getParameters(), "includeX")->render(); 121: return get_defined_vars(); 122: } 123: 124:
1: {includeX '../../../header.latte'} 2: 3: 4: {includeShared '/common/additionalCssResolver.inc.latte', 5: isPageWithFancyBox => true, 6: } 7: {includeShared '/common/additionalJsResolver.inc.latte', 8: isPageWithEasing => true, 9: isPageWithMouseWheel => true, 10: isPageWithFancyBox => true, 11: } 12: 13: 14: <div class="design-tile--version-1 design-tile"> 15:
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
193: 194: if ($this->referenceType === 'import') { 195: if ($this->parentName) { 196: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 197: } 198: 199: } elseif ($this->parentName) { // extends 200: ob_start(function () {}); 201: $this->params = $this->main(); 202: ob_end_clean(); 203: $this->createTemplate($this->parentName, $this->params, 'extends')->render($block); 204: 205: } elseif ($block !== null) { // single block rendering 206: $this->renderBlock($block, $this->params); 207:
| $block | null
|
|---|
160: 161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) {
| $block | null
|
|---|
92: 93: /** 94: * Renders template to output. 95: * @param object|mixed[] $params 96: */ 97: public function render(string $name, $params = [], ?string $block = null): void 98: { 99: $template = $this->createTemplate($name, $this->processParams($params)); 100: $template->global->coreCaptured = false; 101: ($this->probe)($template); 102: $template->render($block); 103: } 104: 105: 106: /**
| $block | null
|
|---|
40: /** 41: * Renders template to output. 42: */ 43: public function render(?string $file = null, array $params = []): void 44: { 45: Nette\Utils\Arrays::toObject($params, $this); 46: if (\cfg::$debug['tmplDump']) { 47: $filePath = strstr($file ? : $this->file, "templates/"); 48: echo '<pre class="nette-dump"><span class="nette-dump-object">' . get_class($this->control) . ": $filePath" . '</span></pre>'; 49: } 50: $this->latte->render($file ?: $this->file, $this); 51: } 52: 53: 54: /**
| $name | '/www/virtual/martin/stable/lupa/app/templates/BlogsModule/ArticleModule/Article/default.latte'
|
|---|---|
| $params |
40: return $this->source; 41: } 42: 43: 44: /** 45: * Sends response to output. 46: */ 47: public function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse): void 48: { 49: if ($this->source instanceof Nette\Application\UI\Template) { 50: $this->source->render(); 51: 52: } else { 53: echo $this->source; 54: }
161: 162: Arrays::invoke($this->onPresenter, $this, $this->presenter); 163: $response = $this->presenter->run(clone $request); 164: 165: if ($response instanceof Responses\ForwardResponse) { 166: $request = $response->getRequest(); 167: goto process; 168: } 169: 170: Arrays::invoke($this->onResponse, $this, $response); 171: $response->send($this->httpRequest, $this->httpResponse); 172: } 173: 174: 175: public function processException(\Throwable $e): void
| $httpRequest | |
|---|---|
| $httpResponse |
80: } 81: 82: 83: /** 84: * Dispatch a HTTP request to a front controller. 85: */ 86: public function run(): void 87: { 88: try { 89: Arrays::invoke($this->onStartup, $this); 90: $this->processRequest($this->createInitialRequest()); 91: Arrays::invoke($this->onShutdown, $this); 92: 93: } catch (\Throwable $e) { 94: Arrays::invoke($this->onError, $this, $e);
| $request |
|---|
13: !empty($_SERVER["HTTPS"]), 14: 'http://forum.lupa.cz/', 15: trim(AppConfig::$modulesUrl['blogs'], '/'), 16: true 17: ); 18: $redirector->injectDibiConnections($bootstrap->getContext()->getService('dibiConnections')); 19: $redirector->redirectUrl(); 20: unset($redirector); 21: 22: $bootstrap->setupRouting(); 23: $bootstrap->getApplication()->run(); 24:
| HTTPS | 'on'
|
|---|---|
| SCRIPT_URL | '/jilm/google-gears-online-aplikace-offline/'
|
| SCRIPT_URI | 'http://blog-lupa-martin.imho.cz/jilm/google-gears-online-aplikace-offline/'
|
| TZ | 'Europe/Prague'
|
| HTTP_HOST | 'blog-lupa-martin.imho.cz'
|
| HTTP_ACCESS_CONTROL_ALLOW_ORIGIN | '*'
|
| HTTP_REFERRER_POLICY | 'no-referrer-when-downgrade'
|
| HTTP_X_REAL_IP | '216.73.216.123'
|
| HTTP_CONNECTION | 'close'
|
| HTTP_ACCEPT | '*/*'
|
| HTTP_USER_AGENT | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)'
|
| HTTP_ACCEPT_ENCODING | 'gzip, br, zstd, deflate'
|
| HTTP_REFERER | 'https://blog-lupa-martin.imho.cz/jilm/google-gears-online-aplikace-offline'
|
| HTTP_COOKIE | 'tracy-session=3b19b17b29; _nss=1'
|
| HTTP_X_HTTPS | '1'
|
| PATH | '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
|
| LD_LIBRARY_PATH | '/opt/mozjpeg/lib64'
|
| SERVER_SIGNATURE | |
| SERVER_SOFTWARE | 'Apache/2.4.38 (Debian)'
|
| SERVER_NAME | 'blog-lupa-martin.imho.cz'
|
| SERVER_ADDR | '127.0.0.1'
|
| SERVER_PORT | '80'
|
| REMOTE_ADDR | '216.73.216.123'
|
| DOCUMENT_ROOT | '/www/virtual/martin/stable/lupa/document_root/'
|
| REQUEST_SCHEME | 'http'
|
| CONTEXT_PREFIX | ''
|
| CONTEXT_DOCUMENT_ROOT | '/www/virtual/martin/stable/lupa/document_root/'
|
| SERVER_ADMIN | '[no address given]'
|
| SCRIPT_FILENAME | '/www/virtual/martin/stable/lupa/document_root/index.php'
|
| REMOTE_PORT | '53522'
|
| GATEWAY_INTERFACE | 'CGI/1.1'
|
| SERVER_PROTOCOL | 'HTTP/1.0'
|
| REQUEST_METHOD | 'GET'
|
| QUERY_STRING | ''
|
| REQUEST_URI | '/jilm/google-gears-online-aplikace-offline/'
|
| SCRIPT_NAME | '/jilm/google-gears-online-aplikace-offline/'
|
| PHP_SELF | '/jilm/google-gears-online-aplikace-offline/'
|
| REQUEST_TIME_FLOAT | 1762197115.328533
|
| REQUEST_TIME | 1762197115
|
| __NF | Nette Session |
|---|
| Nette.Http.UserStorage/ | null
|
|---|
| APP_DIR | '/www/virtual/martin/stable/lupa/app'
|
|---|---|
| APP_LIB_DIR | '/www/virtual/martin/stable/lupa/app/libs'
|
| LIB_DIR | '/www/virtual/martin/stable/php-libs'
|
| APP_SHARED_DIR | '/www/virtual/martin/stable/php-libs/appShare'
|
| APP_SHARED_LIB_DIR | '/www/virtual/martin/stable/php-libs/appShare/libs'
|
| APP_TEMPLATE_DIR | '/www/virtual/martin/stable/lupa/app/templates'
|
| APP_SHARED_TEMPLATE_DIR | '/www/virtual/martin/stable/php-libs/appShare/templates'
|
| WWW_DIR | '/www/virtual/martin/stable/lupa/document_root'
|
| RAMDISK | '/mnt/ramdisk'
|
| WORK_DIR | '/www/virtual/martin/stable/lupa/work'
|
| CACHE_DIR | '/www/virtual/martin/stable/lupa/work/cache'
|
| NETTE_CACHE_DIR | '/www/virtual/martin/stable/lupa/work/cache.nette'
|
| LOCAL_CACHE_DIR | '/www/virtual/martin/stable/lupa/work/cache.local'
|
| CHARSET | 'utf-8'
|
| DB_CHARSET | 'utf8'
|
| DB_ERROR_DUPLICATE_ENTRY | 1062
|
| MYSQLI_REFRESH_REPLICA | 64
|
| HTMLPURIFIER_PREFIX | '/www/virtual/martin/stable/lupa/vendor/ezyang/htmlpurifier/library'
|
| GEOIP_COUNTRY_BEGIN | 16776960
|
| GEOIP_STATE_BEGIN_REV0 | 16700000
|
| GEOIP_STATE_BEGIN_REV1 | 16000000
|
| GEOIP_STANDARD | 0
|
| GEOIP_MEMORY_CACHE | 1
|
| GEOIP_SHARED_MEMORY | 2
|
| STRUCTURE_INFO_MAX_SIZE | 20
|
| DATABASE_INFO_MAX_SIZE | 100
|
| GEOIP_COUNTRY_EDITION | 1
|
| GEOIP_PROXY_EDITION | 8
|
| GEOIP_ASNUM_EDITION | 9
|
| GEOIP_NETSPEED_EDITION | 10
|
| GEOIP_REGION_EDITION_REV0 | 7
|
| GEOIP_REGION_EDITION_REV1 | 3
|
| GEOIP_CITY_EDITION_REV0 | 6
|
| GEOIP_CITY_EDITION_REV1 | 2
|
| GEOIP_ORG_EDITION | 5
|
| GEOIP_ISP_EDITION | 4
|
| SEGMENT_RECORD_LENGTH | 3
|
| STANDARD_RECORD_LENGTH | 3
|
| ORG_RECORD_LENGTH | 4
|
| MAX_RECORD_LENGTH | 4
|
| MAX_ORG_RECORD_LENGTH | 300
|
| GEOIP_SHM_KEY | 1329681409
|
| US_OFFSET | 1
|
| CANADA_OFFSET | 677
|
| WORLD_OFFSET | 1353
|
| FIPS_RANGE | 360
|
| GEOIP_UNKNOWN_SPEED | 0
|
| GEOIP_DIALUP_SPEED | 1
|
| GEOIP_CABLEDSL_SPEED | 2
|
| GEOIP_CORPORATE_SPEED | 3
|
| GEOIP_DOMAIN_EDITION | 11
|
| GEOIP_COUNTRY_EDITION_V6 | 12
|
| GEOIP_LOCATIONA_EDITION | 13
|
| GEOIP_ACCURACYRADIUS_EDITION | 14
|
| GEOIP_CITYCOMBINED_EDITION | 15
|
| GEOIP_CITY_EDITION_REV1_V6 | 30
|
| GEOIP_CITY_EDITION_REV0_V6 | 31
|
| GEOIP_NETSPEED_EDITION_REV1 | 32
|
| GEOIP_NETSPEED_EDITION_REV1_V6 | 33
|
| GEOIP_USERTYPE_EDITION | 28
|
| GEOIP_USERTYPE_EDITION_V6 | 29
|
| GEOIP_ASNUM_EDITION_V6 | 21
|
| GEOIP_ISP_EDITION_V6 | 22
|
| GEOIP_ORG_EDITION_V6 | 23
|
| GEOIP_DOMAIN_EDITION_V6 | 24
|
| CITYCOMBINED_FIXED_RECORD | 7
|
| FULL_RECORD_LENGTH | 50
|
| TEXY_ALL | true
|
| TEXY_NONE | false
|
| TEXY_CONTENT_MARKUP | |
| TEXY_CONTENT_REPLACED | |
| TEXY_CONTENT_TEXTUAL | |
| TEXY_CONTENT_BLOCK | |
| TEXY_VERSION | '2.9.3'
|
| TEXY_HEADING_DYNAMIC | 1
|
| TEXY_HEADING_FIXED | 2
|
| TEXY_CHAR | 'A-Za-z\x{C0}-\x{2FF}\x{370}-\x{1EFF}'
|
| TEXY_MARK | '\x14-\x1F'
|
| TEXY_MODIFIER | |
| TEXY_MODIFIER_H | |
| TEXY_MODIFIER_HV | |
| TEXY_IMAGE | |
| TEXY_LINK_URL | |
| TEXY_LINK | |
| TEXY_LINK_N | |
| TEXY_EMAIL | |
| TEXY_URLSCHEME | '[a-z][a-z0-9+.-]{0,20}:'
|
| Apache Version | Apache/2.4.38 (Debian) |
| Apache API Version | 20120211 |
| Server Administrator | [no address given] |
| Hostname:Port | lupa-martin.imho.cz:0 |
| User/Group | www-data(33)/33 |
| Max Requests | Per Child: 0 - Keep Alive: on - Max Per Connection: 100 |
| Timeouts | Connection: 300 - Keep-Alive: 5 |
| Virtual Server | Yes |
| Server Root | /etc/apache2 |
| Loaded Modules | core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cache mod_cgi mod_deflate mod_dir mod_env mod_expires mod_fcgid mod_file_cache mod_filter mod_headers mod_include mod_mime prefork mod_negotiation mod_php mod_proxy mod_proxy_connect mod_proxy_fcgi mod_proxy_http mod_remoteip mod_reqtimeout mod_rewrite mod_setenvif mod_slotmem_shm mod_socache_shmcb mod_ssl mod_status mod_userdir |
| Directive | Local Value | Master Value |
|---|---|---|
| engine | On | On |
| last_modified | Off | Off |
| xbithack | Off | Off |
| Variable | Value |
|---|---|
| HTTPS | on |
| SCRIPT_URL | /jilm/google-gears-online-aplikace-offline/ |
| SCRIPT_URI | http://blog-lupa-martin.imho.cz/jilm/google-gears-online-aplikace-offline/ |
| TZ | Europe/Prague |
| HTTP_HOST | blog-lupa-martin.imho.cz |
| HTTP_ACCESS_CONTROL_ALLOW_ORIGIN | * |
| HTTP_REFERRER_POLICY | no-referrer-when-downgrade |
| HTTP_X_REAL_IP | 216.73.216.123 |
| HTTP_CONNECTION | close |
| HTTP_ACCEPT | */* |
| HTTP_USER_AGENT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
| HTTP_ACCEPT_ENCODING | gzip, br, zstd, deflate |
| HTTP_REFERER | https://blog-lupa-martin.imho.cz/jilm/google-gears-online-aplikace-offline |
| HTTP_COOKIE | tracy-session=3b19b17b29; _nss=1 |
| HTTP_X_HTTPS | 1 |
| PATH | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| LD_LIBRARY_PATH | /opt/mozjpeg/lib64 |
| SERVER_SIGNATURE | <address>Apache/2.4.38 (Debian) Server at blog-lupa-martin.imho.cz Port 80</address> |
| SERVER_SOFTWARE | Apache/2.4.38 (Debian) |
| SERVER_NAME | blog-lupa-martin.imho.cz |
| SERVER_ADDR | 127.0.0.1 |
| SERVER_PORT | 80 |
| REMOTE_ADDR | 216.73.216.123 |
| DOCUMENT_ROOT | /www/virtual/martin/stable/lupa/document_root/ |
| REQUEST_SCHEME | http |
| CONTEXT_PREFIX | no value |
| CONTEXT_DOCUMENT_ROOT | /www/virtual/martin/stable/lupa/document_root/ |
| SERVER_ADMIN | [no address given] |
| SCRIPT_FILENAME | /www/virtual/martin/stable/lupa/document_root/index.php |
| REMOTE_PORT | 53522 |
| GATEWAY_INTERFACE | CGI/1.1 |
| SERVER_PROTOCOL | HTTP/1.0 |
| REQUEST_METHOD | GET |
| QUERY_STRING | no value |
| REQUEST_URI | /jilm/google-gears-online-aplikace-offline/ |
| SCRIPT_NAME | /jilm/google-gears-online-aplikace-offline/ |
| HTTP Request Headers | |
|---|---|
| HTTP Request | GET /jilm/google-gears-online-aplikace-offline/ HTTP/1.0 |
| Host | blog-lupa-martin.imho.cz |
| HTTP_X_FORWARDED_PROTO | https |
| Access-Control-Allow-Origin | * |
| Referrer-Policy | no-referrer-when-downgrade |
| X-Real-IP | 216.73.216.123 |
| Connection | close |
| accept | */* |
| user-agent | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
| accept-encoding | gzip, br, zstd, deflate |
| referer | https://blog-lupa-martin.imho.cz/jilm/google-gears-online-aplikace-offline |
| cookie | tracy-session=3b19b17b29; _nss=1 |
| X-HTTPS | 1 |
| HTTP Response Headers | |
| X-Powered-By | Nette Framework 3 |
| X-Frame-Options | SAMEORIGIN |
| Set-Cookie | _nss=1; path=/; secure; HttpOnly; SameSite=Strict |
| Vary | X-Requested-With,Accept-Encoding |
| Content-Security-Policy | upgrade-insecure-requests |
| Content-Encoding | gzip |
| Referrer-Policy | no-referrer-when-downgrade |
| Access-Control-Allow-Origin | * |
| Access-Control-Allow-Headers | * |
| Connection | close |
| Content-Type | text/html; charset=utf-8 |
| BCMath support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| bcmath.scale | 0 | 0 |
| BZip2 Support | Enabled |
| Stream Wrapper support | compress.bzip2:// |
| Stream Filter support | bzip2.decompress, bzip2.compress |
| BZip2 Version | 1.0.6, 6-Sept-2010 |
| Calendar support | enabled |
| PHP Version | 8.0.30 |
| Directive | Local Value | Master Value |
|---|---|---|
| allow_url_fopen | On | On |
| allow_url_include | Off | Off |
| arg_separator.input | & | & |
| arg_separator.output | & | & |
| auto_append_file | no value | no value |
| auto_globals_jit | On | On |
| auto_prepend_file | no value | no value |
| browscap | no value | no value |
| default_charset | UTF-8 | UTF-8 |
| default_mimetype | text/html | text/html |
| disable_classes | no value | no value |
| disable_functions | pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, | pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, |
| display_errors | On | Off |
| display_startup_errors | Off | Off |
| doc_root | no value | no value |
| docref_ext | no value | no value |
| docref_root | no value | no value |
| enable_dl | Off | Off |
| enable_post_data_reading | On | On |
| error_append_string | no value | no value |
| error_log | no value | no value |
| error_prepend_string | no value | no value |
| error_reporting | 32767 | 22527 |
| expose_php | Off | Off |
| extension_dir | /usr/lib/php/20200930 | /usr/lib/php/20200930 |
| file_uploads | On | On |
| hard_timeout | 2 | 2 |
| highlight.comment | #998; font-style: italic | #FF8000 |
| highlight.default | #000 | #0000BB |
| highlight.html | #06B | #000000 |
| highlight.keyword | #D24; font-weight: bold | #007700 |
| highlight.string | #080 | #DD0000 |
| html_errors | Off | On |
| ignore_repeated_errors | Off | Off |
| ignore_repeated_source | Off | Off |
| ignore_user_abort | Off | Off |
| implicit_flush | Off | Off |
| include_path | .:/usr/share/php:/www/virtual/martin/stable/php-libs:/www/virtual/martin/stable/lupa/app/libs:/www/virtual/martin/stable/php-libs/appShare/libs | .:/usr/share/php |
| input_encoding | no value | no value |
| internal_encoding | no value | no value |
| log_errors | Off | On |
| log_errors_max_len | 1024 | 1024 |
| mail.add_x_header | Off | Off |
| mail.force_extra_parameters | no value | no value |
| mail.log | no value | no value |
| max_execution_time | 3600 | 3600 |
| max_file_uploads | 20 | 20 |
| max_input_nesting_level | 64 | 64 |
| max_input_time | 60 | 60 |
| max_input_vars | 1000 | 1000 |
| max_multipart_body_parts | -1 | -1 |
| memory_limit | 256M | 256M |
| open_basedir | no value | no value |
| output_buffering | 4096 | 4096 |
| output_encoding | no value | no value |
| output_handler | no value | no value |
| post_max_size | 128M | 128M |
| precision | 14 | 14 |
| realpath_cache_size | 4096K | 4096K |
| realpath_cache_ttl | 120 | 120 |
| register_argc_argv | Off | Off |
| report_memleaks | On | On |
| report_zend_debug | Off | Off |
| request_order | GP | GP |
| sendmail_from | no value | no value |
| sendmail_path | /usr/sbin/sendmail -t -i | /usr/sbin/sendmail -t -i |
| serialize_precision | -1 | -1 |
| short_open_tag | Off | Off |
| SMTP | localhost | localhost |
| smtp_port | 25 | 25 |
| sys_temp_dir | no value | no value |
| syslog.facility | LOG_USER | LOG_USER |
| syslog.filter | no-ctrl | no-ctrl |
| syslog.ident | php | php |
| unserialize_callback_func | no value | no value |
| upload_max_filesize | 128M | 128M |
| upload_tmp_dir | no value | no value |
| user_dir | no value | no value |
| user_ini.cache_ttl | 300 | 300 |
| user_ini.filename | .user.ini | .user.ini |
| variables_order | GPCS | GPCS |
| xmlrpc_error_number | 0 | 0 |
| xmlrpc_errors | Off | Off |
| zend.assertions | -1 | -1 |
| zend.detect_unicode | On | On |
| zend.enable_gc | On | On |
| zend.exception_ignore_args | Off | On |
| zend.exception_string_param_max_len | 0 | 0 |
| zend.multibyte | Off | Off |
| zend.script_encoding | no value | no value |
| zend.signal_check | Off | Off |
| ctype functions | enabled |
| cURL support | enabled |
| cURL Information | 7.64.0 |
| Age | 4 |
| Features | |
| AsynchDNS | Yes |
| CharConv | No |
| Debug | No |
| GSS-Negotiate | No |
| IDN | Yes |
| IPv6 | Yes |
| krb4 | No |
| Largefile | Yes |
| libz | Yes |
| NTLM | Yes |
| NTLMWB | Yes |
| SPNEGO | Yes |
| SSL | Yes |
| SSPI | No |
| TLS-SRP | Yes |
| HTTP2 | Yes |
| GSSAPI | Yes |
| KERBEROS5 | Yes |
| UNIX_SOCKETS | Yes |
| PSL | Yes |
| HTTPS_PROXY | Yes |
| MULTI_SSL | No |
| BROTLI | No |
| Protocols | dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp |
| Host | x86_64-pc-linux-gnu |
| SSL Version | OpenSSL/1.1.1d |
| ZLib Version | 1.2.11 |
| libSSH Version | libssh2/1.8.0 |
| Directive | Local Value | Master Value |
|---|---|---|
| curl.cainfo | no value | no value |
| date/time support | enabled |
| timelib version | 2020.03 |
| "Olson" Timezone Database Version | 0.system |
| Timezone Database | internal |
| Default timezone | Europe/Berlin |
| Directive | Local Value | Master Value |
|---|---|---|
| date.default_latitude | 31.7667 | 31.7667 |
| date.default_longitude | 35.2333 | 35.2333 |
| date.sunrise_zenith | 90.833333 | 90.833333 |
| date.sunset_zenith | 90.833333 | 90.833333 |
| date.timezone | no value | no value |
| DOM/XML | enabled |
| DOM/XML API Version | 20031129 |
| libxml Version | 2.9.14 |
| HTML Support | enabled |
| XPath Support | enabled |
| XPointer Support | enabled |
| Schema Support | enabled |
| RelaxNG Support | enabled |
| EXIF Support | enabled |
| Supported EXIF Version | 0220 |
| Supported filetypes | JPEG, TIFF |
| Multibyte decoding support using mbstring | enabled |
| Extended EXIF tag formats | Canon, Casio, Fujifilm, Nikon, Olympus, Samsung, Panasonic, DJI, Sony, Pentax, Minolta, Sigma, Foveon, Kyocera, Ricoh, AGFA, Epson |
| Directive | Local Value | Master Value |
|---|---|---|
| exif.decode_jis_intel | JIS | JIS |
| exif.decode_jis_motorola | JIS | JIS |
| exif.decode_unicode_intel | UCS-2LE | UCS-2LE |
| exif.decode_unicode_motorola | UCS-2BE | UCS-2BE |
| exif.encode_jis | no value | no value |
| exif.encode_unicode | ISO-8859-15 | ISO-8859-15 |
| FFI support | enabled |
|---|
| Directive | Local Value | Master Value |
|---|---|---|
| ffi.enable | preload | preload |
| ffi.preload | no value | no value |
| fileinfo support | enabled |
| libmagic | 539 |
| Input Validation and Filtering | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| filter.default | unsafe_raw | unsafe_raw |
| filter.default_flags | no value | no value |
| FTP support | enabled |
| FTPS support | enabled |
| GD Support | enabled |
| GD headers Version | 2.3.3 |
| GD library Version | 2.2.5 |
| FreeType Support | enabled |
| FreeType Linkage | with freetype |
| GIF Read Support | enabled |
| GIF Create Support | enabled |
| JPEG Support | enabled |
| PNG Support | enabled |
| WBMP Support | enabled |
| XPM Support | enabled |
| XBM Support | enabled |
| WebP Support | enabled |
| BMP Support | enabled |
| TGA Read Support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| gd.jpeg_ignore_warning | 1 | 1 |
| GetText Support | enabled |
| gmp support | enabled |
| GMP version | 6.1.2 |
| hash support | enabled |
| Hashing Engines | md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b crc32c fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 |
| MHASH support | Enabled |
| MHASH API Version | Emulated Support |
| iconv support | enabled |
| iconv implementation | glibc |
| iconv library version | 2.28 |
| Directive | Local Value | Master Value |
|---|---|---|
| iconv.input_encoding | no value | no value |
| iconv.internal_encoding | no value | no value |
| iconv.output_encoding | no value | no value |
| igbinary support | enabled |
| igbinary version | 3.2.13 |
| igbinary APCu serializer ABI | 0 |
| igbinary session support | yes |
| Directive | Local Value | Master Value |
|---|---|---|
| igbinary.compact_strings | On | On |
| imagick module | enabled |
|---|---|
| imagick module version | 3.6.0 |
| imagick classes | Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel |
| Imagick compiled with ImageMagick version | ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org |
| Imagick using ImageMagick library version | ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org |
| ImageMagick copyright | © 1999-2019 ImageMagick Studio LLC |
| ImageMagick release date | 20190101 |
| ImageMagick number of supported formats: | 242 |
| ImageMagick supported formats | 3FR, 3G2, 3GP, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV |
| Directive | Local Value | Master Value |
|---|---|---|
| imagick.allow_zero_dimension_images | 0 | 0 |
| imagick.locale_fix | 0 | 0 |
| imagick.progress_monitor | 0 | 0 |
| imagick.set_single_thread | 1 | 1 |
| imagick.shutdown_sleep_count | 10 | 10 |
| imagick.skip_version_check | 1 | 1 |
| IMAP c-Client Version | 2007f |
| SSL Support | enabled |
| Kerberos Support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| imap.enable_insecure_rsh | Off | Off |
| Internationalization support | enabled |
|---|---|
| ICU version | 65.1 |
| ICU Data version | 65.1 |
| ICU Unicode version | 12.1 |
| Directive | Local Value | Master Value |
|---|---|---|
| intl.default_locale | cs-CZ | no value |
| intl.error_level | 0 | 0 |
| intl.use_exceptions | Off | Off |
| json support | enabled |
| LDAP Support | enabled |
| Total Links | 0/unlimited |
| API Version | 3001 |
| Vendor Name | OpenLDAP |
| Vendor Version | 20447 |
| SASL Support | Enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| ldap.max_links | Unlimited | Unlimited |
| libXML support | active |
| libXML Compiled Version | 2.9.14 |
| libXML Loaded Version | 20912 |
| libXML streams | enabled |
| Multibyte Support | enabled |
| Multibyte string engine | libmbfl |
| HTTP input encoding translation | disabled |
| libmbfl version | 1.3.2 |
| mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. |
|---|
| Multibyte (japanese) regex support | enabled |
| Multibyte regex (oniguruma) version | 6.9.1 |
| Directive | Local Value | Master Value |
|---|---|---|
| mbstring.detect_order | no value | no value |
| mbstring.encoding_translation | Off | Off |
| mbstring.http_input | no value | no value |
| mbstring.http_output | no value | no value |
| mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
| mbstring.internal_encoding | no value | no value |
| mbstring.language | neutral | neutral |
| mbstring.regex_retry_limit | 1000000 | 1000000 |
| mbstring.regex_stack_limit | 100000 | 100000 |
| mbstring.strict_detection | Off | Off |
| mbstring.substitute_character | no value | no value |
| MysqlI Support | enabled |
|---|---|
| Client API library version | mysqlnd 8.0.30 |
| Active Persistent Links | 0 |
| Inactive Persistent Links | 0 |
| Active Links | 3 |
| Directive | Local Value | Master Value |
|---|---|---|
| mysqli.allow_local_infile | Off | Off |
| mysqli.allow_persistent | On | On |
| mysqli.default_host | no value | no value |
| mysqli.default_port | 3306 | 3306 |
| mysqli.default_pw | no value | no value |
| mysqli.default_socket | /var/run/mysqld/mysqld.sock | /var/run/mysqld/mysqld.sock |
| mysqli.default_user | no value | no value |
| mysqli.max_links | Unlimited | Unlimited |
| mysqli.max_persistent | Unlimited | Unlimited |
| mysqli.reconnect | Off | Off |
| mysqli.rollback_on_cached_plink | Off | Off |
| mysqlnd | enabled |
|---|---|
| Version | mysqlnd 8.0.30 |
| Compression | supported |
| core SSL | supported |
| extended SSL | supported |
| Command buffer size | 4096 |
| Read buffer size | 32768 |
| Read timeout | 86400 |
| Collecting statistics | Yes |
| Collecting memory statistics | No |
| Tracing | n/a |
| Loaded plugins | mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password |
| API Extensions | mysqli,pdo_mysql |
| ODBC Support | enabled |
|---|---|
| Active Persistent Links | 0 |
| Active Links | 0 |
| ODBC library | unixODBC |
| ODBCVER | 0x0380 |
| ODBC_CFLAGS | -I/usr/include |
| ODBC_LFLAGS | -L/usr/lib |
| ODBC_LIBS | -lodbc |
| Directive | Local Value | Master Value |
|---|---|---|
| odbc.allow_persistent | On | On |
| odbc.check_persistent | On | On |
| odbc.default_cursortype | Static cursor | Static cursor |
| odbc.default_db | no value | no value |
| odbc.default_pw | no value | no value |
| odbc.default_user | no value | no value |
| odbc.defaultbinmode | return as is | return as is |
| odbc.defaultlrl | return up to 4096 bytes | return up to 4096 bytes |
| odbc.max_links | Unlimited | Unlimited |
| odbc.max_persistent | Unlimited | Unlimited |
| OpenSSL support | enabled |
| OpenSSL Library Version | OpenSSL 1.1.1d 10 Sep 2019 |
| OpenSSL Header Version | OpenSSL 1.1.1n 15 Mar 2022 |
| Openssl default config | /usr/lib/ssl/openssl.cnf |
| Directive | Local Value | Master Value |
|---|---|---|
| openssl.cafile | no value | no value |
| openssl.capath | no value | no value |
| PCRE (Perl Compatible Regular Expressions) Support | enabled |
| PCRE Library Version | 10.39 2021-10-29 |
| PCRE Unicode Version | 14.0.0 |
| PCRE JIT Support | enabled |
| PCRE JIT Target | x86 64bit (little endian + unaligned) |
| Directive | Local Value | Master Value |
|---|---|---|
| pcre.backtrack_limit | 1000000 | 1000000 |
| pcre.jit | 1 | 1 |
| pcre.recursion_limit | 100000 | 100000 |
| PDO support | enabled |
|---|---|
| PDO drivers | firebird, mysql, odbc, sqlite, sqlsrv |
| PDO Driver for Firebird | enabled |
|---|---|
| Client Library Version | LI-V6.3.5.33100 Firebird 3.0 |
| PDO Driver for MySQL | enabled |
|---|---|
| Client API version | mysqlnd 8.0.30 |
| Directive | Local Value | Master Value |
|---|---|---|
| pdo_mysql.default_socket | /var/run/mysqld/mysqld.sock | /var/run/mysqld/mysqld.sock |
| PDO Driver for ODBC (unixODBC) | enabled |
|---|---|
| ODBC Connection Pooling | Enabled, strict matching |
| PDO Driver for SQLite 3.x | enabled |
|---|---|
| SQLite Library | 3.27.2 |
| pdo_sqlsrv support | enabled |
|---|---|
| ExtensionVer | 5.11.0 |
| Directive | Local Value | Master Value |
|---|---|---|
| pdo_sqlsrv.client_buffer_max_kb_size | 10240 | 10240 |
| pdo_sqlsrv.log_severity | 0 | 0 |
| pdo_sqlsrv.report_additional_errors | 1 | 1 |
| pdo_sqlsrv.set_locale_info | 2 | 2 |
| Phar: PHP Archive support | enabled |
|---|---|
| Phar API version | 1.1.1 |
| Phar-based phar archives | enabled |
| Tar-based phar archives | enabled |
| ZIP-based phar archives | enabled |
| gzip compression | enabled |
| bzip2 compression | enabled |
| Native OpenSSL support | enabled |
|
Phar based on pear/PHP_Archive, original concept by Davey Shafik. Phar fully realized by Gregory Beaver and Marcus Boerger. Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle. |
| Directive | Local Value | Master Value |
|---|---|---|
| phar.cache_list | no value | no value |
| phar.readonly | On | On |
| phar.require_hash | On | On |
| POSIX support | enabled |
| PSpell Support | enabled |
| Readline Support | enabled |
|---|---|
| Readline library | EditLine wrapper |
| Directive | Local Value | Master Value |
|---|---|---|
| cli.pager | no value | no value |
| cli.prompt | \b \> | \b \> |
| Reflection | enabled |
| Session Support | enabled |
| Registered save handlers | files user |
| Registered serializer handlers | php_serialize php php_binary igbinary |
| Directive | Local Value | Master Value |
|---|---|---|
| session.auto_start | Off | Off |
| session.cache_expire | 180 | 180 |
| session.cache_limiter | nocache | nocache |
| session.cookie_domain | no value | no value |
| session.cookie_httponly | no value | no value |
| session.cookie_lifetime | 0 | 0 |
| session.cookie_path | / | / |
| session.cookie_samesite | no value | no value |
| session.cookie_secure | 0 | 0 |
| session.gc_divisor | 1000 | 1000 |
| session.gc_maxlifetime | 1440 | 1440 |
| session.gc_probability | 0 | 0 |
| session.lazy_write | On | On |
| session.name | PHPSESSID | PHPSESSID |
| session.referer_check | no value | no value |
| session.save_handler | files | files |
| session.save_path | /var/lib/php/sessions | /var/lib/php/sessions |
| session.serialize_handler | php | php |
| session.sid_bits_per_character | 5 | 5 |
| session.sid_length | 26 | 26 |
| session.upload_progress.cleanup | On | On |
| session.upload_progress.enabled | On | On |
| session.upload_progress.freq | 1% | 1% |
| session.upload_progress.min_freq | 1 | 1 |
| session.upload_progress.name | PHP_SESSION_UPLOAD_PROGRESS | PHP_SESSION_UPLOAD_PROGRESS |
| session.upload_progress.prefix | upload_progress_ | upload_progress_ |
| session.use_cookies | 1 | 1 |
| session.use_only_cookies | 1 | 1 |
| session.use_strict_mode | 0 | 0 |
| session.use_trans_sid | 0 | 0 |
| shmop support | enabled |
| SimpleXML support | enabled |
| Schema support | enabled |
| NET-SNMP Support | enabled |
| NET-SNMP Version | 5.7.3 |
| Soap Client | enabled |
| Soap Server | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| soap.wsdl_cache | 1 | 1 |
| soap.wsdl_cache_dir | /tmp | /tmp |
| soap.wsdl_cache_enabled | On | On |
| soap.wsdl_cache_limit | 5 | 5 |
| soap.wsdl_cache_ttl | 86400 | 86400 |
| Sockets Support | enabled |
| sodium support | enabled |
|---|---|
| libsodium headers version | 1.0.18 |
| libsodium library version | 1.0.18 |
| SPL support | enabled |
|---|---|
| Interfaces | OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject |
| Classes | AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException |
| SQLite3 support | enabled |
|---|---|
| SQLite Library | 3.27.2 |
| Directive | Local Value | Master Value |
|---|---|---|
| sqlite3.defensive | On | On |
| sqlite3.extension_dir | no value | no value |
| sqlsrv support | enabled |
|---|---|
| ExtensionVer | 5.11.0 |
| Directive | Local Value | Master Value |
|---|---|---|
| sqlsrv.ClientBufferMaxKBSize | 10240 | 10240 |
| sqlsrv.LogSeverity | 0 | 0 |
| sqlsrv.LogSubsystems | 0 | 0 |
| sqlsrv.SetLocaleInfo | 2 | 2 |
| sqlsrv.WarningsReturnAsErrors | On | On |
| Dynamic Library Support | enabled |
| Path to sendmail | /usr/sbin/sendmail -t -i |
| Directive | Local Value | Master Value |
|---|---|---|
| assert.active | On | On |
| assert.bail | Off | Off |
| assert.callback | no value | no value |
| assert.exception | On | On |
| assert.warning | On | On |
| auto_detect_line_endings | Off | Off |
| default_socket_timeout | 60 | 60 |
| from | no value | no value |
| session.trans_sid_hosts | no value | no value |
| session.trans_sid_tags | a=href,area=href,frame=src,form= | a=href,area=href,frame=src,form= |
| unserialize_max_depth | 4096 | 4096 |
| url_rewriter.hosts | no value | no value |
| url_rewriter.tags | form= | form= |
| user_agent | no value | no value |
| sysvmsg support | enabled |
| sysvsem support | enabled |
| sysvshm support | enabled |
| Tidy support | enabled |
| libTidy Version | 5.6.0 |
| libTidy Release | 2017/11/25 |
| Directive | Local Value | Master Value |
|---|---|---|
| tidy.clean_output | no value | no value |
| tidy.default_config | no value | no value |
| Tokenizer Support | enabled |
| Version | 3.2.1 |
| Support Xdebug on Patreon, GitHub, or as a business | |
| Enabled Features (through 'xdebug.mode' setting) | ||
|---|---|---|
| Feature | Enabled/Disabled | Docs |
| Development Helpers | ✘ disabled | ⊕ |
| Coverage | ✘ disabled | ⊕ |
| GC Stats | ✘ disabled | ⊕ |
| Profiler | ✘ disabled | ⊕ |
| Step Debugger | ✔ enabled | ⊕ |
| Tracing | ✘ disabled | ⊕ |
| Optional Features | |
|---|---|
| Compressed File Support | no |
| Clock Source | clock_gettime |
| 'xdebug://gateway' pseudo-host support | yes |
| 'xdebug://nameserver' pseudo-host support | yes |
| Systemd Private Temp Directory | /tmp/systemd-private-3221d60dabd645c689c09873db6cf172-apache2.service-95ACom |
| Debugger | enabled |
|---|---|
| IDE Key | no value |
| Directive | Local Value | Master Value |
|---|---|---|
| xdebug.auto_trace | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.cli_color | 0 | 0 |
| xdebug.client_discovery_header | HTTP_X_FORWARDED_FOR,REMOTE_ADDR | HTTP_X_FORWARDED_FOR,REMOTE_ADDR |
| xdebug.client_host | localhost | localhost |
| xdebug.client_port | 9003 | 9003 |
| xdebug.cloud_id | no value | no value |
| xdebug.collect_assignments | Off | Off |
| xdebug.collect_includes | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.collect_params | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.collect_return | Off | Off |
| xdebug.collect_vars | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.connect_timeout_ms | 200 | 200 |
| xdebug.coverage_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.default_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.discover_client_host | On | On |
| xdebug.dump.COOKIE | no value | no value |
| xdebug.dump.ENV | no value | no value |
| xdebug.dump.FILES | no value | no value |
| xdebug.dump.GET | no value | no value |
| xdebug.dump.POST | no value | no value |
| xdebug.dump.REQUEST | no value | no value |
| xdebug.dump.SERVER | no value | no value |
| xdebug.dump.SESSION | no value | no value |
| xdebug.dump_globals | On | On |
| xdebug.dump_once | On | On |
| xdebug.dump_undefined | Off | Off |
| xdebug.file_link_format | no value | no value |
| xdebug.filename_format | no value | no value |
| xdebug.force_display_errors | Off | Off |
| xdebug.force_error_reporting | 0 | 0 |
| xdebug.gc_stats_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.gc_stats_output_dir | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.gc_stats_output_name | gcstats.%p | gcstats.%p |
| xdebug.halt_level | 0 | 0 |
| xdebug.idekey | no value | no value |
| xdebug.log | no value | no value |
| xdebug.log_level | 7 | 7 |
| xdebug.max_nesting_level | 256 | 256 |
| xdebug.max_stack_frames | -1 | -1 |
| xdebug.mode | debug | debug |
| xdebug.output_dir | /tmp | /tmp |
| xdebug.overload_var_dump | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.profiler_append | Off | Off |
| xdebug.profiler_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.profiler_enable_trigger | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.profiler_enable_trigger_value | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.profiler_output_dir | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.profiler_output_name | cachegrind.out.%p | cachegrind.out.%p |
| xdebug.remote_autostart | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_connect_back | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_host | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_log | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_log_level | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_mode | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_port | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_timeout | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.scream | Off | Off |
| xdebug.show_error_trace | Off | Off |
| xdebug.show_exception_trace | Off | Off |
| xdebug.show_local_vars | Off | Off |
| xdebug.show_mem_delta | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.start_upon_error | default | default |
| xdebug.start_with_request | default | default |
| xdebug.trace_enable_trigger | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.trace_enable_trigger_value | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.trace_format | 0 | 0 |
| xdebug.trace_options | 0 | 0 |
| xdebug.trace_output_dir | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.trace_output_name | trace.%c | trace.%c |
| xdebug.trigger_value | no value | no value |
| xdebug.use_compression | 0 | 0 |
| xdebug.var_display_max_children | 128 | 128 |
| xdebug.var_display_max_data | 512 | 512 |
| xdebug.var_display_max_depth | 3 | 3 |
| XML Support | active |
| XML Namespace Support | active |
| libxml2 Version | 2.9.14 |
| XMLReader | enabled |
| XMLRPC extension version | 1.0.0RC3 |
| core library version | xmlrpc-epi v. 0.54 |
| author | Dan Libby |
| homepage | http://xmlrpc-epi.sourceforge.net |
| open sourced by | Epinions.com |
| XMLWriter | enabled |
| XSL | enabled |
| libxslt Version | 1.1.32 |
| libxslt compiled against libxml Version | 2.9.4 |
| EXSLT | enabled |
| libexslt Version | 1.1.32 |
| Opcode Caching | Up and Running |
| Optimization | Disabled |
| SHM Cache | Enabled |
| File Cache | Disabled |
| JIT | Disabled |
| Startup | OK |
| Shared memory model | mmap |
| Cache hits | 10333741 |
| Cache misses | 44751 |
| Used memory | 131777960 |
| Free memory | 16848 |
| Wasted memory | 2422920 |
| Interned Strings Used memory | 6290984 |
| Interned Strings Free memory | 8 |
| Cached scripts | 4267 |
| Cached keys | 6191 |
| Max keys | 16229 |
| OOM restarts | 8 |
| Hash keys restarts | 0 |
| Manual restarts | 0 |
| Directive | Local Value | Master Value |
|---|---|---|
| opcache.blacklist_filename | no value | no value |
| opcache.consistency_checks | 0 | 0 |
| opcache.dups_fix | Off | Off |
| opcache.enable | On | On |
| opcache.enable_cli | Off | Off |
| opcache.enable_file_override | Off | Off |
| opcache.error_log | no value | no value |
| opcache.file_cache | no value | no value |
| opcache.file_cache_consistency_checks | On | On |
| opcache.file_cache_only | Off | Off |
| opcache.file_update_protection | 2 | 2 |
| opcache.force_restart_timeout | 180 | 180 |
| opcache.huge_code_pages | Off | Off |
| opcache.interned_strings_buffer | 8 | 8 |
| opcache.jit | no value | no value |
| opcache.jit_bisect_limit | 0 | 0 |
| opcache.jit_blacklist_root_trace | 16 | 16 |
| opcache.jit_blacklist_side_trace | 8 | 8 |
| opcache.jit_buffer_size | 0 | 0 |
| opcache.jit_debug | 0 | 0 |
| opcache.jit_hot_func | 127 | 127 |
| opcache.jit_hot_loop | 64 | 64 |
| opcache.jit_hot_return | 8 | 8 |
| opcache.jit_hot_side_exit | 8 | 8 |
| opcache.jit_max_exit_counters | 8192 | 8192 |
| opcache.jit_max_loop_unrolls | 8 | 8 |
| opcache.jit_max_polymorphic_calls | 2 | 2 |
| opcache.jit_max_recursive_calls | 2 | 2 |
| opcache.jit_max_recursive_returns | 2 | 2 |
| opcache.jit_max_root_traces | 1024 | 1024 |
| opcache.jit_max_side_traces | 128 | 128 |
| opcache.jit_prof_threshold | 0.005 | 0.005 |
| opcache.lockfile_path | /tmp | /tmp |
| opcache.log_verbosity_level | 1 | 1 |
| opcache.max_accelerated_files | 10000 | 10000 |
| opcache.max_file_size | 0 | 0 |
| opcache.max_wasted_percentage | 5 | 5 |
| opcache.memory_consumption | 128 | 128 |
| opcache.opt_debug_level | 0 | 0 |
| opcache.optimization_level | 0 | 0x7FFEBFFF |
| opcache.preferred_memory_model | no value | no value |
| opcache.preload | no value | no value |
| opcache.preload_user | no value | no value |
| opcache.protect_memory | Off | Off |
| opcache.record_warnings | Off | Off |
| opcache.restrict_api | no value | no value |
| opcache.revalidate_freq | 2 | 2 |
| opcache.revalidate_path | Off | Off |
| opcache.save_comments | On | On |
| opcache.use_cwd | On | On |
| opcache.validate_permission | Off | Off |
| opcache.validate_root | Off | Off |
| opcache.validate_timestamps | On | On |
| Zip | enabled |
| Zip version | 1.19.5 |
| Libzip version | 1.7.3 |
| BZIP2 compression | Yes |
| XZ compression | No |
| ZSTD compression | No |
| AES-128 encryption | Yes |
| AES-192 encryption | Yes |
| AES-256 encryption | Yes |
| ZLib Support | enabled |
|---|---|
| Stream Wrapper | compress.zlib:// |
| Stream Filter | zlib.inflate, zlib.deflate |
| Compiled Version | 1.2.11 |
| Linked Version | 1.2.11 |
| Directive | Local Value | Master Value |
|---|---|---|
| zlib.output_compression | Off | Off |
| zlib.output_compression_level | -1 | -1 |
| zlib.output_handler | no value | no value |
| Module Name |
|---|
array (3)0 => array (7)| 'name' => 'default output handler' | 'type' => 0 | 'flags' => 20592 | 'level' => 0 | 'chunk_size' => 4096 | 'buffer_size' => 159744 | 'buffer_used' => 01 => array (7)| 'name' => 'Closure::__invoke' | 'type' => 1 | 'flags' => 113 | 'level' => 1 | 'chunk_size' => 0 | 'buffer_size' => 16384 | 'buffer_used' => 412 => array (7)| 'name' => 'default output handler' | 'type' => 0 | 'flags' => 112 | 'level' => 2 | 'chunk_size' => 0 | 'buffer_size' => 16384 | 'buffer_used' => 0
| Host | 'blog-lupa-martin.imho.cz'
|
|---|---|
| HTTP_X_FORWARDED_PROTO | 'https'
|
| Access-Control-Allow-Origin | '*'
|
| Referrer-Policy | 'no-referrer-when-downgrade'
|
| X-Real-IP | '216.73.216.123'
|
| Connection | 'close'
|
| accept | '*/*'
|
| user-agent | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)'
|
| accept-encoding | 'gzip, br, zstd, deflate'
|
| referer | 'https://blog-lupa-martin.imho.cz/jilm/google-gears-online-aplikace-offline'
|
| cookie | 'tracy-session=3b19b17b29; _nss=1'
|
| X-HTTPS | '1'
|
empty
empty
| tracy-session | '3b19b17b29'
|
|---|---|
| _nss | '1'
|
| X-Powered-By | 'Nette Framework 3'
|
|---|---|
| Content-Type | 'text/html; charset=utf-8'
|
| X-Frame-Options | 'SAMEORIGIN'
|
| Set-Cookie | '_nss=1; path=/; secure; HttpOnly; SameSite=Strict'
|
| Vary | 'X-Requested-With'
|
| Content-Security-Policy | 'upgrade-insecure-requests'
|
Headers have been sent, output started at .../templates-common-@HtmlDocument--RootLike.inc.latte--3f2affa234.php:95 source
85: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('../common/socialNetworks/socialNetworks.inc.latte', $this->getName(), true), ['isSocialNetworksFacebook' => $configTemplates['common']['socialNetworks']['facebook']['enabled'], 86: 'isSocialNetworksTwitter' => $configTemplates['common']['socialNetworks']['twitter']['enabled']] + $this->getParameters(), "includeX")->render(); 87: IInfo\LatteMacros::renderControlX($this->global->uiControl, "Shared_Ipn_PaginationLinks", "render", []); 88: IInfo\LatteMacros::renderControlX($this->global->uiControl, "Shared_Favicons", "render", []); 89: $this->renderBlock('common__HtmlDocument--rss', get_defined_vars()) /* line 53 */; 90: echo "\n"; 91: if ($rssFeeds) /* line 54 */ { 92: $iterations = 0; 93: foreach ($rssFeeds as $rssFeed) /* line 55 */ { 94: echo '<link rel="alternate" title="'; 95: echo LR\Filters::escapeHtmlAttr($rssFeed['title']) /* line 56 */; 96: echo '" href="'; 97: echo LR\Filters::escapeHtmlAttr(LR\Filters::safeUrl($rssFeed['url'])) /* line 56 */; 98: echo '" type="application/rss+xml"> 99: ';