Ant vs Maven?

nowyworek
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:świat
  • Postów:174
1

Mamy teraz w firmie pisać nowy projekt i niemieccy architekci dyskutują o tym co lepsze ant czy maven.
Całe życie pracowali w ant, ale chcieli coś troche nowszego i biorą pod uwagę mavena.
Jak przekonać ich do mavena?


Julian
edytowany 1x, ostatnio: nowyworek
TS
Ale Ci się nudzi...
PA
niemieccy architekcji - zaproponuj im używanie make-a do tego. Do tego generacja makefile-i w PHP.
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Przecież to nie są nawet rzeczy zbliżone do siebie. To jakby dyskutować czy kupić motocykl czy koło.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Zobacz pozostały 1 komentarz
Shalom
No nie wiem, dla mnie ant to jak ktoś chce robić jakieś operacje w stylu przenoszenie plików, zipowanie paczek itd. Maven to głównie dependency management.
jarekr000000
mavenem tez się robi przenoszenie plików, a antem dependency management :-/ taki life. Ostatni raz widziałem anta w 2015, załapałem się na końcówkę migracji ant->maven w firmie.
Shalom
antem dependency management sensie kopiujesz jary z jakiegoś /lib? :D
jarekr000000
napisałem wyżej : https://ant.apache.org/ivy/ - współpracuje z artifactory / nexusem i maven central - prawie zupełnie normalnie.
WhiteLightning
ant + ivy to zlo....
szarotka
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 2 miesiące
  • Postów:533
12

Oooooooo trafiłeś na tych legendarnych niemieckich architektów :D

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
2

Serio, to nie wiem czy bym przekonał. Nienawidzę wszystkich systemów budowania po równo:

  • ant,
  • maven,
  • gradle

każdy, po dłuższym użyciu zaczyna wyglądać na bagno.
Przy czym i w mavenie i w gradle - problem to pluginy (do niedawna nie doceniałem potegi spie...lenia pluginów gradlowych i myślałem, że to głównie mavena problem).
Anta juz prawie zapomniałem. Plusem było to, że jednak pluginy, to były taski pojedyncze i dużo napsuć nie mogły - minusem - totalna prymitywnośc tego systemu, każdy build to osobne dzieło sztuki. Czasem trudniejsze do zrozumienia niż projekt, który był budowany.

Jakby ktoś myślał, że ciepło patrzę na Sbt lub webpack - nie zdążyłem się z nimi zaprzyjaźnić na większą skalę.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 2x, ostatnio: jarekr000000
nowyworek
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:świat
  • Postów:174
0
jarekr000000 napisał(a):

Serio, to nie wiem czy bym przekonał. Nienawidzę wszystkich systemów budowania po równo:

  • ant,
  • maven,
  • gradle

każdy, po dłuższym użyciu zaczyna wyglądać na bagno.
Przy czym i w mavenie i w gradle - problem to pluginy (do niedawna nie doceniałem potegi spie...lenia pluginów gradlowych i myślałem, że to głównie mavena problem).
Anta juz prawie zapomniałem. Plusem było to, że jednak pluginy, to były taski pojedyncze i dużo napsuć nie mogły - minusem - totalna prymitywnośc tego systemu, każdy build to osobne dzieło sztuki. Czasem trudniejsze do zrozumienia niż projekt, który był bydowany.

No to jak budować wgl projekt poprawnie?


Julian
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
4
nowyworek napisał(a):

No to jak budować wgl projekt poprawnie?

I to jest bardzo dobre pytanie. Nie znam odpowiedzi na nie. Ja używam ostatnio głównie gradle. Ale serio - często nie mam pojęcia co robię i dlaczego po zamianie dwóch linijek działa...
Co gorsza, nie jestem tej wiedzy w stanie ogarnąć - kiedyś można było przeczytać książkę (np. o mavenie) i coś człowiek wiedział.
Teraz zanim przebrnę przez połowę guide - to gradle ma już dwie nowe niekompatybilne wersje, a projekty migrują sie z groovy na .kts...

