8 komentáře “Groovy namísto shell skriptů

  1. Zpětný odkaz: » Pátý rok Myšlenek Otce Fura Myšlenky dne otce Fura

  2. Ja som dostal za ulohu napisat script na „mavenizaciu“ haldy proprietarnych jarov, rozhadzanych v projekte na milion miestach. Zacal som najprv cygwinom ( bohuzial v praci musim pracovat na videohernom operacnom pasysteme ), kvoli zlozitosti a nachylnosti k chybam ( backslashe, medzery v nazvoch suborov, podivnosti ako „disky“ C,D,E,F,G atd ) som to prepisal do Javy ( a .bat scriptom som z toho spravil „spustitelny“ kod, mvn assemble a mvn exec ) a nakoniec som to zahodil a napisal to na par riadkov v groovy. Az nasledne som si uvedomil, ze som vlastne napisal script v jave ( hehe, vlastne JavaScript :-] ), ktory nie len ze bol takmer hned hotovy, mohol som si dovolit relativne zlozite veci, ktore v bashi tak lahko nespravim, ale zaroven je lahko udrzovatelny, pretoze to nie je splet tradicneho javovskeho chaosu vo forme haldy packagi a jarov, ale proste jeden jediny textovy subor.

    Takze za mna jednoznacne success story, predstava, ze to pisem v nejakom BAT interpreteri ma desi.

  3. To v6ak & Pavel: Díky za reakce … já jsem ještě ke Scale nedospěl – zatím jen teoreticky sbírám informace okolo. Tak snad jednou budu schopen v této věci trochu sekundovat, dnes ale ne 🙁

  4. Taky jsem zkoušel Scalu na takovéto lightweight skripty. Jazyk vypadá celkem „light“. Jenže:
    * Doba startu je kvůli kompilaci nepříjemná (vypadá to tak na min. jednu sekundu, i když studený start je delší). Kéž by se tu cacheoval bytecode… To se teda dá řešit pmocí fsc a nějakého jednoduchého bash skriptu, ale už to prostě není ono. Ale, ono by se asi na to dalo něco vymyslet… Možná časem něco vyplodím.
    * Některé věci by to asi chtělo zjednodušit. Jazyk jako takový je sice light, ale pokud jsem chtěl knihovnu pro práci s MySQL, potřeboval jsem upravovat classpath a moc „light“ to nevypadalo.

    Na druhou stranu, pro jednoduché dávkové operace (třeba převod cca 4 GiB dat z H2 do MySQL) je to pěkné, účinné a hlavně rychlé.

  5. No, jenže u mne si další skript spustí svou novou JVM a na starou kašle.

    Ani nevím, jak dlouho trvá spuštění, ale pro mne to zatím nebylo nic zaásadního. Své skripty pouštím ručně jen zřídka (většinou jsou naplánované přes noc) a protože jsou to různé operace s poměrně dlouhými XML soubory, tak ty skripty běží řádově minuty. V tom případě mne moc nezajímá, zda to startuje vteřinu nebo pět. Krátké věci, které by se měly pouštět třeba s vyšší frekvencí, jsem v tom ještě nepsal.

  6. Hmm v tomhle řešení to JVM na pozadí běží pořád – tj. zrovna s tímto by problém být neměl. Navíc je to fakt rychlé … jak dlouho ty čekáš na start JVM s tou Scalou?

  7. Dík za článek. Ten GroovyServ vypadá zajímavě.

    Já používám již nějakou dobu obdobným způsobem skripty v jazyce Scala, což běží taktéž pod JVM. Má to výhodu, že celá „instalace“ Scaly jsou oproti Javě jen 2 JARy. Obvykle mám jen kostru v shellu, ze které se volají jednotlivé skripty ve Scale. Narazil jsem ale na zajímavý problém, který se asi netýká jen Scaly. JVM běží ještě nějakou dobu po skončení skriptu a drží si soubor, do kterého skript zapisuje logy. Takže další skript v pořadí logovací soubor nemůže otevřít. Dosud jsem nepřišel na nic jiného než okliku – pro každé nové volání skriptu vytvořit nový logovací soubor s náhodným jménem.