úterý 9. října 2012

Virtuální HDD + další legrace

Návod na zvětšení virtuálního HDD Ubuntu:

https://help.ubuntu.com/community/ResizeandDuplicateWubiDisk

Návod na provoz virtuálního HDD pod Windows:


http://extrawindows.cnews.cz/comment/13426

Návod na zprovoznění vzdálené plochy s klientem Windows pod Ubuntu (12.04):

http://www.liberiangeek.net/2012/05/connect-to-ubuntu-12-04-precise-pangolin-via-windows-remote-desktop/

SVN pro poslední vydání OpenWRT

svn checkout svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1


Jak správně nastavit cesty Crona


http://stackoverflow.com/questions/2388087/how-to-get-cron-to-call-in-the-correct-paths

středa 29. srpna 2012

Přidání grafického indikátoru využití HDD pro IPBox Enigma2

Je nutné upravit celkem dva soubory:

Nejdříve javascriptový soubor: soubor /usr/local/lib/enigma2/python/Plugins/Extensions/WebInterface/web-d
ata/objects.js


            var free        = hdd.getElementsByTagName('e2free').item(0).firstChild.data;
            var IntFree = parseInt(free.replace(" GB",""));
            var IntCapacity = parseInt(capacity.replace(" GB",""));
            var pfree   = Math.floor(((100 / IntCapacity) * IntFree)*10)/10;
            var pUsed   = 100 - pfree;
   
            this.hdds[i] = {   
                    'model'     : model,
                    'capacity'  : capacity,
                    'free'      : free,
                    'pfree'     : pfree,
                    'pUsed'     : pUsed
            };

 A nyní již jen vlastní šablonu stránky v souboru: /usr/local/lib/enigma2/python/Plugins/Extensions/WebInterface/web-d
ata/tpl/default/tplDeviceInfo.htm

<tr>
    <td class="aboutElementLeft">Free:</td>
    <td class="aboutElementRight">${hdd.free}</td>
</tr>
<tr>
    <td colspan="2" style="padding-right: 3px;">
        <div style="width:100%; position:relative; border:1px solid #999999">
            <div style="background-color:#CCCCCC; width: ${hdd.pUsed}%; height:15px">
                <div style="position:absolute; left:0; top:0; text-align:center; width:100%%; color:#000000">
                    <small>Free: ${hdd.free} / ${hdd.capacity} (Free: ${hdd.pfree} %)</small>
                </div>
            </div>
        </div>
    </td>
</tr>



Pokud je HDD připojen pomocí USB rozhraní, tak se zobrazuje dvakrát. Tento problém jsem odstranil pomocí přidání podmínky do /usr/local/lib/enigma2/python/Plugins/Extensions/WebInterface/web-d
ata/objects.js, pokud je název HDD stejný jako předchozí, pak se tento nezobrazí.

var hddnodes = xml.getElementsByTagName('e2hdd');
    var PreviousHdd = "";
    for( var i = 0; i < hddnodes.length; i++){
        try{           
            var hdd = hddnodes.item(i);
   
            var model   = hdd.getElementsByTagName('e2model').item(0).firstChild.data;
            if (PreviousHdd != model)
            {
                var capacity = hdd.getElementsByTagName('e2capacity').item(0).firstChild.data;
                var free        = hdd.getElementsByTagName('e2free').item(0).firstChild.data;
                var IntFree = parseInt(free.replace(" GB",""));
                var IntCapacity = parseInt(capacity.replace(" GB",""));
                var pfree   = Math.floor(((100 / IntCapacity) * IntFree)*10)/10;
                var pUsed   = 100 - pfree;
   
                this.hdds[i] = {   
                        'model'     : model,
                        'capacity'  : capacity,
                        'free'      : free,
                        'pfree'     : pfree,
                        'pUsed'     : pUsed
                };
            }
            PreviousHdd = model;
        } catch(e){
            notify("Error parsing HDD data: " + e, false);         
        }
    }



pondělí 13. srpna 2012

Skriptování v Notepadu++