Co do mavena to największy problem - to powolność i mała elastyczność (jak zaczniesz robić projekty z udziałem js/ kotlina czy czegoś tam - to zrobienie efektywnej współpracy ze środowiskiem nodejs z mavena jest chyba niemożliwe).
Do tego raz na rok potrzebujesz zrobić coś nietypowego. Wtedy się zwykle okazuje, że owszem, na to nietypowe w buildzie jest plugin do mavena. Odpalasz plugin i dostajesz NullPointerException gdzieś z kodu pluginu, nawet nie ma źródeł. Gratulacje - właśnie zawitałeś do piekła.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 2x, ostatnio: jarekr000000
nowyworek
te nullpointery z pluginow mavenowych to juz sa legendarne. I najgorsze jest to, ze niekiedy pojawiaja sie losowo.
jarekr000000
Losowo to niekoniecznie, ale w bardzo męczących momentach- nowa java, nowy maven, dorzuciłeś folder do projektu o nazwie zaczynającej się od kropki itd...
jarekr000000
Tak czy siak - raz juz miałem akcję dekompilowania na gwałt takiego zapomnianego pluginu i rekompilowania (co bywa fajne, jak taki plugin sam w sobie jest skompilowany z użyciem starożytnych bibliotek i repozytoriów spod ciemnej gwiazdy).
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
3

Ja uważam że najmniejsze zło to maven. Zwykle masz tylko dependency management i może jeden plugin to budowania i tyle. I wszystko jest przynajmniej stabilne.
Gradle to rak over9000, non stop jakieś niekompatybilne zmiany robią i musisz potem szukać np. wersji pluginów pod konkretnego gradla. I jeszcze pozwala pisać "kod" w buildfile, więc zawsze znajdzie się jakis geniusz który to zrobi...


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Zobacz pozostały 1 komentarz
Shalom
Tak też słyszałem, ale nigdy nie widziałem. Z mojego doświadczenia gradle zawsze działał wolniej i gorzej i zawsze było z nim więcej problemów.
jarekr000000
Panie, ja już wszedłem w całkiem dużo pisania tego kodu w gradle. I akurat uważam, że to wcale nie jest takie zło. Ostatnio rżnę rozwiązania z kotesta :-) https://github.com/kotest/kotest/blob/master/buildSrc/src/main/kotlin/Libs.kt . Potem to całkiem fajnie się używa: val commonMain by getting { dependencies { implementation(project(Projects.AssertionsShared)) implementation(project(Projects.Common)) implementation(project(Projects.Api)) implementation(Libs.Coroutines.coreCommon) } }
nowyworek
@jarekr000000: co to kurde jest?!
jarekr000000
gradle na wypasie - gdyby nie problem jak poniżej @superdurszlak to bym pisał jakie to super jest :-)
jarekr000000
Gradle ma jednak "agenta" i poza żarciem RAMu jednak sprawnie działa, a co więcej ma wsparcie do continuus builda. Przy pracy z kotlinjs to podstawa.
superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Kraków
  • Postów:1999
1
jarekr000000 napisał(a):

Przy czym i w mavenie i w gradle - problem to pluginy (do niedawna nie doceniałem potegi spie...lenia pluginów gradlowych i myślałem, że to głównie mavena problem).
[...] Ja używam ostatnio głównie gradle. Ale serio - często nie mam pojęcia co robię i dlaczego po zamianie dwóch linijek działa...

Ostatnio podbijaliśmy w projekcie Kotlina z 1.3 do 1.4.

Wszystko się sypie, cuda nie widy, mamy kilka tych pluginów, nagle się okazuje że Kotlin plugin się wysypuje, mimo że tak naprawdę błąd leci z kompletnie innego, w tym przypadku - z reckon, któremu nagle zaczęło brakować jakiegoś property, albo coś mu się w skrypcie przestało podobać. No normalnie nie wiadomo, co się dzieje.

Rozwiązanie? Pozamieniać kolejność pluginów w plugins do skutku.


