Jak skutecznie uczyć się nowych technologii, na przykład GO?

Jak skutecznie uczyć się nowych technologii, na przykład GO?

Wątek przeniesiony 2023-10-12 21:21 z Go przez Riddle.

BU
  • Rejestracja:ponad rok
  • Ostatnio:ponad rok
  • Postów:2
0

Cześć!

Potrzebuję porady. Ostatnie pół roku spędziłem na pracy, której niestety nie mogę nazwać pełnoprawnym programowaniem. Obecnie zajmuję stanowisko front-end developera, jednak brak wyzwań związanych z logiką oraz nadmiar pracy z CSS i animacjami znacznie mnie zniechęcają. Po 6 miesiącach mam już dość i planuję podjąć się czegoś bardziej wymagającego. W tym kontekście zaczynam naukę języka Go.

Wcześniejsze podejście do nauki było dość chaotyczne, często zagłębiałem się zbyt szybko w nowe tematy, pomijając solidne przepracowanie podstaw. Teraz chciałbym uniknąć tego błędu i zapytać bardziej doświadczonych o rady dotyczące skutecznej nauki. Jakie projekty warto podjąć, aby lepiej zrozumieć Go? Nad czym warto dłużej się zastanowić i poświęcić więcej czasu? Czego uczyć się naokoło tego języka, czy algorytmika, wzorce projektowe, bazy danych itp. Jeśli jest ktoś w stanie mi to wszystko wypunktować i powiedzieć czego i w jakiej kolejności się uczyć to będę bardzo wdzięczny.

Z góry dzięki za wszelkie wskazówki!

edytowany 2x, ostatnio: Riddle
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Laska, z Polski
  • Postów:10053
1
Bunawerke napisał(a):

Potrzebuję porady. Ostatnie pół roku spędziłem na pracy, której niestety nie mogę nazwać pełnoprawnym programowaniem. Obecnie zajmuję stanowisko front-end developera, jednak brak wyzwań związanych z logiką oraz nadmiar pracy z CSS i animacjami znacznie mnie zniechęcają. Po 6 miesiącach mam już dość i planuję podjąć się czegoś bardziej wymagającego. W tym kontekście zaczynam naukę języka Go.

Nie nauczysz się nowego języka w pracy. Musisz poświęcić na niego czas po pracy, lub wziąć wolne. Takie jest przynajmniej moje zdanie.

Bunawerke napisał(a):

Wcześniejsze podejście do nauki było dość chaotyczne, często zagłębiałem się zbyt szybko w nowe tematy, pomijając solidne przepracowanie podstaw.

To nie jest specjalny problem. Możesz tak robić, nie widzę w tym problemu - podstawy możesz złapać później - jeśli tylko się rozwijasz i idziesz na przód.

Bunawerke napisał(a):

Teraz chciałbym uniknąć tego błędu i zapytać bardziej doświadczonych o rady dotyczące skutecznej nauki. Jakie projekty warto podjąć, aby lepiej zrozumieć Go? Nad czym warto dłużej się zastanowić i poświęcić więcej czasu? Czego uczyć się naokoło tego języka, czy algorytmika, wzorce projekttowe, bazy danych itp itd Jeśli jest ktoś w stanie mi to wszystko wypunktować i powiedzieć czego i w jakiej kolejności się uczyć to będę bardzo wdzięczny.

Myślę że to nie ma specjalnego znaczenia. Po prostu znajdź projekt który Cię zajawi, i zacznij go tworzyć.

edytowany 1x, ostatnio: Riddle
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:21 minut
  • Postów:8398
1

Kiedyś się zacząłem uczyć Go, ale w końcu dałem sobie spokój, Rust ciekawszy. Ale jakbym miał wrócić do Go, to myślę, że takim moim pet projectem mogłoby być np. napisanie parsera. Bo to się fajnie pisze, jak już się wie, jak pisać.

Chociaż takim głównym zastosowaniem Go to raczej backend webowy, dużo tooli devopsowych też jest w tym pisanych (np. Kubernetes)


jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:40 minut
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
4

Języki takie jak kotlin czy rust mają zestawy ćwiczeń - mi się dobrze z tego uczyło
np. Rust https://github.com/rust-lang/rustlings/

