JAVA, PHP czy Node.js

JAVA, PHP czy Node.js
Mossar
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 10 lat
  • Postów:74
0

Witam, od jakiegoś czasu zajmuję sie tylko i wyłącznie frontendem. Powoli zacząłby mi się przydawać chociażby podstawowy backend. Jeśli chodzi o backend to moja wiedza jest tylko taka, że w miarę ogarniam SQLa, robiłem najbardziej podstawową obsługę GET i POST w Javie (jako zadanie na uczelni, prosta obsługa formularza i model wykonuje jakieś obliczenia na podanych danych).

No i teraz nie chciałbym uczyć się czegoś niepotrzebnego. Z tego co widzę ostatnio ogromną popularność zyskuje node.js, ale wiem też, że niewiele hostingów (przynajmniej polskich) obsługuje node'a. Jave umiem o tyle o ile, nie należy ona do moich ulubionych języków, no ale powiedzmy, że mógłbym przysiąść bardziej gdyby się okazało, że jest najlepszym wyjściem z tej trójki. No i PHP, o którym słyszałem tyle skrajnych opinii że masakra. Czy nauka node.js, który ma zdecydowanie inną logikę niż np. PHP ma sens, jeśli w moim przypadku server-side'owe umiejetności są na naprawdę niskim poziomie.


TU
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 8 lat
  • Postów:26
0
Mossar napisał(a):

robiłem najbardziej podstawową obsługę GET i POST w Javie

Java!=JavaScript

Wydaje mi się, że nauka PHP jest ważniejszym elementem, bo to fundament działania strony internetowej. JS zawsze można wyłączyć w przeglądarce i wtedy bach... :)

Zobacz pozostałe 22 komentarze
TU
Przypomnę, że dyskusja była jednak na inny temat. Może skończmy po prostu temat?
hauleth
g**no a nie PHP. Mało kto się przejmuje IE starszym niż 8 (więc HTML 5 jak najbardziej pasuje). O JSie pisałem wyżej. Wszystko sprowadza się do tego, że dane trzeba też walidować po stronie serwera (o ile mamy backend). A po stronie serwera nie musi być PHP (które jak pisałem wyżej - ssie po same kule). Więc twoje stwierdzenie, że PHP to podstawa można o kant d**y. Piszę aplikacje internetowe od dłuższego już czasu i od czasów gimnazjum nie tykam się PHP. Więcej, uważam go za jeden z najgorszych języków programowania jakie istnieją.
n0name_l
@turson Moze po prostu zrozum, ze smieszne jest porownywane js client-side z php server-side i mowienie, ze php jest lepszy bo nikt walidacji nie wylaczy ;D
TU
Kompletnie się nie rozumiemy :)
hauleth
@turson albo nie potrafisz się porządnie wysłowić. Osobiście widziałem parę aplikacji, które wcale nie miały BE. Wtedy cała twoja teoria o PHP leży i kwiczy.
Mossar
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 10 lat
  • Postów:74
0
turson napisał(a):
Mossar napisał(a):

robiłem najbardziej podstawową obsługę GET i POST w Javie

Java!=JavaScript

No bez przesady, chyba nie myślałeś, że mylę te dwa pojecia. Tak jak pisałem, używałem HTTP Servleta w Javie z Glassfishem do obsługi GET i POST.

Wydaje mi się, że nauka PHP jest ważniejszym elementem, bo to fundament działania strony internetowej. JS zawsze można wyłączyć w przeglądarce i wtedy bach... :)

No właśnie w związku z możliwością wyłaczenia JS, użycia jakiś NoScriptów, etc. Dlatego też zastanawiał mnie sens używania Node.js.


edytowany 2x, ostatnio: Mossar
TU
niektórzy mylą dlatego zapobiegawczo tak napisałem :P jak zacząłeś pisać w javie aplikacje webowe to ja bym w tym kierunku się rozwijał
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:14 minut
3

Node.js działa po stronie serwera, więc skutek wyłączenia JS w przeglądarce byłby taki sam jak przy każdej innej technologii backendowej.

