docker - realne zastosowanie

docker - realne zastosowanie
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Wrocław
1
aurel napisał(a):

Oczywiście, można hardkodować. Ale można też postawić dockera ;)
Docker będzie lepszym rozwiązaniem tam, gdzie praca jest bardziej "dynamiczna", a założenia są uściślane w trakcie pracy. Niestety mam z tym do czynienia dość często. Rozmowy w stylu:

  • Ej, a jak mam niby wyświetlić to, bez tamtego?
  • Ano fakt, czekaj, to zaraz dorobię
  • Dlaczego przestało działać to a tamto?
  • Aaa bo tu się nazwa parametru zmieniła

Wychodzi na to, że w takim razie docker rozwiązuje problemy procesowo-organizacyjne, a nie programistyczne. :)

Pozostaje współczuć:

  • programistom frontendu - domyślam się, że jak im nagle backend przestaje działać, to jest to raczej frustrujące;
  • programistom backendu - bo frontendowcy wiecznie czegoś chcą, co jest raczej frustrujace;
  • użytkownikom - bo chaos podczas wytwarzania softu zazwyczaj skutkuje chaosem w działaniu aplikacji.

Poza tym, frontend nie tylko wyświetla dane z backendu, ale czasem też coś do backendu wysyła. Oprogramowując wysyłanie danych muszę uwzględnić też sytuacje błędne (czyli np. api nie odpowiada; i w sumie przy wyświetlaniu też). Jak się uprzeć, to też można to hardkodować. Mi jednak wygodniej pracować z prawdziwym systemem.

A w czym system z dockera jest prawdziwszy od takiego postawionego na serwerze testowym?

aurel
Jest prawdziwszy od hardkodowanych danych, nie od serwera testowego.
Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
0

@wiewiorek: piszesz "aplikacja ASP.Net MVC" i myślisz właśnie o jednej aplikacji odpalane pod IIS. Czy w takim przypadku używanie dockera daje wyraźne korzyści? Raczej nie, co nie znaczy że jest to powodem by go odrzucać. Natomiast "aplikacja" to dosyć często system, a więc coś co składa się z kilku/kilkunastu/kilkudziesięciu aplikacji, API, Windows services i aplikacji konsolowych. W takim przypadku używanie kontenerów właśnie rozwija skrzydła i znacznie ułatwia zarządzanie deploymentami, konfiguracją i load balancingiem.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
NO
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 4 lata
  • Postów:35
4

@somekind: Raczej w miarę regularnie frontendowieć musi zrobić rzeczy które lepiej zrobić na lokalnej bazie/środowisku, a nie na teście np.

  • Dodaje 100 kont administratora i patrzy jak się wyświetla?
  • Zapycha kolejke 50.000 requestami i patrzy czy wygenerowany raport odpowiednio wygląda?
  • Chce sprawdzić czy komunikat ostrzegająćy przed skasowaniem zbyt wielu orderów działa?

W wielu przypadkach warto mieć możliwość postawienia sobie lokalnego backendu, żeby nie smiecić na teście, i nie przeszkadzać innym osobm które najcześciej korzystając z testu mogą nie spodziewać się że ktoś im nagle skasuje ordera którego oni zrobili. (Nawet jeżeli powinni się tego spodziewać, dokładnie z tego pwodu że nie jest to środowisko lokalne...)

Jasne że da się inaczej. W końcu każdy może sobie odaplić skrypt który wszystko instaluje, ale własnie chyba po to mamy używać dockera żeby było prościej i żeby nie było problemów w styłu "u mnie działa".

Każdemu polecam zaznajomienie się z dockerem, a potem jeżeli ktoś w swoim projekcie nie widzi żadnego zysku z jego używania, to niech go nie używa, proste.

edytowany 3x, ostatnio: Noozen
VA
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:35
0

Jezeli uzywacie CI/CD to jest szereg plusow:
-latwiej puszczac testy (docker z n unitem)
-latwiej puszczac buildy (docker z msbuildem)
-latwiej zachowac dynamicznosc tworzenia srodowisk (VM jest duza i ciezka, a kontener nie i stawia sie 'on demand', gdy jest potrzebny)
-standaryzacja plikow (infrastructure as code), pipeline (jenkinsfile + dockerfile), plik jest latwy do odtworzenia, latwo sledzic zmiany itd.

Sa tez inne tematy - deploy gotowych obrazow, osczednosc zasobow itd.

edytowany 1x, ostatnio: Vakcinion
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Wrocław
0
Noozen napisał(a):

@somekind: Raczej w miarę regularnie frontendowieć musi zrobić rzeczy które lepiej zrobić na lokalnej bazie/środowisku, a nie na teście np.

  • Dodaje 100 kont administratora i patrzy jak się wyświetla?
  • Zapycha kolejke 50.000 requestami i patrzy czy wygenerowany raport odpowiednio wygląda?
  • Chce sprawdzić czy komunikat ostrzegająćy przed skasowaniem zbyt wielu orderów działa?

@Noozen: podoba mi się Twoja argumentacja, chociaż nie do końca do mnie trafia.
Pierwsza sprawa jest taka, że backendowiec też może mieć potrzebę dodania wiele danych do systemu i sprawdzenia, czy nadal działa. No i jak te dane są już dodane przez backendowca, to frontendowiec może z nich też skorzystać.

W wielu przypadkach warto mieć możliwość postawienia sobie lokalnego backendu, żeby nie smiecić na teście, i nie przeszkadzać innym osobm które najcześciej korzystając z testu mogą nie spodziewać się że ktoś im nagle skasuje ordera którego oni zrobili. (Nawet jeżeli powinni się tego spodziewać, dokładnie z tego pwodu że nie jest to środowisko lokalne...)

