понедельник, 11 апреля 2011 г.

LVM (LOGICAL VOLUME MANAGER)

1.fdisk /dev/sda ->create 3 partitions + label to 8e
2.partprobe
3.fdisk -l
4.pvcreate /dev/sda8 /dev/sda9
5.pvdisplay /dev/sda8
6.pvdisplay /dev/sda9
7.vgcreate vg0 /dev/sda8 /dev/sda9
8.vgdisplay
9.lvcreate -L +200M -n /dev/vg0/home1
10.lvdisplay /dev/vg0/home1
11.lvcreate -L +300M -n /dev/vg0/var1
12.lvdisplay /dev/vg0/var1
13.mkfs.ext3 /dev/vg0/var1
14 mkfs.ext3 /dev/vg0/home1
15.mkdir /home1
16.mkdir /var1
17.mount /dev/vg0/home1 /home1
18.mount /dev/vg0/var1 /var1
19.cp /etc/a* /home1
20.cp /etc/b* /var1
21.vim /etc/fstab
22.mount -a

TO EXTEND LVM

1.lvdisplay /dev/vg0/home1
2.lvextend -L +200M /dev/vg0/home1
3.ls /home1
4.resize2fs /dev/vg0/home1
5.ls /home1

TO REDUCE LVM

1. lvdisplay
2. umount /var1
3. e2fsck -f /dev/vg0/var1
4. resize2fs /dev/vg0/var1 100M
5. lvreduce -L -100M -n /dev/vg0/var1
6. mount /dev/vg0/var1 /var1
7. df -h

LVM SNAPSHOT

1. lvcreate -L 200M -s -n lv2 /dev/llc/lv1

TO EXTEND PV
1.pvcreate /dev/sda10
2.pvdisplay

TO EXTEND VG
1.vgextend vg0 /dev/sda10
2.vgdisplay vg0

TO REDUCE VG
1.vgreduce vg0 /dev/sda10
2.vgdisplay

TO REDUCE PV
1.pvremove /dev/sda10
2.pvdisplay

REMOVE LVM
1.lvdisplay
2.umount /dev/vg0/home1
3.umount /dev/vg0/var1
4.vim /etc/fstab
5.lvremove /dev/vg0/home1
6.lvremove /dev/vg0/var1
7.lvdisplay

REMOVE VG
1.vgdisplay
2.vgremove /dev/vg0
3.vgdisplay

REMOVE PV
1.pvdisplay
2.pvremove /dev/sda9
3.pvremove /dev/sda8

Источник: http://www.redhatlinux.info/2010/11/lvm-logical-volume-manager.html

Клонирование диска в архив с отображение прогресса:
# dd if=/dev/vgdata/win2008 conv=sync,noerror bs=64k | pv -s 106G -pebrt | gzip -c > /mnt/data/lvm-image/win2008.lvm.raw.gz
21GB 0:03:59 [  10MB/s] [>                                       ]  2% ETA 3:07:21

воскресенье, 10 апреля 2011 г.

Tips&tricks

empty file
root@test:/tmp# dd if=/dev/zero of=templun3 count=0 obs=1 seek=200G
0+0 records in
0+0 records out
0 bytes (0 B) copied, 4.1537e-05 s, 0.0 kB/s
root@test:/tmp# ls -al *lun3*
-rw-r--r-- 1 root root 214748364800 2008-05-03 04:43 templun3

среда, 6 апреля 2011 г.

symfony render PDF 2

require_once("dompdf_config.inc.php");
$html =
    '<html><body>'.
    '<p>Some text</p>'.
    '</body></html>';

$this->$dompdf = new DOMPDF();
$this->$dompdf->load_html($html);
$this->dompdf->set_paper('a4', 'portrait');
$this->dompdf->render();
$pdf = $this->dompdf->output()

$response = $this->getContext()->getResponse();
$response->clearHttpHeaders();
$response->setHttpHeader('Pragma', 'public');
$response->setHttpHeader('Cache-Control', '');
$response->setHttpHeader('Content-Type', 'application/pdf');
// line deleted
$response->setContent($pdf);

return sfView::NONE;

symfony render PDF

public function executePdf(sfWebRequest $request)
  {
    $this->certificate = Doctrine_Core::getTable('Certificate')->findOneByToken(array($request->getParameter('token')));
    $this->forward404Unless($this->certificate);
  //$config = sfTCPDFPluginConfigHandler::loadConfig();
  // pdf object
  $pdf = new myPDF();

  // settings
  $pdf->SetFont("FreeSerif", "", 12);
  /*
  $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
  $pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
  $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
  $pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
  $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
  $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
*/
  //$pdf->setPrintHeader(false);
  $pdf->setPrintFooter(false);
  
  // init pdf doc
  //$pdf->AliasNbPages();
  $pdf->AddPage('L', array(132,66));
  $pdf->Cell(80, 10, "Certificate číslo: ". $this->certificate->token);

  $this->setLayout(false);
  // output
  $response = $this->getContext()->getResponse();
$response->clearHttpHeaders();
$response->setHttpHeader('Pragma', 'public');
$response->setHttpHeader('Cache-Control', '');
$response->setHttpHeader('Content-Type', 'application/pdf');
$response->setHttpHeader('Content-Disposition', 'attachment; filename="invoice.pdf"');
$response->setContent($pdf->Output());

return sfView::NONE;

//  return $pdf->Output();

  // Stop symfony process
 // throw new sfStopException();

  }
}

include '/var/www/oleg/slevy/plugins/sfTCPDFPlugin/lib/tcpdf/tcpdf.php';
// Extend the TCPDF class to create custom Header and Footer
//class MYPDF extends sfTCPDF {
class MYPDF extends TCPDF {


    //Page header
    public function Header() {
        // full background image
        // store current auto-page-break status
        $bMargin = $this->getBreakMargin();
        $auto_page_break = $this->AutoPageBreak;
        $this->SetAutoPageBreak(false, 0);
        $img_file = sfConfig::get('sf_web_dir') . '/images/bg_kupon.jpg';
        $this->Image($img_file, 0, 0, 132, 66, '', '', '', false, 300, '', false, false, 0);
        // restore auto-page-break status
        $this->SetAutoPageBreak($auto_page_break, $bMargin);
    }
}

вторник, 5 апреля 2011 г.

psql tips&tricks

Аналог mysql Group_concat
SELECT array_to_string(array(SELECT DISTINCT a FROM b),', ');


вывод результата в psql во вшешний файл
\o /tmp/text.txt
SELECT array_to_string(array(SELECT DISTINCT a FROM b),', ');

воскресенье, 3 апреля 2011 г.

OpenErp lanchpad

Howto bazar
http://doc.bazaar.canonical.com/latest/en/mini-tutorial/
http://doc.bazaar.canonical.com/latest/en/user-guide/index.html

lanchpad paths:
http://bazaar.launchpad.net/~openerp-community/openobject-addons/trunk-addons-community/files

OpenErp Logger

   import netsvc
   netsvc.Logger().notifyChannel('my_module_or_tag', netsvc.LOG_DEBUG, "Hello")