Czy powinny być publiczne wersje oprogramowania 0.x.x?

Czy powinny być publiczne wersje oprogramowania 0.x.x?
(* możesz oddać maksymalnie 3 głosy)
Zostawić na zawsze
92%
92% [34]
Powinny być wersje tylko od 1.0.0
8%
8% [3]
Wersje 0.x.x powinny być dostępne tylko przez kilka lat
0%
0% [0]
Inne
0%
0% [0]
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 5 godzin
3
somekind napisał(a):
jarekr000000 napisał(a):

Gdzie, po prostu - jeśli raz wypuściłeś jakąś wersję to możesz założyć, że ktoś z tej wersji korzysta - i nie masz na to wpływu. I jeśli taką wersję usuniesz to robisz problem nie tylko użytkownikom, ale i potencjalnie sobie (!!!). Choćby dlatego, że nie da się potem łatwo sprawdzić, że problem został naprawiony w nowej wersji (skoro nie da się odpalić starej dla porównania).

To nie jest żaden problem, usunięcie paczki nie oznacza usunięcia historii źródeł.
Tylko zauważ, że ja piszę o usuwaniu poprzednich wersji major, więc to nie jest "naprawienie problemu", tylko niekompatybilne zmiany w sposobie działania. (Np. zmiana sposobu uwierzytelniania w jakiejś usłudze.) Tu nie ma czego porównywać, bo stara wersja nie będzie już działać, a nowa może mieć nowe problemy.

cały czas piszesz o tym, że usuwasz stare wersje, bo stare wersje nie działają. pewnie jedyne co wypuszczasz to jakieś klienty do restowego api, które regularnie wyrzucasz na śmietnik. w takim razie to bardzo specyficzny rodzaj bibliotek. cała reszta ludzi tutaj ma na myśli biblioteki zupełnie inne niż klienty do api.

oryginalnie ten wątek jest o tym czy usuwać prawdopodobnie stare wersje biblioteki https://github.com/T-Regx/T-Regx (chociaż to nie jest specjalnie ważne). dlaczego stara wersja biblioteki do regexów miałaby nagle przestać działać? generalnie jakieś 99% zależności, które ściągam z publicznych repozytoriów artefaktów to nie są klienty do (restowego) api, tylko rzeczy które działają cały czas. jak skompiluję kod w c# sprzed kilkunastu lat, który obrabia regexy to to nadal będzie się budować i działać. dlaczego ktoś miałby to psuć usuwając zależności z repozytoriów?


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 5 godzin
  • Postów:3550
2
Wibowit napisał(a):

generalnie jakieś 99% zależności, które ściągam z publicznych repozytoriów artefaktów to nie są klienty do (restowego) api, tylko rzeczy które działają cały czas. jak skompiluję kod w c# sprzed kilkunastu lat, który obrabia regexy to to nadal będzie się budować i działać. dlaczego ktoś miałby to psuć usuwając zależności z repozytoriów?

I tutaj opisałeś cały problem. Tak naprawdę na pytanie "czy powinny być publiczne wersje oprogramowania 0.x.x?" odpowiedź brzmi "to zależy". Jeśli chodzi o rozmaite libki typu biblioteki czy frameworki to:

  1. Jeśli biblioteka nie będzie działała nigdy w nowszej wersji to nie ma sensu jej trzymać. Jestem w stanie zrozumieć dostawcę jakiegoś API RESTowego, który dorzuca gratisowo np. JARa, dzięki któremu nie trzeba samemu wołać serwera, a odpowiedzi przychodzą elegancko upakowane w obiekty. No i pytanie - czy jeśli powstanie nowa wersja API, a stara wersja zostanie wyłączona to czy trzeba trzymać taką libkę? IMO nie - oramy i do kosza.
  2. Druga kwestia to właśnie biblioteki, które są z braku lepszego słowa "samodzielne", tzn. nie mają zależności zewnętrznych. Tutaj je bym zostawiał, bo po prostu nie widzę powodu, by je usuwać.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 5 godzin
7
wartek01 napisał(a):

Tak naprawdę na pytanie "czy powinny być publiczne wersje oprogramowania 0.x.x?" odpowiedź brzmi "to zależy".

oryginalne pytanie było "czy usuwać wersje starsze niż 1.x.x" czy jakoś tak, ale @Riddle zrobił nam wszystkim kuku i zmienił pytanie w ankiecie już po oddaniu mnóstwa głosów

  1. Jeśli biblioteka nie będzie działała nigdy w nowszej wersji to nie ma sensu jej trzymać. Jestem w stanie zrozumieć dostawcę jakiegoś API RESTowego, który dorzuca gratisowo np. JARa, dzięki któremu nie trzeba samemu wołać serwera, a odpowiedzi przychodzą elegancko upakowane w obiekty. No i pytanie - czy jeśli powstanie nowa wersja API, a stara wersja zostanie wyłączona to czy trzeba trzymać taką libkę? IMO nie - oramy i do kosza.