Skriptování v Notepadu++
Pomocí doplňku Notepad++ Python Script je možné spouštět Pythonovské skripty. Následuje příklad pro hromadnou modifikaci HTML, PHP a javascriptových souborů:

# -*- coding: utf-8 -*-
''' Vyhledani vsech souboru '''
import os
import sys
import string
SeznamSouboru = []
rootdir = "C:\\htdocs\\pokus" # slozka kde jsou ulozeny upravovane soubory
for root, subFolders, files in os.walk(rootdir):
    for file in files:
        SeznamSouboru.append(os.path.join(root,file))
       
# nyni jsou v poli retezce s adresami vsech souboru ve slozce rootdir
for NazevSouboru in SeznamSouboru:
    if ((string.find(NazevSouboru,".php") != -1) or
        (string.find(NazevSouboru,".js") != -1) or
        (string.find(NazevSouboru,".html") != -1) or
        (string.find(NazevSouboru,".htm") != -1)) :
        notepad.open(NazevSouboru# otevreni souboru v notepadu++
        # editujeme jen soubory pro ktere to ma smysl, ne obrazky
        ''' nahrazeni retezce (prvni parametr) retezcem v druhem parametru '''
        editor.replace('ora_getcolumn($curs,$i)', '$row[$i]')
        editor.replace('ora_getcolumn($curs,0)', '$row[0]')
        editor.replace('ora_parse($curs,', '$curs = sprintf(')
        editor.replace('ora_parse($curs2,', '$curs2 = sprintf(')
        editor.replace('ora_parse($curs3,', '$curs3 = sprintf(')
       
        # ulozeni modifikovaneho souboru
        notepad.saveAs(NazevSouboru)
        # uzavreni zalozky v notepadu
        notepad.close()
        console.write("Soubor %s byl uspesne modifikovan!\n" % NazevSouboru)
   
console.write("Hotovo!")
  
http://sourceforge.net/projects/npppythonscript/

sobota 16. června 2012

Jak bezpečně zapisovat do MySQL ze vzdáleného počítače

Na serveru běží MySQL, nechtěl jsem k ní nechat přístup z Internetu, proto jsem celý problém vyřešil pomocí předání parametrů v URL dotazu. Něco podobného je možné realizovat wgetem nebo pomocí programu curl.

<?php
$server_name = 'localhost'; // jmeno databazoveho serveru
$db_user = ''; // uzivatel
$db_pass = ''; // heslo
$db_name = 'Teploty'; // jmeno databaze

session_start();
//$_SESSION["hash"] = "17f5596768b6b33ea69dfc822d3a8bace7fe6ae5";
session_register("hash");
if ($_REQUEST['hash']==$_SESSION["hash"])
    {
    $hash = sha1(rand());
    $_SESSION["hash"]=$hash;
    echo $hash;
    mysql_connect($server_name, $db_user, $db_pass) or die('Nepodařilo se připojit k MySQL databázi'); // pripojeni k databazi
    mysql_select_db($db_name) or die('Nepodařila se otevří databáze.'); // vyber databaze

    $dotaz="INSERT INTO `Teploty`.`Teploty` (`ID`, `Datum`, `Teplota doma`, `Teplota venku`,
    `Teplota kotel`) VALUES (NULL, NOW(), '".mysql_real_escape_string($_REQUEST['doma'])."', '".mysql_real_escape_string($_REQUEST['venku'])."',
    '".mysql_real_escape_string($_REQUEST['kotel'])."');";
    $radku = mysql_num_rows($vysledek);
    }
?>

Při každém spojení je vygenerován autorizační kód pro další relaci, použitím session je pro každého uživatele generován jiný přístupový kód. Pro synchronizaci stačí odkomentovat řádek kde se do $_SESSION["hash"] přiřazuje počáteční hodnota, po úspěšném připojení všech klientů je nutné tento řádek opět zakomentovat.

Další poznatky: adresu do wgetu či curl je nutné zadávat v uvozovkách, jinak dojde k oříznutí ostatních parametrů kromě prvního.

curl "http://xxx.cz/teplota.php?doma=23.5&venku=10.81&kotel=65.58&hash=ahoj"
Při spojení s curl se session chová poněkud divně.