Zawsze mnie to zastanawia - w jakiej branży można w ogóle kasować zamówienia? Co na to księgowość i skarbówka?

somedev
Zamówienia mogą mieć różne stany. Są zamówienia techniczne, gdzie np. naliczają się rabaty z promocji wiązanych, ale klient nie dokonuje jednak zakupu więc FV, się nie generuje a takie zamówienie jest usuwane. Niemniej wydaje mi się, że tutaj chodzi bardziej o sytuacje gdzie jedna osoba dodaje np. 100 zamówień, bo trenuje generowanie do tego WZ z n magazynami, a druga trenuje ksiegowanie tych zamówień - jeden drugiemu psuje dane testowe, wymagana jest synchronizacja devów. Pełne środowisko testowe kosztuje więcej niż kontener, postawienie trwa dłużej niż lokalne odpaleni.
somedev
Ofc. napisanie poprawnej konfiguracji dockera też trwa, ale to praca jednostkowa (z późniejszym utrzymaniem), z kolei stawianie ręczne środowiska wymaga n razy tego samego nakładu pracy. Jak specyfika wymaga, żeby wielu devów miało swoje środowiska to docker ma sens. Majac jedno centralne środowisko, nie musząc martwić sie o zasoby to bym to zwirtualizował i kupił dobrego devopsa i tyle ;)
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:4 minuty
  • Postów:5107
1

@somekind:

backendowiec też może mieć potrzebę dodania wiele danych do systemu i sprawdzenia, czy nadal działa. No i jak te dane są już dodane przez backendowca, to frontendowiec może z nich też skorzystać.

po co się uzależniać?

edytowany 1x, ostatnio: WeiXiao
Zobacz pozostałe 6 komentarzy
somekind
Nie, człowieka żywego, który robi u nas zakupy. :)
aurel
Serio u ciebie wszystkie dane są w kontekście klienta? No to cóż, nie zrozumiemy się ;) U mnie zdecydowana większość danych jest na backendzie i klienci je współdzielą.
somekind
No w sumie to nie wszystko - produkty i ich rodzaje oraz dostępność to kontekst produktów, ale to jest tylko do odczytu, zmienia się rzadko i też nigdy nie usuwa. Poza tym klient ma konto, adresy, metody płatności, no i może robić zakupy, i to wszystko już jest w kontekście klienta.
aurel
A u mnie jest ciągła wymiana danych w te i nazad, użytkownicy dane dodają, usuwają, edytują, konieczne jest blokowanie treści do edycji, aktualizacja danych zależnych od danych wprowadzonych, procesy automatycznie aktualizujące dane w tle... A w kontekście klienta to jest chyba tylko zapamiętany login użytkownika ;)
somekind
No to gdbyby chcieć to przełożyć na "moje" podejście, to każdy developer musiałby miec dużo takich testowych userów i dużo danych. To faktycznie mogłoby być ciężkie do ogarnięcia. Zresztą, teraz też na pewno jest dużo trudniejsze w testowaniu niż to, co jest u mnie.
cmd
  • Rejestracja:około 10 lat
  • Ostatnio:3 dni
  • Lokalizacja:Warszawa
  • Postów:443
2

@somekind: Nie rozumiem, produkujesz się tu pod określoną tezę że "docker w sumie jest niepotrzebny"? Czy jak źle zinterpretowałem Twoje komentarze?:D Tam chyba przypadkiem nawet trafnie podsumowałeś, tak Docker w w cholerę ułatwia rozwiązywać zadania procesowo-organizacyjne. Mówisz o zdalnym środowisku testowym, dzięki Dockerowi odpalasz takie środowisko lokalnie w ciągu 20 sekund. Nie musisz się męczyć z instalacją Postgresa, Redisa, nginx, 40 zależoności backendu i frontu. Jedna komenda i całe środowisko masz ustawione i działające z gwarancją odtworzenia gdziekolwiek chcesz beż żadnego problemu. O tym jak to usprawnia CI/CD nawet nie będę się rozwodził bo po co mówić o kwestiach oczywistych? Oczywiście Docker nie zastępuje środowiska testowego o którym mówisz, ale pomaga lepiej z nim pracować i przewidywać szybciej ewentualne problemy. Konteneryzacja pozwala zachować porządek i stabilność, ułatwia skalowalność i kontrolę nad wszystkimi komponentami tworzonego systemu.

edytowany 2x, ostatnio: cmd
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Wrocław
1
cmd napisał(a):

@somekind: Nie rozumiem, produkujesz się tu pod określoną tezę że "docker w sumie jest niepotrzebny"?

Nie, nie stawiam tu żadnych ogólnych tez. Wierzę, że Wam pomaga i jest potrzebny. :)
U mnie w pracy się go nie stosuje, więc nie mam doświadczeń i po prostu zastanawiam, czy jego używanie rozwiązałoby jakieś moje problemy. Dlatego tak dopytuję wszystkich, i szukam dziury w całym, bo może coś mi umyka w tym wszystkim, gdyż jak na razie nie widzę zastosowania u siebie.

Mówisz o zdalnym środowisku testowym, dzięki Dockerowi odpalasz takie środowisko lokalnie w ciągu 20 sekund. Nie musisz się męczyć z instalacją Postgresa, Redisa, nginx, 40 zależoności backendu i frontu.

O - i np. 20 sekund brzmi super, to zapewne dla wielu osób jest świetny argument "za".
Ale ja używam środowiska testowego, które już istnieje. Właśnie dzięki temu nie muszę się męczyć z instalowaniem wszystkiego lokalnie. To pod tym względem docker mi nie pomoże.

Jedna komenda i całe środowisko masz ustawione i działające z gwarancją odtworzenia gdziekolwiek chcesz beż żadnego problemu.

