pátek 8. ledna 2016

Alternativa k MS Visio


 V minulém příspěvku jsem zmínil, že pro běžné dokumenty a domácí použití už téměř nepoužívám programy jako Word  či Excel z balíčku Microsoft Office. Ovšem netýká se to jen těchto programů - například Visio jsem si nahradil aplikací Draw.IO, kterou lze jednoduše do Google Drive doinstalovat a opět si využívat všech výhod, které to přináší.




Nepřehlédnutelná je i finanční stránka, Visio stojí jednorázově 300.00 až 600.00 USD a nebo cca 15 dolarů při měsíčních platbách, zatímce Draw.io je zadarmo. Navíc není problém sdílet hotové nákresy například na stránkách, ostatně toto je příklad Activity Diagramu k předchozímu článku:

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

Jak je vidět, kód v předchozím článku se mírně liší, je zjednodušený neb neobsahuje rekurzi, která je v tomto Activity Diagramu zachycena. Po úpravě by pak kód vypadal takto:

function pronunciation(input)
{
    if ((input != null && input !== undefined) && !input.map) {     
      Utilities.sleep(1000);
      var sourceHtml = UrlFetchApp.fetch('http://dictionary.cambridge.org/search/english/direct/?q=' + input).getContentText();
      var pronunciationStartTag = '<span class="ipa">';
   
      var start = sourceHtml.indexOf(pronunciationStartTag,40000); //skipping 40.000 chars forward to just speed up the search
      
      if(start > 0)
      {
        var innerText = [];
        var position = start + pronunciationStartTag.length;
        getTagInnerText_(sourceHtml, innerText, position);
        return innerText.join('');
      }
    }
    
    return '';
}

function getTagInnerText_(sourceHtml, innerText, position) {
  
  do {
     if(sourceHtml.charAt(position) !== '<'){   
        innerText.push(sourceHtml.charAt(position));//no tag start  -> store it
        position++;
     }
     else {
       var endPosition = sourceHtml.indexOf('>', position);//end of the tag
       if(sourceHtml.charAt(position +1) === '/' || sourceHtml.charAt(endPosition-1) === '/')  //closing tag ?
          return ++endPosition;
       else
          position = getTagInnerText_(sourceHtml, innerText, endPosition +1);  //read the text from the inner tag
     }
  } while(true);
}

UML je asi dobré chápat jako doplněk k programování - existují názory, že dobrý kód je samopopisující se, ale přeci jen grafický popis může v mnoha případech popsat děj přehledněji a umožní i rychlé posouzení případných změn a úprav.  určitě se tedy vyplatí nějaká zásady pro UML znát, i když si myslím, že není potřeba se zcela řídit pravidly - důležité je, aby se ve výsledku dalo vyznat a k něčemu to bylo.

Žádné komentáře:

Okomentovat