Co z tą Scalą ?

Co z tą Scalą ?
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:dzień
0

Od niedawna do naszego zespołu dołączyło dwóch Javowców z innego zespołu i przeskoczyli na Scalę w miarę bezboleśnie. Przygotowanie do klepania w Scali polegało na czytaniu książek i robieniu zadań z tych książek. Po przejściu do projektu było programowanie w parach, by zarówno wejść w tematykę projektu jak i zaznajomić się z konstrukcjami składniowymi stosowanymi w projekcie.
Scali zaczęli się nawet uczyć admin i analityk biznesowy z naszego zespołu :) Z własnych chęci.

Scala jest wieloparadygmatowa, więc można podchodzić zarówno obiektowo jak i funkcyjnie. Mieliśmy w zespole kolegę (odszedł ze względu na irytującą biurokrację), który twierdził, że biblioteka scalaz jest częścią języka i każdy programista Scali powinien ją znać (reszta zespołu nie podzielała tego zdania). Tak więc różne osoby mają różne opinie, ale idiomatycznej Scali można nauczyć się bardzo szybko jeżeli nie będziemy iść mocno w programowanie funkcyjne.

O przenosinach zresztą najwięcej mógłby napisać @ubuntuser . Przenosił się najpierw z C# na Javę, a potem z Javy na Scalę.


"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
0

@Wibowit Czy możesz mi podpowiedzieć gdzie w IntelliJ konwertuje się z Java do Scala?
Mam plugin do Scala ale nie widzę. Mogę za to do Kotlina konwertować ;)

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:dzień
0

Skopiuj kawałek Javowego kodu (np całą klasę), a potem spróbuj wkleić do kodu Scalowego. Jakość konwersji pozostawia wiele do życzenia, no ale to zawsze jakiś start (kod działa i można go szybko obrobić). Za to szczerze wątpię, by istniały narzędzia konwertujące skrawki C# na skrawki Javy z podobną skutecznością.


"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 4x, ostatnio: Wibowit
UB
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 7 lat
1

