Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jak jsme přeložili 594 680 řádků kódu z YCP do ...

Jak jsme přeložili 594 680 řádků kódu z YCP do Ruby

Parsery, generátory kódu a podobné hračky člověk nepíše každý den. V SUSE jsme s jejich pomocí za 6 měsíců zkonvertovali konfigurační a instalační nástroj YaST z nevyhovujícího jazyka YCP do Ruby. V přednášce si povíme, jak takový překladač vypadá a jak jsme propojili svět Ruby a YaSTu. Součástí bude živá ukázka překladu jednotlivých konstrukcí.

Předneseno na pražském Ruby srazu.

Detaily:
http://srazy.info/prvni-streda-ruby-on-rails/3907
https://www.facebook.com/events/525876690830912/

David Majda

October 02, 2013
Tweet

More Decks by David Majda

Other Decks in Programming

Transcript

  1. Jak jsme přeložili 594 680 řádků kódu z YCP do

    Ruby David Majda @dmajda Josef Reidinger @pepareidinger Pražský Ruby meetup, 2. října 2013
  2. /* Dialog contents */ term contents = `HBox(`HSpacing(1), `VBox( `VSpacing(0.2),

    /* ComboBox label */ `ComboBox(`id(`device), `opt(`editable), _("Select the Serial &Interface to Use:"), [ `item(`id("/dev/ttyS0"), "/dev/ttyS0", device == "/dev/ttyS0"), `item(`id("/dev/ttyS1"), "/dev/ttyS1", device == "/dev/ttyS1"), ]), `VSpacing(1), `HBox( /* PushButton label */ `PushButton(`id(`next), `opt(`default), _("&Launch")), `HStretch(), `PushButton(`id(`cancel), Label::CancelButton()) ) ), `HSpacing(1)); UI::OpenDialog(contents); UI::SetFocus(`id(`device)); /* Main cycle */ any ret = nil; while(true) { ret = UI::UserInput(); if(ret == `abort || ret == `cancel || ret == `back) { /* if(ReallyAbort()) break; else continue; */ break; } else if(ret == `next) { /* FIXME check_* device!="" and device exists */ break; } else { y2error("Unexpected return code: %1", ret); continue; } }
  3. Řešení ► Přepsat ručně? Příliš práce, příliš těžké ► Přepsat

    automaticky? Zvažováno minimálně od 2007 (což jsme nevěděli)
  4. Jan Feb Mar Apr May Jun Jul 2013 Aug CSM

    Workshop 21.-25. ledna 2013
  5. Jan Feb Mar Apr May Jun Jul 2013 Aug CSM

    Workshop 21.-25. ledna 2013 Sysconfig březen/duben 2013
  6. Jan Feb Mar Apr May Jun Jul 2013 Aug Hack

    Week 9 8.-12. dubna 2013 CSM Workshop 21.-25. ledna 2013 Sysconfig březen/duben 2013
  7. 100 % přeloženo 22. dubna 2013 Jan Feb Mar Apr

    May Jun Jul 2013 Aug Hack Week 9 8.-12. dubna 2013 CSM Workshop 21.-25. ledna 2013 Sysconfig březen/duben 2013
  8. 100 % přeloženo 22. dubna 2013 Jan Feb Mar Apr

    May Jun Jul 2013 Aug Hack Week 9 8.-12. dubna 2013 CSM Workshop 21.-25. ledna 2013 Sysconfig březen/duben 2013 Instalátor 27. května 2013
  9. OpenSUSE 13.1 M2 13. června 2013 (plán) 100 % přeloženo

    22. dubna 2013 Jan Feb Mar Apr May Jun Jul 2013 Aug Hack Week 9 8.-12. dubna 2013 CSM Workshop 21.-25. ledna 2013 Sysconfig březen/duben 2013 Instalátor 27. května 2013
  10. OpenSUSE 13.1 M3 11. července 2013 (plán) OpenSUSE 13.1 M2

    13. června 2013 (plán) 100 % přeloženo 22. dubna 2013 Jan Feb Mar Apr May Jun Jul 2013 Aug Hack Week 9 8.-12. dubna 2013 CSM Workshop 21.-25. ledna 2013 Sysconfig březen/duben 2013 Instalátor 27. května 2013
  11. Finální překlad 30.-31. července 2013 OpenSUSE 13.1 M3 11. července

    2013 (plán) OpenSUSE 13.1 M2 13. června 2013 (plán) 100 % přeloženo 22. dubna 2013 Jan Feb Mar Apr May Jun Jul 2013 Aug Hack Week 9 8.-12. dubna 2013 CSM Workshop 21.-25. ledna 2013 Sysconfig březen/duben 2013 Instalátor 27. května 2013
  12. Finální překlad 30.-31. července 2013 OpenSUSE 13.1 M3 11. července

    2013 (plán) OpenSUSE 13.1 M2 13. června 2013 (plán) 100 % přeloženo 22. dubna 2013 Jan Feb Mar Apr May Jun Jul 2013 Aug Hack Week 9 8.-12. dubna 2013 OpenSUSE 13.1 M4 8. srpna 2013 (plán) CSM Workshop 21.-25. ledna 2013 Sysconfig březen/duben 2013 Instalátor 27. května 2013
  13. Klíčová rozhodnutí ► Jen překlad, žádné další změny ▪ Porušili

    jsme restrukturalizací ► Žádné chytristiky (překlad 1:1)
  14. Klíčová rozhodnutí ► Jen překlad, žádné další změny ▪ Porušili

    jsme restrukturalizací ► Žádné chytristiky (překlad 1:1) ▪ Předpokládalo pozdější refaktorizaci
  15. #1 Tým snů #2 Zaujetí pro věc #3 Příznivé „politické“

    klima #4 Soustředění na jednu věc #5 „Startupový“ management
  16. #1 Tým snů #2 Zaujetí pro věc #3 Příznivé „politické“

    klima #4 Soustředění na jednu věc #5 „Startupový“ management #6 Kvalitní tooling
  17. #1 Tým snů #2 Zaujetí pro věc #3 Příznivé „politické“

    klima #4 Soustředění na jednu věc #5 „Startupový“ management #6 Kvalitní tooling #7 Důkladné testování