Poznámky (de)kodéra

Nesouvislé fragmenty kódu

31.3.2012
by admin
0 comments

WEDOS spouští podporu HTTPS

Dnes přišla potěšující zpráva, že po dlouhém čekání spouští webhostér WEDOS  podporu HTTPS. Oficiální datum spuštění je pondělí 2.dubna ale nedočkavci si mohou zažádat o spuštění HTTPS již nyní pomocí  jejich kontaktního formuláře.

Z oficiální zprávy WEDOS-u:

Spouštíme podporu HTTPS u webhostingu

Nabízíme 2 varianty HTTPS:

  • se sdíleným certifikátem – zdarma, vhodné pro váš zabezpečený přístup do administrace CMS či e-shopu, nevhodné pro návštěvníky a zákazníky
  • s vlastním certifikátem – vhodné i pro zabezpečený přístup vašich návštěvníků a zákazníků na vaše WWW stránky, nutno u webhostingu aktivovat vlastní IP adresu – zpoplatněno 100 Kč bez DPH měsíčně (120 Kč s DPH) a nutno dodat vlastní certifikát

Celá zpráva

9.3.2012
by admin
0 comments

uniqselect – jQuery plugin pro výběr unikátních hodnot ze seznamu select-ů

Uniqselect je jQuery plugin který jsem vytvořil pro potřeby jednoduchého dotazníkového systému který připravuji. Umožňuje vybrat unikátní hodnoty ve skupině select-ů se stejným seznamem hodnot. Hodí se například pro úlohy typu „Ohodnoťte následující odpovědi jako ve škole..“

Zdrojové kódy lze stáhnout přímo uniqselect repository na Github-u.

Použití je velmi triviální.

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="jquery.uniqselect.js"></script>

<script type="text/javascript">
      $(document).ready(function(){
         $("fieldset").uniqselect();
      });
</script>
<form>
   <fieldset id="group1">
      <legend>Group1 - 3 selects, unique values (1-5)</legend>
      <select class="custSelect">
         <option value=""></option>
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
         <option value="5">5</option>
      </select>
      <select class="custSelect">
         <option value=""></option>
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
         <option value="5">5</option>
      </select>
      <select class="custSelect">
         <option value=""></option>
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
         <option value="5">5</option>
      </select>
   </fieldset>
</form>

Pro lepší představu je k dispozici uniqselect online demo.

21.2.2012
by admin
0 comments

Tutoriál: Instalace AndEngine pro Eclipse ve Windows

Pro zájemce o vyzkoušení android herního frameworku AndEngine zde stručně popíšu postup instalace všeho potřebného. Popisovaný postup platí pro poslední verzí AndEngine (GLES2) jejíž zdrojové kódy byly přesunuty na GitHub. Adresa celé repository je https://github.com/nicolasgramlich. Instalace proběhla na 32-bit verzi Windows XP.

Co je nutné stáhnout a nainstalovat:

  • vývojové prostředí Eclipse (já používám Eclipse Classic)
  • rozšíření Eclipse pro práci s GIT repository, já používám EGit
  • poslední verzi Java JDK
  • poslední verzi Android SDK

Po instalaci a konfiguraci všeho výše uvedeného lze přejít k importu zdrojových kódů frameworku AndEngine z repository. Pokud jste Eclipse zelenáč a nevíte jak nainstalovat rozšíření EGit, použijte Google nebo se podívejte se jak instalovat rozšíření pro Eclipse.

Pro import zdrojových kódů nás budou zajímat následující adresy:

Každou z předchozích adres je nutné několika kroky naklonovat do lokální repository.

Klikněte na File->Import

Vyberte Git->Projects from Git

Klikněte na tlačítko Clone a do URI vložte adresu repository ze seznamu výše. Přejděte na další krok, nechejte vybrané všechny komponenty a poté pokračujte dalším krokem.

V posledním dialogu se Eclipse zeptá kam má repository naklonovat. Pozor! Je nutné mít Git repository na stejném disku jako bude váš budoucí projekt.

Po vytvoření všech projektů by měla struktura projektů vypadat podobně jako je vidět na následujícím obrázku.

Takto vytažené projekty ještě nejdou sestavit. U všech projektů je třeba změnit verzi kompilátoru na 1.6. Nastavení najdete v Project->Properties->Java Compiler. Následně pak opravit závislosti kliknutím na Android Tools -> Fix Project Properties.