Moim zdaniem, zamiast babrać się w PHP i/ lub generowanie HTMLa na serwerze, idź od razu w RESTa oraz we frontend w frameworku JavaScriptowym. Backend możesz np zaklepać w Javie i Pythonie, żeby sobie poćwiczyć łączenie różnych technologii :]


"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.
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:3 dni
3

Podstawowym pytaniem jest jakie języki znasz najlepiej. Wolisz JavaScript, Javę, Pythona, Rubiego, Perla, czy co tam chcesz? Jak bardzo jesteś oblatany w tych językach. Mówisz, że pisałeś FE - czyli znasz dobrze JavaScript. Jeśli tak to Node.js. Jeśli zajmowałeś się bardziej webmasteringiem (czyli HTML + CSS) to warto zacząć od nauczenia się właśnie JSa i RESTa od strony przeglądarki (możesz też spróbować od razu jakiegoś Backbone, Ember, Angular). Potem spróbować również sił w BE, a tam masz całą kawalkadę języków i technologii:

  • Ruby - Rails lub Sinatra
  • JavaScript (Node.js) - Meteor i co tam jeszcze jest
  • Java/Scala - JSP, Spring, Play
  • Groovy - Grails
  • Python - Pylons, Django
  • .NET - ASP.NET
  • PHP - Zend, nie wiem co tam jeszcze się używa

Ogólnie hostingiem na razie się nie przejmuj. Na czas nauki nie potrzebujesz żadnego hostingu, a jak już będziesz miał co hostować to nie będzie miało znaczenia czy jest to hosting w Polsce czy za granicą. A za granicą masz całe multum hostingów/SaaS'ów/PaaS'ów i IaaS'ów do użycia:

  • Windows Azure
  • Google App Engine
  • Amazon EC2
  • Heroku
  • Rackspace
  • AppFog
  • i dużo dużo innych

Część z nich możesz uzyskać nawet ze zniżką lub za darmo na pewien okres czasu lub do pewnej ilości zasobów.

tl;dr
Przejrzyj sobie co jest dostępne i wybierz z tego. Nie ma praktycznie złych wyborów (choć ja za taki uważam PHP).


Mossar
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 10 lat
  • Postów:74
0
winerfresh napisał(a):

Podstawowym pytaniem jest jakie języki znasz najlepiej.

Dość długi okres czasu pisałem m.in. gry 2d w C++, z C++ przeszedłem powoli na C#, ale nie mogę powiedzieć, że C# znam, bo niewiele w nim robiłem. Z konkretów jedynie aplikacja winformsowa do wyostrzania bitmapy przy użyciu bliboteki asemblerowej. Jave zacząłem ogarniać w tym semestrze z racji tego, że mamy taki przedmiot, ale nie jestem fanem tego języka. JavaScriptu kiedyś nienawidziłem, składnia i logika wydawała mi się strasznie ciężka, ale od czasu kiedy używam go częściej, zaczynam go lubić i rozumieć. Dlatego też myślałem o Node i prawdopodobnie nawet jak będę robić w czym innym to chętnie poznam node.js. Jeśli chodzi o Ruby, Pythona czy PHP to moja wiedza jest całkowicie zerowa.

Jeśli zajmowałeś się bardziej webmasteringiem (czyli HTML + CSS) to warto zacząć od nauczenia się właśnie JSa i RESTa od strony przeglądarki (możesz też spróbować od razu jakiegoś Backbone, Ember, Angular).

A mógłbyś przybliżyć trochę tego RESTa, jak to w praktyce wygląda? Bo z tego co czytam to jest to wzorzec, ale niestety pierwszy raz się spotykam z tym.

  • JavaScript (Node.js) - Meteor i co tam jeszcze jest
  • Java - JSP, Spring, Play
  • .NET - ASP.NET

Właściwie to to są trzy możliwe wybory w mojej sytuacji. Poczytam więcej o nich i zastanowie się dokładnie co wybrać.


edytowany 1x, ostatnio: Mossar
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:3 dni
1