no tutaj jest jakiś tam sens usuwania, ale i tak samo usuwanie to dodatkowa (i raczej zbędna) robota. należy tutaj podkreślić, że tego typu biblioteki to nisza w niszy (jeśli chodzi o te publicznie dostępne), więc stawianie ogólnego (tzn. dotyczącego przynajmniej z pozoru wszystkich rodzajów bibliotek) twierdzenia "stare wersje bibliotek należy usuwać z repozytorium" na podstawie tak niszowego zastosowania (biorąc pod uwagę % tego typu bibliotek w całym ogóle) jest rażącym błędem.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit
SP
SP
  • Rejestracja:ponad 2 lata
  • Ostatnio:ponad 2 lata
  • Postów:33
3

Ad klienty do api: imo wyrzucanie takiego klienta nawet do już wyłączonego api też może być niefajne, istnieje sporo systemów spaghetti, w których wiszą od dawna nieużywane zależności, ale nikt nie odważa się tego dotknąć, więc usunięcie nawet niedziałającego pakietu z repo może popsuć buildy.

somekind
A system i tak nie działa, bo API nie ma.
SP
spaghetticoder
właśnie że działa, bo kod od dawna nie wywoływany
W0
No to przy buildzie będzie wyczyszczony. Powiedziałbym, że to dodatkowy plus.
Wibowit
będzie wyczyszczony - dodatkowa robota, pewnie zbędna
W0
Możemy sobie się zastanawiać, czy ładowanie zbędnych bibliotek do paczki jest OK, czy nie OK. Dla mnie to jest to samo co nieużywany kod - wypada usunąć, a argument "a po co to komu?" uznaję raczej za dużo słabszy od "nie trzeba się zastanawiać po cholerę to tutaj jest".
Wibowit
wiadomo, że po usunięciu śmieciowego kodu cała apka wygląda lepiej, ale samo usuwanie to dodatkowa robota, często zbędna, a jeśli apka się nie buduje to jej modernizacja też jest utrudniona. jeśli ktoś usunie z repozytorium 5 zależności ze starej apki to nie będzie się dało ich nawet zupgrade'ować (w apce) jedna po drugiej. trzeba będzie (generalnie niepotrzebnie) orać całą apkę tylko po to, by dało się zrobić jakąś małą potrzebną zmianę. zawsze można to obejść, tzn. wziąć libki z paczki i przekopiować do projektu jako artefakty lokalne. tylko po co kogoś do tego zmuszać?
Wibowit
wziąć libki z paczki - w sensie tej starej, która cały czas działa
daniel1302
  • Rejestracja:około 16 lat
  • Ostatnio:8 dni
5
somekind napisał(a):

Nie. Ja po prostu uważam, że trzymanie historii śmieci nie ma sensu.
To jak z kodem - jak przestał spełniać swoją funkcję, to go usuwam.

To nie działa przy bibliotekach dostępnych publicznie. Jeśli piszesz bibliotekę i dodajesz ją do jakiegoś registry package managera i piszesz, że biblioteka jest dostępna do użycia a nagle ją usuwasz, to prawdopodobnie rozwalisz kilka-kilkaset projektów.

Być może, tego nie oceniam, bo nie znam tych paczek.
Po prostu dziwne dla mnie jest to tutejsze przywiązanie do historii. Dziwne i zwyczajnie niebezpieczne.

Tj wyżej, jeśli ustawiasz historię biblioteki i udostępniasz jej pobieranie to dlaczego miałbyś ją usuwać? Jakie są powody? :)

Jak ktoś mi usuwa paczki to raczej omijam autora. Mało stabilny człowiek == mało stabilny projekt :) Ewentualnie hostuję sobie historię w registry sam :)

Co innego jeśli faktycznie piszesz, że to wersje testowe i zostaną usunięte.

@Riddle: Ani laravel ani phpunit nie usuneli paczek, po prostu zaczeli je dodawać do packagista później, ale to nie sprawia, że coś zostało usunięte bo tagi wciąż są dostępne więc jeśli ktoś wcześniej budował sobie paczkę ze źródeł, albo zaciąga paczki z gita zamiast packagista to wciąż ma taką opcję:

https://github.com/laravel/laravel/tags?after=v3.2.4