Zobacz pozostały 1 komentarz
nowyworek
zastanawia mnie czy połączenie lazy z kotlina z tymi pluginami coś by dało
jarekr000000
@nowyworek: dałoby - jeszcze bardziej nieprzewidywalny build.
nowyworek
zawsze coś. poprzedni projekt mieliśmy taki. projekt ruletka, raz się budował raz nie, całkiem ciekawe to było :), ale tam akurat test, który testował eventy springowe był problemem
superdurszlak
jedną z bolesnych decyzji było wypróbowanie skryptów Gradle'a z Kotlinem zamiast Grooviego, połowa rzeczy jeszcze niewspierana, z jednego wątku - tu nie pamiętam, czy to było discuss.kotlinlang, czy issue na GH - wynikało, że niektóre nieprędko będą wsparte - rzeczy, które dało się nahakować w Groovym, nie za bardzo są do nahakowania w Kotlinie...
jarekr000000
No właśnie - miałem ten problem.. i znalazłem, że wszystko czego jeszcze nie umiałem jest już nahakowane w kotest.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
1

Gradle byłby niezły... gdyby taski i inne struktury buildu były niemutowalne.
Wtedy byłoby o wiele łatwiej dowiedzieć się skąd się różne problemy wzięły.

W tym kierunku idzie sbt - używany przez scalowców.
W sbt dużo struktur w buildzie jest niemutowalnych, a składnia jest taka, że wręcz uwypukla, że coś nadpisujesz zmieniasz (np. przez :=).
Problem sbt to jednak - słaba i nieaktualna często dokumentacja (chyba gorzej niż w gradle). Ostatnia książka sbt in action jest z 2015 i niestety trochę sie zmieniło.
No i wiem, że moje relatywnie pozytywne nastawienie do sbt wynika z tego, że używałem w małych prostych projektach i nie zdążyłem wdepnąć.

Tu krytyka:
https://www.lihaoyi.com/post/SowhatswrongwithSBT.html


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 2x, ostatnio: jarekr000000
MA
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 lata
  • Postów:337
3

U mnie w projekcie python + angular + react + go + javki wszystko budujemy antem.

Jestem z niego chyba najbardziej zadowolony, potem z gulpa.

  • dostarcza fajny zestaw narzędzi, z których wciąż mi się wygodniej korzysta niż z basha
  • można odpalać skrypty python / bash z niego, więc co bardziej skomplikowane operacje można zakodzić w czymś normalnym, lub napisać joby antowe w javie
  • wymaga jednak po jakimś etapie skomplikowania narysowania mini wykresu co w jakiej kolejności jest odpalane
  • wymaga potraktowania skryptów budujących jak pisanie normalnego kodu - review, pisanie bibliotek, głównej aplikacji budującej itp
  • tykanie czegokolwiek spod szyldu maven / gradle to bleh,
  • webpack i pochodne to też taka czarna magia, za dużo abstrakcji i przy dużej ilości narzędzi / języków ciężko się połapać w automagicznych narzędziach

Jak jest dużo rzeczy w projekcie nie da się ukryć, ant i ant contrib to proste narzędzia, prawie, że nakładki na basha - ale łatwo w to wejść i jest tego bardzo duża zaleta

edytowany 1x, ostatnio: MuadibAtrides
KA
"python + angular + react + go + javki" - po co komu tyle tego? to wszystko brzmi jak rzeźnia
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
2
jarekr000000 napisał(a):

Serio, to nie wiem czy bym przekonał. Nienawidzę wszystkich systemów budowania po równo:

  • ant,
  • maven,
  • gradle

Ok, ale jak się nie robi magii w projekcie (pół systemu napisane w Javie, pół w Kotlinie, pół w Scali, za nadmiar połówek przepraszam) tylko wszystko jest w jednym prawilnym języku to maven wydaje się najlepszy. Jak chce się robić rzeczy nietypowe to chyba gradle lepszy bo tam łatwiej pisać wtyczki. Ale tylko raz miałem potrzebę pisania wtyczek do gradla więc ekspertem nie jestem


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
jarekr000000
Mniej wiecej sie zgadzam. Nie uzywam mavena, bo zakładam ze szansa na robienie projektu w czystej javie u mnie to 0.
katelx
  • Rejestracja:prawie 10 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Hong Kong
2

maven, latwo wdrozyc, a potem zdaje sie duzo wolniej degenerowac od anta/gradle

KA
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 2 lata
  • Postów:594
2