Co mogę powiedzieć o przenosinach... (C# => Java => Scala)
Zrobiłem krok wstecz żeby zrobić dwa naprzód to na pewno. Na pewno też czuję większą frajdę z pisania kodu.
Nie potrafiłbym (albo bardzo bym po prostu nie chciał) wrócić do Javy. Po prostu myślę w inny sposób już i nie dość, że musiałbym przypomnieć sobie, jak to się robiło w Javie (składnia i biblioteki), to jeszcze przyzwyczaiłem się unikać mutowalności. Niby w Javie da się niemutowalnie, ale

  1. Pewnie musiałbym oglądać mutowalny, imperatywny kod innych współpracowników co wpłyneło by na mnie niekorzystnie
  2. Zauważyłem że jednak trochę dłużej się wymyśla rozwiązania niemutowalne/funkcyjne. Kod zajmuje mniej i jest czytelniejszy, ale czasem pętla for + zmienna var (mutowalna) przyspieszyłaby rozwiązanie.
    W Scali cenię sobie makra. Jak na programistę przystało, nie lubię pisać tego samego wielokrotnie, więc napisałem sobie parę makr ułatwiających pracę. Niestety póki co makra mają dość dużo ograniczeń, a główne to że muszą być w osobnym podprojekcie i nie chce się człowiekowi tego podprojektu tworzyć.
    Ogólnie podstawy Scali opanowałem w około 6 miesięcy, w sumie napisałem parę mniejszych kodów, bez większego projektu. Po lekko ponad roku ogarniałem te bardziej zaawansowane elementy języka ( http://ktoso.github.io/scala-types-of-types/ + shapeless).
0

Brzmi fajnie. Miejmy nadzieje, ze w Java zacznie sie pojawiac coraz wiecej ficzerow ze Scali ;)

0

Jak Scala wygląda pod wzlędem przenoszenia się na jej nową wersje?

0

Czy jak Scala wyprze, zastąpi kiedyś Jave to będzie mniej podatna na dziury i ataki niż Scala? Skoro to i tak jedna maszyna JVM je obsługuje.
http://www.dobreprogramy.pl/Oracle-narazalo-uzytkownikow-na-ataki-teraz-musi-przepraszac,News,69064.html

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:dzień
1

Jak Scala wygląda pod wzlędem przenoszenia się na jej nową wersje?

Najpierw usuwasz kod korzystający z funkcjonalności oznaczonej jako deprecated, a potem podbijasz wersję. Sprawę komplikuje to, że zależności też muszą mieć podbitą wersję Scali, co nie zawsze jest dostępne od razu.

Wybitny Szczur napisał(a):

Czy jak Scala wyprze, zastąpi kiedyś Jave to będzie mniej podatna na dziury i ataki niż Scala? Skoro to i tak jedna maszyna JVM je obsługuje.
http://www.dobreprogramy.pl/Oracle-narazalo-uzytkownikow-na-ataki-teraz-musi-przepraszac,News,69064.html

Java i Scala są mniej więcej tak samo podatne właśnie z tego powodu, że oba to języki na JVM.

Są wątki na forum dotyczące bezpieczeństwa Javy, autorstwa @Bartosz Wójcik, możesz poszukać i poczytać, nie ma co robić flejma w kolejnym temacie.

Np:
Dlaczego Java nie ma przyszłości?
http://4programmers.net/Forum/Java/258379-przyszlosc_java_i_0day_-_rzekome_460_odkrytych_luk_bezpieczenstwa_w_2015_roku


"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 3x, ostatnio: Wibowit
0

Pytanko. Rekurencja to nie jest mój chleb powszedni i przed chwilą zacząłem się tym bawić.

Znalazłem w necie funkcję do mierzenia execution time jak poniżej i porównałem sobie sumę elementów listy Lists.sum vs rekurencyjnie.

Kopiuj
  def time[R](block: => R): R = {
      val t0 = System.nanoTime()
      val result = block    // call-by-name
      val t1 = System.nanoTime()
      println("Elapsed time: " + (t1 - t0) + "ns")
      result
    }
Kopiuj
val integers = List(1, 2, 3,4,5,6,7,8,9,10)

 def sum(xs: List[Int]): Int = {
      xs match {
        case x :: tail => x + sum(tail)
        case Nil => 0
      }
    }

time(integers.sum) // Elapsed time: 34478ns
time(sum(integers)) // Elapsed time: 15890ns
var sum1= 0;
time(integers.foreach(sum1 += _)) // Elapsed time: 1175557ns !!!

Czy List.sum nie powinno być najbardziej optymalne? :P

UB
eee.... a rozgrzałeś JVM'ke? zdaje mi się że nie. Robi się z 20 testów, przy czym wynik to średnia 10 ostatnich. no i co do funkcji sum, możesz dodać sobie @tailrec
NZ
Jak doda @tailrec to mu się nie skompiluje...
somekind
Nie, bo nie ma czegoś takiego jak najbardziej optymalne. Albo coś jest optymalne, albo nie.
UB
@nz nie mówiłem że bez żadnych zmian przejdzie. trzeba dodać do listy argumentów aktualną sumę.
NZ
No. Trzeba przerobić całą funkcję. Więc nie może "sobie dodać" tylko musi ją napisać inaczej i wtedy ewentualnie dodać. Ten atrybut przy tak prostym przypadku i tak nic nie da... Stosuje się go przy bardziej skomplikowanych funkcjach, jak chcemy mieć gwarancję, że zajdzie TCO. Przy sumowaniu listy to będzie widać na pierwszy rzut oka...
0

Skompiluje.

Kopiuj
var sum1= 0;
    @tailrec
    val sumTail = integers.sum
    time(sumTail)
// Elapsed time: 11693ns

wtedy wyniki są podobne do tej powyższej funkcji sum.

NZ
LOLWUT. :|
0

Coś ta temat benchmakrów ogólnie: http://stackoverflow.com/a/513259/2265932

Plugin jmh to scali https://github.com/ktoso/sbt-jmh

0

Scala to widzę, że teraz ma też spory boom z big data i Apache Spark.

WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 21 godzin
  • Postów:3169
0

@Wibowit - a ja mam pytanie, dlaczego warto zainteresowac sie programowaniem funkcyjnym/Scala? Co zyskam w stosunku do Javy, oprocz cwiczenia umyslowego i moze trendy wpisu do CV? Brakuje mi jakiejs marchewki sugerujacej ze to jest faktycznie cos w co warto pojsc.
W tym momencie mam do czynienia w pracy z XSLT ktory podobno gdzies kiedys kolo funkcyjnosci lezal, i ktory mocno znielubilem od pierwszego wejrzenia...

Wibowit
kod w XMLu będzie z 10x dłuższy niż normalny, więc pisanie normalnych programów w XSLT byłoby masochizmem. zaletą Scali, oprócz wymienionych już tu w wątku, jest zwięzłość, szybkość prototypowania i silny system typów pozwalający kompilatorowi wykryć masę błędów. XSLT tego nie ma.
0

Wydaje mnie się, że tej marchewki teraz nie dostaniesz. Spotkałem się z opinią, ze Scala się nie przyjęła i miała już swoje 5 minut. Po liczbie ofert pracy można dojść do tych samych wniosków.

KR
Jakoś twarde dane przeczą temu co piszesz: http://www.indeed.com/jobtrends/Scala.html
1

Jestem nowicjuszem ale...
A to może w Java nie piszemy coraz bardziej funkcyjnie? Zamiast brzydkich forów itp. jakieś guavy i Java 8 itp. Coraz więcej tego jest.

Według mnie Scala to coś więcej niż update do javy jak niektórzy sądzą.

Według mnie sporo ciekawych rzeczy Oczywiście Scala ma swoje minusy. Taki python to jest starszy niż Java a przez niektórych uważany jako 'new thing' ale według mnie prędzej to Python itp. nie przeżyje konkurencji w postaci języków bardziej funkcyjnych.

Wcale nie uważam, że Scala to będzie jakieś big thing, równie dobrze może umrzeć, jak każdy język. Ale nie uważam, że nauka Scali to czas zmarnowany. A jako javoviec, uważam, że uczyni ze mnie lepszego Javowca.

0
Mały Szczur napisał(a):

Scala to widzę, że teraz ma też spory boom z big data i Apache Spark.

Może i tak, ale nie w PL :)

