Download: Krecipes
Transkrypt
Download: Krecipes
LINUX USER Krecipes Przepisy kulinarne w Krecipes Gotujemy z Krecipes! Nie musimy już przekopywać się przez książki kucharskie, aby wywołać uśmiech zadowolenia gości po wykwintnym obiedzie. Program Krecipes umożliwia domowym szefom kuchni odpowiednią organizację przepisów kulinarnych, a nawet automatyczne tworzenie list zakupów. FRAUKE OSTER Miejsce na przepisy Krecipes przechowuje przepisy kulinarne w bazie danych – obecnie mamy do wyboru MySQL [2] lub SQLite [3]. W kolejnych wersjach programu planowane jest także dołączenie obsługi bazy PostgreSQL – ale prawdopodobnie dopiero w wersji 1.0. Obsługa MySQL i SQLite działa prawidłowo. Baza danych MySQL jest bardziej skomplikowana i jest to osobny serwer, który trzerojekt Krecipes [1] istnieje dopiero ba uruchomić przed włączeniem programu od roku, a już oferuje mnóstwo możKrecipes. Jeżeli mamy już serwer MySQL na liwości – jest to program zarządzająkomputerze, możemy mu zlecić zarządzanie cy przepisami kulinarnymi, sprawiający, że przepisami kulinarnymi, jeśli go nie posiakomputer z systemem Linux stanie się przydamy, najlepiej użyć SQLite. datny także w kuchni. Ostatnia wersja proAby skorzystać z dobrodziejstw MySQL, gramu 0.4.1 wydana została w 2003 roku, musimy zainstalować jeszcze pakiety mysql, przed Świętami Bożego Narodzenia. Trzej Qt-devel oraz qt3-mysql (pakiety te znajdują programiści pracujący nad tym projektem się zazwyczaj na płytach z dystrybucją). Jeże„wysmażyli” od tego czasu pewne ulepszeli nie możemy znaleźć pakietu qt3-mysql, ponia, więc w niedługim czasie możemy spozostaje wtedy samodzielna kompilacja całej dziewać się pierwszej, oficjalnej wersji testobiblioteki Qt, dzięki czemu utworzony zostawej o numerze 0.5. nie dodatek (plug-in) obsługujący MySQL Brak nowej wersji nie powstrzyma nas jed(Ramka 1). Bez wykonania tych czynności nak przed zaglądaniem w garnki programinie będziemy mogli korzystać z Krecipes stów. Repozytorium CVS programu znajduje w połączeniu z bazą MySQL. się w gałęzi kdenonbeta na głównych serweSprawa wygląda dużo prościej, gdy zdecyrach KDE i stamtąd można go pobrać. Krecidujemy się na skorzypes jest programem dość niestanie z SQLite – Krecitypowym, jak na program pes posiada wbudowaną z kategorii kdenonbeta, ponieodpowiednią funkcjoważ już od wersji 0.4.1 wystęnalność, która umożlipuje w sześciu wersjach języwia współpracę z SQLikowych. Część tłumaczeń nie te. Pakiet SQLite możzostała jeszcze ukończona na pobrać z Internetu (np. brakuje pomocy), więc [3]. Następnie rozpakogdyby ktoś mógł i chciał weswujemy go, przechodziprzeć swoją osobą prace nad my do katalogu ze źrótym projektem, prosimy Rysunek 1: W MySQL trzeba zadłami i uruchamiamy o bezpośredni kontakt z twórłożyć konto użytkownika bazy proces konfiguracji: cami Krecipes. danych. P 92 Lipiec 2004 www.linux-magazine.pl tar xvzf sqlite-2.8.12.tar.gz cd sqlite ./configure Jeżeli wszystko poszło dobrze, możemy przejść do kolejnych etapów kompilacji i instalacji. Aby zainstalować system SQLite, wpisujemy polecenie make install. Do jego wykonania wymagane są uprawnienia administratora (wpisujemy su i podajemy hasło użytkownika głównego root): make su -c „make install” Zarządzanie przepisami Po ustawieniu wybranej bazy danych przezorni użytkownicy mogą pobrać kod źródłowy Krecipes dla wersji 0.4.1 ze strony projektu. Pozostała grupa użytkowników może skorzystać z działu rozwoju programów CVS dystrybucji KDE. Bez względu na to, jaką wersję Krecipes wybierzemy, musimy w naszym systemie mieć zainstalowane pakiety programistyczne kdelibs. Jeżeli nie mamy takiej biblioteki, konieczne jest zainstalowanie pakietu (kdelibs3devel-version.rpm lub podobnego) odpowiedniego dla używanej dystrybucji. Jest to jedyny sposób tworzenia programów KDE z plików źródłowych. Jeżeli używamy plików źródłowych Krecipes, musimy najpierw rozpakować archiwum tar: tar xvjf krecipes.tar.bz2 Przechodzimy do otworzonego właśnie katalogu krecipes i uruchamiamy narzędzie konfiguracyjne (wymaga ścieżki dostępu do katalogu głównego Qt): Krecipes LINUX USER zy danych (patrz Ryprzeglądać. Jeżeli szukamy określonego sunek 1). Jeżeli nie dania, możemy skorzystać z funkcji wyszuwybierzemy żadnej kiwania – jest ona przydatna szczególnie z tych opcji, klikamy wtedy, gdy nasza baza danych zacznie zaprzycisk Next >. pełniać się przepisami. W następnym oknie Wpisujemy zatem nazwę przepisu w polu Krecipes zlokalizuje wtedy wyświetlona jest obecSearch: i naciskamy klawisz [Enter] – Kreciskompilowaną przez nas werna nazwa użytkownipes wyświetli przepis lub listę przepisów. Na sję Qt (sposób opisano w Ramka Linuksa bez hasła liście określona jest kategoria i nazwa przepice 1). Aby zainstalować pro– podajemy zatem hasu oraz przypisany podczas jego tworzenia gram, wykonujemy polecenia Rysunek 2: Podczas konfiguracji sło. W przeciwnym numer indeksu. Aby poukładać przepisy wemake i make install. MySQL Krecipes wymaga podaprzypadku Krecipes dług odpowiedniego kryterium, możemy Jeżeli zdecydowaliśmy się na nia nazwy użytkownika i hasła. nie uruchomi się z pokliknąć nagłówek kolumny. bazę MySQL, będziemy muwodu braku wystarczających uprawnień, Menu rozwijane, znajdujące się po prawej sieli uruchomić teraz serwer bazy danych. nawet jeśli dokończymy proces wstępnej stronie pola Search:, umożliwia ograniczenie W wielu dystrybucjach można odnaleźć odkonfiguracji przy pomocy kreatora. wyszukiwania do określonych kategorii. Kapowiednie narzędzie. Powinniśmy szukać naW Ramce 2 opisaliśmy sposób utworzenia tegorie te tworzone są podczas wpisywania zwy podobnej do Services lub Runlevel Manaużytkownika bazy danych MySQL. przepisów do bazy danych. Jedna potrawa gement. Musimy mieć możliwość uruchomieW ostatnim oknie dialogowym, które pojamoże być przypisana do kilku kategorii. nia serwera MySQL lub takiego ustawienia, wi się od razu, gdy zdecydujemy się na bazę W kolejnych wersjach programu możemy aby serwer MySQL uruchamiał się automaSQLite, kreator zapyta, czy spodziewać się już bartycznie przy starcie systemu. chcemy umieścić w bazie dadziej zaawansowanego Przy pierwszym uruchomieniu narzędzia nych przykładowe przepisy wyszukiwania. zarządzania przepisami poleceniem konsoli kulinarne. Nie spodziewajPo odnalezieniu i wykrecipes & lub przez menu K, pojawi się kremy się zbyt wiele – obecnie braniu odpowiedniego ator, który pomoże nam przy wstępnym dostępne są tylko cztery przepisu z listy, możeprzygotowaniu programu do pracy. Użytprzykładowe przepisy. Zamy użyć jednego z wykownicy bazy MySQL będą mieli do wykomykamy okno dialogowe dłużonych przycisków nania o dwie czynności więcej niż użytkowi uruchamiamy Krecipes znajdujących się pod linicy SQLite. w typowym oknie Find/Edit stą przepisów. Pierwszy Rysunek 3: Okno wyszukiwaRecipes (Rysunek 3). z nich powoduje otwoLotny start nia/edycji przepisu. rzenie przepisu, drugi – Zaraz po wyświetleniu ekranu powitalnego, jego edycję. Ostatni przycisk Delete usunie kreator poprosi o wybranie właściwej bazy W poszukiwaniu na zawsze niemiłe wspomnienia związane danych. Jeżeli jesteśmy zwolennikami Mywłaściwego przepisu z wybranym przepisem. SQL, możemy dodatkowo określić, czy Każde okno programu ma po lewej stronie Zanim zaczniemy usuwać przepisy z bazy użytkownik ma wymagane uprawnienia pasek nawigacyjny. Pozostałą część obszadanych, musimy je oczywiście najpierw i czy ustaliliśmy administratora serwera baru okna zajmują przepisy, które możemy stworzyć. Zadanie to powierzono funkcji znajdującej się pod przyciskiem New (nowy Ramka 1: Obsługa MySQL – kompilacja Qt przepis). Niestety, jeżeli używamy Qt 3.3 Aby skompilować Qt, będziemy potrzebonych PNG i jpeg. Zamiast korzystania (Rysunek 4), nieprawidłowa praca programu wać źródeł Qt, które dostępne są na płyz biblioteki formatu GIF, możemy skorzypowoduje wyświetlanie komunikatu o błętach z dystrybucją lub na stronie producenstać z jednej z opcji Qt (-qt-gif), jednak ta Qt, firmy Trolltech [4]. dzie. Aby usunąć błąd, zmieniamy wielkość dla formatu MNG (Multiple-Image Network Graphics) biblioteka Qt wymaga okna, przeciągając prawy dolny róg okna. Po rozpakowaniu archiwum przechodzicd krecipes ./configure U -with-qt-dir=U /directory my do katalogu z kodem źródłowym Qt. Przy pomocy parametru -plugin-sql-mysql konfigurujemy właściwości biblioteki – w ten sposób biblioteka Qt będzie obsługiwać MySQL: jeszcze dodatku plug-in. Opcja -thread umożliwia wielowątkowe działanie programów wykorzystujących bibliotekę Qt. Ostatni parametr to -no-exceptions, oznaczający wyłączenie obsługi błędów. Oczywiście możemy użyć większej ilości parametrów, w zależności od potrzeb. cd qt-directory ./configure -system-zlib U -qt-gif -system-libpng U -system-libjpeg -plugin-imgfmt-U mng -thread -no-exceptions U -plugin-sql-mysql make sub-src sub-tools Opcja konfiguracyjna -system-zlib umożliwia wykorzystanie biblioteki zlib. Dotyczy to także bibliotek dla formatów graficz- Operacja ta może potrwać kilkanaście minut, ale dzięki temu nie musimy już instalować biblioteki Qt! Po zakończeniu procesu konfiguracji dokonujemy kompilacji biblioteki Qt wraz z kilkoma niezbędnymi narzędziami dla Qt i KDE: Nowe nabytki Do wprowadzania nowych przepisów kulinarnych służą trzy zakładki. Pierwsza z nich Recipe (przepis) określa nazwę przepisu oraz jego autora, kategorie i ilość osób, dla których przepis jest przeznaczony. Kliknięcie przycisku +, znajdujący się obok pól Authors i Categories, spowoduje wyświetlenie okna dialogowego, w którym możemy wybrać z listy autora i kategorię. Druga zakładka służy do wpisywania produktów i ilości. Lista typowych produktów znacznie ułatwia to zadanie. Możemy też wy- www.linux-magazine.pl Lipiec 2004 93 LINUX USER Krecipes wyświetlona zostanie lista zakupów (Rysubrać odpowiednią nę liczby osób w przepisie i aunek 6). Aby wydrukować ją na potrzeby wijednostkę dla danego tomatyczne przeliczenie ilości zyty w sklepie, klikamy przycisk Print. Naproduktu lub stwowszystkich produktów. stępnie klikamy OK, aby zamknąć okno. rzyć zupełnie nową Jeżeli wygląd okna przepisu Na dole, po lewej stronie listy zakupów jednostkę. Jeżeli wpi(patrz Rysunek 5) nam nie odznajduje się przycisk Diet Wizard (kreator saliśmy już wszystkie powiada i chcielibyśmy mieć diety), który zaprowadzi nas w to samo niezbędne informacje produkty w innym miejscu, momiejsce, co funkcja dotyczące składniżemy to zmienić Rysunek 4: Wpisywanie przepiDiet Wizard znajków, klikamy przyw ustawieniach Setsów. dująca się na pasku cisk Add ingredient tings | Page preferennawigacyjnym. Przy (dodaj produkt). ces.... W celu zmiany kolejności popomocy tej funkcji Do poruszania się po liście produktów słuszczególnych elementów, np. katebędziemy mogli żą klawisze kursora, co umożliwia wprowagorii lub listy produktów, przeciąopracować szczegódzanie produktów w kolejności wymaganej gamy je po prostu myszą (Rysunek łowy plan diety (Ryprzez przepis. Aby usunąć niewłaściwy lub 5). Aby zachować dokonane zmiaRysunek 6: Automatyczne twosunek 7). niepotrzebny produkt z przepisu, klikamy ny, klikamy Save and Close. rzenie listy zakupów. przycisk z krzyżykiem. Trzecia zakładka posiada duże pole tekPlanowanie zakupów Walka z nadwagą stowe przeznaczone dla opisu instrukcji kuPo podjęciu decyzji dotyczącej menu, pozoPrzede wszystkim musimy zdefiniować charskich. Aby sprawdzić poprawność pistaje jeszcze problem zakupów poszczególokres trwania diety, dzienną liczbę posiłków sowni, możemy nacisnąć nych produktów. Zajmie się oraz liczbę dań każdego posiłku. Jeżeli posiłprzycisk znajdujący się pod tym funkcja Shopping List (liki będą składać się z dwóch lub więcej dań, polem tekstowym. sta zakupów), znajdująca się do przemieszczania się między daniami poPod zakładkami znajduna pasku nawigacyjnym po lesłużą nam przyciski Previous Dish (poprzedje się kilka przycisków, wej stronie okna. Jak pokazano nie danie) i Next Dish (następne danie). dzięki którym możemy zana Rysunku 6, z listy istniejąJeżeli zaznaczymy Enable Category Filtepisać przepis (symbol dyscych przepisów możemy wyring (włącz filtrowanie kategorii), program kietki), zamknąć okno diabrać jeden lub więcej przepiKrecipes będzie wyświetlał wyłącznie zaznalogowe (kółko z krzyżykiem sów i dodać je do listy zakupów czone kategorie. Dzięki temu będziemy mow środku), wyświetlić prze(Shopping list) przy użyciu gli uniknąć pizzy lub schabowego przygotopis (lupa) lub dodać go do strzałki skierowanej w prawo. wanego na śniadanie. listy zakupów (ikona koszyKliknięcie strzałki skierowanej Po prawej stronie, u dołu możemy szczeka z zakupami, patrz Rysuw lewo usuwa przepisy z listy, gółowo określić poziom węglowodanów, nek 4). Ponadto funkcja a kliknięcie przycisku Clear witamin, białek i tłuszczu. W ten sposób Rysunek 5: Zmiana wyglądu Scale recipe (zmiana ilości usuwa wszystkie przepisy z liKrecipes będzie udostępniał wyłącznie okna przepisu zgodnie z osoosób) (przycisk z niebieską sty zakupów. przepisy spełniające podane kryteria. Po bistymi upodobaniami użytstrzałką) umożliwia zmiaPo kliknięciu przycisku OK kliknięciu przycisku Create the diet (przykownika. gotuj dietę), Krecipes opracowuje i wyświetla plan żywieniowy dla określonego SŁOWNICZEK wcześniej przedziału czasu. CVS: Concurrent Versions System, czyli sysSQL (Structured Query Language, czyli Czy po otworzeniu lodówki mieliście strukturalny język zapytań). Dane przetem kontroli wersji, to sposób zarządzania kiedyś wrażenie, że nie wiecie, co zrobić chowywane są w tabelach. Do zarządzawersjami plików. Kod źródłowy przechowyze znajdującymi się tam produktami? nia bazami danych MySQL można użyć wany jest na centralnym serwerze, gdzie Funkcja Ingredient check (kontrola klienta uruchamianego z wiersza poleprogramiści mogą wprowadzać poprawki ceń, o którym powiemy w dalszej części i ulepszenia. Przy pomocy CVS możemy poskładników), znajdująca się na pasku naniniejszego artykułu. Można też skorzybrać najnowsze pliki źródłowe i skompilowigacyjnym, pomoże nam w poszukiwastać z PhpMyAdmin, który oferuje grawać z nich samodzielnie program. niach właściwych produktów. Z listy wyficzny interfejs użytkownika (GUI) przez kdenonbeta: Programy z kategorii kdenonbieramy składniki, które posiadamy w doprzeglądarkę WWW. PhpMyAdmin wybeta znajdują się zwykle we wczesnym stamu, a następnie klikamy przycisk Find maga jednak do prawidłowej pracy dziadium rozwoju i nie są oficjalnie częścią matching recipe (odszukaj pasujący przełającego serwera Apache. KDE. Tak więc na ich rozwój nie wpływają pis). Mamy nadzieje, że na wyświetlonej SQLite: Właściwie jest to biblioteka języka plany wydania nowych wersji. Z drugiej liście odnajdziecie interesujący przepis C emulująca działanie serwera SQL (idealstrony jednak, programy tego typu nie są i podążycie do kuchni z misją przygotone rozwiązanie dla małych programów). Jezwykle dostępne jako pakiety RPM czy wania czegoś pysznego. żeli skompilujemy Krecipes z obsługą SQLiDEB. Wsparcie dla poszczególnych wersji językowych jest także ograniczone. MySQL: to baza danych obsługująca formułowanie zapytań w języku baz danych 94 Lipiec 2004 te, program będzie używał SQLite jak serwera. Biblioteka SQLite odczytuje dane i zapisuje je bezpośrednio na dysku. www.linux-magazine.pl Produkty Jeżeli w części „Walka z nadwagą” zastanawialiście się, skąd Krecipes zna rzeczy- Krecipes Ramka 2: Użytkownik bazy danych MySQL Aby nadać użytkownikowi odpowiednie uprawnienia do zapisu i odczytu w bazie danych MySQL, musimy uzyskać z wiersza poleceń Linuksa uprawnienia administratora bazy danych (root) i otworzyć powłokę MySQL. Uważajmy, aby nie pomylić administratora bazy danych root z administratorem systemu root! Jeżeli pracujemy na koncie administratora bazy danych po raz pierwszy, nie posiadamy jeszcze hasła. Nie oznacza to, że użytkownik nie istnieje, a tylko tyle, że konto nie jest zabezpieczone. W takim przypadku nie musimy podawać hasła: mysql -user=root mysql Aby przypisać uprawnienia do odczytu i zapisu dla bazy danych przepisów kulinarnych, wpisujemy po znaku zachęty poniższe polecenie. Dzięki temu otrzymamy uprawnienia do wyboru, dodawania, aktualizacji i usuwania uprawnień w bazie danych: GRANT SELECT, INSERT, UPDATE, U DELETE ON Krecipes.* TO U 'nazwa_użytkownika'@'nazwa_U hosta' IDENTIFIED BY 'hasło'; Baza przepisów, którą program automatycznie zakłada, nosi nazwę Krecipes. Zastępujemy nazwa_użytkownika, nazwa_hosta i hasło odpowiednimi danymi użytkownika, hasłem i nazwą hosta. Jeżeli uruchomiliśmy serwer MySQL na komputerze lokalnym, jako nazwę hosta możemy użyć localhost. Ewentualnie można zastąpić parametr nazwa_hosta nazwą zewnętrznego serwera danych (może to być np. serwer dedykowany sieci lokalnej). Teraz należy przekazać asystentowi Krecipes informacje o posiadanych uprawnieniach (Rysunek 1). W kolejnym oknie dialogowym (Rysunek 2) wpisujemy dane użytkownika i hasło, które właśnie ustaliliśmy. data (użyj danych Departamentu Rolnicwistą wartość odżywczą takich nietypotwa USA), należy jednak pamiętać, że funkwych produktów jak pancetta (wędlina cja nie działa jeszcze w pełni poprawnie. otrzymywana z boczku wieprzowego) czy Na razie funkcja ta pobiera listę artykułów szpinak wodny, sprawdźcie pozycję Data spożywczych i ich wartości na pasku nawigacyjnym. odżywczych z bazy danych Znajdziecie tam wiele inDepartamentu Rolnictwa teresujących informacji, Stanów Zjednoczonych [5], które można edytować. ale dodanie jej do listy KrePrzykładowo, funkcja cipes nie jest możliwe. ProIngredients (składniki) gramiści ciężko pracują nad z Rysunku 8 zaprowadzi poprawieniem tej funkcji nas do listy produktów Rysunek 7: Dla osób chcących w następnych wersjach proznajdujących się w bazie jeść zdrowo Krecipes udostępgramu, więc warto pilnie danych. Tutaj możemy nia pomocnika diety. obserwować kolejne wydadopisać brakujące pozynia tej pozycji. cje, czyli dowolne produkPozycja Properties (właty, które nie zostały jeszściwości) umożliwi nam cze użyte w przepisie. Aby przeglądanie wartości oddodać składnik, klikamy żywczych wprowadzonych na przycisku ze znakiem do tej pory danych. Tutaj plus (+), aby go usunąć, możemy także dodawać klikamy przycisk ze znaRysunek 8: Za pomocą funkcji nowe i usuwać niepotrzebkiem minus (-). Przyciski „Data” możemy dodać pozycję ne pozycje (przyciskami te działają w ten sam spodo bazy danych. plus-minus, tak jak to już sób także w innych miejopisano wcześniej). scach programu. Pozycja Units (jednostOczywiście, dla każdego ki) zaprowadzi nas do liproduktu możemy tutaj sty wszystkich dostępnych określić właściwą jednostw bazie danych jednostek kę, ilość białek, tłuszczu wraz z tabelą zamiany i innych wartości odżywdżuli na kalorie. Oczywiczych. Dużym ułatwieRysunek 9: Okno dialogowe ście, możemy dodać kolejniem może być skorzystaustawień programu umożliwia ne takie tabele. Dodawanie z funkcji Load USDA konfigurowanie Krecipes. LINUX USER nie i usuwanie pozycji realizowane jest w sposób opisany powyżej. Pozycja Categories (kategorie) zajmuje się kategoriami przepisów, a pozycja Authors (autorzy) to miejsce, w którym możemy wpisać nazwę właściciela lub pomysłodawcy przepisu. Import Jeżeli dysponujemy dużą ilością przepisów, z pewnością nie chcemy ich wszystkich ponownie wpisywać do programu. Czy nie byłoby dobrze, gdyby wszystkie przepisy wyszukane w Internecie były automatycznie dopisywane do bazy danych bez ich przepisywania? Właśnie do tego celu (przynajmniej w większości przypadków) służy, obsługiwany przez Krecipes, język Recipeml („Recipe Markup Language”) [6] – język stworzony w oparciu o XML, przygotowany specjalnie do prezentacji danych związanych z przepisami kulinarnymi. Krecipes nie ma problemu z otwieraniem przepisów zapisanych w tym formacie. Potrafi także importować przepisy z takich programów jak Master Cook czy Meal Master – służy do tego funkcja Import z menu File. Miejscem, w którym możemy dostosować parametry importowania przepisów, jest okno Settings | Krecipes preferences (patrz Rysunek 9). Tutaj możemy także zmienić nazwę użytkownika i hasło do bazy danych MySQL. Pozycja Numbers umożliwia zmianę przedstawiania wartości liczbowych w przepisach. Mimo że program jest jeszcze we wczesnej fazie rozwoju, wszystkie opisane tutaj możliwości są bardzo przejrzyste. Dzięki temu Krecipes jest odpowiednim programem do domowego użytku, co dobrze wróży na przyszłość. ■ INFO [1] Krecipes: http://krecipes.sf.net/ [2] MySQL: http://www.mysql.com/ [3] SQLite: http://www.sqlite.org/ [4] Pliki Qt do pobrania: http://www.trolltech.com/ download/qt/x11.html [5] Departament Rolnictwa Stanów Zjednoczonych: http://www.usda.gov/ [6] Dodatkowe informacje na temat Recipeml: http://www.formatdata.com/recipeml/ www.linux-magazine.pl Lipiec 2004 95