Co do golanga to nie mam pojęcia. Piszę czasem w golangu, ale się go nie uczyłem - pełna nieprofeska :-(
Niestety, ten jezyk ma tyle wspólnego z nowymi technologiami co nowo zrobiony trebusz.

Riddle napisał(a):

Nie nauczysz się nowego języka w pracy. Musisz poświęcić na niego czas po pracy, lub wziąć wolne. Takie jest przynajmniej moje zdanie.

Ciekawe, bo kiedyś wpadłem, że jest dokładnie odwrotnie:
Język naprawdę poznasz i opanujesz dopiero w pracy.

Jak się uczy w wolnym czasie, po godzinach to często człowiek uczy się czego chce (w danym języku), a nie tego co jest potrzebne.

I nauczyłem się kilku języków od zera w czasie pracy. Fakt, że raczej małych i nie ogólnego przeznaczenia (np. dhall, solidity (o ile solidity można się w ogóle nauczyć).


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 4x, ostatnio: jarekr000000
BU
  • Rejestracja:ponad rok
  • Ostatnio:ponad rok
  • Postów:2
0

Ten jezyk ma tyle wspólnego z nowymi technologiami co nowo zrobiony trebusz.

Rozbawiło mnie te porównanie :D ale powiedz mi proszę skąd takie przekonanie?

marian pazdzioch
  • Rejestracja:ponad 6 lat
  • Ostatnio:dzień
  • Postów:713
1

Po 6 miesiącach mam już dość i planuję podjąć się czegoś bardziej wymagającego.

Wait what? To co robisz jest bardzo wymagające skoro się poddałeś i szukasz czegoś innego.

Skąd pomysł że z czymś jeszcze bardziej wymagającym nie poddasz się szybciej?

edytowany 1x, ostatnio: marian pazdzioch
SL
  • Rejestracja:około 7 lat
  • Ostatnio:16 minut
  • Postów:864
1
Bunawerke napisał(a):

Ten jezyk ma tyle wspólnego z nowymi technologiami co nowo zrobiony trebusz.

Rozbawiło mnie te porównanie :D ale powiedz mi proszę skąd takie przekonanie?

Zgaduję, że przez dużą konserwatywność odnośnie ficzerów w stosunku do tego co oczekuje @jarekr000000 od języka tj. nulle, słabe wsparcie dla programowania w stylu FP, słabe generyki czy biedny system typów (wspomniane nule, brak sum types).

Z drugiej strony go zapewnia dużo rzeczy, które w innych językach są "stare" i z poprzedniej epoki tj. prosty i mocno zintegrowany tooling, brak frameworków (wynika poniekąd z prostoty języka a trochę też z klutury), dobre zarządzanie zależnościami, przyjemny runtime będący jednocześnie całkiem wydajny i mało upierdliwy (małe zużycie pamięci, szybkie wstawanie, low latency gc), czy wypluwanie binarek bez zależności systemowych.

Wszystko zależy od tego czego oczekujesz od języka i jak cenisz poszczególne aspekty rozwoju oprogramowania.

LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:21 minut
  • Postów:8398
0
marian pazdzioch napisał(a):

Skąd Poznań myśl że z czymś jeszcze bardziej wymagającym nie poddasz się szybciej?

Też tak myślę. W ogóle najpierw zrozumiałem pierwszy post jako, że ktoś szuka czegoś mniej wymagającego. To by miało więcej sensu. Ktoś zmęczony CSSem chce coś łatwiejszego.

Bunawerke napisał(a):

Obecnie zajmuję stanowisko front-end developera, jednak brak wyzwań związanych z logiką oraz nadmiar pracy z CSS i animacjami znacznie mnie zniechęcają.

CSS jest akurat bardzo wymagający. Zastanów się, czego chcesz tak naprawdę, bo wpadasz w syndrom trawy zielonej po drugiej stronie, a twoje motywacje mogą się mijać ze stanem faktycznym (tj. zastanów się, czy faktycznie szukasz wyzwań, czy właśnie odwrotnie - jesteś zmęczony wyzwaniami (skoro cię zniechęca nadmiar pracy w CSS) i szukasz czegoś łatwego (a Go jest dość łatwym językiem, z tego co się zdążyłem orientować. A przynajmniej jest niski próg wejścia w niego w porównaniu do nauki np. Rusta, który właśnie przez swoją trudność mnie zachęcił. No ale w Rust jest mało ofert pracy).


edytowany 1x, ostatnio: LukeJL
ĄO
  • Rejestracja:około 12 lat
  • Ostatnio:około 3 godziny
  • Postów:236
0

Jeśli chodzi o pytanie z tematu:

Jak skutecznie uczyć się nowych technologii, na przykład GO?

Każdy ma swoje preferencje, więc definitywnej odpowiedzi nie usłyszysz. Jeśli o mnie chodzi, to lubię sobie zacząć od zupełnych postaw. Jakiś prosty, krótki kurs na Udemy i potem już robić konkretne rzeczy. Jeśli uczę się w ramach pracy, to w zależności od tego co jest potrzebne fajnie jest zacząć robić jakieś proste zadania. Jeśli poza pracą, to opensource, ale osobiście wydaje mi się, że zawsze cieżko było mi się wgryźć w jakiś projekt opensource tak, żeby wiedzieć co się dzieje.

Jak przychodzili ludzie do mnie do zespołu, to wysyłałem im ten filmik: https://www.youtube.com/watch?v=C8LgvuEBraI&ab_channel=JakeWright (albo jakiś inny krótki na temat podstaw)
a potem już dostawali jakieś proste zadania. Trzeba jednak wziąć pod uwagę, że były to osoby z kilkuletnim doświadczeniem w innych językach.

Tobie poleciłbym jednak zrobienie jakiegoś krótkiego kursu na temat podstaw, a później spróbować coś swojego jeśli masz pomysł albo wgryźć się w opensource, chociaż wgryzanie się w opensource dla początkujących wydaje mi się być dość trudne.

Jeśli chodzi o punkt po punkcie wymienienie czego się uczyć, to możesz zerknąć tutaj: https://roadmap.sh/golang
Ta roadmapa jest dość rozbudowana, więc jeśli dojdziesz do połowy, to wydaje się, że to już sporo. Znowu zależy w co celujesz.

Oczywiście znowu każdy ma trochę inne podejście i inny pomysł, więc nie zrażaj się za szybko jeśli stwierdzisz, że to nie dla Ciebie.

edytowany 2x, ostatnio: Ąowski
YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:9 minut
  • Postów:2367
3

Jeśli chodzi o strukturę do nauki technologii:

  1. Instalacja środowiska :-)
  2. Zorientuj się, czy istnieje jakaś road mapa nauki dla technologii, np. https://roadmap.sh/golang, czy są roadmapy fazowane per poziom (beginner, intermediate, ...)
  3. Wprowadzenie - książki (pewnie z milion pozycji, ale możęsz się ograniczyć do 2-3 klasyków dla danej technologii), video, tutoriale (tu trzeba uważać, żeby nie wdepnąć w randomową twórczość)
  4. Szkolenia
  5. Ćwiczenia - N zadań w XYZ -> np. https://github.com/cblte/100-golang-exercises
  6. Odkrywanie rzeczy, o których nie miałeś pojęcia, że istnieją. Dzięki temu będziesz miał świadomość, że coś istnieje, a w miarę potrzeby pogłębisz wiedzę.
  7. Jak inni używają technologii (np. analiza kodu źródłowego w projektach open source)
  8. Tworzenie własnych narzędzi w technologii XYZ, które usprawniają Ci codzienną pracę
marian pazdzioch
Ładnie napisane, a weź opisz punkt 1 bo mnie zaciekawiło
YA
@marian pazdzioch: w zależności od technologii będzie to wyglądało inaczej. np. co innego jak się uczysz clouda (tu można zrobić virtualkę z dockerem, microk8s, terraformem, vaultem, localstackiem itd.), a co innego jak potrzebujesz zainstalować kompilator XYZ pod Windowsem i jakieś IDE, w którym da się wygodnie pracować w danym języku.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:40 minut
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
1
slsy napisał(a):

Zgaduję, że przez dużą konserwatywność odnośnie ficzerów w stosunku do tego co oczekuje @jarekr000000 od języka tj. nulle, słabe wsparcie dla programowania w stylu FP, słabe generyki czy biedny system typów (wspomniane nule, brak sum types).

Z drugiej strony go zapewnia dużo rzeczy, które w innych językach są "stare" i z poprzedniej epoki tj. prosty i mocno zintegrowany tooling, brak frameworków (wynika poniekąd z prostoty języka a trochę też z klutury), dobre zarządzanie zależnościami, przyjemny runtime będący jednocześnie całkiem wydajny i mało upierdliwy (małe zużycie pamięci, szybkie wstawanie, low latency gc), czy wypluwanie binarek bez zależności systemowych.

Najgorszy w go jest error handling. I na drugim miejscu te nile/nulle.

Brak cudownych frameworków jest mocno na plus - to fakt.

Zarządzanie zależnościami nie wiem czy jest dobre - coś tam poszło nie tak. Ostatnio czyściłem nasz projekt... oparty o pewien framework :-)(blockchain/bft) i okazało się, że razem z frameworkiem dostajemy tony absurdalnych zależności (często z security issues). Najlepsze były zależności od jakichś własnych projektów hello world (puste), które autor bilbioteki przypadkiem wpakował do niej.
W efekcie wylądowaliśmy z kilkuset zależnościami, z których ponad 100 było zgłaszanych jako zagrożenie przez skan security - przy czym oczywiście, wszystkie tak naprawde nie były używane, tylko deklarowane w go.mod różnych bibliotek - niezły bajzel.
Wiele z tych bibliotek (z tymi pokracznymi zależnościami) to popularne w go. np "go-kit".


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 5x, ostatnio: jarekr000000
SL
  • Rejestracja:około 7 lat
  • Ostatnio:16 minut
  • Postów:864
0
jarekr000000 napisał(a):

Zarządzanie zależnościami nie wiem czy jest dobre - coś tam poszło nie tak. Ostatnio czyściłem nasz projekt... oparty o pewien framework :-)(blockchain/bft) i okazało się, że razem z frameworkiem dostajemy tony absurdalnych zależności (często z security issues). Najlepsze były zależności od jakichś własnych projektów hello world (puste), które autor bilbioteki przypadkiem wpakował do niej.

