August 13, 2010

Viacriadkový príkaz v baťáku

Pokiaľ človek potrebuje rozdeliť jeden dlhý riadok s príkazom na viac menších, tak sa dá použiť znak ^. Znak striešky sa uvedie na konci riadku. Za týmto znakom už nič nenasleduje a pokračuje sa na ďalšom riadku.

Príklad kompilácie AIR aplikácie pomocou bat súboru vo Windows:

amxmlc -output build/build.swf ^
-locale en_US -library-path+=libs ^
-include-libraries+=e:\automation\automation.swc ^
-include-libraries+=libs\automation_monkey.swc ^
-- src/Main.mxml

Znalci shell skriptov zase vedia, že v shell skriptoch sa na rovnaký účel používa znak: \

Jún 5, 2010

Ako zabrániť inštalácii nežiadúcich balíkov na Debiane

Občas sa stane, že je potrebné nainštalovať balík. Ten ale pritiahne so sebou pár ďalších nechcených balíkov.

Nežiadúce balíky sa dajú zablokovať jednoducho. Do súboru /etc/apt/preferences pridáme nasledujúce riadky s menom balíku:

Package: openjdk-6-jre
Pin: version 1.0*
Pin-Priority: 1001

Ďalšie informácie na túto tému nájdete na stránkach Live in X.

Apríl 7, 2010

Konferencia: Otvorený softvér vo vzdelávaní, výskume a IT riešenia 2010

Na oficiálnych stránkach OSS 2010 nájdete organizačné informácie ku konferencii, ktorá sa bude konať 1.-4. 7. 2010 v Žiline.

Pokiaľ máte nejakú zaujímavú tému, prihláste sa so svojím príspevkom. V roku 2009 rozhodne nebola núdza o zaujímavé témy, ako napríklad OpenstreetMap, počítačová učebňa postavená na Linuxe, alebo programovanie hier v Pythone.

Konferenciu organizuje Spoločnosť pre otvorené informačné technológie (SOIT.sk).

Marec 23, 2010

Správa softvérových projektov pomocou Tracu

Dnes si je už ťažké predstaviť softvérový projekt, kde by si vývojári vymieňali zdrojové kódoch na disketách. Správa zdrojových kódov sa presunula do systémov so skratkou SCM (Source Control Management). Z open source variánt je veľmi populárne Subversion a čoraz silnejšiu skupinu priaznivcov si získava aj Git.

Lenže nie len zdrojovým kódom je softvérový projekt živý. V projekte sa objavia rôzne chyby. Riešenie niektorých chýb si vyžaduje aj niekoľko týždňov. Na evidencie chýb a stavu ich riešenia, sú vhodné rôzne ticket systémy. Veľmi známa je napríklad Bugzilla, ktorá vznikala popri projekoch Mozilla Foundation. Tento softvér výrazne prispel k stabilizácii kódu Firefoxu, či Mozilly. Z komerčných si spomeňme napríklad JIRA, ktorú používa napríklad Adobe na bugs.adobe.com.

Dokumentácia je základnou súčasťou projektu. Rôzne poznámky a záznamy sa ukladajú do Wiki, ktorá obsahuje verzovanie. Aj keby niekto niečo omylom zmazal, vždy sa dá vťátiť k starému obsahu. Wiki sú jednoduché a rýchle. Z veľmi populárnych stojí za spomenutie MediaWiki, na ktorej je postavená napríklad Wikipédia.

To však akosi stále nie je úplne všetko, čo by človek potreboval na riadenie projektu. Ešte by to chcelo mať prehľad v tom, čo sa zmenilo v zdrojovom kóde a ktoré tickety boli uzatvorené. Tým pádom sa dajú ľahko sledovať zmeny a ich dopady. Z komerčného sveta má túto schopnosť najviac prepracovanú softvér Polarion.

Prečo použiť Trac, keď existuje toľko nástrojov? Autori Tracu si zvolili ako prioritu minimalistický prístup a to je veľmi podstatné. Zintegrovali dohromady Wiki, ticket systém, správu zdrojových kódov a sledovanie zmien. Trac je veľmi jednoduchý na používanie. Napojí sa na úložisko zdrojového kódu a vy máte okamžite prehľad o tom, čo sa v projekte deje. Pokiaľ vám nevyhovuje nejaká jeho vlastnosť, je ho možné ju odobrať. Trac sa dá jednoducho skonfigurovať, prípadne rozšíriť o nové vlastnosti pomocou pluginov. Trac je možné použiť aj na riadenie projektov, ktoré so softvérom nemusia mať vôbec nič spoločné, napríklad riadenie dodávok Hot Runner systémov na vstrekovanie plastov.