Jak rozumiem "gdzie chcę" oznacza albo u mnie lokalnie, albo na jakimś serwerze, czy to testowym, czy produkcyjnym. Dla mnie de facto ogranicza się to do chmury, a tam wszystko i tak idzie z gotowych obrazów.

O tym jak to usprawnia CI/CD nawet nie będę się rozwodził bo po co mówić o kwestiach oczywistych?

No właśnie dla mnie nie jest to oczywiste, bo mimo braku dockera nie mam problemów ani z CI ani z CD.

Tak sobie myślę, że ja po prostu trafiłem do firmy, która od dawna ma już własne zbyt zaawansowane narzędzia i procesy rozwiązujące te problemy, które u Was rozwiązuje docker, dlatego nie zauważam dla niego miejsca. To pewnie jest pomocne w firmach, które jeszcze nie miały okazji ogarnąć sobie takiego środowiska, a teraz mogą po prostu skorzystać z darmowego rozwiązania zamiast tworzyć własne.

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

Zawsze mnie to zastanawia - w jakiej branży można w ogóle kasować zamówienia? Co na to księgowość i skarbówka?

Uprawiasz demagogię. U was zamówienia się nie zmieniają? Użytkownikom nie zmieniają się prawa. Batchy nocnych i żadnych procesów nie macie?
Pracujecie na danych w ROMie czy tez wyrytych na kamiennych tablicach?

Generalnie docker umożliwia do pewnego stopnia pozbycie się chorych koncepcji typu stage DEV, INT, Q, PREPROD itd
Co by nie wciskać o jakiś problemach organizacyjnych, to jednak w normalnym świecie (poza sf somekinda),

  • ludzie zmieniają dane w systemach. Przez to pracowicie tropione heisenbugi szlag może trafić,
  • ludzie wgrywają nowe wersje i (o zgrozo) robią bugi (przez to juz np. od 2 tygodni nie mogę przetestować e2e procesu w jednym banku, bo angażuje około 15 systemów i jeszcze nie było dnia żeby w jakimś bug się nie objawił, w jednym naprawią to w drugim zepsują, a to dlatego, że własnie mają tam takiego pielęgnowanego INTa),
  • utrzymanie takich INT, DEV kosztuje, a zawsze się okazuje, że może przydać się kolejne (typowo np. na testy wydajnościowe... i co wtedy? w jednej firmie ładnie pisali, że dziś nie wolno korzystać z INT bo testy wydajnościowe :-) , cudo :-) )
  • są ludzie, którzy potrzebują pracować z pociągów i samolotów - na razie takich VPNów, żeby do dobrze działało nie ma,

Dlatego, a) używam mocków do częsci systemów, b) te które potrzebuje fizycznie (i mogę to wymusić) staram się dostać dockerem (buildy tez mogą robi image dockerowe). Odpada jakieś konfigurowanie itp. Z tego samego powodu wolę programy instalować z .msi lub pakietu .deb niż ręcznie wgrywać pliki.

U obecnych klientów ząłatwia mi to możliwośc zdalnej pracy, oraz trzymanie specyficznych przypadków testowych.

W idealnej sytuacji, ale widziałem to tylko w jednej firmie, cały system można postawić "prawie jednym klikiem" (ale nie było to kilka sekund, kilkadziesiąt aplikacji z bazami danych itd trochę trwa zanim wszystkie ruszą, nie mówiąc o tym, że nawet na moim lapku nie miały szansy ruszyć wszystkie (nawet nie próbowałem) ).

Jak do tej pory jedyni ludzie, którym nigdy te INT, DEVy itd nie przeszkadzały i nie widzieli problemu to byli niemieccy architekci. Nie musieli się w tym grzebać, a z wieży problemów nie widać.
Tak, że tego... tu pisze do somekinda. Jak uważasz, że jest fajnie to może spójrz w dół i zobacz, czy nie siedzisz za wysoko.

Żeby nie było, docker rozwiązuje jedne problemy, za to wprowadza tony innych, logi, security, zarządzanie deploymentem. Nagle się okazuje, że potrzebujesz tony kolejnych tooli :-(.
Można tu utkwić w niekończącej się toolizacji :-( Utrzymanie "dockera" też kosztuje, nawet IMO więcej niż typowy DEV, INT i Q raczem wzięte. Dopiero przy większej ilości i tworzonych ad hoc środowisk widać jakiś zysk dla ludzi z infrastuktury. Dla programistów ulga jest dość szybko.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 5x, ostatnio: jarekr000000
somedev
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:666
0

Docker separuje w kontenerze pewne usługi od reszty systemu i danych. Uruchamiajac daną usługę w dockerze, separujesz od reszty systemu, nie tworząc jednocześnie wirtualki. Z jednej strony to kiepskie, z drugiej nie masz dodatkowego narzutu wydajnościowego, co przy ograniczonym budżecie jest ważne (tak, tak, duże firmy mają budżet na serwer co pociągnie n maszyn, ale nie zawsze firma IT jest dużą firmą). Jedyne co żałuję, to że dockera nie ma na windowsa.

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
0
somedev napisał(a):

Jedyne co żałuję, to że dockera nie ma na windowsa.

Korzystam w pracy z dockera na windows (10) :-) Ostatnio jest nawet całkiem ok.


jeden i pół terabajta powinno wystarczyć każdemu
Zobacz pozostałe 8 komentarzy
jarekr000000
działał, działał, ale więcej problemów było (przez virtualbox głównie)
WeiXiao
@jarekr000000: Jak przez virtualboxa, jeżeli te dwie rzeczy nie mogą działać równocześnie? czy się mylę?
jarekr000000
Wcześniej przecież docker na windows działał właśnie w ramach virtualboxa - virtualbox był kontenerem na image. Lekkie to to nie było.
WeiXiao
@jarekr000000: Oh, ja zaczynałem się tym bawić wtedy, gdy trzeba było wybrać: albo VB albo docker :P
jarekr000000
Btw. nie wiem czy docker nie może działać w ramach virtualboxa (kontener w kontenerze) - na VM player działają mi dockery w maszynie wirtualnej całkiem sprawnie.
aurel
Moderator
  • Rejestracja:prawie 15 lat
  • Ostatnio:3 minuty
2

@somekind no generalnie tak, jak nie widzisz potrzeby, to prawdopodobnie nie potrzebujesz. Jeśli ktoś jednak miałby dzisiaj wybierać, jak rozwiąże dane problemy, to użyłby raczej gotowego narzędzia, zamiast pisać własne. Tym bardziej, że docker jest darmowy, a chmura jednak raczej płatna.

Tak dodam jeszcze, że ja w pracy to akurat tego nie używam, choć widzę miejsca, gdzie by się przydał. Przydałby się w pracy międzyzespołowej, bo teraz często jest tak, że czekam tydzień, aż mi postawią środowisko testowe (nie dlatego, że tyle to trwa, tylko dlatego, że mają taką kolejkę zadań).

Tak naprawdę dockera doceniłam jak wpadłam na pomysł, by zrobić coś w coyote ;) Instrukcja instalacji na githubie mocno zniechęcała. Jakiś czas wcześniej podjęłam próbę instalacji z instrukcji, ale po kilku godzinach różnych błędów stwierdziłam, że tyle czasu to ja nie mam na zabawę. Fakt, że na pierwszą konfigurację dockera też straciłam sporo czasu, bo było to dla mnie całkiem nowe zagadnienie, ale jak już się raz skonfigurowało, to teraz sobie nie wyobrażam robić tego inaczej.

WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 3 godziny
  • Postów:3169
1

@jarekr000000: pytanie na serio. Zalozmy ze hostujesz rozwiazanie z Dockerem na Windowsie. Co w przypadku Windows Updatow ? Nie ma przez to problemow ze system padnie (bo kilka rebootow, albo performance lezy bo sie patche dociagaja) ?

I jeszcze dwa komentarze:

  • jak sie chce faktycznie testowac performance to musi byc oddzielne srodowisko.
  • jak sie pracuje na cloudzie (np. AWS) i jest ogarniety Devops ktory stworzyl np. skrypty Ansible, to nowe srodowisko mozna bardzo szybko postawic albo sklonowac w razie potrzeby.
edytowany 1x, ostatnio: WhiteLightning
jarekr000000
Nie hostuje nic na windows. To tylko maszyny developerskie - i tak hosting jest głównie pod linuxami. (są wyjątki, ale to nie moje aplikacje).
somekind
O, widzę, że ktoś tu jednak rozumie, że da się inaczej! :)
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
0
WhiteLightning napisał(a):
  • jak sie pracuje na cloudzie (np. AWS) i jest ogarniety Devops ktory stworzyl np. skrypty Ansible, to nowe srodowisko mozna bardzo szybko postawic albo sklonowac w razie potrzeby.

O właśnie. Jak dla mnie, to nie docker jest taki fajny, tylko te koncepcje stałych, pielęgnowanych środowisk, których nie da się łatwo zamrozić, kopiować są męczące (nieefektywne).

Nie do końca o dockerze, ale to jest chyba prezentacja, która swego czasu zainspirowała paru kolegów z paru firm do zmian. (chyba, bo nie mam czasu teraz przejrzeć czy to na pewno ta, ale autor i tytuł się chyba zgadza ).


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 3x, ostatnio: jarekr000000
cmd
  • Rejestracja:około 10 lat
  • Ostatnio:3 dni
  • Lokalizacja:Warszawa
  • Postów:443
1

@somekind: Nie będę Cię męczył żeby coś tu udowadniać bo w pełni rozumiem że Docker w wielu miejscach nie musi być ani super użyteczny ani wykorzystywany, ale odniosę się do jednej rzeczy jeszcze.

Ale ja używam środowiska testowego, które już istnieje. Właśnie dzięki temu nie muszę się męczyć z instalowaniem wszystkiego lokalnie. To pod tym względem docker mi nie pomoże.

Ok masz swoje środowisko testowe zdalne. Załóżmy teraz że próbujesz dodać jakiś nowy serwis do systemu. Weźmy przykład zmiany silnika DB z MySQL na Postgre (przejaskrawiony mocno) I teraz pytanie co robisz?

  1. Jesteś również opsem który pilnuje funkcjonowania środowiska testowego, bierzesz się za mozolną instalacje i konfiguracje
  2. Nie jesteś opsem, zlecasz zadanie odpowiednim osobom i czekasz
  3. Zazwyczaj coś przy okazji się wykrzaczy = środowisko testowe nie działa i to nie tylko dla mnie ale dla całego zespołu
  4. Poprawki poprawki
  5. No zaskoczyło

Ja dzięki Dockerowi mogę zrobić to samo nie będąc opsem, nie utrudniając innym pracy na środowisku testowym. Sam jako dev mogę przygotować odpowiedni setup lokalnie, przetestować go czy wszystko działa i łączy tam gdzie powinno, i najzabawniejsze mogę zaktualizować całe środowisko testowe jednym poleceniem z klawiatury i mieć gwarancję że zaraz po tym jak się to zaktualizuje będzie działać tak jak oczekuje. Dzisiaj są takie czasy że klienci chcą od nas jak najszybciej dostać produkt. Właśnie po to stworzono Scrum, Agile, wymyślono koncepcję MVP. I dlatego też Docker jest popularny. Usprawnia ten proces, przyśpiesza go, pozwala zaoszczędzić czas na walce ze środowiskami na których pracujemy. Tylko tyle i aż tyle. Oczywiście nie twierdze że wszyscy go mają stosować bo tak, ale jego popularność nie wzięła się z nikąd ;)

