Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions 02-getting-started.md.erb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Jeżeli nie możesz (albo nie chcesz) instalować Meteor'a lokalnie, polecamy sp

Nitrous.io to serwis pozwalający Ci uruchamiać aplikacje i edytować ich kod w twojej przeglądarce, napisaliśmy [krótki poradnik](https://www.discovermeteor.com/2013/10/04/meteor-nitrous/) aby pomóc ci w konfiguracji.

Możesz także wykonwać tę instrukcję aż do sekcji "Instalacja Meteor'a i Meteorite" (włącznie), i następnie przejść przez książkę ponownie rozpoczynając od sekcji "Tworzenie prostej aplikacji" z tego rozdziału.
Możesz także wykonać tę instrukcję aż do sekcji "Instalacja Meteor'a i Meteorite" (włącznie), i następnie przejść przez książkę ponownie rozpoczynając od sekcji "Tworzenie prostej aplikacji" z tego rozdziału.

<% end %>

Expand All @@ -42,15 +42,15 @@ Musisz się upewnić że node i git są zainstalowane na twoim komputerze. Zains
- [strona do pobrania Node](http://nodejs.org/download/)
- [strona do pobrania Git](http://git-scm.com/downloads)

Następnie, zainstalujmy Meteorite. Jest to pakiet [npm](https://npmjs.org/) (ang Node Package Module, standarowy format modułów Node'a), instalujemy go za pomocą:
Następnie, zainstalujmy Meteorite. Jest to pakiet [npm](https://npmjs.org/) (ang Node Package Module, standardowy format modułów Node'a), instalujemy go za pomocą:

~~~bash
$ npm install -g meteorite
~~~

<% note do %>

### Błedy uprawnień?
### Błędy uprawnień?

Na niektórych komputerach możesz potrzebować uprawnień root'a aby zainstalować Meteorite. Aby uniknąć problemów, upewnij się że używasz `sudo -H`:

Expand All @@ -70,7 +70,7 @@ Notka: nie ma jeszcze obsługie Meteorite dla Windows, ale możesz spojrzeć na

### `mrt` vs `meteor`

Meteorite zainstaluje komendę `mrt`, którą będziemy używać do isntalacji pakietów dla naszej aplikacji. Jednakże kiedy chcemy uruchomić nasz serwer, nadal używamy komendy `meteor`.
Meteorite zainstaluje komendę `mrt`, którą będziemy używać do instalacji pakietów dla naszej aplikacji. Jednakże kiedy chcemy uruchomić nasz serwer, nadal używamy komendy `meteor`.

<% end %>

Expand Down Expand Up @@ -100,7 +100,7 @@ $ cd microscope
$ meteor
~~~

Teraz wpisz w swojeje przeglądarce adres `http://localhost:3000/` (lub odpowiednik `http://0.0.0.0:3000/`) i powinieneś zobaczyć mniej więcej coś takiego:
Teraz wpisz w swojej przeglądarce adres `http://localhost:3000/` (lub odpowiednik `http://0.0.0.0:3000/`) i powinieneś zobaczyć mniej więcej coś takiego:


<%= screenshot "2-1", "Meteor's Hello World." %>
Expand All @@ -111,7 +111,7 @@ Gratulacje! Twoja pierwsza aplikacja w Meteor'ze działa. Przy okazji, aby ją z

### Dodawanie pakietu

Użyejmy teraz Meteorite, aby dodać smart package, który pozwoli na dołączenie =[Bootstrap](http://getbootstrap.com/) do projektu:
Użyjemy teraz Meteorite, aby dodać smart package, który pozwoli na dołączenie =[Bootstrap](http://getbootstrap.com/) do projektu:

~~~bash
$ mrt add bootstrap
Expand All @@ -125,9 +125,9 @@ $ mrt add bootstrap

Kiedy mówimy o pakietach w kontekście Meteor'a, warto pomówić o szczegółach. Meteor używa pięciu typów pakietów:

- Rdzeń Meteor'a jako takie jest podzielone na **rdzenne pakiety**. Są one zawarte w każdej aplikacji Meteor'a i pradopobonie nigdy nie będziesz musiał się o nie martwić.
- Rdzeń Meteor'a jako takie jest podzielone na **rdzenne pakiety**. Są one zawarte w każdej aplikacji Meteor'a i prawdopodobnie nigdy nie będziesz musiał się o nie martwić.
- Meteor **pakiety smart** (ang. smart packages) są grupą [około 37 pakietów](http://docs.meteor.com/#packages) (możesz zobaczyć całą listę za pomocą `meteor list`), które są dostarczane razem z Meteor'em i możesz je opcjonalnie zaimportować do swojej aplikacji. Możesz dodać je nawet, gdy nie używasz Meteorite, za pomocą `meteor add packagename`.
- **Pakiety lokalne** to pakeity które możesz swtorzyć sam i włożyć je do katalogu `/packages`. Także nie potrzebujesz Meteorite by z nich korzystać.
- **Pakiety lokalne** to pakiety które możesz stworzyć sam i włożyć je do katalogu `/packages`. Także nie potrzebujesz Meteorite by z nich korzystać.
- **pakiety smart Atmosphere** to pakiety do Meteor'a trzecich firmy znajdujące się na [Atmosphere](http://atmosphere.meteor.com). By je importować i używać potrzebny jest Meteorite.
- **pakiety NPM** (Node Packaged Modules) to pakiety Node.js. Mimo, iż nie współpracują one od razu z Meteorem w stanie w jakim są dostarczane, *mogą* być używane przez wyżej wymienione typy pakietów.

Expand Down Expand Up @@ -158,19 +158,19 @@ Jeżeli chcesz poznać więcej szczegółów, zachęcamy by zapoznać się z [of

Jeżeli używałeś wcześniej innych frameworków, takich jak Ruby on Rails, możesz się zastanawiać czy Meteor zaadoptował wzorzec MVC

Krótka odpowiedź to: nie. W przeciwieństwie do Rails'ów, Meteor nie narzuca żadnej predefiniowanej struktury dla Twojej aplikacji. Także w tej książce poprostu układamy kod w sposób, który ma dla nas największy sens, nie martwiąc się przy tym za bardzo o akronimy.
Krótka odpowiedź to: nie. W przeciwieństwie do Rails'ów, Meteor nie narzuca żadnej predefiniowanej struktury dla Twojej aplikacji. Także w tej książce po prostu układamy kod w sposób, który ma dla nas największy sens, nie martwiąc się przy tym za bardzo o akronimy.

<% end %>

### Nie ma katalogu public?

Ok, skłamaliśmy. Nie potrzebujemy katalogu `public/` z tego prostego powodu że Microscope nie potrzebuje żadnych statycznych zasobów. Ale odkąd większość aplikacji napisanych w Meteor'ze zawiera co najmniej kilka obrazków, uznaliśmy że warto poruszyć ten temat.

Przy okazji, mogłeś już zauważyć ukryty katalog `.meteor`. To jest miejsce w którym Meteor przechowuje swój własny kod - modyfikacja rzeczy znajdujących się tam to zazwyczaj bardzo zły pomysł. Prawdę ówiąc nie potrzebujesz nigdy zaglądać do tego katalogu. Jedynym wyjątkiem są pliki `.meteor/packages` and `.meteor/release`, które odpowiednio są używane do wylistowania twoich pakietów i wersji Meteor'a którą używasz. Kiedy dodajesz pakiet albo zmieniasz wersję Meteor'a, może być pomocne sprawdzenie zmian w tych plikach.
Przy okazji, mogłeś już zauważyć ukryty katalog `.meteor`. To jest miejsce w którym Meteor przechowuje swój własny kod - modyfikacja rzeczy znajdujących się tam to zazwyczaj bardzo zły pomysł. Prawdę mówiąc nie potrzebujesz nigdy zaglądać do tego katalogu. Jedynym wyjątkiem są pliki `.meteor/packages` and `.meteor/release`, które odpowiednio są używane do wylistowania twoich pakietów i wersji Meteor'a którą używasz. Kiedy dodajesz pakiet albo zmieniasz wersję Meteor'a, może być pomocne sprawdzenie zmian w tych plikach.

<% note do %>

### Podkreślenia vs CamelCase
### Podkreślenia vs. CamelCase

Jedyne co mamy do powiedzenia na temat debaty pomiędzy podkreśleniami (`my_variable`) kontra camelCase (`myVariable`) jest to że naprawdę nie ma znaczenia którą konwencję przyjmiesz, jeżeli tylko się do niej konsekwentnie stosujesz.

Expand All @@ -182,7 +182,7 @@ Jedynym wyjątkiem do tej reguły są nazwy plików, które będą używały pod

### Zatroszcz się o CSS

To nie jest książka o CSS. Aby nie zwalniać zajmując się szczegółami styli, zdecydowaliśmy zrobić cały zestaw styli dostępny od początku, tak żebyś nie musiał się nim przejmować od początku.
To nie jest książka o CSS. Aby nie zwalniać zajmując się szczegółami stylów, zdecydowaliśmy zrobić cały zestaw stylów dostępnych od początku, tak żebyś nie musiał się nim przejmować od początku.

CSS automatycznie jest zminimalizowany i załadowany przez Meteor'a, i w odróżnieniu do innych statycznych zasobów idzie do katalogu `/client`, a nie `/public`, także włóż do pliku `style.css`:

Expand Down
12 changes: 6 additions & 6 deletions 02s-deploying.md.erb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Nauczymy się jak opublikować aplikację Meteora na kilka różnych sposobów.

Jest to rozdział poświęcony **Sidebars**. Bardziej szczegółowo jest opisany w dalszej części książki.

Jeżeli wolisz kontynuwać pracę nad Microscope, możesz przeskoczyć ten rozdział i wrócić do niego w dowolnym momencie.
Jeżeli wolisz kontynuować pracę nad Microscope, możesz przeskoczyć ten rozdział i wrócić do niego w dowolnym momencie.

<% end %>

Expand Down Expand Up @@ -88,7 +88,7 @@ Właśnie opublikowaliśmy aplikację na serwerach Modulusa. Aby uzyskać więce

Mimo tego, że nowe firmy hostingowe pojawiają się jak grzyby po deszczu, często napotkasz problemy związane z konkretnym hostingiem i jego ograniczeniami. Na dzień dzisiejszy publikacja aplikacji na własnym serwerze jest najlepszym sposobem na umieszczenie aplikacji Meteora w internecie. Jedyną przeszkodą może być to, że publikacja na własnym serwerze nie jest prosta, szczególnie gdy szukasz środowiska produkcyjnego o wysokiej jakości.

[Meteor Up](https://github.com/arunoda/meteor-up) (lub w skrócie `mup`) jest kolejną próbą poradzenia sobie z tym problemem. Jest to narzędzie konsolowe, które zajmuje się ustawieniem i publikacją aplikacji za ciebie. Zobaczmy zatem jak apublikować Microscope używając Meteor Up.
[Meteor Up](https://github.com/arunoda/meteor-up) (lub w skrócie `mup`) jest kolejną próbą poradzenia sobie z tym problemem. Jest to narzędzie konsolowe, które zajmuje się ustawieniem i publikacją aplikacji za ciebie. Zobaczmy zatem jak opublikować Microscope używając Meteor Up.

Zanim będziemy mogli kontynuować, potrzebujemy serwer na który możemy opublikować aplikację. Polecamy [Digital Ocean](http://digitalocean.com), gdzie hosting zaczyna się od 5$ miesięcznie lub [AWS](http://aws.amazon.com/), który ma darmowe instancje Micro (szybko napotkasz problemy związane ze skalowaniem aplikacji, ale jeżeli chcesz się pobawić, na początek powinno wystarczyć).

Expand Down Expand Up @@ -116,7 +116,7 @@ $ mup init

<% note do %>

### Wspóldzielenie ustawień za pomocą Dropbox
### Współdzielenie ustawień za pomocą Dropbox

Świetnym sposobem na współdzielenie ustawień przez Ciebie i cały Twój zespół jest stworzenie folderu z konfiguracjami w twoim DropBoxie lub podobnym serwisie.

Expand Down Expand Up @@ -155,7 +155,7 @@ Następnym krokiem jest konfiguracja pliku `mup.json`. Poniżej znajdziesz domy
~~~
<%= caption "mup.json" %>

Zapoznajmu się po kolei z każdym z ustawień.
Zapoznajmy się po kolei z każdym z ustawień.

**Server Authentication**

Expand All @@ -171,15 +171,15 @@ Jeżeli zdecydowałeś się użyć MongoHQ, ustaw pole `setupMongo` na `false` i

**Ścieżka Aplikacji Meteora**

Ponieważ nasza konfiguracja Meteor Up jest umieszczona w innym folerze, musimy wskazać Meteorowi z powrotem na naszą aplikację używając pola `app`. Wpisz lokalną ścieżkę, którą możesz otrzymać po wpisaniu `pwd` w konsoli w głównym folderze danej aplikacji.
Ponieważ nasza konfiguracja Meteor Up jest umieszczona w innym folderze, musimy wskazać Meteorowi z powrotem na naszą aplikację używając pola `app`. Wpisz lokalną ścieżkę, którą możesz otrzymać po wpisaniu `pwd` w konsoli w głównym folderze danej aplikacji.

**Zmienne Środowiskowe**

Możesz określić wszystkie zmienne środowiskowe aplikacji (takie jak `ROOT_URL`, `MAIL_URL`, `MONGO_URL`, itd.) w środku bloku `env`.

### Ustawienia i publikacja aplikacji

Zanim będziemy mogli opublikować aplikację, musimy przygotować serwer, aby był gotowy na hosting aplikacji Meteora. Na szczęście ten skomplikowany proces został uproszczony do zawołania pojedyńczej komendy!
Zanim będziemy mogli opublikować aplikację, musimy przygotować serwer, aby był gotowy na hosting aplikacji Meteora. Na szczęście ten skomplikowany proces został uproszczony do zawołania pojedynczej komendy!

~~~bash
$ mup setup
Expand Down
16 changes: 8 additions & 8 deletions 03-templates.md.erb
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ Stwórzmy folder `/views` w folderze `/client`. Będzie to miejsce wstawienia ws

### Znajdowanie plików

Meteor doskonale radzi sobie ze znajdowaniem plików. Nieważne gdzie wstawisz kod w folderz `/client`, Meteor go znajdzie i odpowiednio skompiluje. Oznacza to, że nigdy nie będziesz musiał wstawiał ścieżek 'include' do plików JavaScript czy CSS.
Meteor doskonale radzi sobie ze znajdowaniem plików. Nieważne gdzie wstawisz kod w folderze `/client`, Meteor go znajdzie i odpowiednio skompiluje. Oznacza to, że nigdy nie będziesz musiał wstawiał ścieżek 'include' do plików JavaScript czy CSS.

Oznacza to również, że mógłbyś równie dobrze wstawić wszystkie pliki w jeden folder, czy nawet cały kod w jeden plik. Ponieważ Meteor i tak skompiluje wszystko w jeden pojedyńczy skompresowany plik, chcielibyśmy raczej trzymać porządek i dobrze zorganizować strukturę plików.
Oznacza to również, że mógłbyś równie dobrze wstawić wszystkie pliki w jeden folder, czy nawet cały kod w jeden plik. Ponieważ Meteor i tak skompiluje wszystko w jeden pojedynczy skompresowany plik, chcielibyśmy raczej trzymać porządek i dobrze zorganizować strukturę plików.

<% end %>

Expand Down Expand Up @@ -118,9 +118,9 @@ Mówiąc inaczej, rola szablonów jest ograniczona do wyświetlania lub iterowan

Gdy zapytaliśmy programistów, jakie nazwy nadają managerom szablonu, połowa nazwała je "kontrolery", a druga połowa "te pliki, w których umieszczam kod JavaScript".

Manager nie jest tak naprawdę kontrolerem (przynajmniej w sensie kontrolera MVC) a termin "TFWIPMJSC" (przyp. tlum. ang. akronim od 'te pliki,...') nie dawał się łatwo zapamiętać, więc odrzuciliśmy obie propozycje.
Manager nie jest tak naprawdę kontrolerem (przynajmniej w sensie kontrolera MVC) a termin "TFWIPMJSC" (przyp. tłum. ang. akronim od 'te pliki,...') nie dawał się łatwo zapamiętać, więc odrzuciliśmy obie propozycje.

Nadal potrzebowaliśmy nadać nazwę czemuś, nad czym pracujemy i wymyśliśmy nazwę "manager", która wcześniej nie miała swojego odpowiednika w innych frameworkach webowych.
Nadal potrzebowaliśmy nadać nazwę czemuś, nad czym pracujemy i wymyśliliśmy nazwę "manager", która wcześniej nie miała swojego odpowiednika w innych frameworkach webowych.

<% end %>

Expand Down Expand Up @@ -156,7 +156,7 @@ Jeżeli wszystko zostało wpisane poprawnie, powinieneś zobaczyć w przeglądar

<%= commit "3-1", "Dodany szablon listy postów i statyczne dane szablonu." %>

Osiągneliśmy tutaj dwie rzeczy. Po pierwsze ustawiliśmy dane początkowe prototypu aplikacji w talbice `postsData`. Dane te normalnie zostałyby pobrane z bazy danych, ale ponieważ jeszcze się tego nie nauczyliśmy (poczekaj do kolejnego rozdziału), "oszukujemy" przez wprowadzenie statycznych danych.
Osiągnęliśmy tutaj dwie rzeczy. Po pierwsze ustawiliśmy dane początkowe prototypu aplikacji w tablice `postsData`. Dane te normalnie zostałyby pobrane z bazy danych, ale ponieważ jeszcze się tego nie nauczyliśmy (poczekaj do kolejnego rozdziału), "oszukujemy" przez wprowadzenie statycznych danych.

Po drugie, użyliśmy funkcję `Template.myTemplate.helpers()` Meteora, aby zdefiniować helper szablonu o nazwie `posts` który zwraca tablicę `postsData`.

Expand Down Expand Up @@ -196,11 +196,11 @@ Tym razem wartością helpera `domain` nie jest tablica, ale funkcja anonimowa.

<%= screenshot "3-2", "Wyświetlenie domen dla każdego linku." %>

Helper `domain` ma URL jako paramter i zwraca jego domenę używając kilku sztuczek JavaScript. Ale skąd bierze się sam url?
Helper `domain` ma URL jako parametr i zwraca jego domenę używając kilku sztuczek JavaScript. Ale skąd bierze się sam url?

Aby odpowiedzieć na to pytanie, musimy wrócić do szablonu `posts_list.html`. Block helper `{{#each}}` nie tylko iteruje po tablicy, are również **ustawia wartość `this` w środku bloku odpowiadającego iterowanemu obiektowi**.
Aby odpowiedzieć na to pytanie, musimy wrócić do szablonu `posts_list.html`. Block helper `{{#each}}` nie tylko iteruje po tablicy, ale również **ustawia wartość `this` w środku bloku odpowiadającego iterowanemu obiektowi**.

Oznacza to, że pomiędzy tagami `{{#each}}`, każdy post po kolei jest równoznaczny z `this` i jest to zastosowane w każdym wstawioym managerze szablonu (`post_item.js`).
Oznacza to, że pomiędzy tagami `{{#each}}`, każdy post po kolei jest równoznaczny z `this` i jest to zastosowane w każdym wstawionym managerze szablonu (`post_item.js`).

Rozumiemy teraz dlaczego `this.url()` zwraca URL bieżącego posta. Co więcej, jeżeli użyjemy `{{title}}` i `{{url}}` w środku szablonu `post_item.html`, Meteor rozpozna co oznacza `this.title` i `this.url` i zwróci poprawne wartości.

Expand Down
8 changes: 4 additions & 4 deletions 03s-using-github.md.erb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Ten rozdział zakłada, że nie jesteś zaznajomiony z Git i GitHub. Jeżeli zna

### Praca z commitami

Podstawowym narzędziem, zmianą części pliku jest *commit*. Możesz myślić o commit jak o zrzucie stanu bazy plików w danym momencie czasu.
Podstawowym narzędziem, zmianą części pliku jest *commit*. Możesz myśleć o commit jak o zrzucie stanu bazy plików w danym momencie czasu.

Zamiast dostarczenia całego kodu Microcope, robiliśmy takie zrzuty w trakcie pisania książki i możesz je zobaczyć online na GitHub.

Expand Down Expand Up @@ -54,7 +54,7 @@ GitHub nie pokazuje wielu wizualizacji tego, co obserwujemy patrząc na commit,

### Lokalny dostęp do commita

Zobaczyliśmy przed chwilą, jak przeglądać kod danego commita online na GitHub. Ale co jeśli chciałbyć osiągnąć to samo lokalnie? Przykładowo, mógłbyś mieć ochotę na uruchomienie aplikacji lokalnie na danym commicie, aby zobaczyć jak ma się zachowywać w danym momencie czasu.
Zobaczyliśmy przed chwilą, jak przeglądać kod danego commita online na GitHub. Ale co jeśli chciałbyś osiągnąć to samo lokalnie? Przykładowo, mógłbyś mieć ochotę na uruchomienie aplikacji lokalnie na danym commicie, aby zobaczyć jak ma się zachowywać w danym momencie czasu.

Aby to osiągnąć, przejdziemy przez pierwsze kroki (przynajmniej w tej książce) z konsolową aplikacją `git`. Dla początkujących, [upewnij się, że zainstalowałeś Git](http://git-scm.com/downloads). Następnie **sklonuj** (inaczej mówiąc, pobierz z serwera kopię) repozytorium Microscope za pomocą:

Expand Down Expand Up @@ -94,7 +94,7 @@ Git poinformował, że jesteśmy obecnie w stanie “detached HEAD”, co oznacz

(Uwaga: Git posiada w swoim arsenale również komendy pozwalające na *zmianę* poprzednich commitów. Tu mógłbyś wyobrazić sobie podróżnika w czasie zmieniającego przeszłość, ale jest to poza zakresem tego krótkiego wstępu do Gita).

Powodem, dla którego mogłeś wpisać `chapter3-1` jest to, że otagowaliśmy wszystkie commity Microscope poprawnym znacznikiem rozdziału. Gdybyśmy tego nie zrobili, konieczne byłoby odnalezienie **hasha** lub mówiąc inaczej unikalnego idetyikatora danego commita.
Powodem, dla którego mogłeś wpisać `chapter3-1` jest to, że otagowaliśmy wszystkie commity Microscope poprawnym znacznikiem rozdziału. Gdybyśmy tego nie zrobili, konieczne byłoby odnalezienie **hasha** lub mówiąc inaczej unikalnego identyfikatora danego commita.

Ponownie w takim przypadku GitHub ułatwia pracę. Można znaleźć tag commita w dolnym prawym rogu niebieskiego przycisku nagłówka, jak pokazano poniżej:

Expand Down Expand Up @@ -138,4 +138,4 @@ Uporządkowany widok informuje kto i w jakim commicie modyfikował dany plik (in

<%= screenshot "s3-11", "Widok Blame w GitHub." %>

Ponieważ Git oraz GitHub są całkiem skomplikowanymi narzędziami, nie mamy zamiaru przedstawić wszystkich informacji na ich temat w pojedyńczym rozdziale. Tak naprawdę dotknęliśmy tylko czubka góry lodowej, ale mamy nadzieję, że przedstawiona wiedza okaże się przydatna podczas dalszego czytania tej książki.
Ponieważ Git oraz GitHub są całkiem skomplikowanymi narzędziami, nie mamy zamiaru przedstawić wszystkich informacji na ich temat w pojedynczym rozdziale. Tak naprawdę dotknęliśmy tylko czubka góry lodowej, ale mamy nadzieję, że przedstawiona wiedza okaże się przydatna podczas dalszego czytania tej książki.
Loading