To jest nierozwiązywalny problem, który istnieje wszędzie. Środkiem zaradczym jest używanie lekkich bibliotek do specyficznych zastosowań. W przypadku go przynajmniej jest duży kulturowy nacisk na używanie małych libek oraz zawsze można łatwo sprawdzić git diff go.mod, żeby sprawdzić w jakiej dupie jesteśmy po zaciągnięciu danego frameworka. Istnieje też opcja na sprawdzenie które zależności lądują w binarce, bo często są to po prostu zależności do testów, które nas nie obchodzą.

CZ
  • Rejestracja:ponad 8 lat
  • Ostatnio:około miesiąc
  • Postów:2284
0

No uczysz się i implementujesz to praktycznie. Nie ma innej opcji.

Z6
  • Rejestracja:ponad rok
  • Ostatnio:ponad rok
  • Postów:6
0

Odnośnie kariery - nie zmieniaj języka na bardziej niszowy jeśli jesteś na początkowym etapie nauki. To Ci zbyt wiele nie da, bo roboty w niszowym języku jest mało i przeważnie tam szukają seniora więc na własne żądanie robisz sobie dużą przepaść w szukaniu ofert dopasowanych pod siebie.

Odnośnie niszowych języków - taki język jest super nie z powodu problemów jakie w nim się rozwiązuje, lecz z powodu ludzi jakich spotkasz. Mało komu chce się tak ryzykować, głównie zapaleńcy, osoby dla których sama kasa to jednak za mało.