REST (eng. REpresentational State Transfer) to jest wzorzec architektoniczny, który używa czasowników HTTP do określania akcji wykonywanych na obiektach. Używa on CRUD by określić jaka ma być akcja, a URL jest identyfikatorem obiektu. Dzięki temu jesteśmy w stanie zapewnić API przez ten sam interface przez jaki udostępniamy standardowe widoki. I. e. adres /users/trevor odpowiada za jakiegoś użytkownika - przy pomocy zapytania GET możemy dostać informacje o nim takie jak imię, nazwisko, etc. Przy pomocy zapytania PUT aktualizujemy dane tego użytkownika, a zapytaniem DELETE usuwamy go. W ten sposób rozwiązujemy 2 problemy - prefetchingu oraz API.

Jeśli używałeś coś Javy to może Ci się kojarzyć coś jak SOAP. REST jest znacznie lżejszą i bardziej logiczną wersją Web Services. Do poczytania: http://rest.elkstein.org/2008/02/what-is-rest.html (jest trochę przestarzałe, ale podstawy ogarniesz).

Poza tym zalecam naukę JSa bez jQuery. Naucz się manipulować DOMem przy pomocy "surowych" funkcji, jak document.querySelector[All], przy pomocy podstawowych elementów DOM (https://developer.mozilla.org/en-US/docs/DOM/DOM_Reference). Dzięki HTML 5 jest to niewiele trudniejsze niż używając jQuery, a na pewno ogarniesz więcej.


edytowany 1x, ostatnio: hauleth
Mossar
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 10 lat
  • Postów:74
0
winerfresh napisał(a):

Poza tym zalecam naukę JSa bez jQuery. Naucz się manipulować DOMem przy pomocy "surowych" funkcji, jak document.querySelector[All], przy pomocy podstawowych elementów DOM (https://developer.mozilla.org/en-US/docs/DOM/DOM_Reference). Dzięki HTML 5 jest to niewiele trudniejsze niż używając jQuery, a na pewno ogarniesz więcej.

Czytałem ostatnio jeden z wpisów Ferrante o jQuery o tym, że w wielu przypadkach lepiej korzystać z czystego JSa. Ale nie zaczynałem JSa od jQuery wbrew pozorom, do pierdółek wizualnych dotyczących pojedynczego elementu wykorzystuje JQuery (lub jeśli się da CSS3), ale gdy kod dotyczy większej ilości odwołań do elementów DOM to już staram się stosować JS bez frameworków.

Dziękuje bardzo za rozbudowane odpowiedzi :)


hauleth
99% podstawowych animacji da się uzyskać bez jQuery. Co innego z grami czy innymi takimi (ale wtedy jQUery jest za słabe).
Mossar
Ja sobie zdaje sprawę z tego i na pewno wiecej to daje jeśli chodzi o poznanie języka. Ale w niektórych przypadkach różnica między użyciem funkcji jQuery a czystego JSa jest po prostu pomijalna, co innego gdy się robi w tym JSie coś poważniejszego. Co nie zmienia faktu, że więcej bym się nauczył gdybym się starał wszystko bez jQuery robić.
hauleth
Poważniejsze rzeczy też da się zrobić bez jQuery. Przydatne biblioteki to np. Mustache czy Lazy.js, które znacznie upraszczają pewne rzeczy. jQuery jako manipulator DOM już jest IMHO passe.
Mossar
Ja właśnie miałem na myśli, żeby poważniejsze rzeczy robić czystym JSem. A co do mustache i lazy to jeszcze nie ogarniałem tego, ale chętnie sprawdzę.
Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 miesięcy
0

Do node.js próbowałem podejść kilka razy, jeśli masz projekt > 100 linijek to robi się gehenna, milionowy poziom zagnieżdżenia callbacków i w ogóle. To się nie nadaje do tworzenia czegoś innego niż nieskomplikowane aplikacje do zadań specjalnych.


Women were the reason I became a monk - and, ah, the reason I switched back...
hauleth
Poczytaj o promises.
somekind
Solić promisy, jest przecież async.waterfall. Ale nodejs ssie i tak.
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)