Jest na to rada, a właściwie łata:
:set ft=htmli już poprawnie formatuje się html (ale niepoprawnie php)
więc można powrócić:
:set ft=php
:set ft=htmli już poprawnie formatuje się html (ale niepoprawnie php)
:set ft=php
zmienna = warunek ? wartosc_jak_prawda : wartosc_jak_falsz;na przykład:
String message = object.getMessage().equals("") ? "brak wiadomości" : object.getMessage();
DecimalFormat df = new DecimalFormat("###.##");
System.out.println("kilobytes (DecimalFormat) : " + df.format(kilobytes));
| Kolekcja | Opis |
|---|---|
ArrayList |
Sekwencja indeksowana i zmiennych rozmiarach |
LinkedList |
Sekwencja uporządkowana umożliwiająca efektywne wstawianie i usuwanie dowolnej pozycji |
HashSet |
Kolekcja nieuporządkowana, która nie dopuszcza duplikatów. |
TreeSet |
Zbiór uporządkowany. Nie dopuszcza duplikatów |
EnumSet |
Zbiór wartości typu wyliczeniowego. Nie dopuszcza duplikatów |
LinkedHashSet |
Zbiór zapamiętujący kolejność wstawiania elementów. Nie dopuszcza duplikatów. |
PriorityQueue |
Kolekcja pozwalająca na efektywne usuwanie najmniejszego elementu. |
HashMap |
Struktura danych przechowująca asocjacje klucz -> wartość. |
TreeMap |
Mapa o kluczach uporządkowanych. |
EnumMap |
Mapa, której klucze należą do typu wyliczeniowego.
private enum BmiComponentNames {MASS, TALL}
EnumMap<BmiComponentNames, Float> bmiComponents = new EnumMap<BmiComponentNames, Float>BmiComponentNames.class); bmiComponents.put(BmiComponentNames.MASS, 79f); bmiComponents.put(BmiComponentNames.TALL, 185f); |
LinkedHashMap |
Mapa zapamiętująca porządek, w którym umieszczane były asocjacje. |
WeakHashMap |
Mapa, której wartości mogą być odzyskiwane przez mechanizm odzyskiwania nieużytków, gdy nie są używane nigdzie indziej. |
IdentityHashMap |
Mapa o kluczach porównywanych za pomocą operatora == a nie metody equals() |
| List | Set |
|---|---|
| Dopuszcza duplikaty. | Nie dopuszcza duplikatów. |
| Kolekcja uporządkowana. | Kolekcja nieuporządkowana. |
Używa metody equals() do porównywania elementów podczas wstawiania. |
|
Najpopularniejsze implementacje: ArrayList,
Vector,
LinkedList
Ciekawe omówienie różnic pomiędzy ArrayList, a LinkedList.
|
Najpopularniejsze implementacje: HashSet,
TreeSet,
LinkedHashSet |
Tworzę sobie model. Roboczo nazwijmy go UserMailer. Dziedziczy on po ActionMailer::Base. W modelu tym ustawiam metody, z których każda jest wzorem wysyłanego emaila.
Na przykład dla newslettera tworzę:
def newsletter(newsletter, email)
recipients email
from "#{Options::Program_name} - newsletter :: <#{Options::Email}>"
subject newsletter.subject
sent_on Time.now
body({
:body => newsletter.body
})
end
Przekazane parametry to:
newsletter - obiekt zawierający dane dla newslettera takie jak choćby temat;email emaile (emaile) do wysyłkinewsletter, a nazywająca się :body wystąpi w widoku.
Jeśli już mam metodę, to przygotowuję dla niej widok. Dla takiej konfiguracji, jaką opisuję widoki winny być umieszczone w folderze /views/user_mailer czyli w nazwie zgodnej z nazwą modelu.
Widok powinien być standardowym plikiem html.erb z dopiskiem .text. W naszym przypadku dla metody newsletter widok powinien się zwać nomen omen newsletter.text.html.erb albo newsletter.text.erb. W widokach należy unikać stosowania zewnętrznych styli i w ogóle ograniczyć zabawę ze stylami, gdyż w klientach mailowych źle się to wyświetla. Należy raczej pozostać przy dawnym formatowaniu przy pomocy tabel.
|
Tu jest jakiś nagłówek ...................................
|
| <%= @body %> |
|
A tu jest jakaś stopka ...................................
|
@body, którą definiowaliśmy w metodzie jako :body.UserMailer.deliver_newsletter(newsletter_data, "jan.testowy@test.pl")W metodzie
deliver_newsletter() po podkreślniku występuje nazwa metody, którą klasa UserMailer ma wywołać. Obiekt newsletter_data zawiera w swych polach dane do wysyłki newslettera. Na przykład newsletter_data.subject zawiera temat newslettera.
netsh advfirewall set global StatefulFTP disableteraz powinno zadziałać.