Hlavní navigace

Názory k článku Pgbash

Článek je starý, nové názory již nelze přidávat.

  • 25. 10. 2002 11:32

    binary_runner (neregistrovaný)

    Velice zajimavy clanek, napadlo me, jestli
    by neslo udelat modularni shell, do ktereho by se
    podobna uzitecna rozsireni dala dynamicky zapojovat...

    Jiste to s sebou nese i nova bezpecnostni rizika,
    ale s trochou opatrnosti by to snad slo. Co si o tom myslite ?

  • 29. 10. 2002 9:17

    Karel Zak (neregistrovaný)

    Hral jsem si s pgbash cca pre dvema roky (delal to tehdy nejaky japonec) a urcite to bylo jako modul k bash, protoze pokud si pamatuji tak bash ma nejake API pro moduly.

  • 25. 10. 2002 16:54

    xChaos (neregistrovaný)

    To je presne, to co je potreba !!! strasne me vadi prepinani mezi shellem a mysql konzoli...

    A co je jeste lepsi... vismli jste si, ze ta sama vec jde udelat i bez patche to bashe ? Staci napsat nekolik jednoduch skriptu, ktere date do /usr/local/bin, a ktere maji nazvy stejne, jako SQL prikazy ! pricemz connect si ulozi informace o pripojene aktualni databazi do nejakeho souboru ~/.mysqlrc..., ktery bude mit prava 600... moment... select je ale klicove slove bashe, zda se... vidim rozpor. Co takhle udelat shell, ktery bude tunelovat MySQL prikazy klientu (a zapamatuje si heslo ?)

    my connect username password
    my use dbname
    my select * from tablename
    my describe table...
    my close (vymaze .mysqlrc)

    jdu na to!!!!

    jinak soudim, ze spis nez filemanazer, ktery by byl zaroven browserem, potrebujeme xterm, ktery bude zaroven prohlizecem obrazku a browserem - a upraveny shell, do ktereho pujdu psat unixove prikazy, databazove prikazy, nebo URL, kde pujde lezt dovnitr databazi stejnym stylem jako jde v midnight commanderu lezt do archivu. proste chce to univerzalni terminal (ktery bude zaroven webovym browserem) a univerzalni shell - a pozor, to neni v rozporu s unixovou teorii "malych programu presne na jednu vec" - nikdo nerika, ze tyhle moduly do bashe budou soucasti bashe, jde spis o to, aby se clovek pri praci nemusel porad prepinat mezi bashem, mysql konzoli, midnight commanderem, postou, webovym browserem... ale aby to slo zaroven intuitivne ovladat z jednoho mista (samozrejme vcetne unixovych prikazu - nemam na mysli zadne windoze!!!)

  • 25. 10. 2002 18:16

    xChaos (neregistrovaný)

    [xchaos@panter xchaos]$ cat my
    #!/bin/bash
    ##Inovative(tm) MySQL(r) command pipe inspired by Pgbash tool.##
    ## (G)2002 Michael Polak, Arachne Labs. No rights reserved. ##
    ## Install: chmod a+x my; chown root:root my; cp my /usr/bin ##
    function readcfg()
    { read dbusername; read dbpassword; read dbname; }
    function savecfg()
    { echo $dbusername; echo $dbpassword; echo $dbname; }
    function mymysql()
    { mysql $sw -u $dbusername --password=$dbpassword $dbname; }
    sw=-t
    if [ "$1" = "-t" ]; then sw=""; shift; fi
    if [ "$1" = "-N" ]; then sw=$sw" -N"; shift; fi
    cmd=$1
    if [ -z $1 ] || [ "$1" = "-?" ] || [ "$1" = "--help" ]; then cmd=h; fi
    case $cmd in
    h) cat<<EOF
    Usage: my [ -t | -D ] login | connect | close | <MySQL command>
    Example: my select \* from mytable
    Example: my 'select * from mytable'
    Note: Damned, * is shell character !!!

    my login - prompts for username, password and database
    my connect <username> <password> <database> - automatic login
    my close - deletes .mysqlpiperc file with login data
    -t - disable table format
    -N - disable column headers

    Report bugs to <xchaos@arachne.cz>
    EOF
    ;;
    login) read -p "MySQL username: " dbusername
    read -s -p "MySQL password: " dbpassword
    echo; read -p "MySQL database: " dbname
    echo quit|mymysql
    savecfg>~/.mysqlpiperc
    exit
    ;;
    connect)
    dbusername=$2; dbpassword=$3; dbname=$4
    echo quit|mymysql
    savecfg>~/.mysqlpiperc
    exit
    ;;
    close)
    rm -f ~/.mysqlpiperc || echo ~/.mysqlpiperc was removed.
    exit
    ;;
    esac
    readcfg

  • 25. 10. 2002 18:26

    xChaos (neregistrovaný)

    No jo, tak ma to svoje mouchy - nejvetsi problem je, ze * je expandovan shellem, coz je fajn, ale chtelo by to aby to bylo context-senzitive - asi jako tab autocompletion. Proste chtelo by to univerzalni modul do bashe, aby vedel, u kterych prikazu ma expandovat *, a u kterych ne. Priklad:

    scp server.cz:projekt/* .

    pravidlo by se zapsalo treba ve forme

    parse-command scp /*:*\*/\\\*/ ;-)

    pro muj skript by stacilo

    parse-command my /\*/\\\*/

    a zlaty hreb vecera - patch pro DOSovske rename ;-)

    parse-command ren /\*/\\\*/

    (pouzil jsem jakousi svoji mutaci regexp - ja je normalne nepouzivam, ale vsak on by to uz nekdo opravil ;-)

    Proste pro zacatek by bohate stacilo, kdyby se dalo
    shellu rict, u kterych prikazu ma expandovat * a u kterych ne. Idealni je implementovat patch zaroven s patchem na autocomplete pomoci Tab. Takze zadny "pgbash" a podobne jednoucelove hacky, ale chce to pekne dalsi vyvoj bashe, aby fungoval i pro nas bezne usery-lamery, kteri se zivime poctivou praci klavesnici - ted je bash orientovan spis na aroganatni unixove administratory a hackery ;-)

  • 26. 10. 2002 9:14

    Pavel Stěhule (neregistrovaný)

    Zřejmě proto by se vyhnul problemům se substitucema, autor realizoval program, jako patch do bashe. I když tvůj nápad není úplně mimo.
    Pokud potřebuješ snadno přepínat mezi konzolí, sql monitorem a skoro čímkoliv jiným, podívej se na emacs. Jeho sql mod umožňuje připojit se skorem ke každé databázi. V sh modu zase bez problémů fungujes v shellu. A mezi nima se přepínáš klasicky ctrl c b, nebo ctrl c o, když máš buffery zrovna zobrazený.

    pgbash je šikovnej nápad typu za málo peněz hodně muziky. Ale zas je to dvou megabajtovej cvalík (bez stripnutí). A rozhodně není dělanej na interaktivní práci (I když jsem si to původně myslel, když jsem narazil kdysi zmíňku o něm na freshmeatu). S psql se dělá mnohem líp. Kdyby si "někdo" dal tu práci a do psql doplnil třeba PL/pgSQL (něco ubral (např. triggery), něco přidal (např. spouštění externích aplikací a přesměrování výstupu, interaktivní výstup)), tak abych si nemusel databáze špinit administrátorskýma uloženýma procedurama (který klidně mohou být u mne na lokále), tak to by byla fajnovost. Ale není tu není, tak se musí "vzít s povděkem" to co je. Aspoň co se týče mne, mi pgbash dost zjednoduší administrativu databází, a to nejsem "profesionál", spravuju jen jedno RDBMS s desítkami studentských databází.

    Doplňovat další univerzální funkce do bashe mi přijde sisifofský úkol. Už takhle je to mastodot. Chtělo by to spíš napsat lokální interpret SQL. Pro mySQL káře, nenarazil jsem na nic podobného, co by bylo pro mySQL (ale taky jsem se po tom nepídil). Rozhodně by neměl být problém vyrobit patch pro pgbash, který by PostgreSQL volání nahradil mySQL. I když na druhou stranu se dá čekat, že už něco takového existuje.

  • 26. 10. 2002 14:02

    xChaos (neregistrovaný)

    hmm, nevim, emacs me nikdy neoslovil, mozna je to jeho estetikou - v grafickem modu vzdycky naskocilo take male hnusne zelene okenko s odporne bezovymi fonty, ktere melo naprosto zmatene ovladani a neumelo to vubec nic z toho, co bych od textoveho editoru ocekaval ;-) tusim, ze to umi ledacos, ale jde to proste moc mimo me.

    s univerzalni prikazovou radkou to myslim vazne - nikoliv jako rozsireni bash, ale pouzit jakysi "supershell", ktery by (rozhodne jednoznacne!) analyzoval, zda jde o URL, SQL prikaz nebo unixovy prikaz, pripadne o specialni prikaz (ve kterem nechci expandovat hvezdicky...). Pricemz tenhle "supershell" by mel mit vlastnosti zname z Nortona/Midnightu - tzn. hlavne interaktivni doplnovani prikazove radky vyberem ze seznamu souboru, SQL vysledku, apod.

    Priklad: napsal bych v Midnightu na prikazovou radku misto unixoveho prikazu SQL prikaz, a kdyz by vysledkem byla jakakoliv tabulka, hodilo by mi to uz rovnou do interaktivniho SQL browseru, ve kterem by mi jakykoliv zasah zpetne sestavoval prikazovou radku... moment...! to je taky dost podstatny napad! stejne jako webove browsery ukazuji pod kurzorem URL, mely by filemanazery a SQL manazery behem "sestavovani" jakekoliv operace ukazovat patricne unixove nebo SQL prikazy, kterymi by slo provest totez. Uzivatel by tim padem operativne videl, jestli pro tu kterou operaci je pro nej vhodnejsi prikazova radka nebo interaktivni frontend, a navic by mohl kterykoliv prikaz kdykoliv okopirovat do sveho skriptu - stejne jako z weboveho browseru se dnes pres clipboard kopiruji URLka do novych HTML stranek...

  • 29. 10. 2002 7:10

    anonymní

    Neco podobneho ma za cil projekt "bash programmable completion". Na neco podobneho si netroufam :->. Podivam se, co by se muselo udelat, aby pgbash podporoval i ostatni databaze.

  • 27. 10. 2002 2:45

    martin (neregistrovaný)

    Kdysi jsem na Pgbash take narazil, ale nejak mi to nesedlo, pouzivam PL/Perl -k plne spokojenosti.
    Jinak PL/pgSQL imho pouzivaj vsichni :)

  • 28. 10. 2002 14:19

    Dalibor Šrámek (neregistrovaný)

    Kdo všichni? No třeba já... ;-) A k plné spokojenosti, abych alespoň částečně vyslyšel volání autora článku po sdělení zkušeností. Nic složitého, ale funguje to.

    Jinak uložené procedury budou asi používat spíše lidi, kteří si někdy čichli k pořádné databázi.

    Pro PostgreSQL existuje super nový pgAdmin, ve kterém se dají relativně dobře programovat PL/pgSQL procedury. Má ovšem jednu chybku - je pouze pro Windoze. Já jsem kdysi ze zoufalství, přepínaje mezi editorem a psql při psaní procedur, začal vytvářet malou aplikaci pro tento účel: http://www.insula.cz/dbtalk/

  • 28. 10. 2002 17:39

    Milan (neregistrovaný)

    Podpora PL/pgSQL by asi sla do dbMana (viz freshmeat.net, CPAN) dodelat velmi rychle a pekne (stejne jako je tam podpora PL/SQL pro Oracle), ale protoze v PostgreSQL nedelam, netroufam si do toho. Muze se ale vyjit z toho, jak je tam udelano PL/SQL - tj. definice JAK se vysosnou data ze systemoveho slovniku, volani editoru (vim - barevna syntaxe) a JAK se data zapisi zpet. Pokud by se toho nekdo ujal a potreboval pomoc, muze mne kontaktovat.