Pokiaľ potrebujete hostovať Trac, tak vám bežný PHP hosting stačiť nebude. Trac je napísaný v Pythone. Je možné ho spustiť ako samostatnú aplikáciu alebo pomocou Apache, tu odporúčam použiť WSGI. Ďalši informácie o možnostiach hostingu, školeniach a vývoji pluginov pre Trac, nájdete na stránkach SinusGear.com.

Marec 10, 2010

Inštalácia Pohoda SQL – padá Windows

Narazil som na jednu zaujímavú vec. Pokiaľ zoberiete čistý Windows XP SP2 a nainštalujete tam Pohodu SQL, tak vám bude Windows padať na škaredý BSOD. Vždy nabehne a po pár sekundách spadne systém. Čo s tým?

Naštartovať Núdzový režim (F8 pri boote). Vypnúť služby automatickej aktualizácie Windows, zakázať spúšťanie všetkých SQL služieb. Tu sa hodí napríklad príkaz: mmc. Naštartovať Windows normálne. Previesť kompletný upgrade na SP3. Nezabudnite na aktualizáciu .NET frameworku. Príkazom wupdmgr sa presvedčíte, že už je všetko ok. Reaktivujete automatické aktualizácie. Znovu zbehnete inštaláciu Pohody SQL.

Pokiaľ si to chcete nasimulovať, použite napríklad VirtualBox. Jednoducho sa spravuje pod Linuxom. Pokiaľ chcete VirtualBox naštartovať bez grafického rozhrania, môžete použiť

VBoxHeadless -startvm "pohodenka-image"

A následne sa pripojiť pomocou Rdesktop alebo Remote Desktop Client na server s VirtualBoxom.

Február 27, 2010

IntelliJ IDEA 9.0 na Linuxe nefunguje sieť. Pozor na IPv6.

Potreboval som nejaké rozumné prostredie, v ktorom je možné pohodlne vyvíjať Flex na Linuxe. Adobe Flex Builder 3 alpha 5 nie je úplne dobre použiteľný. Nefunguje tam Design view na kreslenie GUI. To by mi až tak nechýbalo. Horšia je chyba v otváraní MXML dokumentov.

Tým pádom aplikáciu, ktorá pozostáva nie len s ActionScriptu, nie je možné ladiť. Tento problém s ignorovaním supportu Flex Buildra (Flash Buildra) na Linuxe, sa dostal na prvé miesto v rebríčku najsledovanejších bugov. Predbehol dokonca aj FP-40.

Pustil som sa teda do hľadania iného nástroja. Vo fóre niekto odkazoval na IntelliJ IDEA 9.0. Stiahol som toto IDE, stiahol som Flex SDK z Opensource.adobe.com. Vytvoril som projekt. Nádherne všetko fungovalo. Niektoré vlastnosti má IDEA podstatne lepšie spracované než Eclipse. Proste Wow. A teraz prišlo na lámanie chleba.

Naštartujem debugger s náhonom na všetky 4… Nič… Waiting for AIR of Flash player to connect.

Ughm… Flex Debugger Startup Error

O 5 hodín neskôr.

Myslíte, že sa mi to podarilo rozbehať? Nie.

Tu som si všimol niečo čudné. IntelliJ IDEA sa vôbec nechcela pripojiť na sieť. Napríklad zlyhal aj update zoznamu pluginov. List of plugins was not loaded: Network is unreachable. Čudné.

A potom mi to došlo. Ten nešťastník sa pokúšal pripájať cez IPv6 na internet, čo sa mu nepodarilo.

Na základe návodu som v /etc/default/grub.conf zmenil parameter pre štart jadra a deaktivoval IPv6

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet"

a zaktualizoval Grub 2

update-grub

Po štarte systému som sa presvedčil príkazom o deaktivovanej podpore pre IPv6:

ip a | grep inet6

Žiadny riadok na výpise. Úspech, nebeží žiadne IPv6 rozhranie.

A výsledok? IntelliJ IDEA 9.0 funguje perfektne a výborne debugguje aj Flexové aplikácie.

Február 8, 2010

Grub2 – boot Windows – zmena číslovania partícií