Head of the pprof.
edytowany 2x, ostatnio: daniel1302
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Wrocław
0
Wibowit napisał(a):

cały czas piszesz o tym, że usuwasz stare wersje, bo stare wersje nie działają. pewnie jedyne co wypuszczasz to jakieś klienty do restowego api, które regularnie wyrzucasz na śmietnik. w takim razie to bardzo specyficzny rodzaj bibliotek. cała reszta ludzi tutaj ma na myśli biblioteki zupełnie inne niż klienty do api.

Tak, nie wiesz gdzie i przy czym pracuję, a wiesz jakie paczki wypuszczam. xD
Weź rzuć tego Swinga i Javę 1.2, bo teraz paczki do API wypuszczają się same w procesie CI.

Wibowit napisał(a):

stawianie ogólnego (tzn. dotyczącego przynajmniej z pozoru wszystkich rodzajów bibliotek) twierdzenia "stare wersje bibliotek należy usuwać z repozytorium"

A ktoś postawił tutaj taką tezę?

daniel1302 napisał(a):

To nie działa przy bibliotekach dostępnych publicznie. Jeśli piszesz bibliotekę i dodajesz ją do jakiegoś registry package managera i piszesz, że biblioteka jest dostępna do użycia a nagle ją usuwasz, to prawdopodobnie rozwalisz kilka-kilkaset projektów.

Ale wiesz, ja jestem świadom konsekwencji. I te konsekwencje są de facto celem takiego działania.
Nie chodzi przecież o usuwanie każdej poprzedniej wersji, tylko tych z poprzedniego majora, jeśli jest ku temu powód. Powodem może być też to, że sponsor tego chce.

edytowany 2x, ostatnio: somekind
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 5 godzin
1
somekind napisał(a):
Wibowit napisał(a):

stawianie ogólnego (tzn. dotyczącego przynajmniej z pozoru wszystkich rodzajów bibliotek) twierdzenia "stare wersje bibliotek należy usuwać z repozytorium"

A ktoś postawił tutaj taką tezę?

ty. no chyba, że chciałeś się pochwalić, że usuwasz, a nie że inni mają usuwać. nie wiadomo o co ci chodzi. masz jakieś tam koszty i gwarancje, ale nikt inny nie stosuje twojego podejścia do starych wersji.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
8

Z ciekawostek - właśnie wczoraj przypomniał mi się ten wątek.
Akurat odpalałem jakiś zakurzony projekt, który leżał sobie kilka lat nie ruszany,
nie ma on teraz sensu i nie ma nawet po co odpalać... ale chciałem zobaczyć jak coś jest zrobione i przejechać się po testach.
Ale bym sie wkurzył jakby się okazało, że nie mogę zbudować, bo któraś z wielu bibliotek nie jest już dostępna w starej wersji i nie moge sobie przedebugować czegoś tylko dlatego, że ktoś oszczędza bajty na maven central.

Z drugiej strony:
zajęło mi 20 minut podbicie bibliotek do nowych wersji i w sumie tylko jeden mało istotny kawałek kodu musiałem wywalić, bo trzeba by było przerabiać (przez zmiany w api). Ale to akurat jest specyfika ekosystemu Javy - . W JS, Haskellu, Scali mała zmiana jakiejś wersji zwykle oznacza bolesne migracje.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 3x, ostatnio: jarekr000000
hauleth
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:17 dni
7
somekind napisał(a):
jarekr000000 napisał(a):

OP pisał, że korzysta z semantic versioning. Wersje 0.x.y w semantic versioning to nie jest żaden prerelease. To zwykły release - z tym tylko, że ostrzega, że API może się zmienić w przyszłych wersjach, nic nie mówi o bezpieczeństwie/stabilności wersji biblioteki.
Prelease w semver oznacza się dodając zarostek -alpha (np. 1.1.1-alpha) lub inny podobny.

No OP tak pisał, ale też zostało to obalone, więc w ogóle nie rozważam tego w ten sposób. Wersje < 1.0.0 uważam za bezużyteczny brudnopis, jeśli tak nie jest, to w ogóle nie widzę sensu w ankiecie z tego wątku.

What? Wersje <1.0.0 oznaczają tylko, że API może się jeszcze zmienić, a nie, że to jest "bezużyteczny brudnopis". Jeśli to jest "bezużyteczny brudnopis" to po prostu tego nie publikujesz wcale.


somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Wrocław
0
Wibowit napisał(a):

ty. no chyba, że chciałeś się pochwalić, że usuwasz, a nie że inni mają usuwać. nie wiadomo o co ci chodzi. masz jakieś tam koszty i gwarancje, ale nikt inny nie stosuje twojego podejścia do starych wersji.