Ostatni jakis projekt to kotlin + gradle kts (też kotlin) trochę wolniej ale spoko, dopoki nikt nie wpada na pomysly za mocnego skryptowania to jest ok.
Maven jest ok. Ogólnie żadne build toole nie są idealne, każdy skopany na swój sposob ale jakos żyć trzeba.
Ale u mnie gradle jakos dużo nie robi, bo i po co? buduje jara, puszcza testy, ewentualnie jakis coverage reports etc. Im mniej robi tym lepiej.

W fimie mamy projekty kotlinowe, golangowe, pythonowe, JSowe - w każdym używany dedykowany tool pasujący do tego środowiska. (gradle, go itself + ewentualnie make, pipfile, yarn )
Uzywanie anta, gradle, mavena do budowania tego wszystkiego brzmi jak katorga i wprowadzanie bezsensownej zależności.

edytowany 4x, ostatnio: karsa
Zobacz pozostałe 3 komentarze
jarekr000000
Tu jeszcze małe wyznanie grzechu - właśnie robie jeden hobby projekt z kotlinjs, gdzie webpack jest odpalany przez gradle. Na razie nie działa to źle, ale IMO w końcu się wywali. Musi - bo chcę ten pomysł ubić w projekcie firmowym :-)
viader
niestety nie mam pojęcia jaka moda jest wśród narzędzi budujących js, poza tym, że wszędzie pod spodem ponoć jest npm :D
KA
@viader: nawiązywałem do jakiejś poprzedniej wypowiedzi gdzie ktoś mówił, że buduje wszystko antem
viader
Oki, zgadzam się w tej kwestii dedykowane do technologii są lepsze :)
viader
  • Rejestracja:około 12 lat
  • Ostatnio:około miesiąc
  • Postów:167
0

Ja najbardziej lubię Gradle, aczkolwiek jakoś 2 lata temu zraziłem się do pisania skryptów w kts, wolę w Groovym.
Mam wrażenie, że odarto Kotlina z wszystkiego użytecznego gdy zrobiono z niego kts do Gradle i się nie nadaje do pisania tam.

@superdurszlak wspominał o migracji na Kotlina 1.4, z ciekawości miałeś kts czy w Groovym skrypty budujące? Bo ostatnio migrowałem i bez żadnego problemu.