somedev
Oj, MVP to śliska koncepcja. MVP, czasami skłania do bylejakości, która często nie jest wyeliminowana w przyszłości. W teorii powinna być jakościowo taka sama, a potem tylko rozwijana, ale życie pokazuje, że często zdarza się co innego.
cmd
Zgadzam się, ale co zrobisz jak rynek jest jaki jest. :]
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Wrocław
1
jarekr000000 napisał(a):

Uprawiasz demagogię.

Nie uprawiam demagogi, opisuję swoją sytuację i podejście, które z powodzeniem sprawdza się w mojej pracy. Oczywiście można mi nie wierzyć, albo najlepiiej w ogóle stwierdzić, że jestem głupi. Nic nie poradzę.

U was zamówienia się nie zmieniają?

Generalnie po tym jak zamówienie zostało złożone, to potem może zostać potwierdzone, opłacone, skompletowane i wysłane. Może też zostać w jakiś sposób poprawione (np. przez zmianę jakichś parametrów albo produktów), może też zostać anulowane. Ale anulowane też przecież zostaje w bazie, po prostu zmienia się mu status. No i to też jest zdarzenie księgowe, bo klient niekoniecznie dostanie pieniądze z powrotem.

Użytkownikom nie zmieniają się prawa.

Nie, jest tylko jeden rodzaj uzytkowników - klienci, ich prawa to robienie zakupów i zarządzanie własnym profilem.

Batchy nocnych i żadnych procesów nie macie?

Mamy, ale to jest tylko odczyt danych. I nie na środowiskach zespołowych.

Pracujecie na danych w ROMie czy tez wyrytych na kamiennych tablicach?

Głównie na AWS, cholera wie co oni mają tam pod spodem.

Co by nie wciskać o jakiś problemach organizacyjnych, to jednak w normalnym świecie (poza sf somekinda),

Nie nazywałbym fikcją czegoś, co po prostu działa.
I nie twierdzę, że może działać wszędzie, i wszędzie ma sens. Pokazuję tylko inne możliwe podejście. Ktoś może potraktować to jako inspirację, ktoś inny jako ciekawostkę, ktoś jako okazję do kłótni i pokazywania wyższości, no cóż, co kto woli.

  • ludzie zmieniają dane w systemach. Przez to pracowicie tropione heisenbugi szlag może trafić,

Owszem, jeśli są jakieś współdzielone dane, to jest takie ryzyko. U mnie takiego nie ma.

  • ludzie wgrywają nowe wersje i (o zgrozo) robią bugi (przez to juz np. od 2 tygodni nie mogę przetestować e2e procesu w jednym banku, bo angażuje około 15 systemów i jeszcze nie było dnia żeby w jakimś bug się nie objawił, w jednym naprawią to w drugim zepsują, a to dlatego, że własnie mają tam takiego pielęgnowanego INTa),

No to jest straszne. Kiedyś pracowałem z takimi środowiskami integracyjnymi, na których wszystkie zespoły dłubały jednocześnie, to prawie nigdy nie działało w pełni. Bardzo się cieszę, że tego nie mam teraz.

  • utrzymanie takich INT, DEV kosztuje, a zawsze się okazuje, że może przydać się kolejne (typowo np. na testy wydajnościowe... i co wtedy? w jednej firmie ładnie pisali, że dziś nie wolno korzystać z INT bo testy wydajnościowe :-) , cudo :-) )

U nas właściwie w testach wydajnościowych najlepiej sprawdza się produkcja. Nie dość, że ludzie testują obciążenie, to jeszcze za to płacą. :)

Jak do tej pory jedyni ludzie, którym nigdy te INT, DEVy itd nie przeszkadzały i nie widzieli problemu to byli niemieccy architekci. Nie musieli się w tym grzebać, a z wieży problemów nie widać.
Tak, że tego... tu pisze do somekinda. Jak uważasz, że jest fajnie to może spójrz w dół i zobacz, czy nie siedzisz za wysoko.

Ja jestem zwykłym programistą. Ale teraz mam wrażenie, że to Ty siedzisz za wysoko. Tak wysoko, że nie widzisz nawet literek w moich postach. Ja nic o żadnych INTach i DEVach nie pisałem. Niezależne środowiska dla zespołów są bardzo daleko od scentralizowanych na poziomie całego projektu DEV i INT.

aurel napisał(a):

@somekind no generalnie tak, jak nie widzisz potrzeby, to prawdopodobnie nie potrzebujesz. Jeśli ktoś jednak miałby dzisiaj wybierać, jak rozwiąże dane problemy, to użyłby raczej gotowego narzędzia, zamiast pisać własne. Tym bardziej, że docker jest darmowy, a chmura jednak raczej płatna.

Pełna zgoda, nie warto pisać własnych narzędzi, jeśli już istnieją. Mój pech, że trafiłem do zbyt bogatej firmy, dla której IT jest biznesem, a nie kosztem, a swoje problemy zaczęli rozwiązywać na długo przed powstaniem dockera. :)

edytowany 1x, ostatnio: somekind
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
0
somekind napisał(a):

Ja jestem zwykłym programistą. Ale teraz mam wrażenie, że to Ty siedzisz za wysoko. Tak wysoko, że nie widzisz nawet literek w moich postach. Ja nic o żadnych INTach i DEVach nie pisałem. Niezależne środowiska dla zespołów są bardzo daleko od scentralizowanych na poziomie całego projektu DEV i INT.