To jest totalne przeinaczanie moich słów. Nigdzie nie napisałem, że należy. Napisałem, że można - jeśli są ku temu powody, jeśli się o tym poinformuje, i da czas na użytkownikom na migrację. Nie kazałem nikomu tak postępować, ani nawet niespecjalnie przekonywałem do tego - po prostu wyraziłem swoją opinię w temacie.

Tradycyjnie polecam czytanie ze zrozumieniem, i odpisywanie na to, co zostało napisane, a nie to, co się sobie dopowiedziało do czyichś wypowiedzi.

edytowany 1x, ostatnio: somekind
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:Poznań
  • Postów:8769
6

@somekind: odnośnie nie napisałem, że należy - kwestia interpretacji, ale dla mnie poniższe fragmenty oznaczają jednoznacznie, że zalecasz/popierasz kasowanie starszych wersji. Podejrzewam, że 95% ludzi czytających Twoje wypowiedzi również oceni (a sądząc po tym, co piszą w wątku - tak właśnie to odbierają), że uważasz, iż stare wersje powinno się wywalić, gdy nie mają supportu i są nieaktualne. I żeby była jasność - nie chce się teraz kłócić o to, czy to dobre podejście czy nie, ale pokazać, że trochę się gubisz w zeznaniach: najpierw wiele razy wypowiadasz się w sposób popierający wywalanie, a potem piszesz że tak nie mówiłeś. OK - nie napisałeś wprost, że trzeba stare wersje wywalać, ale całokształt Twoich wypowiedzi jest ewidentnie za takim rozwiązaniem.

  • Ja bym wypieprzył, co najwyżej dał ludziom miesiąc - dwa na migrację.
  • stare wersje mogą być uboższe funkcjonalnie i zawierać błędy, nie widzę sensu w trzymaniu i supportowaniu ich.
  • A po co je trzymać, skoro są niewspierane?
  • Ja po prostu uważam, że trzymanie historii śmieci nie ma sensu.
  • najpierw robi się deprecated, a po jakimś czasie usuwa.

edytowany 1x, ostatnio: cerrato
Zobacz pozostałe 6 komentarzy
Wibowit
podobnie można rozważać interpretację słowa "można", np. "można tworzyć god objecty". czy tutaj "można" oznacza, że da się, czy może to, że jesteś ok z takim podejściem do architektury kodu? w kontekście pytania "czy usuwać stare wersje oprogramowania z repozytorium" odpowiedź "można" sugeruje, że akceptujesz takie podejście w ogólności, a nie że np. "można" oznacza "teoretycznie da się". zamiast powoływać się na matematyczne kwantyfikatory, sprawdź jak normalni ludzie się komunikują na co dzień.
cerrato
@Wibowit: co do można to pełna zgoda. W końcu można zabić teściową nie oznacza, że jest to zachowanie dopuszczalne i pożądane (aczkolwiek - w wielu przypadkach zrozumiałe ;) ), co raczej że jest to technicznie wykonalne.
Wibowit
@somekind: twierdzisz, że stare wersje są kosztem, bo trzeba je utrzymywać, a tymczasem tak jest tylko w twoim przypadku i nie kładziesz w ogóle nacisku na ten aspekt (że to mocno indywidualne podejście do wsparcia). czy to tak trudno napisać "u nas to jest kosztem" zamiast "to jest kosztem"?
somekind
@cerrato: masz jak najbardziej rację, że nastąpiły błędy w komunikacji, i rozumiem, że mogłem wyrazić się nieprecyzyjnie i sprawić, że ktoś mógł moje słowa zinterpretować inaczej niż zakładałem. Tylko jakoś nikt przed Tobą nie zwrócił na to uwagi, nie wyraził chęci dogadania się. Ja jak nie jestem pewien, czy kogoś dobrze zrozumiałem, ale chcę się czegoś od niego dowiedzieć, to zwyczajnie dopytuję, zamiast zakładać, że ten ktoś powiedział to, co wydaje mi się, że powiedział.
somekind
@Wibowit: nie jest trudne, mogłem to uściślić. A czy tak trudno zadać pytanie, czy uważam, że usuwać wszystkie stare wersje w każdym przypadku? ;) W ferworze tej dyskusji jakoś nie było okazji na wyjaśnienia, bo ja najpierw napisałem, że na miejscu autora bym wywalił stare wersje, a potem zaczęły się dziwne pytania o to, czy kasuję historię z gita, albo zarzuty używania erystyki (mimo że ja nawet nie próbowałem tu nikogo do niczego przekonywać, po prostu napisałem, co bym zrobił, i co niekiedy robię). :P
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)