<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Zdeněk Drahoš</title>
  <subtitle>Zdeněk Drahoš blog</subtitle>
  <id>https://zdenekdrahos.github.io/</id>
  <link href="https://zdenekdrahos.github.io/"/>
  <link href="https://zdenekdrahos.github.io/atom.xml" rel="self" type="application/atom+xml"/>
  <updated>2020-10-16T12:00:00+00:00</updated>
  <author>
    <name>Zdeněk Drahoš</name>
  </author>
  <entry xml:lang="en">
    <title>Toggl time-entries -&gt; JIRA (tempo) worklogs</title>
    <link href="https://gist.github.com/zdenekdrahos/8ba762bfac5f6bc9dd6b3c59df21476d"/>
    <id>https://gist.github.com/zdenekdrahos/8ba762bfac5f6bc9dd6b3c59df21476d</id>
    <updated>2020-10-16T12:00:00+00:00</updated>
    <summary>PHP (cron) script for synchronizing time-entries from Toggl to JIRA (tempo plugin).
It extracts JIRA issue key from description, e.g. &lt;em&gt;#123 description&lt;/em&gt; is mapped to &lt;em&gt;IS-123&lt;/em&gt; (project key is configurable).
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Docker volumes - www-data on Debian/Ubuntu + Alpine image</title>
    <link href="https://gist.github.com/zdenekdrahos/53f16cfe902ff5f820a01b79e8c76a01"/>
    <id>https://gist.github.com/zdenekdrahos/53f16cfe902ff5f820a01b79e8c76a01</id>
    <updated>2019-06-22T12:00:00+00:00</updated>
    <summary>Sharing host OS www-data directories as a volume is tricky for Alpine images. User ID (UID) and Group ID (GID) are different.
How to avoid "Permission denied" errors when e.g. PHP FPM worker saves session to a shared directory?
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Editing Middleman site with Netlify CMS and GitLab</title>
    <link href="https://coderwall.com/p/e8ms-q"/>
    <id>https://coderwall.com/p/e8ms-q</id>
    <updated>2018-06-25T10:00:00+00:00</updated>
    <summary>Static site generators are great in its simplicity. But editing content is a challenge for less technically experienced people.
Netlify CMS solves it all without needing complex CMS solutions. Keep it simple!
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Import projects to Costlocker</title>
    <link href="https://costlocker.github.io/blog/2017-05-14-import-projects-to-costlocker.html"/>
    <id>https://costlocker.github.io/blog/2017-05-14-import-projects-to-costlocker.html</id>
    <updated>2017-05-14T08:10:00+00:00</updated>
    <summary>Are you using Harvest, Teamwork, JIRA, Asana, Toggl, … but missing some functionality like profits, revenues, etc…?
Costlocker is now able to create and update projects via its API.
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Use Costlocker webhooks for pushing notifications</title>
    <link href="https://costlocker.github.io/blog/2017-04-03-use-webhooks-for-pushing-notifications.html"/>
    <id>https://costlocker.github.io/blog/2017-04-03-use-webhooks-for-pushing-notifications.html</id>
    <updated>2017-04-03T08:10:00+00:00</updated>
    <summary>If you’re familiar with webhooks it shouldn’t take long to integrate webhooks from Costlocker.
It's easy to start pushing Costlocker notifications to Slack, ...    
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Import Toggl weekly report to Costlocker</title>
    <link href="https://costlocker.github.io/blog/2017-03-08-import-toggl-weekly-report-to-costlocker.html"/>
    <id>https://costlocker.github.io/blog/2017-03-08-import-toggl-weekly-report-to-costlocker.html</id>
    <updated>2017-03-08T08:10:00+00:00</updated>
    <summary>Are you using Toggl as your primary tracking tool instead of Costlocker? Do you still want to know the profitability of your business and employees?
Costlocker is now able to simply import all your Toggl tracked hours and process them.
</summary>
  </entry>
  <entry xml:lang="cs">
    <title>Evoluce backendu rozpisů zápasů - z hg a Phalconu do gitu, Silexu, Circle.ci a Loggly</title>
    <link href="https://www.rozpisyzapasu.cz/blog/dev-status-prechod-na-git-silex-2016-12-18.html"/>
    <id>https://www.rozpisyzapasu.cz/blog/dev-status-prechod-na-git-silex-2016-12-18.html</id>
    <updated>2016-12-18T18:00:00+00:00</updated>
    <summary>Aplikaci jsem začal vyvíjet v únoru 2014 jako diplomku. Od té doby jsem přešel z akademického prostředí do práce 