KR
Allegro używa.
0
Zimny Terrorysta napisał(a):
Mały Szczur napisał(a):

Scala to widzę, że teraz ma też spory boom z big data i Apache Spark.

Może i tak, ale nie w PL :)

Moja firma nie jest zbyt duża a chłopaki cos tam klepią włąsnie w Scala ze Sparkiem.

0

Przeglądam sobie /play-scala-intro - czyli sample CRUD - jest tam Play i Slick.
https://github.com/playframework/playframework/tree/master/templates/play-scala-intro

nie rozumiem za bardzo tego create. tutaj:
https://github.com/playframework/playframework/blob/master/templates/play-scala-intro/app/dal/PersonRepository.scala

Kopiuj
  def create(name: String, age: Int): Future[Person] = db.run {
    (people.map(p => (p.name, p.age)) returning people.map(_.id)
      into ((nameAge, id) => Person(id, nameAge._1, nameAge._2))
    ) += (name, age)
  }

Co w ogóle dzieje się w tym miejscu?

Kopiuj
    into ((nameAge, id) => Person(id, nameAge._1, nameAge._2))
    ) += (name, age)

Czy nie można tego jakoś po ludzku zapisać? np. :

Kopiuj
people.returning(people.map(_.id)).insertOrUpdate(Person(1, name, age))

Czy mogę jakoś nie uzupełniać pola id?

Najlepsze doświadczenia jakie miałem dotychczas z dostępem do baz danych to Spring Data.

ale chyba, żeby było bardziej po ludzku to musiałbym więcej przerobić:
np. http://stackoverflow.com/questions/18696155/what-is-the-best-way-to-get-the-last-inserted-auto-generated-id-using-slick

ten projekt/tutorial jest świeży czy to jakiś staroć? Macie inne sugestie od czego zacząć?

TO
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:30
0

Jakoś twarde dane przeczą temu co piszesz: http://www.indeed.com/jobtrends/Scala.html - Krolik 2015-12-27 12:04

To są dane z naszego kraju? Bo jeśli nie, to mało one dają (Polska jak wiecie jest 100 lat za murzynami).

1

To nie z Polski... ale akurat w Polsce to chyba mamy jedno z najlepszych community Scali... a poza tym często te kraje '100 lat za murzynami' pod wzgledem IT akurat są zaawansowane, wiec nie powtarzaj bzdur. np. Taka Rumunia to chyba przodująca w nowych technologiach.

Poza tym http://www.indeed.com/jobtrends?q=Scala%2C+Java&l= ;)

0

Ogólnie jak widzę kawałki kodu "germańskich oprawców" to często nie wiadomo czy śmiać się czy płakać.

Drabinki ifów nie mieszczące się na ekranie, każda metoda z try catch... german standard?

0

Ok, znalazlem bardzo fajnie zrobionego cruda.
https://github.com/petru-m/ScalaPlayCrud

No może poza tym, że to DAO możnaby zrobić jakimś traitem czy coś.

0

Mam okazje napisac webowy projekcik w Scala w swojej pracy.
Nie będzie zbyt duży, pewnie parę crudów.

Jakich frameworków mógłbym użyć? Chętnie takich, gdzie mogę się dużo nauczyć albo najbardziej przydatnych albo na topie.

Jak tak czytam to play i akka. Frontend najpewniej będzie w Angularze.

0

Jakies rady?
mam tez inne aplikacje, które deployowane są na tomcata w formie wara?
Jak podejść do tego ze scalą?

NG
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 7 lat
  • Postów:278
1

