Windows Server: skript pro automatickou zálohu MySQL databáze a obsahu adresářů na FTP
Ideální hosting pro větší projekty, které nepotřebují vlastní dedikovaný server, je dle mého VPS s Windows. Snadno se administruje, nabízí vysoký výkon (v případě cloudu téměř neomezený), a spustíte na něm vše - od IIS, přes Apache, MySQL po SQL Server 2014.
Za pomoci jen integrovaných Windows nástrojů (Command line a ftp.exe) a 7Zipu je na takovémto serveru snadné napsat zálohování na externí FTP.
Osobně používám skript, který v pravidelném intervalu (X hodin) udělá kompletní dump MySQL databáze, nahraje jej zašifrovaný na FTP server, a jak lokálně tak na FTP serveru smaže staré zálohy, aby tam bylo místo pro nové. Podobně pracuji s adresáři, zazipují se, zašifrují, a nahrají na FTP server, se smazáním těch nejstarších.
Slouží mi pro to pár jednoduchých BAT souborů. Zálohu MySQL jsem převzal a upravil z Redolive.com.
Budu rád, pokud tyto zálohovací skripty použijete, když mi dáte vědět.
Skripty počítají s formátem data "xx dd. mm. yyyy" (česká instalace Windows Server 2012 R2), pokud máte na serveru jinak nastavené národní prostředí, skripty pracující s datumem upravte. Samozřejmě je potřeba nastavit [hodnoty v hranatých závorkách]. Na FTP skript předpokládá existenci adresářů /db a /media.
[config.bat] Konfigurační soubor
@echo off SET FTPUSER=[ftp_uzivatel] SET FTPPASSWORD=[ftp_heslo] SET FTPPORT=[ip_adresa_a_port_ve_tvaru_10,0,0,1,5,25] SET FTPHOST=[ftp_host] IF %1 NEQ "" SET FTPDIR=%1 SET DaysToKeep=7 :: ------------------------------------ :: DATUM ocekavano jako "xx dd. mm. yyyy" :: ------------------------------------ set year=%DATE:~11,4% set day=%DATE:~3,2% set mnt=%DATE:~7,2% set hr=%TIME:~0,2% set min=%TIME:~3,2% IF %day% LSS 10 SET day=0%day:~1,1% IF %mnt% LSS 10 SET mnt=0%mnt:~1,1% IF %hr% LSS 10 SET hr=0%hr:~1,1% IF %min% LSS 10 SET min=0%min:~1,1%
Integrace UltraEdit / UEStudio a PHP manuálu
PHP manuál si můžete stáhnout v "enhanced" podobě včetně uživatelských komentářů a pohodlně si jej procházet off-line.
Pokud používáte UltraEdit či UEStudio (můj oblíbený editor a IDE), je možné si integrovat tuto nápovědu i do IDE. Funguje to tak, že si označíte dané slovo, stisknete horkou klávesu a zobrazí se vám PHP nápověda s vyhledanou označenou funkcí.
Stačí si pro to založit v "Tool Configuration" novou utilitu PHP manuál:
Základem je command line: HH php_enhanced_en.chm::/res/function.%sel%.html
.
Plus je potřeba si vytvořit malinkatý skript, který v označeném textu převede znak "_" na "-", protože takto je PHP nápověda formátovaná (místo "array_push" se hledá "array-push"). Vytvořte si prázdný soubor třeba s názvem "c:\backup\help.txt" a poté javascriptový soubor phpmanual.js, kterému dejte tento obsah:
// Tool Configuration // Name: PHP manual // Command line: HH php_enhanced_en.chm::/res/function.%sel%.html if (UltraEdit.activeDocument.isSel()){ var str = UltraEdit.activeDocument.selection; var fname = "C:\\backup\\help.txt"; UltraEdit.open(fname); str = str.replace(/_/g, '-'); UltraEdit.activeDocument.write(str); UltraEdit.activeDocument.selectAll(); UltraEdit.runTool("PHP manual"); UltraEdit.closeFile(fname,2); }
Následně stačí si phpmanual.js přidat jako skript a dát mu horkou klávesu. Není to úplně elegantní metoda, protože Tool Configuration nepracuje s (například) obsahem clipboardu, takže se nuceně založí nový dokument, v něm se přepíše a označí onen text, otevře se PHP nápověda, a pomocný dokument se zase zavře. Nicméně funguje to :)
SQL Server - zrušení replikace databáze
use master go exec sp_helpreplicationdb exec sp_removedbreplication 'databaze' ALTER DATABASE databaze SET SINGLE_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE databaze SET MULTI_USER
Zde přihlašte do soutěže své Windows 8 aplikace
Před 14 dny byla na MyWindows.cz vyhlášena soutěž pro vývojáře Windows 8 aplikací.
Své aplikace můžete přihlásit do soutěže pomocí tohoto formuláře:
https://mywindows.cz/soutez.php
Uzávěrka prvního kola je 10.7. a druhého pak 28.8.
Jako vývojář dostanete bezplatně pozvánku do Windows Store (který zatím není otevřen pro vývojáře z ČR), propagaci a recenzi aplikace na MyWindows.cz, tiskovou zprávu pro další média, odkazy z dalších webů (včetně Twitter / Facebook s 10 000 followers), výherce pak XBox 360.
Související články:
- Vývojáři, předběhněte konkurenci! Soutěž o pozvánky do Windows Store pro Metro aplikace
- Začínáme s vývojem Metro aplikací
- Jak připravit aplikaci pro Windows 8 pomocí HTML5, CSS3 a JavaScript – den 0
- Jak připravit aplikaci pro Windows 8 pomocí HTML5, CSS3 a JavaScript – den 1
- Jak připravit aplikaci pro Windows 8 pomocí HTML5, CSS3 a JavaScript – den 2
- Jak připravit aplikaci pro Windows 8 pomocí HTML5, CSS3 a JavaScript – den 3
- Jak připravit aplikaci pro Windows 8 pomocí HTML5, CSS3 a JavaScript – den 4
Programujeme aplikaci pro Windows 8 pomocí HTML5, CSS3 a JavaScriptu
Cílem těchto pěti článků je poskytnout praktický recept, podle něhož lze zcela od začátku vytvořit aplikaci pro Windows 8.
Pro jednotlivé díly se podívejte na:
- Den 0 - vytvoření projektu, připojení k datům, příprava úvodní stránky, použití stylů ve stránce, vytvoření výchozí obrazovky
- Den 1 - obrazovka rozšíření, různé úrovně přiblížení, nastavení aplikace, režim off-line, filtry
- Den 2 - podpora mezinárodního prostředí, správa aktivace režimu offline, přidání ovládacího prvku flipView na stránky karet, podpora přichyceného zobrazení, podpora různých rozlišení, podpora různých velikostí karet
- Den 3 - kontrakt Hledání, kontrakt Sdílení, kontrakt Výběr souboru, živá dlaždice, sekundární dlaždice
- Den 4 - přidání souboru se stavem sbírky, připojení ke službě SkyDrive, aktualizace sbírky uživatele ve službě SkyDrive
Pro obecný úvod se vám bude hodit článek Začínáme s vývojem Metro aplikací a poté zde máme Soutěž o pozvánky do Windows Store pro Metro aplikace.
Automatické načtení sídla firmy a verifikace DIČ (VAT) pro celou EU
Minulý rok jsem publikoval krátký článek ohledně automatické načtení sídla české firmy a DIČ podle zadaného IČ z ARES XML pomocí PHP a jQuery. Uvedenou službu je možné snado rozšířit na celou EU pomocí webové služby dostupné na adrese ec.europa.eu. Tato službá má totiž veřejně dostupné WSDL a pomocí SOAP klienta ji snadno můžete dotazovat.
Zjednodušený kód produkující stejný výstup jako dříve odkazovaný skript pro ARES může vypadat takto - vstupem je dvouznakový kód země a IČ (přesněji DIČ bez počátečního kódu země, což v praxi bývá IČ):
<?php header("Content-Type: application/json; charset=UTF-8"); $a = array(); try { $ic = $_REQUEST['ic']; // IČ $country = $_REQUEST['country']; // Country code $soap = new SoapClient( 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl'); $params = array('countryCode' => $country, 'vatNumber' => $ic); $result = $soap->checkVatApprox($params); if (!$result->valid) { $a['stav'] = 'DIČ '.$country.$ic.' nebylo nalezeno'; } else { $a['ic'] = strval($result->vatNumber); $a['dic'] = $country.$a['ic']; $a['firma'] = strval($result->traderName); if (!$result->traderCity && $result->traderAddress) { $t = explode("\n",$result->traderAddress); $result->traderStreet = $t[0]; $result->traderCity = $t[1]; $result->traderPostcode = $t[2]; } $a['ulice'] = strval($result->traderStreet); $a['mesto'] = strval($result->traderCity); $a['psc'] = strval($result->traderPostcode); $a['stav'] = 'ok'; } } catch (Exception $e) { $a['stav'] = 'EC služba právě není dostupná'; } echo json_encode($a); ?>
A výstupem třeba pro Mladá fronta a.s. je takovýto JSON:
{ "ic":"49240315", "dic":"CZ49240315", "firma":"Mlad\u00e1 fronta a.s.", "ulice":"Mezi Vodami 1952\/9", "mesto":"PRAHA 12 - MOD\u0158ANY", "psc":"143 00 PRAHA 412", "stav":"ok" }
(PHP) den nemá 86 400 sekund?
Víte kolik má den sekund? Občas jsem viděl v PHP toto počítat jako 24 (hodin) * 60 (minut) * 60 (sekund). Nefunguje to.
setlocale(LC_ALL, "czech"); date_default_timezone_set("Europe/Paris"); function p($t) { $d = getdate( $t ); echo $d['mday'],' '; } $o = 24*60*60; // 86 400 $t = mktime(0,0,0,10,29,2011); p($t); for ($i = 1; $i<=4; $i++) { $t += $o; p($t); }
Vypíše:
29 30 30 31 1
Automatické načtení sídla firmy a DIČ podle zadaného IČ (ARES XML) pomocí PHP a jQuery
V eshopu zaměřeném na firemní zákazníky můžete těmto usnadnit nákup a prvotní registraci tím, že podle zadaného IČ načtete kompletní informace o sídle a DIČ z databáze ARES. MFČR ji poskytuje jako webovou službu vracející přehledný XML feed.
Implementace s pomocí jQuery je velice jednoduchá, stačí si vytvořit JSON feed reagující na AJAXový požadavek pod názvem ares.php
:
<?php header("Content-Type: application/json; charset=UTF-8"); define('ARES','http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_bas.cgi?ico=');
$ico = intval($_REQUEST['ico']);
$file = @file_get_contents(ARES.$ico);
if ($file) $xml = @simplexml_load_string($file); $a = array();
if ($xml) {
$ns = $xml->getDocNamespaces();
$data = $xml->children($ns['are']);
$el = $data->children($ns['D'])->VBAS;
if (strval($el->ICO) == $ico) {
$a['ico'] = strval($el->ICO);
$a['dic'] = strval($el->DIC);
$a['firma'] = strval($el->OF);
$a['ulice'] = strval($el->AA->NU).' '.strval($el->AA->CO);
$a['mesto'] = strval($el->AA->N);
$a['psc'] = strval($el->AA->PSC);
$a['stav'] = 'ok';
} else
$a['stav'] = 'IČ firmy nebylo nalezeno';
} else
$a['stav'] = 'Databáze ARES není dostupná'; echo json_encode($a); ?>
Rychlý export HTML stránky do PDF v PHP
Pokud potřebujete rychle vytvořit z HTML stránky PDF soubor a nabídnout jej ke stažení či poslat jej emailem v PHP, existuje na to výborná knihovna mPDF. Podporuje zpracování řady formátovacích prvků v CSS, nemusíte tedy HTML stránku či layout nijak speciálně upravovat.
Pokud máte třeba fakturu v eshopu připravenou jako HTML, je její převod do PDF otázkou pár řádků kódu:
require("mpdf/mpdf.php"); $mpdf = new mPDF('utf-8','A4'); $mpdf->useOnlyCoreFonts = true; $mpdf->SetDisplayMode('fullpage'); $mpdf->SetAutoFont(0); // CSS soubor $stylesheet = file_get_contents('faktura.css'); // faktura v HTML (PHP, atd.) $html = file_get_contents('faktura.html'); $mpdf->WriteHTML($stylesheet,1); $mpdf->WriteHTML($html,2); $name = "danovy-doklad.pdf"; $mpdf->Output($name,"D"); // download
Rychlý export databázové tabulky do Excelu (2007/2010) v PHP
Pokud potřebujete rychle exportovat nějaká data - tabulku či VIEW - z MySQL databáze do Excelu, je to v PHP velice snadné díky PHPExcel knihovně na Codeplexu. Kromě moderního XLSX umí tato knihovna i XLS, PDF, CSV a další formáty.
Tento jednoduchý skript vezme VIEW v MySQL databázi (v tomto případě čtenost článků, které nějak souvisí s Microsoftem), vytvoří z nich Excelovský soubor, a nabídne jej ke stažení v Excel 2010 formátu.
class createXLSX { var $xlsxrow = 1; var $xlsxcolumn = 1; var $maxcolumn = 0; function getColumn($column) { if ($this->maxcolumn < $column) $this->maxcolumn = $column; if ($column > 26) return chr(ord('A') + floor(($column - 1)/26) - 1) . chr(ord('A') + ($column % 26) - 1); else return chr(ord('A') + $column - 1); } function writeRow($x, $data, $bold = false) { $i = 0; foreach ($data as $s) { $c = $this->getColumn($this->xlsxcolumn + $i++).strval($this->xlsxrow); $x->setActiveSheetIndex(0)->setCellValue($c,$s); if ($bold) $x->getActiveSheet()->getStyle($c)->getFont()->setBold(true); } $this->xlsxrow++; } }