Trochę mnie to ciekawi jak to działa. Jak zaleźności od innych zespołów - macie wgrane na swoje środowisko wszystkie systemy od kórych zależycie, z bazami, konfigami itp, i nie jest to oparte o jakieś kontenery?
Jak wygląda instalacja tych innych systemów, zależności itp?
A najbardziej mnie dziwi, że sobie w zespole nie przeszkadzacie, niedawno u jednego klienta musiałem mocno zainwestować w lokalnego DEVa (czyli odpalanie wszystkiego z podłączeniem do serwisów zewntrznych z maszyny developerskiej).

Generalnie 95% prac było możliwe lokalnie (dzięki mockom), w zespole są 3 osoby. I te 5% robione na wspólnym devie robiło konflikty (3 osoby) i przestoje (pechowo wszyscy pracowaliśmy nad branchami rozpierdalatorami, które wymagały sprawdzania faktycznej integracji - robiliśmy rozpoznanie walką, bo w XXI wieku umiejętność dokumentowania serwisów zanikła). Jak usłyszałem tekst tylko nie wrzucaj nic na DEVa.. . to jednak stwierdziłem, że nie... takich rzeczy sobie w XXi wieku nie robimy.

Pełna zgoda, nie warto pisać własnych narzędzi, jeśli już istnieją. Mój pech, że trafiłem do zbyt bogatej firmy, dla której IT jest biznesem, a nie kosztem, a swoje problemy zaczęli rozwiązywać na długo przed powstaniem dockera. :)

O dobrze wiedzieć. Jeśli firma ma zbyt wiele kasy, to ja chętnie przyjmę prawie każdą ilość gotówki i pomogę rozwiązać ten problem, a i sam na tym skorzystam jakoś. Symbioza! Tak, że liczę, że szepniesz słówko gdzie trzeba.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 4x, ostatnio: jarekr000000
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:4 minuty
  • Postów:5107
0

Tego brakowało w tym temacie, że ktoś poruszył faktyczne wady Dockera

jarekr000000 napisał(a):