edytowany 1x, ostatnio: viader
Zobacz pozostałe 4 komentarze
viader
Kiedy tylko wyszedł kts, to szukałem sposobu by ładnie propagować wersję bibliotek między kilkoma modułami Wtedy jedynie coś takiego było, był to też jeden z powodów dla których się zraziłem, bo prosta rzecz urosła do miana pluginu: https://antonioleiva.com/kotlin-dsl-gradle/
Michał Sikora
Michał Sikora
Ok, czaję. Dla mnie to jest dużo wygodniejsze niż ext, bo potem mam podpowiadanie składni (aczkolwiek to działa zarówno w kts jak i w Groovy). Niestety buildSrc stosowany w ten sposób ma jedną sporą wadę, bo wszelkie zmiany wymagają czystego przebudowania wszystkich modułów. Jeszcze mi to nie doskwierało jakoś znacząco, ale jest to realny problem, który można częściowo rozwiązać poprzez composite build i własny plugin właśnie.
Michał Sikora
Michał Sikora
Ostatnio coraz bardziej skłaniam się ku Groovy jednak, bo kts w Gradle samo w sobie jest trochę hakerskie.
viader
Już pamiętam następna rzecz co mnie zrazila. Miałem plik kotlin_shared.gradle gdzie miałem podstawowa konfigurację modułów kotlinowych, wersja javy, sourceSety, dependencies. No i na kts nie umiałem tego zrobić :( by działało na wiele modułów.
superdurszlak
miałem w kts, z początku nawet działało ale jak zaczęło przybywać rzeczy, to już co chwila jest z czymś problem :D jeszcze nie została przekroczona masa krytyczna bolączek, ale czuję że jeszcze kilka WTFów i trzeba będzie wrócić do Grooviego
elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:17 dni
1

Osobiście, bym bronił się przed wszystkimi z nich i używał GNU Make tak długo jak się da, jednak nie zawsze jest to możliwe (np. Android zmusił mnie do użycia Graddle, choćby do zassania zależności, tu jakoś z Mavenem mi nie wychodziło). Ale zostawię tę opcję dla siebie i wrócę do popularnych opcji.

Jak wspomniano wyżej, Ant to zupelnie inna liga co Maven, a temu drugiemu ewentualnie może się równać tylko Graddle. Anta i Mavena nie lubię za XML, Gradle przynajmniej ma składnie, którą da się czytać i jest całkiem spoko w edycji. Też komunikaty ma bardziej zdatne do czytania. Ze wszystkimi sporo się namęczyłem, przywykłem do mavena, ale na przykład do współpracy z Android SDK nie chciał się namówić . Nie lubię żadnego z nich. :p


edytowany 2x, ostatnio: elwis
Zobacz pozostałe 6 komentarzy
elwis
@nowyworek: Nie do końca jak skrypt, bo make załatwia za ciebie wybieranie elementów, które wymagają przebudowania. Nie wiem czy javac to sam w sobie ogarnia? @jarekr000000: Dzięki za tipa. Oby mi się nie przydał xD
jarekr000000
@elwis: dokładnie - javac ogarnia to dla plików .javy i .class. (co więcej to nie jest idealnie 1-1 przełożenie !!) - jeden plik .java może odpowiadać za kilka plików .class.
elwis
To akurat wiem, Klasy prywatne mają odrębne pliki i rzeczywiście, chyba Make może tego nie ogarnąć.
jarekr000000
Tak naprawde to make ogarnie. Bo wystarczy i tak główny .class sprawdzac. Ale nadal bedzie to po prostu niepotrzebne i niewydajne.
elwis
Ok, dzięki, to już wiem wszystko :)
Krzysztof Wilk
  • Rejestracja:około 8 lat
  • Ostatnio:około 6 godzin
  • Postów:7
1

Można użyć Mavena do zarządzania zależnościami, a bardziej skomplikowaną logikę przenieść do pipeline'a CI np. Jenkins lub GitLab CI.

Przynajmniej w nowych projektach działa dobrze

edytowany 1x, ostatnio: Krzysztof Wilk
superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Kraków
  • Postów:1999
0
Krzysztof Wilk napisał(a):

Można użyć Mavena do zarządzania zależnościami, a bardziej skomplikowaną logikę przenieść do pipeline'a CI np. Jenkins lub GitLab CI.

Przynajmniej w nowych projektach działa dobrze

Dopóki masz pipeline as code i wszystko jest i tak w VCS to można, ale jak skomplikowana logika będzie dyndała w lokalnej czasoprzestrzeni to tylko patrzeć, jak ktoś gmerając w tym CI przypadkiem rozwali budowanie aplikacji, w dodatku nie swojej :P


Krzysztof Wilk
To może czas na refaktoring ;). Wiem, że nie zawsze łatwo o czas.
superdurszlak
Refaktoring jobów, które są wyklikane w Jenkinsie? Średnio :p chyba jednak wolę pipeline as code
Krzysztof Wilk
A jak łatwo śledzić zmiany w wyklikanych jobach (w ich konfiguracji)?
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
0

Ja lubię gradle

krancki
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:74.7261832, -41.7409518
  • Postów:151
0

Ja lubię mavena

nie100sowny
Maven jest uroczy
ME
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:638
0

A nie macie wrażenia, że to wszystko zrobiło się dość opasłe? Proponuję stworzyć czysty projekt w Android Studio, zbudować go a potem sprawdzić ile plików na dysku powstało.

Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10056
1
Meini napisał(a):

a potem sprawdzić ile plików na dysku powstało.

Noi? Rozumiem że 100x 50kB jest bardziej opasłe niż jeden 1x 5Mb.

DA
  • Rejestracja:około 7 lat
  • Ostatnio:dzień
  • Lokalizacja:Warszawa
  • Postów:20
0

Ciekawym build toolem, ale niepopularnym w Polsce jest też bazel: https://www.bazel.build/

ME
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:638
1

Próbowałem z tym walczyć żeby zbudować aplikację Androida, ale raczej dość toporne

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)