pro vývojáře https://dev.drupal.cz/ cs Podrobte webové stránky analýze během pár minut https://dev.drupal.cz/clanky/podrobte-webove-stranky-analyze-behem-par-minut <span class="field field--name-title field--type-string field--label-hidden">Podrobte webové stránky analýze během pár minut</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Na webové stránky se lze dívat z mnoha pohledů a kromě subjektivního designu lze prakticky každý číselně vyhodnotit. V článku se dozvíte, jaké metriky jsou důležité pro vyhodnocení webu. Tyto metriky mají dopad jak na <strong>prožitek vašeho návštěvníka</strong>, tak v mnoha případech i na <strong>výsledky ve vyhledávačích</strong>. Ty už nějakou dobu berou v potaz jak podporu responzivního chování, tak i rychlost webu.</p> <h2>Rychlost načítání webu</h2> <p>Rychlé načítání webu je čím dál důležitější vlastnost. Pomalé weby jsou znevýhodňovány ve výsledcích vyhledávání, pomalé načítání odrazuje návštěvníky od kliknutí na další článek, stahování velkých objemů dat otráví každého mimo 4G signál. Jak zjistíte, jak si vedete a co můžete zlepšit? Zkuste následující online nástroje:</p> <ul><li><a href="https://gtmetrix.com/">https://gtmetrix.com/</a></li> <li><a href="https://tools.pingdom.com/">https://tools.pingdom.com/</a></li> <li><a href="https://www.webpagetest.org/">https://www.webpagetest.org/</a></li> </ul><h2>Obrázky</h2> <p>Bez obrázků se dnes moc webů neobejde. Tlak na 4k monitory a retina displeje nás vývojáře nutí používat obrázky s vysokým rozlišením. Ty by se ale neměly načítat zbytečně i pro menší zařízení. Obrázky taktéž můžete před umístěním na web převést do správného formátu a zkomprimovat. Zjistěte, zda máte prostor pro optimalizaci vašich obrázků: <a href="https://webspeedtest.cloudinary.com/">https://webspeedtest.cloudinary.com/</a> Zjistíte, že <strong>s Webp formátem dokážete ušetřit až 70 % velikosti obrázku</strong>. S využitím vektorové grafiky (SVG) se dostanete ještě na nižší čísla a ještě vás ušetří trápení s responzivním chováním.</p> <h2>Mobilní responzivita</h2> <p>Responzivní chování je komplexní UX analýza, kterou lze těžko vyhodnotit bez reálného uživatelského testování. I tak ale Google přišel se svým hodnotícím algoritmem, který můžete vyzkoušet zde: </p> <ul><li><a href="https://search.google.com/test/mobile-friendly">https://search.google.com/test/mobile-friendly</a></li> </ul><h2>Bezpečnost</h2> <p>Otestovat bezpečnost webových stránek online není vůbec jednoduché. Můžete si vyzkoušet penetrační testy (např. <a href="https://pentest-tools.com/cms-vulnerability-scanning/drupal-scanner">https://pentest-tools.com/cms-vulnerability-scanning/drupal-scanner</a>), ale zpravidla se bude jednat o placené služby. </p> <p>Využijte ale základní <strong>test hlaviček požadavků</strong>, které se odesílají: <a href="https://securityheaders.com/">https://securityheaders.com/</a>. Pokud získáte A hodnocení, máte velkou pravděpodobnost, že i ostatní aspekty bezpečnosti budou ošetřeny.</p> <h2>SEO</h2> <p>Obdobných online testovacích nástrojů SEO nastavení vašeho webu naleznete na internetu spousty, proto zde žádný nebudu upředňostňovat. Musíte ale počítat s faktem, že tyto nástroje <strong>hodnotí pouze technické on-page faktory</strong>, jako správně uvedené tagy (nechybí H1, Page Title, Page Description,...). V tuto chvíli nevím o online nástroji, který by plnohodnotně bral v potaz i váš business, analýzu klíčových slov, obsah webu, konkurenci, chování návštěvníků z měřících nástrojů. Pokud o nějakém víte, podělte se v komentáři.</p> <h2>Výkon PHP aplikace - pro pokročilé</h2> <p>Pokud disponujete vyšperkovaným front-endem, kvalitním hostingem a stále trpíte při každém načtení stránky, můžete zkusit analyzovat i PHP back-end aplikace pomocí <a href="https://blackfire.io/">https://blackfire.io/</a>. Díky tomuto nástroji jste i v neplacené verzi schopni zjistit, co brzdí načítání celé stránky.</p> <h2>Drupal moduly</h2> <p>Když už jsme na Drupal.cz, uvedu i pár analytických modulů přímo pro Drupal, které vám pomohou i v rámci administrace webu.</p> <ul><li><a href="https://www.drupal.org/project/seo_checklist">https://www.drupal.org/project/seo_checklist</a></li> <li><a href="https://www.drupal.org/project/hacked">https://www.drupal.org/project/hacked</a></li> <li><a href="https://www.drupal.org/project/be_sure">https://www.drupal.org/project/be_sure</a></li> <li><a href="https://www.drupal.org/project/production_checklist">https://www.drupal.org/project/production_checklist</a></li> <li><a href="https://www.drupal.org/project/google_analytics_reports">https://www.drupal.org/project/google_analytics_reports</a></li> </ul><h2>Závěr</h2> <p>Metriky ve webovém prostředí se mění téměř ze dne na den. Co včera byla vyhovující, zítra může způsobit potíže. Především pokud se bavíme o bezpečnosti. Používáte další online nástroje pro analýzu webových stránek? Máte oblíbené další moduly, které vám třeba napoví, na co se soustředit? Dejte vědět v komentářích.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/hsponner" class="username">hsponner</a></span> <span class="field field--name-created field--type-created field--label-hidden">So, 09/15/2018 - 12:36</span> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/stitky/bezpecnost" hreflang="cs">bezpečnost</a></div> <div class="field__item"><a href="/stitky/drupal" hreflang="cs">drupal</a></div> <div class="field__item"><a href="/stitky/analyza" hreflang="cs">analýza</a></div> <div class="field__item"><a href="/stitky/front-end" hreflang="cs">front-end</a></div> <div class="field__item"><a href="/stitky/pro-vyvojare" hreflang="cs">pro vývojáře</a></div> </div> <section class="field field--name-field-comments-article field--type-comment field--label-above comment-wrapper"> <h2 class="title">Komentáře</h2> <article data-comment-user-id="101" id="comment-3431" class="comment js-comment"> <mark class="hidden" data-comment-timestamp="1540208066"></mark> <footer class="comment__meta"> <article class="profile"> <div class="field field--name-field-dcz-user-image field--type-image field--label-hidden field__item"> <img loading="lazy" src="/sites/default/files/styles/thumbnail/public/users/avatar.jpg?itok=2sSpLghO" width="100" height="100" alt="siva01" class="image-style-thumbnail" /> </div> </article> <p class="comment__submitted">Napsal uživatel <a title="Zobrazit profil uživatele." href="/user/siva01" class="username">siva01</a> dne Po, 10/22/2018 - 13:34</p> <span class="permalink"><a href="/comment/3431#comment-3431" hreflang="cs">Trvalý odkaz</a></span> </footer> <div class="content"> <h3><a href="/comment/3431#comment-3431" class="permalink" rel="bookmark" hreflang="cs">Nejen marketing</a></h3> <div class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Docela tu chybí <a href="https://www.marketingminer.com/cs/miners">MarketingMinner</a>. Nejen, že to umí analyzovat cizí weby, ale i ten váš a to včetně analýzy klíčových slov a jejich pozic. Minerů je tam hned několik, takže si každý najde ten svůj. </p></div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=3431&amp;1=default&amp;2=cs&amp;3=" token="NmAD-FbSAyGy1ulWbfDWvB6rhicqycpE2G01e7e4moY"></drupal-render-placeholder> </div> </article> <h2 class="title comment-form__title">Přidat komentář</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1431&amp;2=field_comments_article&amp;3=comment_article" token="gUkve9CDPSkfDkDB8GK-Q5JDCHX3m623GIn4ixq-xIA"></drupal-render-placeholder> </section> Sat, 15 Sep 2018 10:36:33 +0000 hsponner 1431 at https://dev.drupal.cz https://dev.drupal.cz/clanky/podrobte-webove-stranky-analyze-behem-par-minut#comments Na co si dát pozor při alteraci SelectQuery https://dev.drupal.cz/clanky/na-co-si-dat-pozor-pri-alteraci-selectquery <span class="field field--name-title field--type-string field--label-hidden">Na co si dát pozor při alteraci SelectQuery</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Toto je jen stručný článek pro vývojáře, kteří potřebují v Drupalu 7 či 8 alterovat SQL query. Pokud mu nebudete rozumět, nezoufejte, možná není pro vás.</p> <p>Při práci na alterování SQL query jsem narazil na neočekávané chování některých metod, které ač se zdají být zcela pasivní, mají nečekané důsledky.</p> <p>Hooky pro query alter slouží k tomu, abychom mohli již vytvořený SelectQuery objekt modifikovat, např. joinovat další tabulku, nebo častěji upravit podmínky, které se nacházejí v části za WHERE, a to těsně před tím, než je query provedena a vytvořený SQL dotaz zaslán na MySQL (či jiný) server.</p> <p>Pokud ovšem před modifikací query použijete některou z následujících funkcí</p> <p><span><strong>$query-&gt;__toString()</strong>, např. ve spojení s print($query-&gt;__toString()) pro výpis vzniklého dotazu,</span> nebo<br /><strong><em>$query</em><span>-&gt;</span><span>getArguments</span>()</strong>, pro zjištění, jaké jsou v query argumenty (to jsou ty proměnné označované jako <em>:db_placeholder_x</em>),</p> <p>budete překvapeni nečekanými výsledky. Jakmile totiž funkci <strong><span>getArguments</span></strong><span> použijete v domnění, že vám pouze vrátí argumenty, nevšimnete si, že funkce k vrácení argumentů potřebuje </span>SelectQuery<span> objekt nejprve zkompilovat.</span> Pokud pak provedete požadované změny v SelectQuery objektu, např. změníte podmínku, nemá tato změna efekt, protože query je již zkompilována. Můžete se pak dostat do situace, že kód, který by měl normálně fungovat a vy v něm nevidíte žádnou chybu, prostě nefunguje. S funkcí <span>__toString() je to podobné. </span></p> <p><span>Pro vývojáře je podstatný fakt, že tyto funkce nečekaně mění výsledky kódu, a to i přesto, že podle svých názvů působí zcela pasivně, pouze jako něco, co má získat data či zkonvertovat </span>SelectQuery objekt<span> do řetězce.</span></p> <p>Příklad:</p> <p><code>/**<br /> * Implements hook_query_TAG_alter().<br /> */<br /> function hook_query_TAG_alter(QueryAlterableInterface &amp;$query) {<br />   /** @var \SelectQuery $query */<br />  <br />   // S následují řádkou nebude mít další kód žádný efekt.<br />   <strong>$query_argumants = $query-&gt;getArguments();</strong><br />  <br />   $conditions = &amp;$query-&gt;conditions();<br />   /** @var \DatabaseCondition $condition_field */<br />   $condition_field = &amp;$conditions[0]['field'];<br />   $inner_conditions = &amp;$condition_field-&gt;conditions();<br />  <br />   // Zde si představte konkrétní manipulace s conditions...<br /> }</code></p> <p> </p> <p> </p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Zobrazit profil uživatele." href="/user/martinklima" class="username">martin_klima</a></span> <span class="field field--name-created field--type-created field--label-hidden">Út, 03/20/2018 - 17:48</span> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/stitky/development" hreflang="cs">development</a></div> <div class="field__item"><a href="/stitky/hook" hreflang="cs">hook</a></div> <div class="field__item"><a href="/stitky/query" hreflang="cs">query</a></div> <div class="field__item"><a href="/stitky/pro-vyvojare" hreflang="cs">pro vývojáře</a></div> </div> <section class="field field--name-field-comments-article field--type-comment field--label-above comment-wrapper"> <h2 class="title">Komentáře</h2> <article data-comment-user-id="0" id="comment-66" class="comment js-comment by-anonymous"> <mark class="hidden" data-comment-timestamp="1521834342"></mark> <footer class="comment__meta"> <article class="profile"> <div class="field field--name-field-dcz-user-image field--type-image field--label-hidden field__item"> <img loading="lazy" src="/sites/default/files/styles/thumbnail/public/default_images/user-placeholder_0.png?itok=nOY2lA1j" width="100" height="100" alt="Drupal user" class="image-style-thumbnail" /> </div> </article> <p class="comment__submitted">Napsal uživatel <span>Miloš (neověřeno)</span> dne Pá, 03/23/2018 - 20:45</p> <span class="permalink"><a href="/comment/66#comment-66" hreflang="cs">Trvalý odkaz</a></span> </footer> <div class="content"> <h3><a href="/comment/66#comment-66" class="permalink" rel="bookmark" hreflang="cs">Workaround?</a></h3> <div class="clearfix text-formatted field field--name-comment-body field--type-text-long field--label-hidden field__item"><p>Děkuju za popis problému. Mohl bys prosím ještě doplnit, jak jsi to vyřešil?</p></div> <drupal-render-placeholder callback="comment.lazy_builders:renderLinks" arguments="0=66&amp;1=default&amp;2=cs&amp;3=" token="ODUVDKWL7SUwtocYzlWzmfQgthBFKGquLIErMmn79g8"></drupal-render-placeholder> </div> </article> <h2 class="title comment-form__title">Přidat komentář</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=416&amp;2=field_comments_article&amp;3=comment_article" token="Epo3O6ala3cLVf74vIwwiLhsrbnQyugA2Pv8eIFlbWA"></drupal-render-placeholder> </section> Tue, 20 Mar 2018 16:48:01 +0000 martin_klima 416 at https://dev.drupal.cz https://dev.drupal.cz/clanky/na-co-si-dat-pozor-pri-alteraci-selectquery#comments