Żeby nie było, docker rozwiązuje jedne problemy, za to wprowadza tony innych, logi, security, zarządzanie deploymentem. Nagle się okazuje, że potrzebujesz tony kolejnych tooli :-(.
Można tu utkwić w niekończącej się toolizacji :-( Utrzymanie "dockera" też kosztuje, nawet IMO więcej niż typowy DEV, INT i Q raczem wzięte. Dopiero przy większej ilości i tworzonych ad hoc środowisk widać jakiś zysk dla ludzi z infrastuktury. Dla programistów ulga jest dość szybko.

Niestety to co wrzucił Jarek to w sumie pikuś

Why I don't use Docker much anymore

Docker in Production: An Update

Docker in Production: A History of Failure

Bez dodatkowych tooli do orkiestracji typu Kubernetes może być ciekawie :D

edytowany 7x, ostatnio: WeiXiao
Zobacz pozostałe 3 komentarze
WeiXiao
bazy też na dockerze?
jarekr000000
Na pewno tak na początku było, nie wiem jak jest teraz, ale nie słyszałem o problemach. (Btw i to było w roku 2017, początek mniej więcej jak ten blog był robiony).
WeiXiao
@jarekr000000: Powiem tak - nie widziałem jeszcze chyba jakiekolwiek chociaż neutralnej opinii nt. łączenia dockera z bazami produkcyjnymi. Wiele osób twierdzi, że jest to ogromne proszenie się o kłopoty. Google database on docker lub database on docker problems
jarekr000000
@WeiXiao: w zasadzie swego czasu się pisało, że DB nie wolno też stawiać na writualkach. Dziś to dość typowy setup. Prawda jest też taka, że nie mam pojecia co się fizycznie dzieje na produkcjach juz od dawna. O ile pomagam w testowaniu w fazie rozwoju, wiem co się dzieje na środowiskach developerskich i jakoś tam uczestniczę w dyskusjach, to już od dawna problemy osowo/vmowe do mnie nie trafiają. U większości klientów nawet jakby przenieśli sie na AIX to bym pewnie nie wiedział :-( Ale to raczej dobrze - kiedyś wiedziałem - to było smutne.
WeiXiao
@jarekr000000: Jarek, ale wtedy dinozaury chodziły po ziemi :) Oczywistym jest, że po dekadach sprawy ulegną zmianie :P Na Dockera też trzeba poczekać, albo raczej na jakąś konteneryzacje od Google / AWS / MS / Kubernetesa
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Wrocław
0
cmd napisał(a):

Ok masz swoje środowisko testowe zdalne. Załóżmy teraz że próbujesz dodać jakiś nowy serwis do systemu. Weźmy przykład zmiany silnika DB z MySQL na Postgre (przejaskrawiony mocno) I teraz pytanie co robisz?

No ja nic nie robię, od tego są devopsi, ale co zrobią, to mniej więcej:

  1. Przygotują nowe AMI z Postgresem.
  2. Dodadzą do konfiguracji środowiska nowy serwer bazujący na tym AMI.
  3. Puszczą deployment bazy na tę konfigurację.
  4. Teraz pewnie trzeba zmienić connection stringi w serwisach korzystających z nowej bazy.
  5. Jak wszystko jest już przełączone, to można usunąć serwer ze starą bazą.

W żadnym momencie nie ma czegoś takiego, że całe środowisko nie działa ani, że zespół nie może pracować.

Dzisiaj są takie czasy że klienci chcą od nas jak najszybciej dostać produkt.

No, to jest chyba ta główna różnica, ja nie pracuję w software housie, software nie jest naszym produktem. Klienci używają naszego softu, żeby coś od nas kupić.

jarekr000000 napisał(a):

Trochę mnie to ciekawi jak to działa. Jak zaleźności od innych zespołów - macie wgrane na swoje środowisko wszystkie systemy od kórych zależycie, z bazami, konfigami itp, i nie jest to oparte o jakieś kontenery?

Tak.

Jak wygląda instalacja tych innych systemów, zależności itp?

Procesowo wygląda to tak, że co jakiś czas aktualizuje się zależności innych zespołów, albo jeśli to coś ważnego, to zespół odpowiedzialny aktualizuje swój serwis na innych środowiskach.
Technicznie to kliknięcie guzika w TeamCity, a pod spodem skrypty PowerShella, które przez API Amazona konfigurują w razie potrzeby AWS, a potem zbierają artefakty Builda i konfigurację deploymentu i wrzucają binarki na serwer, konfigurując wg potrzeb IIS.

A najbardziej mnie dziwi, że sobie w zespole nie przeszkadzacie, niedawno u jednego klienta musiałem mocno zainwestować w lokalnego DEVa (czyli odpalanie wszystkiego z podłączeniem do serwisów zewntrznych z maszyny developerskiej).

Generalnie 95% prac było możliwe lokalnie (dzięki mockom), w zespole są 3 osoby. I te 5% robione na wspólnym devie robiło konflikty (3 osoby) i przestoje (pechowo wszyscy pracowaliśmy nad branchami rozpierdalatorami, które wymagały sprawdzania faktycznej integracji - robiliśmy rozpoznanie walką, bo w XXI wieku umiejętność dokumentowania serwisów zanikła). Jak usłyszałem tekst tylko nie wrzucaj nic na DEVa.. . to jednak stwierdziłem, że nie... takich rzeczy sobie w XXi wieku nie robimy.

Nie mamy skomplikowanych przepływów biznesowych, w których bierze udział wielu użytkowników, nie mamy np. edycji dokumentów, nie mamy hierarchii użytkowników z setkami ról i delegowaniem uprawnień. My tylko sprzedajemy ziemniaki. :) Pod tym względem biznes jest prosty, bo każdy klient po prostu ma swoje konto, i w ramach niego edytuje adresy, płatności, ma historię zakupów. Ja mam swoje konto do testów, koledzy mają swoje, testy integracyjne swojego.
Problemy się zdarzają jak jakiś tester manualny wpadnie na pomysł testu zmiany hasła użytkownika na tym od testów integracyjnych.

Nie mamy też jakichś wielkich zmian na raz i big bang deploymentów, CD przede wszystkim, więc i branche niezbyt wielkie.

edytowany 1x, ostatnio: somekind
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
2

Nie pracuję u Ciebie, więc nie mam powodu zakładać, że Ci to nie działa jednak dla mnbie jest to bardzo dziwne. Tu nie chodzi o dockera zupełnie. Tylko o brak własnego wyizolowanego środowiska uruchomieniowego aplikacji.
Własnego -w takim sensie, ze można pracować praktycznie 100% niezależnie od wszystkich, najlepiej nawet offline.
Przy wspólnym środowisku - jeśli jakiś inny zespół może jednym klikiem updatować swój serwis na waszym środowisku, to to zrobi. I potem masz jest smutek (chwilę temu to działało).
Czasem robi się debugi. Trudno zrobić debug jak koledzy muszą w tym momencie powstrzymać się od prac.
Czasem się robi profiling.
Czasem się robi jakieś testy wydajnościowe. (Tak wiem, że klienci robią. Byłem też w firmie, że klienci robili beta testy, ale nie każdy może sobie na taki komfort pozwolić. ).
Czasem mamy testy e2e. Jest słabo jak co drugie fajlują, bo akurat ktoś robił update.
Czasem się robi błędy.
Czasem się korzysta z baz danych i schematy się zmieniają. Co wtedy jak np. kolega pracuje juz nad rozszerzonym i zapuści migrację, a ja mam nadal starą wersję? Muszę w środku mojego zadania
przerywać pracę i mergować jego zmiany?


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 3x, ostatnio: jarekr000000
Zobacz pozostały 1 komentarz
jarekr000000
Da się pracować, to wiem, ale oprócz przestojów najgorszym problemem tego setupu jest wywoływanie napięć w zespole. Kolega obiecuje managierowi, że mu pokaże nowy ficzur, a Ty właśnie rypnąłeś sie w skrypcie migracyjnym i wszyscy nazywają sie Katarzyna Świniarska. I takie rzeczy, zwykle co prawda dużo mniejszego kalibru, tydzień w tydzień.
somekind
@somedev, rozumiem, że Ty od 15 lat używasz dockera :P, ale masz błędne wrażenie na mój temat. Ja nie uzywam devopa, do niczego mi nie jest potrzebny. Jak robię nowy mikroserwis, to przygotowuję nową konfigurację, nowe buildy w TC z szablonu i sobie klikam. Potrzebuję tego przeciętnie raz na pół roku, więc nie jest to wielki problem. Nie wiem co w chmurze jest białkowego. :)
somekind
@jarekr000000: rozumiem w pełni Twoje obawy, znam to z autopsji. W poprzednich pracach często tak było. Teraz takie problemy się nie zdarzają. I myślę, że to właśnie dlatego, że nie mamy lokalnych maszyn oraz deva do prezentacji, tylko jedno współne środowisko. W pierwszym układzie lokalnie każdemu działa, a deva wszyscy mają gdzieś, więc wszytko im jedno czy coś tam zepsują przypadkiem czy nie. U nas jak zepsujesz robiąc coś głupiego, to także sobie. To bardzo skuteczny motywator niepsucia.
somedev
@somekind: Nie od 15 lat, ale 15 lat temu pracowałem na środowisku wspólnym dla kilku devów gdzieś na centralnym serwerze. Potem doceniłem pracę w środowisku izolowanym, gdzie to też długa droga była - stawianie systemu na lokalnym komputerze, stawianie VM, a kontenery dopiero od niedawna. No i lipa, że nie da się uruchomić na dockerze procesów Windowsowych o czym pisałem.
somedev
@somekind To, że efekty widać od razu i weryfikuje sie w integracji z resztą to plus. Niemniej gdyby każdy miał swoje środowisko lokalne pozwalało by to szybko weryfikować, czy migracja, patch, cherry-pick (zależy od technologi i sposobu pracy), poprawnie przenosi zmiany już na poziomie instalacji na środowisku testowym. Przerabiałem dwa podejścia i faktycznie odpowiednie są do odpowiedniej specyfiki pracy i technologii.
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Wrocław
0
jarekr000000 napisał(a):