Do Debianu Squeeze a ďalších distribúcií začal pomaly prenikať Grub2. Jedným z nepríjemných následkov je, že po upgrade nemusíte nabootovať svoj drahocenný Windows alebo BSD.

V čom je problém? Zmenilo sa číslovanie partícií.

Pôvodné číslovanie začínalo od 0. Takže pre Windows na prvej partícii stačilo mať nastavené:

set root=(hd0,0)
chainloader +1

Pre Grub2 je už prvá partícia číslovaná ako 1. Pozor! Číslovanie zariadení naďalej začína od 0. Pokiaľ chcete upraviť bootovaciu položku priamo pri štarte, stlačte ‘e’. Zmeňte položku v boot menu a pomocou CTRL+X pokračujete v bootovaní.

Správne nastavenie pre Grub2 (prvá partícia) je:

set root=(hd0,1)
chainloader +1

December 15, 2009

VirtualBox – problémy s Grubom?

Alebo s Lilom? Proste s bootovaním?

Potom máte pravdepodobne dynamicky alokovaný disk.

Takže si to pekne skonvertujte na statický a ono vám to zase bude fungovať.

Veď je to úplne zrejmé! Nie?

Pomocou Sysrecuecd som nabootoval VirtualBox, pripojil som si disky  a rsyncom preniesol dáta. Keďže bolo naviac nutné zachovať aj rozšírené atribúty filesystému, lebo inak by Centos nadával ako pohan, pridal som -X

rsync -av -X disk-dynamicky/* disk-staticky/

Grub som skúšal odpaľovať z chrootu, ale to nebol moc dobrý nápad. Nakoniec sa mi to podarilo priamo zo Sysrescuecd.

To, čo zafungovalo bolo spustenie inštalátoru grubu s nasledujúcimi parametrami:

grub-install --root-directory=disk-staticky /dev/sda

Pokiaľ máte lepšiu metódu, sem s ňou.

Ešte taká drobnosť, ktorá možno nie je zrejmá. Keď máte shell grubu, tak môžete použiť tabulátor na doplňovanie príkazov a názvov súborov. Ak zrovna neviete, kde je uložné jadro na systéme, tak vám ho tabulátor pomôže nájsť.

Príklad:

kernel /boot/vmlinuz<TAB>... root=/dev/sda1
initrd /boot/init<TAB>...

December 8, 2009

Ako ukončiť man man?

q

November 22, 2009

PyGTK a preklad GUI pre Windows

PyGTK je výborné rozšírenie Pythonu, ktoré umožňuje pracovať s GTK GUI. Pekne to funguje aj pod Windows. Dôkazom je napríklad aplikácia Srobick.

No, všetko by bolo dobré, keby som si v jednej rozmarnej chvíli nebol zmyslel, že chcem preložené GUI. Zobral som GUI designér Glade. Prepísal som GUI do angličtiny. Vygeneroval som si prekladové súbory. Pomocou PoEditu som ich preložil. Podľa návodu som pridal set_translation_domain. Pod Linuxom to pekne chodilo. Spustím pod Windows a ajhľa. How do you jodlajdú. Všetko v angličtine.

Prebrázdil som celý internet. Od jedného konca, po druhý. Nič. Skúsil som dokonca nastavovanie systémových premenných pomocou kernel balíku a nič. Proste zúfalstvo.

Väčšina návodov je zastaralých a počíta s gtk.glade, ktorý sa už v nových verziách nenachádza. Tu je drobná finta, ako dostať preklad do chodu. Jednoducho preiterujete všetky objekty a spustíte na nich prekladovú funkciu.

Príklad na preklad tooltipov:

class GuiBuilder(gtk.Builder):
   """
   Fix for GTK builder and translation.
   Inspired by: http://old.nabble.com/gtk.Builder-and-translation-directory-td22351164.html
   """
   def translate(self):
     for obj in self.get_objects():
       # Translate tooltips
       try:
         if obj.get_has_tooltip():
          obj.set_tooltip_markup(_(obj.get_tooltip_markup()))
       except:
         pass

V kóde potom načítavanie GUI vyzerá nasledovne:

import GuiBuilder
wt = GuiBuilder()
#wt.set_translation_domain(domain = AppName)
wt.add_from_file(gui)
wt.connect_signals(self)
wt.translate()

A dôležitá informácia na záver. Na stránkach PyGTK nájdete len verziu 2.12 pre Windows, pričom pre Linux sa používa 2.16. Novší build pre Windows je tu: OptionExplicit.be