21.2.2012 DOČASNÉ OPRAVY:

V posledních verzi je v projektu AndEngineExamples závislost na projekt AndEngineScriptingExtension který ještě nemá žádné zdrojové kódy a nelze jej zatím z GitHub-u importovat. Neplatnou závislost je možné odebrat přes Project->Properties->Android.

Další dočasnou opravou je úprava zdrojových kódů podle nahlášené Issue #48. V aktuální verzi na GitHub je již opraveno.

Pokud jste zvládli všechny předchozí kroky můžete spustit projekt AndEngineExamples a v emulátoru by vás měla potěšit následující obrazovka:

9.2.2012
by admin
0 comments

Generátor náhodných JSON dat

Poslední dobou často potřebuji objemná testovací data ve formátu JSON. Jak už to tak bývá, nějaké existující generátory jsem našel ale žádný mi úplně nevyhovoval.

Pro potřeby generování testovacích JSON dat jsem si proto vyrobil šikovný on-line JSON generátor. Aplikace je napsaná pomocí Dojo toolkit frameworku.

JSON generator

8.6.2011
by admin
0 comments

Automatický parser pro jQuery

V jednom větším projektu používám z historických důvodů jQuery. Při menší refaktorizaci jsem si chtěl ulehčit život a vytvořil jsem jednoduchý, několikařádkový parser.
Parser najde všechny prvky s atributem „data-widget-type“ a pokusí se zavolat oblužnou funkci. Argumenty předávané oblužné funkci lze definovat v atributu „data-widget-attr„. Celé se to hodí např. pro automatické vytváření ui widgetů.

Jedná se opravdu o jednoduchý kód pro ulehčení práce. Cílem nebylo vytvořit rozsáhlý parser s automatickým načítáním AMD modulů apod.

/**
* Tato funkce prohledá DOM model a získá elementy s atributem "data-widget-type".
* Pro každný nalezený element poté zavolá obsluhu pojmenovanou 'parsed_'+ typ_widgetu
*/
$.fn.parse = function(){

   /**
    * Parsuje hodnotu atrubutu 'data-widget-attr' ze které
    * se pokusí získat parametry pro oblužnou funkci
    * Příklad syntaxe: data-widget-attr="prop1:'value',prop2:'value'"
    * @param {String} strAttr
    */
   var _parseAttributes = function(strAttr){
      if(strAttr && strAttr.length){
         try{
            // return $.parseJSON("{" + strAttr + "}"); //toto je hezké ale nefunkční pokud se použijí apostrofy
            strAttr = strAttr.replace('"','"');
            return eval("(" + "{" + strAttr + "}" + ")");
         }catch(e){
            throw new Error(e.toString() + " in data-widget-attr='" + strAttr + "'");
         }
      }
   };

   $('[data-widget-type]',$(this)).each(function(){
      var _type = $(this).attr('data-widget-type');
      var _attr = $(this).attr('data-widget-attr');
      var _func = 'parsed_'+_type;

      // pro zjednodušení jsou obslužné funkce v globálním kontextu
      if(window[_func]){
         window[_func]($(this), _parseAttributes(_attr) || {});
      }
   });
   return this;
};

Příklad použití mluví sám za sebe:

/**
 * Definice obslužné funkce pro data-widdget-type="mujWidget"
 * @param {Object} prvek nad kterým se fce volá
 * @param {Object} argumenty definované v 'data-widget-attr'
 */
var parsed_mujWidget = function(node, attributes){
   //definice výchozích hodnot
   var _mixin = {klic: 'hodnota'};
   //mix s dodanými argumenty
   var attrs = $.extend(_mixin, attributes);

   //vysledne argumenty: attrs = {klic:'hodnota', klic2:'moje-custom-hodnota'}

   //nakonec si zavolám požadovanou funkci
   mojeFunkce(attrs);
};

//zapojení parseru po načtení stránky
$(document).ready(function(){
   $(document).parse();
});

Ve stránce pak stačí zápis:

<!-- nad timto prkem se automaticky zavola "mojeFunkce" -->
<div data-widget-type="mujWidget" data-widget-attr="klic2:'moje-custom-hodnota'"></div>