Odnośnie szukania pracy - to panie z HR jak widzą kandydata, który ma 3 języki i takiego który ma tylko jeden język to wybiorą tego drugiego, bo jest pewniejszy wyborem. Praca z definicji to coś czego nie robisz normalnie, chyba, że ktoś Ci zapłaci. Co z resztą widzisz po tym jak czujesz się u siebie w robocie. Zmień własne podejście, bo sam język akurat tu nic nie zmieni. Tam gdzie biznes generuje hajs to Twoja robota na etacie jest nudna i powtarzalna, po to by w razie problemów z Tobą, dało się Ciebie wymienić na inny trybik.

Odnośnie nauki języka - jeden błąd jaki można popełnić przy nauce kolejnego języka programowania, a jaki mocno dalej ogranicza pole nauki jest używanie nowego języka na podstawie tego co już znasz z innych języków. Jak będziesz próbował w Go odwzorować programowanie tak jak w javascriptcie to będziesz się długo męczył, wiele rzeczy nie wyjdzie, a na koniec sam przyznasz, że Go to słaby i wkurzający język.

Warto dążyć do zrozumienia perspektywy jaka jest związana z wybranym językiem. To taka nieodłączona część, o której na początku nawet nie wiesz, ale to ona jest decydująca jeśli chodzi o rozwiązywanie problemów. Ta perspektywa promuje patrzenie w konkretną stronę, ale za rozglądanie w inne strony karci i powoduje, że rozwiązania stają się toporne, momentami karkołomne.

Jak złapać perspektywę w języku? Musisz rozpoznać jakie w ogóle ta perspektywa wyznacza ograniczenia, a następnie zastanowić co robić aby z tym nie walczyć, lecz wykorzystać na swoją korzyść. Wtedy Twoja uwaga w końcu się skupi się na sposobie tworzenia oprogramowania jaki najlepiej pasuje do wybranego języka.

edytowany 3x, ostatnio: znowutosamo6
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)