Ludzie nie doceniają chyba wpływu korporacji, w tym wypadku Oracle. Korporacje ze sobą "dyskutują" na rynku - takie Oracle np. z bankami, czy też firmami z listy 100 najlepszych forbes.

Oracle wspiera Javę, a na upartego można dodać, że jeszcze Google (poprzez Androida ; Android = Google API + Linux + Java). Jave wspiera Eclipse Foundation, IBM, apache, wielkie finansowe korpy.
A kto wspiera Scalę? 1 uniwersytet? "community" ?

Co z tego, że może i niektóre rzeczy związane ze składnią języka są prostsze, jak to Java ma setki bibliotek, wielkich projektów, klas, metod. Reasumując - jak ktoś pisze projekty dla małego biznesu, to może i uda się narzucić Scalę. Ale jak przychodzi co do czego i projekt ma być skalowalny/korporacyjny/big-data, to wszyscy biorą sprawdzone rozwiązanie jakim jest java. Scale narzucają też developerzy, którzy bardziej zainteresowani są ładną i przyjemną składnią języka, a nie obecnością bibliotek, wypracowaną skalowalnością, etc.

Do momentu jak javę wspierają korporacje, to Scala nie ma szans. Chyba, że rzeczywiście będzie ładniejsza, przyjemniejsza, lepiej zaprojektowana, przemyślana - i może to w końcu ludzie zauważą.

edytowany 7x, ostatnio: aurel
2

I co Ty wnosisz niby do dyskusji? Wchodzisz głosząc głosem znawcy... lol Nie chcesz to nie pisz, proste.
Z punktu widzenia nauki niekoniecznie to jest istotne czy jezyk ktos wspiera czy nie.
Na tej zasadzie warto sie uczyc nawet Haskella. Choćby dla samego paradygmatu.

Oracle wspiera Googla? To skąd te wszystkie procesy?
Typesafe/Lightbend jakoś sobie radzi.
Setki bibliotek Java? A wiesz, że praktycznie wszystko można importować do Scali, albo jest już portnięte?
Java i Big Data mówisz? Java i Big Data niemal nie istnieje. Prędzej Scala i... Python. Boo... o jejku tak, Spark jest napisany w... Scala.
Zdajesz sobie sprawe, ze Javie zarzuca się brak skalowalności? A nazwa Scala nie jest bez powodu?
Co do ładnej składni... wielu zaprzeczy, że Scala jest ładna.

http://www.indeed.com/jobtrends/scala.html
http://www.itjobswatch.co.uk/IT-Job-Market/UK/Programming-Languages
https://nofluffjobs.com/#criteria=scala

W sumie to srednio znasz temat a sie wypowiadasz brzmiąc jak steoretypowy Javowiec, co bedzie siedzial, klepal crudy i poza tym się nosa nie wyściubi.

Nie chcesz, nie pisz.

0

A powyższe linki ładnie pokazuja, ze Scala ma ładny trend.

I nikt nie oczekuje, ze Scala zastąpi Javę.

A w dużych korpo Scala już jest, i wiem jakie, bo widzę od jakich firm dostaje oferty.

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:dzień
1

@NieGooglujMnie:
Akurat w finansach to Scala sobie bardzo dobrze radzi, w takim np Londynie programiści Scali mogą przebierać w bankach.

W związku z przenoszeniem zespołu programistów z Londynu do Krakowa jeden z kolegów z Londynu został zwolniony i w ciągu dwóch dni znalazł pracę w Scali w innym banku też w Londynie. Zero stresu.

PS:
Poprzednik już wytknął ci nieznajomość tematu, ale powtórzę - współdziałanie z Javą jest jednym z mocnych punktów Scali. Bez problemu z poziomu Scali można korzystać z Javowych bibliotek (jest to zupełna norma), a w drugą stronę z odrobiną dodatkowych fasad też działa (patrz: Play Framework 2, napisany w Scali, ale możliwy do wykorzystania w Javowych projektach).


"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
NG
ok może rzeczywiście trochę na wyrost komentarz, ale już trudno ;) kto chce to zostanie przy oryginalnej javie, a kto chce to będzie ewoluował w stronę Scali; na szczęście mamy mamy wolny rynek, który zweryfikuje co jest przydatne a co nie
WhiteLightning
A kojarzysz jak wyglada w Krakowie rynek zwiazany ze Scala i jak sie maja zarobki Scalowcow w stosunku do Javy?
Wibowit
Nie orientuję się w płacach. Raczej nie powinno być problemów by wejść w Scalę.
0

@NieGooglujMnie dlaczego patrzysz na to w stylu 0 albo 1?
Do pewnych zadań może byc lepsza scala, do innych java.

jaki problem?

Wizzie
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
0

No i można łączyć je w jednym projekcie jak się chce.

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)