Własnego -w takim sensie, ze można pracować praktycznie 100% niezależnie od wszystkich, najlepiej nawet offline.

Ja nie mam problemu z pracą offline, nie potrzebuję działającego środowiska do pisania kodu, czytania dokumentacji, analizowania.
Wiem, można powiedzieć, że to odbiera mi elastycznosć i wolność, ale w praktyce jakoś tego bardzo nie odczuwam.

Przy wspólnym środowisku - jeśli jakiś inny zespół może jednym klikiem updatować swój serwis na waszym środowisku, to to zrobi. I potem masz jest smutek (chwilę temu to działało).

No tak się nie dzieje, że ktoś nagle, bez uzgodnienia i ostrzeżenia robi jakiś deployment na cudzym środowisku.
Ale fakt, jeśli akurat puszczę testy integracyjne, a gdzieś tam coś jest updatowane, to może pójśc jakiś timeout i testy się wywala. Muszę tylko mieć to szczęście, i akurat puścić je wtedy, gdy gdzieś idzie ten deploy.

Czasem robi się debugi. Trudno zrobić debug jak koledzy muszą w tym momencie powstrzymać się od prac.
Czasem się robi profiling.

Co masz na myśli?
Debuguję i profilulję swój kod w swoim IDE na swoim laptopie, koledzy w tym nie przeszkadzają.

Czasem się robi jakieś testy wydajnościowe. (Tak wiem, że klienci robią. Byłem też w firmie, że klienci robili beta testy, ale nie każdy może sobie na taki komfort pozwolić. ).

Do testów wydajnościowych odpalam np. 1000 requestów jakiegoś tam rodzaju, to trwa ileś minut. Myślę, że to, że ktoś w międzyczasie wyśle jakiś request od siebie na to samo środowisko jakoś bardzo wyników nie zaburza.

Czasem mamy testy e2e. Jest słabo jak co drugie fajlują, bo akurat ktoś robił update.

Na takie pełne e2e wszystkich komponentów jest oddzielne środowisko.

Czasem się korzysta z baz danych i schematy się zmieniają. Co wtedy jak np. kolega pracuje juz nad rozszerzonym i zapuści migrację, a ja mam nadal starą wersję? Muszę w środku mojego zadania
przerywać pracę i mergować jego zmiany?

No to byłby ból. Dobrze, że schematy się nie zmieniają.

somedev
Czyli de facto wygodę i efektywność zapewniasz sobie synchronizacją z zespołem, założeniem, że zawsze jesteś online, oraz niezmiennością bazy? Z doświadczenia wiem, że to wymaga wysiłku i po prostu izolacja powoduje, że te problemy nie istnieją - czy do docker, czy VM na lapku, czy serwisy bezpośrednio na systemie. Docker ułatwia postawienie tego wszystkiego lokalnie nie konfigurując każdej usługi osobno. Żeby docenić dockera należy pracować i konfigurować izolowane środowiska developerskie.
somedev
Zresztą, jeśli schemat się nie zmienia, a DEVovie nie wchodzą sobie w drogę to jest to chyba ewenement na skalę światową, ciesz się ;)
somekind
W poprzednich pracach, gdy musiałem sobie lokalnie instalować masę syfu (jakieś bazy danych, kolejki, rózne dziwne komponenty, jakieś serwisy do łączenia się z zewnętrznymi zależnościami) to był ból i strata czasu, nie chciałbym tego powtarzać. Teraz po prostu tego nie mam, więc jestem szczęśliwy. Ściągam źródła projektu, kompiluję, uruchamiam, działa. No, a schemat się nie zmienia od dawna, bo firma już od dawna istnieje i działa, a towar się nie zmienia.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
2

No, a schemat się nie zmienia od dawna, bo firma już od dawna istnieje i działa, a towar się nie zmienia. - @somekind 10 minut temu

Dało mi to do myślenia.
Siedzę teraz w firmie, która działa od (prawie) połowy XIX wieku. Ciągle zmieniają schematy:-( Nie wiem, czy nie powinienem zasugerować, żeby się wreszcie ustatkowali i na coś zdecydowali. 160 lat - chyba już mieli dość czasu? Ile to u was trwało?


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 3x, ostatnio: jarekr000000
somekind
Firma ma z 20, baza się nie zmienia od jakichś 10. Trudno mi stwierdzić, bo tak długo tam nie pracuję. Nawet jeśli były jakies zmiany, to na pewno tylko addytywne i trzymające wsteczną kompatybilność. A jakaś nowa logika ma swoje własne źródła danych, niekoniecznie nawet bazy.
aurel
To raczej baza się nie zmienia dlatego, że jest młoda, a nie dlatego, że jest stara :D Moja główna baza powstała jakieś 30 lat temu. Wystarczy sobie wyobrazić, jak wtedy wyglądały technologie, żeby zrozumieć, dlaczego zmiany musiały być... Jeszcze 10 lat temu część danych dostawałam na płytkach z plikami CSV xD
somekind
Może i jest młoda, nie mi oceniać wiek kobiety. ;) Ale się nie zmienia. Nowe mikroserwisy jeśli potrzebuja gdzies trzymać jakieś dodatkowe dane, to mają swoje miejsca na to. Stara baza też kiedyś zostanie zlikwidowana.
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)