a z Windows na Linux/MacOS, takže aplikuji zkušeností a praktiky z práce.
Prvotním impulsem změny byla jen phpqa analýza kódu&amp;hellip;
</summary>
  </entry>
  <entry xml:lang="cs">
    <title>Z bastliče profesionálem?</title>
    <link href="https://gist.github.com/zdenekdrahos/0e24c314f1bd3fc27fd5fa09ebc9dea4"/>
    <id>https://gist.github.com/zdenekdrahos/0e24c314f1bd3fc27fd5fa09ebc9dea4</id>
    <updated>2016-05-21T18:00:00+00:00</updated>
    <summary>Retrospektiva nad praktikami a přístupem během VŠ studia a změnách po přechodu do praxe.
Aneb cesta za XP praktikami a hodnotami, profesionalismem, odpovědností a disciplíně.
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Redirect authenticated user on anonymous pages in Symfony</title>
    <link href="https://coderwall.com/p/w0yyag"/>
    <id>https://coderwall.com/p/w0yyag</id>
    <updated>2016-05-04T18:10:00+00:00</updated>
    <summary>What should happen when an authenticated user goes to login page, registration page, forgotten password etc.?
One option is to do nothing - just display the  page and let the user decide what he wants to do. Redirecting the user might be a better solution.
</summary>
  </entry>
  <entry xml:lang="cs">
    <title>Nedostatky Nette při přechodu ze Symfony2</title>
    <link href="https://quip.com/1DAjAVxx9gZ8"/>
    <id>https://quip.com/1DAjAVxx9gZ8</id>
    <updated>2016-01-13T16:37:00+00:00</updated>
    <summary>Předchozí projekty, na kterých jsem pracoval, byly v Symfony. Jakmile potom přecházíte z jednoho do druhého, 
tak se vždycky najde pár věcí, které jsou v jednom či druhém řešeny lépe. Framework nikdy nevyhoví všem,
tak jsem sepsal, s čím bojuji v Nette. 
</summary>
  </entry>
  <entry xml:lang="en">
    <title>HTTP Caching in Symfony2 - max-age, ETag &amp; gzip</title>
    <link href="https://coderwall.com/p/rl6v7a"/>
    <id>https://coderwall.com/p/rl6v7a</id>
    <updated>2015-02-20T09:59:00+00:00</updated>
    <summary>Symfony is cool, HTTP cache is cool, so HTTP cache in Symfony is even cooler.
Still estimates went south when we implemented max-age and ETag. By we I mean myself, Václav Novotný and Jenkins.
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Cleaner Symfony forms</title>
    <link href="https://coderwall.com/p/87ntkg"/>
    <id>https://coderwall.com/p/87ntkg</id>
    <updated>2015-01-09T17:14:00+00:00</updated>
    <summary>Forms are essential component for development of Symfony web application. 
But if I look at typical Symfony form then I see several violations of Four Rules of Simple Design:
duplicated form alias, unnecessary coupling to Symfony, optional $options.
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Optimizing single page Middleman website</title>
    <link href="https://coderwall.com/p/xcvxga"/>
    <id>https://coderwall.com/p/xcvxga</id>
    <updated>2014-12-27T16:01:00+00:00</updated>
    <summary>Single page website is even better when user downloads complete content in one HTTP request.
No additional requests for CSS and JavaScript files. Middleman handles file-size optimization very well, 
so the only thing you must do is inlining assets.
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Generate .htaccess in Middleman</title>
    <link href="https://coderwall.com/p/daflfq"/>
    <id>https://coderwall.com/p/daflfq</id>
    <updated>2014-12-27T14:55:00+00:00</updated>
    <summary>Writing .htaccess file manually can be exhausting because a lot of Apache directives must be duplicated. 
If you use Middleman for generating static websites, you can use it for .htaccess too.
Define source data in yml and loop the data in htaccess template.
</summary>
  </entry>
  <entry xml:lang="en">
    <title>Dispatch Symfony events in transactions</title>
    <link href="https://coderwall.com/p/zfvjsq"/>
    <id>https://coderwall.com/p/zfvjsq</id>
    <updated>2014-12-22T12:10:00+00:00</updated>
    <summary>Symfony dispatcher is powerful tool, but as in any framework maybe it's too much designed for general purposes.
One missing use case is dispatching event in transaction. For example when one listener failed, then you don't
want to insert rows to database.
</summary>
  </entry>
</feed>
