Monday, 20 November 2017

Przeprowadzka średnio dobra lub zła


Cześć, I8217m Leo. Jestem hybrydowym programistą, projektantem, sprzedawcą i przedsiębiorcą. Jestem dyrektorem generalnym Ballistiq. firma projektująca i rozwijająca oprogramowanie internetowe. Nieco więcej o mnie gtgt Ballistiq Web Development Poszukuje zaufanego, opartego na Ameryce Północnej, zespołu zajmującego się tworzeniem stron internetowych, który ma świetną historię, Ballistiq zapewnia indywidualne usługi projektowania i rozwoju. Zbudowaliśmy witryny i aplikacje dla najlepszych firm, w tym Autodesk, NVIDIA, Gnomon School of Visual Effects, Allegorithmic, Luxion i inne. Kategorie Ruby on Rails vs PHP 8211 Dobra, zła Uwaga 8211 Ten artykuł został napisany w 2017 roku. I8217ve dodał załącznik, aby zaktualizować artykuł o najnowsze myśli w dniu 30 maja 2017 r. Na dole. I8217 rozwijałem się z PHP od wersji 2 (bardzo dawno temu). Chciałem dostać się do Ruby on Rails i grałem z nim od wersji 1, ale nigdy nie miałem okazji naprawdę wykorzystać go w produkcji poważnie, aż do ubiegłego roku z Ballistiq. Od tego czasu I8217m koduje teraz 8020 Ruby na Railsach i PHP, więc będę mógł podzielić się z nimi swoją opinią. W czasie pisania wersji, o których będzie mowa I8217, będą PHP 5.3PHP 5.4 i Ruby on Rails 3.2 (uruchomione na Ruby 1.9.3). Kontekst tego postu jest porównaniem dwóch specjalnie dla rozwoju sieci. Aren8217 porównywanie jabłek z pomarańczami Rails to framework dla Ruby. PHP jest językiem i ma wiele frameworków. To, co głównie porównuję, to moje doświadczenia związane z obydwoma ekosystemami: framework PHP (jest ich wiele) vs Ruby Rails (dominujący framework). Podczas gdy niektórzy mogą się odwiesić, próbując porównać te dwa i mogą odeprzeć tytuł artykułu, jest to uzasadnione pytanie, o które prosi wielu programistów. Wielu programistów chce wiedzieć, jakie są zalety obu ekosystemów i naprawdę chcą tylko jednoznacznej odpowiedzi. Od popularności artykułu przez Google, to jest coś, o co pytają dziesiątki tysięcy ludzi. Isn8217t to tylko preferencja Tak i nie. Zarówno ekosystem PHP, jak i Ruby są bardzo wydajne. W wielu przypadkach tak, możesz po prostu sprowadzić to do preferencji. Jest jednak wiele mocnych stron dla obu stron, które są przydatne, aby móc je porównywać na równym poziomie. Nie jestem religijnie związany z takim czy innym. I8217ve użył obu. Moja firma współpracuje z obydwoma. Obaj są tutaj, aby pozostać i odgrywać ważne role w globalnej branży tworzenia stron internetowych. PHP 8211 Dobra prostota i krzywa uczenia się Co naprawdę podoba mi się w PHP to jego prostota i stosunkowo płytka krzywa uczenia się. Po pierwszym przejściu do PHP wystarczy pojedyncza strona HTML. Zmień rozszerzenie na. php. Wrzuć tutaj kod ltphp gt gt wbudowany PHP, uruchom go na serwerze sieciowym PHP i gotowe. It8217s naprawdę nie jest proste dla kogoś całkowicie świeżego, aby uzyskać coś użytecznego zrobione i wdrożone w ciągu kilku minut. Jest to jedna z mocnych stron PHP i dlaczego jest tak popularna wśród 8212 projektantów i nie-programistów, którzy mogą od razu zacząć produkować. Ta prostota wiąże się jednak z kosztem. Jest mieczem obosiecznym, ponieważ prowadzi do wielu niechlujnych, niemożliwych do opanowania kodów. To prowadzi ludzi do korzystania z frameworków, które wymuszają określony standard kodowania. Zaletą prostoty i płytkiej krzywej uczenia się PHP8217 jest naprawdę duża rzecz, która przynosi korzyści biznesowe: łatwiej znaleźć osoby, które znają PHP. Jeśli się rozejrzeć, twórcy Ruby on Rails są drożsi i trudniej znaleźć. Dobrzy programiści, którzy naprawdę znają Ruby i Rails (L33T), są bardziej hardcorowymi programistami. Dokumentacja dla PHP jest również fantastyczna. Uważam, że dokumenty dla PHP są znacznie bardziej użyteczne niż te dla Ruby i Rails Guides. Komentarze użytkowników naprawdę pomagają, a istnieje wiele przykładów kodu, który pokazuje, jak rozwiązać typowe problemy. It8217s Made For The Web Jedną z wielkich zalet PHP jest to, że koncentruje się całkowicie na Internecie. It8217 nie jest językiem programowania ogólnego, takim jak Ruby (lub PythonJavaCPerletc.). Wiele wbudowanych funkcji jest specyficznych dla rozwiązywania problemów z siecią, co sprawia, że ​​jest to bardzo prosty język do programowania w Internecie. Na przykład. jeśli chcesz wysłać nagłówek do przeglądarki, użyj funkcji header (). Skrót MD5 lub SHA1 to po prostu md5 () i sha1 (). Nie jest to proste z RubyRails, ponieważ musisz załadować biblioteki i użyć namespacesmodules, aby uzyskać te same funkcje. Lot8217s of Resources PHP ma do dyspozycji mnóstwo zasobów, frameworków, aplikacji i bibliotek. Od CMS8217, takich jak WordPress i Drupal, po frameworki takie jak Symfony i biblioteki takie jak Doctrine, PHP ma naprawdę wiele dobrych zasobów. Jeśli chodzi o wdrożenie prostego systemu CMS, prawie zawsze domyślnie używam WordPress zamiast budować dla niego aplikację Rails. Po prostu uważam, że to znacznie prostsze rozwiązanie. Dead Simple to Deploy Wdrażanie PHP jest proste. Najprościej, po prostu FTP pliki do serwera WWW (który my w Ballistiq nigdy nie 8211 możemy wdrożyć przy użyciu Git). Chodzi o to, że z PHP nie musisz się martwić o stos sieciowy. Wiele usług hostingowych po prostu używa środowiska LAMP (Linux, Apache, MySQL, PHP), więc dopóki pliki są na miejscu, po prostu działają i to jest. Nawet używanie frameworka takiego jak CodeIgniter jest stosunkowo proste, ponieważ nigdy nie będziesz musiał używać wiersza poleceń 8212, wystarczy skopiować cały katalog framework na serwer i uruchomić. To jest to. PHP 8211 Zła jego ewolucja doprowadziła do wielu złych kodowań Nie jest to bezpośrednia luka w funkcjonalności PHP, ale jest wynikiem lat i lat budowania na bazie prostego języka skryptowego, który był specyficzny dla rozwiązywania prostych problemów z siecią. PHP nie zawsze było zorientowane obiektowo. Nawet jeśli wspierało OOP, przez lata nie było tak naprawdę OOP (brakuje ważnych funkcji, takich jak metody statyczne), więc programiści radzili sobie z problemami za pomocą wszelkiego rodzaju shenaniganów, takich jak używanie zmiennych globalnych lub ustawianie zmiennej lokalnej za pomocą globalnego wskaźnika odniesienia. Na przykład. Typowy kod przed PHP5 To tylko kilka przykładów, ale jest ich więcej, niż to, do których się nie zwracam. To niefortunne, ale jest tylko jednym z efektów ubocznych pracy z językiem, który szybko ewoluował. Jedną z rzeczy, która doprowadza nas do szaleństwa w Ballistiq, jest realizacja projektów, w których musimy uaktualniać lub utrzymywać aplikacje napisane starą wersją PHP. Tak jest w przypadku jednego z naszych największych projektów, w którym staramy się uaktualnić dużą aplikację napisaną w kodzie PHP4 i jest ona przerażająca. Jest dużo niechlujnego kodu, z którym musimy pracować. Lepsze standardy kodowania prowadzą do naprawdę purystycznego kodu Jak wspomniano powyżej, niechlujny kod nie jest wrodzoną wadą funkcji PHP. Jest tak, jak ludzie używali tego języka. W miarę jak popularność PHP stała się coraz popularniejsza, producenci wywarli duży wpływ na programistów, którzy stosują naprawdę purystyczne podejście do programowania. Kiedy idziesz na konferencje i słuchasz tych ekspertów PHP, mówiących o najlepszych praktykach, PHP nie jest już zabawą w programowanie. You8217 prawie patrzysz na program Java. Klasy jawnie deklarują przestrzenie nazw, importują przestrzenie nazw, jawne metody pobierające i ustawiające, jawną deklarację metod publicprivate itd. Kod staje się niezwykle szczegółowy. Teraz Jeśli chcesz zobaczyć strukturę, która ma bardziej purystyczne podejście do rzeczy, sprawdź Symfony. It8217 to świetna platforma PHP, która jest gotowa do użycia na poziomie przedsiębiorstwa, ale z punktu widzenia programowania uważam ją za nużącą. Ruby on Rails 8211 The Good Mature Framework Im więcej rozwijam w Rails, tym bardziej doceniam i kocham to. I8217ve stwierdził, że pozwala nam tworzyć produkty o wyższej jakości dla klientów o wiele szybciej, które są łatwiejsze w utrzymaniu. Jest to dojrzałe i stabilne środowisko, w którym wiele dużych firm czuje się komfortowo wprowadzając do swoich środowisk. Porównaj to z ekosystemem PHP, który ma wiele ram 8212 tam jest ryzyko wyboru struktury i stwierdzenia, że ​​to nie jest tak dobrze obsługiwane kilka lat od teraz (popełniliśmy ten błąd). Szybkość i rozwój Radość Bardzo podoba mi się praca z Railsami, ponieważ jako platforma programistyczna jest bardzo zautomatyzowana. Tak wiele zadań pomocniczych zostało zautomatyzowanych, aby skupić się wyłącznie na rozwiązywaniu problemu biznesowego, zamiast hackować się po strukturze. Niektóre rzeczy, które naprawdę podchodzą do Railsów w tym względzie to: GeneratorsScaffolding 8211 Zapewniają bardzo dobry punkt wyjścia do rozwoju. Niektóre frameworki PHP udostępniają teraz funkcje rusztowania. GemsPlugins 8211 Społeczność Railsów oferuje bogactwo wtyczek jako klejnotów Ruby, które po prostu dodajesz do swojego projektu Gemfile i instalujesz. To znacznie przyspiesza czas tworzenia i konserwacji, ponieważ nie próbujesz zintegrować różnych bibliotek, już to zrobione. Aktywny rekord ORM 8211 Z wszystkich ORM8217 używanych przeze mnie (dla PHP I8217ve używane DataMapper DMZ, FuelKohana, Doctrine), ActiveRecord w Ruby on Rails jest po prostu najlepszy. To działa i jest niezwykle proste w użyciu. Zintegrowane narzędzia testujące 8211 Cieszę się, że poza bramką, Rails ma framework testowy, który może być użyty. W PHP wiele frameworków dopiero niedawno próbowało zintegrować PHPUnit z różnym stopniem sukcesu. Jako język programowania Ruby jest naprawdę niesamowitym językiem. W przeciwieństwie do PHP, to naprawdę jest Object Oriented od podstaw. Jego kod jest bardzo zwięzły i potężny. Klejnoty (rozszerzenia) umożliwiają przymocowanie potrzebnej funkcjonalności. Po napisaniu kodu w Ruby, stwierdzam, że kodowanie w PHP (lub cokolwiek innego naprawdę) jest dość nudne. Ruby on Rails 8211 Krzywa Bad Steep Learning Moja główna wołowina z Ruby on Rails polega na tym, że ma bardzo stromą krzywą uczenia się. Nie wierz w hype, który mówi, że to naprawdę łatwe. Pokaże Ci podcasty, w których tworzysz prostą aplikację blogową za pomocą Rusztowania i strony Voila Instant. Nic nie może być dalej od prawdy. Railsy uważane są za łatwe, ponieważ zautomatyzowały wiele rzeczy w ramach 8212, co nie ułatwia zrozumienia. Opracowanie aplikacji Rails i jej wdrożenie wymaga znajomości pełnego stosu. W PHP możesz po prostu połączyć kilka wbudowanych kodów PHP, przesłać je FTP na serwer i gotowe. W Railsach naprawdę musisz wiedzieć, co robisz z serwera WWW (Apache lub NginX), konfigurując Phusion Passenger i silnik bazy danych. Następnie musisz uporać się z procesem potoku aktywów, aby przygotować aplikację do uruchomienia w trybie produkcji. It8217 nie jest tak proste, jak uruchomienie go w trybie produkcyjnym 8212, musisz wstępnie skompilować swoje zasoby i upewnić się, że pliki rzeczywiście tam są. Jeśli tak nie jest, Railsy po prostu wysadzą się w powietrze i musisz dowiedzieć się dlaczego, logując się do logów Rails. W porównaniu do PHP, Rails jest również nieprzyjazny, jeśli chodzi o błędy. W PHP, będzie wypluwał błędy podczas projektowania, a komunikaty o błędach mają sens. Zazwyczaj strona będzie renderować, ale część z błędem pokaże, w którym wierszu wystąpił błąd, a wiadomość jest przydatna. W Railsach zazwyczaj cała aplikacja ulega awarii. Ostatnią rzeczą, na którą warto zwrócić uwagę, jest to, że dobrzy deweloperzy Ruby on Rails wydają się być poliglotami. Są w stanie odbierać i uczyć się wielu języków. Podczas gdy początkujący walczą, aby nauczyć się Rubiego, ludzie z Railsów używają CoffeeScript zamiast Javascript, SCSS (lub LESS) i Slim lub HAML. Dla nowicjuszy w Railsach część stromej krzywej to nie tylko uczenie się frameworka Ruby i Rails, ale wszystkie te inne języki, jak również Ruby, nie jest łatwym językiem I8217m jest przykro obrażać niektórych ludzi, ale Ruby nie jest tak proste jak PHP do nauki. Jest to z całą pewnością niezwykle potężny język. Wybieram używanie Ruby po prostu dlatego, że jako programista czuję, że jest to o wiele lepszy język niż PHP. Ale z perspektywy uczenia się tak nie jest. Ruby ma wiele funkcji, które nie są proste dla początkującego programisty. Jedną z takich koncepcji są bloki, proc i lambdy, które Railsy używają mocno. Klasyczny przykład Ruby on Rails, którego użyję, jest do stworzenia formularza: Jeśli jesteś nowy w Ruby, możesz otrzymać wybaczenie za powiedzenie, 8220 Poczekaj minutę8230.what8217s f8221 Tak, proszę pana. Witamy w blokach. Oto nieco skrajny przykład: Nawet jako doświadczony programista, przeszedłem crosseyed, widząc powyższy wiersz kodu. It8217s bardzo proste w rzeczywistości 8211 generują losowy ciąg 8 znaków. Kolejnym obszarem jest meta-programowanie. Oto przykład: I8217ve nauczył Ruby on Rails dla doświadczonych programistów i to zawsze je wywołuje. Czym dokładnie jest hasone. hasmany i hasandbelongstomany. Wygląda na to, że to jakieś zastrzeżone słowo kluczowe lub deklaracja, ponieważ nie są one enkapsulowane w metodzie. Jednak w Ruby wykonywany jest WSZYSTKIE kody. Każda linia kodu jest wykonywana, więc hasone. hasmany i hasandbelongstomany są po prostu metodami, które są wykonywane, gdy klasa jest zadeklarowana. Ostatnią rzeczą, która sprawia, że ​​Ruby stanowi wyzwanie dla początkujących, jest luźna składnia. Let8217 ponownie przyjrzyj się powyższemu kodowi. It8217 nie jest oczywiste (dla początkującego), że hasone: adres wywołuje metodę, ponieważ w wywołaniu metody brakuje nawiasów. W PHP składnia jest bardziej restrykcyjna, co sprawia, że ​​początkującym łatwiej jest wiedzieć, co. Jako język, szczególnie jeśli przychodzisz od innych, takich jak CJavaPHP, Ruby jest trudnym zadaniem, a to pochyli twój umysł. Gdy już się uruchomisz, to jest fantastyczne i wielu, którzy podjęli ten skok, naprawdę lubię kodować za jego pomocą. Wniosek Z tego wszystkiego, co wnioskuję, że PHP jest bardziej przyjaznym punktem wyjścia do tworzenia stron internetowych niż RubyRails. Jest to łatwiejsze, dostępnych jest więcej zasobów i można szybko uzyskać wyniki. Mimo to osobiście lubię pracować z Ruby i Railsami bardziej niż PHP. Z wielu powodów opisanych w tym artykule, po prostu czuję, że ekosystem Ruby oferuje lepszy zestaw narzędzi do tworzenia aplikacji. Szanuję, że zagorzali fani PHP nie czują się tak dobrze, jak w 8211. Moja opinia powstała z pracy z językami i ekosystemami w produkcji. Od czasu przejścia na Rails, I8217 nigdy nie odczuwałem silnej potrzeby powrotu do programowania w PHP, więc wszystkie moje nowe projekty to RubyRails. W Ballistiq. rozwijamy się w obu. Jeśli projekt klienta ma już istniejący kod PHP i my go rozwijamy, wymagając integracji na poziomie oprogramowania, pozostajemy w PHP. Jeśli klient potrzebuje zupełnie nowej aplikacji lub budujemy naszą własną aplikację, użyj Railsów. Dodatek 8211 30 maja 2017 r. Wow it8217s już dawno temu napisałem i nadal jest to bardzo wysoko oceniany artykuł na temat Google, który przyciąga duży ruch. Ponieważ technologia rozwija się w tak zawrotnym tempie, chciałem zaktualizować ten artykuł o kilka nowych myśli. PHP ma długą historię od czasu, gdy napisałem ten artykuł Kiedy napisałem ten artykuł, PHP był w fazie przejściowej, ponieważ wielu ludzi wciąż używało PHP 4 i próbowało migrować do wersji 5. Symfony 2 nie zostało jeszcze wydane, a Laravel nie była wielką rzeczą. W tej chwili PHP ma nieco renesansu. Oto kilka świetnych technologii, które naprawdę sprawiają, że PHP błyszczy: Laravel 8211 Laravel, jako framework, wygląda naprawdę znakomicie i wielu ludzi z PHP wybrało go jako swoją ramkę z wyboru. Nie mogę się za to zabrać, ponieważ nie wykorzystałem go do produkcji. Ale wygląda dobrze. Composer 8211 Composer jest dla PHP tym, czym RubyGems Bundler ma Ruby. Zajmuje się zarządzaniem pakietami, które nie są do niczego. Przez lata społeczność PHP musiała radzić sobie z Pearsem, który tak naprawdę nie zyskał większej trakcji. Serwer sieciowy w języku 8211 Najdłużej, rozwijając się z PHP na komputerze, trzeba było polegać na zewnętrznym serwerze WWW, takim jak Apache. Wielu deweloperów zainstalowało MAMP. Począwszy od wersji 5.4 PHP, PHP ma teraz własny serwer sieciowy z wiersza poleceń, a tak naprawdę bardzo łatwo można go uruchomić. Teraz nie wszystko działa z serwerem sieciowym wiersza poleceń (miałem problem z uruchomieniem WordPressa), ale jeśli rozwijasz się przy pomocy frameworka, który to wspiera, to jest o wiele ładniejszy i bezpieczniejszy sposób rozwoju. Codeception 8211 Jeden z członków naszego zespołu w Ballistiq bardzo miło porozmawiał o ramie testowej o nazwie Codeception i muszę powiedzieć, że wygląda na przyzwoitą, wspierając takie testy jak Selenium i BDD. HHVM 8211 Projekt opensource prowadzony przez Facebooka, pobiera PHP i kompiluje go do kodu bajtowego, który z kolei zostaje przetłumaczony na kod maszynowy x64 i działa bardzo szybko. Jest to bardzo interesujący projekt, który sprawia, że ​​PHP jest wysoce wydajne i skalowalne. Tak więc PHP wkrótce zniknie. Wiele osób korzysta z niego i dobrze go wykorzystuje. Jednak ja (i wielu inżynierów internetowych) ruszyliśmy dalej. Jako inżynierowie, we8217 włamiemy się do wszystkiego, co jest potrzebne do wykonania zadania, jednak z wyboru nie będę mógł rozpocząć nowego projektu w PHP. Dlaczego uważam, że są ciekawsze rozwiązania, na które warto spojrzeć. Dlaczego nadal uwielbiam Rails jako framework i Ruby jako język Jak wspomniałem w 2017 roku, bardzo mi się podobała praca z Ruby i Rails. Pomimo stromej krzywej uczenia się, po chwili trafiłem w rowek, a teraz aplikacje, które dostarczamy są tak dobre, że nie wyobrażam sobie powrotu. Here8217s niektóre rzeczy idą na RubyRails, które naprawdę sprawiają, że jest to tak silny wybór: Gems 8211 Kiedy zacząłem kodować w Ruby, Gems zdezorientowały mnie bardziej niż pomogły, ponieważ było ich za dużo 8216magic8217. Kiedy dowiedziałem się, że możesz (i powinieneś) po prostu przeczytać kod źródłowy klejnotów, wszystko stało się o wiele bardziej sensowne. Ze względu na możliwość łączenia klejnotów i standardów community8217s klejnoty mogą bardzo szybko nadać aplikacji olbrzymią ilość funkcji. Kilka klejnotów, którymi nie mogę żyć bez: Devise (uwierzytelnianie 8211 obsługuje logowanie użytkownika, społeczne wpisywanie się, zapomnieć o przepływie pracy z hasłami i wiele więcej), Paperclip (przesyłanie plików 8211 nawet obsługuje przesyłanie do S3, pobieranie przycinania obrazu), Simple Form sprawia, że ​​formularze są niezwykle proste standaryzować i renderować na stronach internetowych. Montowane silniki 8211 Zrobiliśmy gigantyczny projekt dla firmy z listy Fortune 500, gdzie po zbudowaniu początkowej aplikacji było tak skuteczne, że inne działy chciały tej samej aplikacji, ale z nieco inną funkcjonalnością i innym interfejsem użytkownika. Zamiast kopiować aplikację i obsługiwać kilka baz kodów, byliśmy w stanie wydobyć większość podstawowych funkcji do silnika montowanego w Railsach i dosłownie mieć jedną bazę kodów, ale kilka stron internetowych. Klient był absolutnie zachwycony tym i to była dla nas ogromna wygrana. Skalowanie 8211 Railsy mają piętno braku możliwości skalowania i odnoszą się do Twitter Railsów. Nie znaleźliśmy żadnych problemów skalowania z Railsami i mamy aplikacje, które działają z milionami odsłon stron i setkami tysięcy użytkowników każdego miesiąca. Faktem jest, że większość z was nigdy nie będzie miała problemów z skalowaniem, które miał Twitter. W rzeczywistości, łatwiej było skalować za pomocą Railsów niż z PHP. Jak przede wszystkim Railsy wspierają buforowanie po wyjęciu z pudełka. Użytkownik może przeglądać buforowanie fragmentów w kodzie aplikacji i używać Redis jako magazynu pamięci podręcznej. To o wiele prostsze rozwiązanie niż próba użycia Varnish, który buforuje wszystko, co przez nią przechodzi, i pozostawia zalogowanych użytkowników bez buforowania. Korzystanie z wbudowanego buforowania Railsów pozwoliło nam łatwo skalować. Po drugie, Rails Capistrano Chef bardzo szybko skaluje do środowisk wielu serwerów. Nasza typowa infrastruktura Amazon AWS obejmuje Elastic Load Balancer, kilka instancji serwera aplikacji jest serwerem redissearch, wspieranym przez instancję bazy danych RDS. Skonfigurowaliśmy obsługę serwera za pomocą Chefa, co umożliwiło nam przygotowanie nowej gotowej do uruchomienia instancji w kilka minut. Jednoczesne wdrożenie wraz z migracjami danych można wykonać za pomocą Capistrano z wiersza poleceń. Dosłownie, piszę o tworzeniu produkcji czapek: migracji i wszystko jest magicznie rozmieszczone na wszystkich naszych serwerach aplikacji. Użytkownicy nie widzą żadnych przestojów, ponieważ mamy Phusion Passenger Enterprise i ponowne uruchamianie. Zadania w tle 8211 PHP został zaprojektowany jako preprocesor hipertekstowy, co oznacza, że ​​jest wykonywany tylko wtedy, gdy istnieje żądanie sieciowe. W porównaniu z Ruby, która uruchamia proces. W Railsach możesz łatwo skonfigurować zadania w tle za pomocą Sidekiq lub Resque. To również zwiększa łatwość skalowania Rails8217. W naszych aplikacjach przenosimy wiele rzeczy, które mogą spowalniać żądania, takie jak wysyłanie e-maili do użytkowników w tle. Teraz PHP może wykonywać zadania w tle za pomocą Gearmana, ale to nie jest standardowe 8211, musisz zainstalować rozszerzenie PECL. W RubyRails zadania w tle nie są problemem. Po prostu to rób. Rails jest BORING 8211 Rails jest teraz w wersji 4.x. To dojrzałe ramy. Teraz jest nudno. Fajne dzieci reklamują NodeJS w dzisiejszych czasach. Szyny są nudne, ponieważ są solidne i stabilne. We8217ve opracowała aplikacje w Rails teraz dla niektórych z największych na świecie firm i osób z ich działów IT. Firma It8217 stwierdziła, że ​​jest dobrym wyborem do zbudowania (solidnej, gotowej do użycia, skalowalnej, wydajnej) aplikacji. Inne technologie, które moim zdaniem kształtują sieć AngularJS 8211 Wprowadziliśmy AngularJS do naszych projektów klientów na początku tego roku dla dwóch firm z listy Fortune 500 i to była ogromna wygrana. AngularJS umożliwia budowanie aplikacji jednostronicowych uruchamianych w JavaScript. Większość twojej logiki front-end idzie do AngularJS, a twój backend po prostu dlatego, że API, który obsługuje JSON. Dzięki temu mogliśmy tworzyć wysoce wydajne aplikacje. Dzięki temu podejściu użytkownik jest bardzo dobry, ponieważ strony ładują się bardzo szybko, ponieważ przeglądarka nie musi wykonywać pełnego żądania obiegu. NodeJS 8211 Zacząłem rozwijać w NodeJS kilka miesięcy temu i to dało mi spokój. Do czego służy NodeJS, to tworzenie aplikacji sieciowych. Na przykład. Jeśli tworzysz aplikację do czatowania w czasie rzeczywistym, możesz użyć NodeJS do tego. Ze względu na dojrzałość Railsów, nie sądzę, abyśmy w najbliższym czasie ruszyli z budowania dużych aplikacji, ale aby dodać składniki w czasie rzeczywistym, użyłbym NodeJS SocketIO. Więc co powinieneś zrobić Tworzenie stron internetowych staje się niesamowicie złożone. Dni pojedynczego programisty, który może wysłać pełną aplikację od początku do końca stają się coraz trudniejsze. Nawet front-end nie może być obsługiwany przez jednego hybrydowego programisty, który może zhackować znaczniki HTML CSS. Jeśli dopiero zaczynasz, nadal polecam zacząć od PHP. Otrzymasz wyniki znacznie szybciej, a to pobudzi Twój rozwój i wiedzę. Przeskakiwanie do RubyRails jako pierwszego języka może sprawić, że poczujesz się naprawdę sfrustrowany, próbując osiągnąć rezultaty 8211 pamiętaj, że dzięki Railsowi musisz znać pełen stos, więc nie tylko język i środowisko, z którym się komunikujesz. Po uzyskaniu komfortu w budowaniu dostosowanych aplikacji w PHP, możesz zaostrzyć swój apetyt i zacząć korzystać z innych technologii, takich jak RubyRails, a nawet NodeJSExpress, i ty8217ll docenisz to, co oferują te technologie. Wiele koncepcji, których nauczysz się od PHP w frameworkach takich jak Symfony i Laravel przeniesie cię do innych języków i frameworków. Innym powodem, dla którego polecam PHP jako świetny punkt wyjścia jest to, że bardzo dobrze jest wiedzieć, że możesz hackować rzeczy takie jak motywy i wtyczki WordPress. WordPress jest dziś tak szeroko wykorzystywany w biznesie (zwłaszcza w działach marketingu) i świetnie jest mieć poliglotów oprogramowania, którzy mogą pracować z wieloma różnymi narzędziami i platformami. Rzeczą, którą musisz zrozumieć, jest to, że w sieci nie chodzi o to, jaki język wybierzesz w 8212 it8217s na temat standardów i tego, czego potrzeba, aby uzyskać informacje w przeglądarce internetowej i poza nią. Nie ma znaczenia, co jest na serwerze, o ile wypluwa HTML i odpowiednie dane JSON 8211, możesz użyć C dla wszystkich, których to obchodzi. That8217s, dlaczego jest tak wiele technologii internetowych od PHP do Ruby, Python i Java, a Gosh Perl jest nadal używany (spotkałem faceta, który napisał aplikację Shopify w całości w Perlu). Więc idź. Kontynuuj hakowanie Możesz zrobić cokolwiek w PHP, które możesz w Railsach i na odwrót. That8217 wystarczy dla mnie, aby trzymać się z PHP. O ile Railsy są szybsze do wdrożenia, naprawdę w to wątpię. Nie ma zbyt wiele czasu, który można zapisać w PHP w porównaniu z innym językiem z istniejącymi frameworkami, z których już korzystam (chyba że budujemy sztuczną inteligencję, aby rozpocząć programowanie kodu). Niezły artykuł. Całkowicie się zgadzam, ponieważ I8217ve miało to samo doświadczenie, poczynając od tła PHP na RoR. I8217m cieszę się, że I8217m nie jest jedynym, który uważa, że ​​nauka Railsów jest trudna. I8217m wciąż próbuję zrozumieć Coffeescript. Chciałbym zaoferować kilka porad dla czytelników, naprawdę dobrym sposobem nauki Ruby i Railsa jest wykonanie BEZPŁATNEGO kursu SaaS od Edx (edx. orgcourseuc-berkeleycs-169-1xsoftware-service993). Nie tylko będziesz uczyć się solidnej Ruby on Rails, ale nauczysz się też dobrych aspektów inżynierskich i otrzymasz certyfikat z Berkeley University. Poza tym mogę polecić Ruby on Rails Tutorial 2ed by Michael Hartl. i Head First Rails (O8217 Reilly). Pamiętaj, że im więcej dajesz RoR szansę, tym bardziej się spodoba. Świetne napisz. Im bardziej z javascript facet, który od czasu do czasu używa php po stronie serwera. Od kiedy przyszedł węzeł, zaczął używać javasript po stronie serwera. Wiele ciekawych narzędzi, których używam, takich jak Jekyll, Sass i kompas, jest napisanych w Ruby, więc zawsze miałem ochotę nauczyć się ruby. Zauważyłem, że wielu moich kolegów przenosi się do Ruby lub Pythona, ponieważ uważają, że bycie programistą php nie przynosi takiego samego szacunku. Świetny, zrównoważony artykuł, Leo, dziękuję, że nie sprzeciwiłeś się ani jednej, ani drugiej osobie, i pozostałaś obiektywna w swoim doświadczeniu. Złożoność złożona RoR dotyczy mnie, podczas gdy ja lubię inne aspekty. Niezły artykuł. Jestem programistą PHP i Ruby on Rails. Wybieram Railsy, ​​ponieważ w przeciwieństwie do PHP there8217 zbyt wiele do nauki w zależności od twoich potrzeb. Wiele frameworków i cms. Podczas gdy Ruby, szyny są wszystkim, czego potrzebujesz. możesz robić aplikacje w skali. Naprawdę pomocny artykuł, Leo. I8217 zanurzałem swoje palce w rozwoju stron internetowych przez ostatnie sześć miesięcy i pracowałem głównie z PHP, jednak Ruby on Rails jest kolejnym językiem na mojej liście języków. Jako doświadczony twórca stron internetowych sugerujesz, że będę kontynuował pracę z PHP i przejdę do Railsów po tym, jak zdobędę trochę doświadczenia, lub skoczę w prawo do Railsów Hi Michael. Myślę, że warto znać obie te rzeczy. Zdecydowanie w obecnym klimacie znajomość Railsów sprawi, że wykonasz pracę bardzo szybko, ponieważ istnieje większy popyt i mniejsza konkurencja. Jeśli jesteś zupełnie nowy w tworzeniu stron internetowych, myślę, że PHP jest lepszym punktem wyjścia, ponieważ szybciej uzyskasz wyniki, co zachęci Cię do dalszej pracy nad tworzeniem stron internetowych. Nie mogę wystarczająco podkreślić, jak małe sukcesy wzajemnie się budują. Możesz szybko zbudować dobrą, niestandardową aplikację MVC, używając czegoś takiego jak CakePHP lub CodeIgniter. Kiedy przenosisz się do Railsów, I8217d radzi, aby najpierw nie uczyć się Railsów. Najpierw zapoznaj się z Ruby i spróbuj użyć ram takich jak Sinatra. Moje rozumowanie jest takie, że Rails ma zbyt dużo 8220automagic8221, co bardzo utrudnia zrozumienie tego, co dzieje się pod maską. Jeśli nie wiesz, co Rails robi pod maską i nie wiesz, jak sprawdzić kod źródłowy Railsów i dowiedzieć się, debugowanie aplikacji może być bardzo długie i frustrujące, szczególnie dla początkujących. Dziękuję za pomocną odpowiedź Leo Zdecydowanie zgadzam się, że nauka Ruby jest bardzo ważna przed wskoczeniem do Rails. Wciąż jest dużo do nauczenia się dla mnie, ale I8217m jest bardzo podekscytowany i zmotywowany każdym małym sukcesem. Pozdrawiam Couldn8217t zgadzam się więcej. Jako nowszy deweloper Ruby i RoR odegrało zasadniczą rolę, że najpierw nauczyłem się Rubiego. Podczas gdy RoR ma rdzeń Ruby, obsługuje on wiele podstawowych zadań dla ciebie8230, stąd Rails 8220Magic8221. Jeśli nie masz dostatecznego zrozumienia, jak używać Ruby bez frameworka sieciowego, to co dzieje się pod maską, będzie absolutnie frustrujące, szczególnie jeśli chodzi o debugowanie, a nawet zrozumienie, jaka jest właściwa metoda narzędzia do tej pracy. Świetny artykuł, Leo I, podobnie jak większość innych, docenia sprawiedliwą i zrównoważoną reprezentację obu języków i ich odpowiednich ram. lub znaki (8216a8217..8217z8217).toa Array. new (8).join Pierwszym językiem, jakiego nauczyłem się, był Turbo Pascal. Następnie Java. Najpierw nauczyłem się języka PHP. Bardzo informujące. I8217m jest nowym programistą i patrzę zarówno na PHP, jak i na Ruby jako języki po stronie serwera (I8217można zdecydować, który z nich powinien być już po I8217m). Zgadzam się, że PHP jest łatwiejsze do pobrania 8216 z bat8217, ale bardzo trudno jest znaleźć dobrej jakości samouczki lub wskazówki. To naprawdę śmieszne, widząc tak długo, jak to było. Z drugiej strony, Ruby ma stromą krzywą uczenia się (chociaż poznanie systemu PHP w tandemie pomogło mi to zrozumieć), ale zasoby do nauki, które są tam dostępne, są łatwiejsze do znalezienia i lepsze. Code school, na przykład (sprawdź, czy jesteś8217 nowy do rozwoju) jest fantastycznym resource8230, ale nie dotyka nawet PHP. Widzę Ruby jako język SS przyszłości. Pracuję nad Ruby na szynach. Używanie Ruby na szynach do budowania solidnego kodu, a więc wysokiej jakości stron internetowych, które później będą łatwe do utrzymania. Ruby on Rails jest również znana ze swojej konwencji kodowania, zwinnych praktyk i siły bezpieczeństwa. Ale warto znać oba artykuły w Nicei. I8217 w ciągu ostatnich kilku miesięcy wdawał się w tworzenie stron internetowych z Railsami i dobrze jest zobaczyć, że I8217m nie jest sam w moim przekonaniu, że jest po prostu bardzo intuicyjny. Porównanie rzeczywiście przypomina jabłka i pomarańcze, ale przydaje się rozważanie, który obszar powinien się skupić na nauce. I8217m obecnie zbiera doświadczenie w branży z Railsami, ale jestem niezdecydowany, aby zobowiązać się do przejścia na pełną milę w tym obszarze, ponieważ krzywa jest tak stroma i nie wiem, czy chcę być dev Rails. Dobry artykuł. Czuję dokładnie tak samo. Po GT10 latach php i Java nauczyłem się lubić ruby. I spokój ducha, który tory dają mi w stresującym projekcie. Ślepo wiedząc, gdzie umieścić nowy kod, nawet po 12 godzinach kodowania o 4 rano. Ale naprawdę nienawidzę złożoności, o której wspomniałeś, dotyczącej konfiguracji infrastruktury. Niektórzy ludzie cieszą się tym 8211 I don8217t. Na żywo jest za krótko na takie głupie zadania. Zawsze zastanawiam się, dlaczego ludzie z RubyRails potrafią stworzyć rutynę instalacyjną, która jest tak łatwa jak php. Dlaczego muszę walczyć z wersją gemową w wersji Ruby Mac OS X niespójności przez 2 dni, zanim serwer railsowy uruchomi się po raz pierwszy Grmpffff8230. W rzeczywistości nie musisz 8220 walczyć z wersjami 8221. 8211 Wersje Ruby: Generalnie zarządzane przez rbenvrvm et al. (rbenv jest oficjalnie polecany przez Rails 8211 rubyonrails. orgdownload). Jeśli twoja natywna Ruby spełnia wymaganą przez projekt wersję Ruby (np. 1.9.3 dla Rails 4, 1.8.7 dla Rails 3.2), jesteś dobry i nie potrzebujesz tych narzędzi. But if you are doing client work, or even experiments (e. g. your main project is Rails 3, you are experimenting onplanning on switching to Rails 4) you8217ll need multiple Ruby versions running simultaneously in the same machine. You can use Vagrant et al. but that can8217t beat having it in your base OS. Rbenvrvmetc makes this possible only with a few lines of commands. You can say that one can just use the latest possible Ruby, but it doesn8217t always work like that (compatibility problems etc). Now try that with PHP. There are PHP version switching tools but they were nowhere near maturefull-fledgedeasy-to-use as rbenvrvm last time I checked. 8211 Gem versions: Seriously Show me a single languageframework with a packagedependency manager that doesn8217t involve version numbers (e. g. PHP8217s composer, Python8217s PIP, Closure8217s Leiningen, Java8217s Maven) Ever heard of DLL Hell 8211 Mac OSX: I8217m an Ubuntu user but I8217d be surprised if you can8217t get anything related to RubyRails working in MacOSX, seeing that most Rails developers are using Macs. 8211 You need to to install rbnevrvm on a machine only once. After that, you can install any version of Rubies and Gems in a matter of minutes. And with Heroku, you can see your thing in interwebs in seconds. And you have proven deployment tools like Capistrano which works for any empty Linux box. Yeah, PHP shared hosting is really ubiquitous (in most of which you still can8217t reliablysecurely run modern PHP frameworks), but here the scopes are really different. 8230from a long time PHP user who is busy switching to Laravel 4 and Rails 4 at the same time in production projects for the last 1-2 months. I8217m just finishing up a big L4 project and about to get started with ROR myself. hi leonard I am from India this article is very useful I want some suggestions on building a big eCommerce website. I have a good experience of making website in asp, asp Ajax and sql server 2008. Now I am thinking about moving from Microsoft (because of cost). Please help me choose between php(plain),php with mvc framework, django (not rails because of steep learning curve and updating the website after the host has updated the version).I have no experience on any of the above three. and I will develop alone and I want to cost to be on lower side. Any help would be useful Thanks for this article. As a programmer who8217s been out of the loop for a while (no pun), I had suddenly been preached to about RoR by kids who had never been across other languages. as if RoR was the be all and end all. Your article clarifies all the pros and cons very objectively. Much appreciated. As a would-be programmer starting out and slightly overwhelmed with all the languages and pressure with choosing one: really interesting article. Thanks Thanks for this Article. I8217m using PHP (Laravel framework) for development and Codeception for automate testing. Should I try RoR I8217ve heard that RoR have testing amp deployment tool which help us saving time a lot. Do you have any recommends for me. Thank you in advance We can not compare a programming language with a framework for a programming language. If you don8217t get this then you must start to learn again. A very well considered, helpful and well written article. Thank you Leo. Just read your article. I started my developing 8216career8217 in ASP webforms, which was quite easy and then switch to MVC with scaffolding, razor, nuget, entity framework, jquery, etc. It seems to me that Microsoft8217s stack is well-build and although I found it hard to learn MVC, it all fits together. Maybe they have 8216stolen8217 all good ideas from other frameworks and languages but they combined them very well and build a great IDE. So why does no one use it these days I read a lot of articles about what framework and language is the best, but they never compare it to ASP. Is it 8216just8217 because it8217s Microsoft The best article i8217ve ever read about ruby n php. Thanks for this Meanwhile, in Morocco: Hi. I loved your blog and it helped me a lot. Thank you so much I wanted to ask you one thing My first Rails app is a mobile app that will start with almost 1 million users (from another app my company is buying) and also a web application, like Facebook that you use in the browser and on your iPhone. I don8217t know how many nodes I can start with and I can8217t find a lot of information online. We have one server (16 GB RAM) I am using to test load balancer, database replication I can create as many VPS in the server as it fits in this server. I don8217t know if 16 GB will be enough for 1 million users but I created 6 nodes for staging (and learn): 8211 one with Nginx for load balancing (512MB) 8211 two with Unicorn for the Rails application (1GB each) 8211 two for MySQL (one master, one slave, but I still have to learn how to make Rails read from slave and write in the master, 2GB each) 8211 one for files (512MB shared via NFS with the load balancers and apps, where paperclip will write). The database will have a lot of writes. What architecture configuration you recommend Am I too wrong I used small RAM because I will use more for production but I don8217t know if 6 nodes is enough or if 16 GB will be enough. Can you help me Thank you 1 million users who are logged in, or 1 million users per month who are mostly just browsing the site Also, is the Rails application going to just be for an API or will it actually deliver the pages It also depends on the memory footprint of your application, if it is large or not. 1. 16GB is not likely enough for 1 million users if it is a reasonably sized application, and for that number of users I wouldn8217t put everything on a single server anyway. I8217d load balance across 2x 16GB (or 32GB) servers, quad cores minimum and scale from there. Remember, Ruby applications tend to bloat with lots of gems that you load in. The typical way to scale is to get as much memory as possible and run as many concurrent processes as you can in memory. 2. I would not use Unicorn. It is flaky and consumes a lot of memory. For that kind of scale, I would use Passenger Enterprise. If you want to be cheap and not pay for the Passenger license (which is worth it), you can use Puma. 4. Cache, cache, cache. Have one server just for Redis and cache the hell out of your application: guides. rubyonrails. orgcachingwithrails. html 5. Move slow processes into Sidekiq for background processing. Dziękuję bardzo. It is 1 million users registered but usually 20,000 to 300,000 concurrent connections. And it8217s HTML and JSON, depends of the extension. We want to grow, of course, so need to be ready to more. I thought Unicorn was the best. I was using memcached but I will try Redis. Thank you very much again. It was hard to find something online explaining how much memory and how many servers in the load balancer and things like this. Just think about this: if Facebook was done in PHP, which is probably the most robust and used web application in the planet, you don8217t need to be a very smart person to realize php is far from being a bad programming language. in fact, PHP in the next 5 years will become the definitive best web programming language on top of every other one by far. Why Because its syntax is more human readable. The only reason why RoR is so trendy, is because it did very cool stuff a few years ago not available in php. But php is getting better day by day, frameworks like laravest are getting tremendous attention, and even bringing back old php users who are dropping RoR and coming back like prodigal sons. Yes, RoR deserves the credit of pioneering MVC and many other things, but it lacks the beauty and simplicity of C syntax, which will reign forever and ever. There8217s a lot of hype regarding RoR, most people try RoR just because they want to feel trendy and cool, one of the reasons most hipsters use it. Don8217t be a victim of the phenomenon. PHP is not a trendy thing, PHP, without all the noise and propaganda, still dominates the web. Juan David Pasts Rivera Another alternative is Meteor, which is great, is a framework on top of node js, is the one I like the most from all that I have tried: derbyjs, deployd, sails, express, from what I remember. Even when it8217s not comparable with Angular, Meteor supersedes it since you have 2 way data binding and backend logic at the same time and written in JavaScript, also you don8217t have to learn ng attributes. PHP has Facebook as a great representative, but its syntax is not as simple as you can get with Meteor and preprocessing packages. Anyway, scaling is always another whole story, it8217s a huge work which can be done in all languagesframeworks, I am not sure in which of them is easier though. If that8217s so then why does nobody choose to write apps in COBOL or BASIC anymore Why would you choose CoffeeScript over Javascript Why has Apple created Swift when people can just as well use Objective-C Why does it take a non-speaker on average twice as long to learn Russian compared to Italian To say it8217s all about preferences and claim that somehow all languages are equal is pretty naive. I like Php spent a lot of time learning it built most projects in Php and will continue doing so. The only reason I8217m learning ROR now is because I get tons of job offers some remote. I look at it this way freelance jobs I8217m using Php. Contract long term company jobs ROR I guess. I8217m currently in between angularjs now because at my company we wanted to try this out with Ruby as the backend. So imagine the steep learning curve I8217m going through for both of these languages Ruby and AngularJS at the same time. Yet another moving average crossover system Oh, but this one is so much fun This is a trend trading system using very clean charts. Która ramka czasowa (TF) Jakiekolwiek dwa TFs o stosunku 1: 4 - 1: 6. na przykład: Używam TF H1 i M15 w stosunku 1: 4. Ale możesz użyć wykresów H4 i H1 (stosunek 1: 4) lub wykresów dziennych i H4 (stosunek 1: 6). dostajesz obraz. Każdy, ale będę używać tylko GBPUSD, EURUSD lub AUDUSD do celów ilustracyjnych. Jak określić kierunek trendu dla naszych celów Proste. Do wykresu quotBankquot dodać wskaźnik przesunięcia 200 EMAclose0. Zobacz tabelę 1 poniżej. Patrząc od lewej do prawej na 200 EMA na wykresie HUS GBPUSD, jest oczywiste, że kierunek rośnie od około 7 października, a więc dopóki kierunek 200 EMA nie ulegnie znacznej zmianie, będziemy jedynie wykonywać długie transakcje, czyli , tylko handluje nad białą linią 200 EMA. AKTUALIZACJA: Przekłada się na to, że krzyżówki MA świetnie się sprawdzają w transakcjach przeciwnych na niższych poziomach TF. po prostu lepiej monitoruj i niekoniecznie szukaj tyle pipsów, co w handlu trendami. Przyjrzyjmy się wykresowi EUR / USD H1 dla praktyki w ustalaniu kierunku. (wykres 2 poniżej) Znowu, kierunek rośnie od około 7 października. Przejdź przez to ćwiczenie na innych parach, aby uzyskać więcej praktyki w określaniu kierunku. (Uwaga: Jeśli handlujesz z wyższego TF jako wykresu H4, użyjesz 200 EMA na tym wyższym TF, by określić kierunek.) Kończenie zakładania wykresu handlowego. Do pustego wykresu z 200 EM A dodaj następujące wygładzone MA: --- 3 wygładzone MAclose0 przesunięcie złota --- 8 wygładzoneMAclose0 przesuń purpurę Zobacz wykres 3 w następnym poście Po ustawieniu wykresu, pamiętaj o zapisaniu szablonu. PODSUMOWANIE LICENCJI quot Big Picture for direction pochodzi z wykresu H1 (lub wyższego, jeśli handluje się z innym TF, ale drawdown będzie znacznie większy, im wyższy TF użyje). Przeszukuj kierunek 3,8 wygładzonych MA w odniesieniu do pożądanego kierunku. Zanotuj konfigurowanie par lub potrzebujesz ich później, na przykład, jeśli zbliżają się do 200 EMA. co zrobią Odbij się od 200 i obróć się, przejdź przez nią lub idź wzdłuż niej. To są jedyne wybory. Gdy 3 przekracza 8 na wyższych TF. przejdź do niższego TF dla wejścia. szukaj silnego krzyża na niższym TF i wejdź. Monitoruję handel na wyższym TF. ale to jest preferencja przedsiębiorcy. Załączone zdjęcia (kliknij, aby powiększyć) Właśnie tam z tobą Lawgirl. Gdy stracisz strach przed przegraną i będziesz mógł zaufać własnym intencjom, zarabianie pieniędzy na Forex może być proste i przyjemne. Oto mała koperta MA z moim szablonem, którego używam tak często. Bez świec, podążaj za białą linią i pozostań po właściwej stronie trendu. O ile łatwiejsze może być Hey forexhard, miło słyszeć o tobie, jestem bardzo nowy w FF, ponieważ czytałem, ale nigdy nie angażowałem się w forum, jednak od teraz będę to robić, ponieważ jego niesamowita ilość kwnoledge możesz wydostać z FF. Czytałem wątki schodów, całkiem fajny system, ale potężny, nie mogę się doczekać otwarcia rynków tylko po to, żeby wypróbować to na demo oczywiście. Zastanawiałem się, co z 100pipsami SL, które szukają zysku na 1000 pipsów. Sounds crazy pozwala skype: elchinoazul To wygląda interesująco. Zdecydowanie będzie to demo w tym tygodniu. Nawet w fazie konsolidacji, jeśli wyjdziesz, gdy 3 i 8 przekroczą twoje straty, będą one minimalne w porównaniu do czasu, kiedy wygrasz. Co więcej, oszczędza to na zużywaniu się gałek ocznych Tu był pewien facet, który zasugerował tę strategię: przytocz się z 2 lub 3, a kiedy trafisz 50, sprzedaj dwa i zrób stop loss, żeby się wyrównać i pozwól trzecia z nich przebiega, aż 3 i 8 znów się skrzyżują. To świetna strategia, ponieważ wyeliminowałeś chciwość. a biegacz jest wolnym handlem. To zdecydowanie dobry pomysł. Do you use microlots (0.01) or minilots (0.1)MACD (Moving Average ConvergenceDivergence Oscillator) MACD (Moving Average ConvergenceDivergence Oscillator) Introduction Developed by Gerald Appel in the late seventies, the Moving Average ConvergenceDivergence oscillator (MACD) is one of the simplest and most effective momentum indicators available. MACD zamienia dwa wskaźniki trendu, przesuwając średnie. do oscylatora pędu poprzez odjęcie dłuższej średniej ruchomej od krótszej średniej ruchomej. W rezultacie MACD oferuje najlepsze z obu światów: śledzenie trendów i dynamikę. MACD waha się powyżej i poniżej linii zerowej, ponieważ średnie ruchome zbiegają się, krzyżują i rozchodzą. Handlowcy mogą wyszukiwać skrzyżowania linii sygnałowej, crossovery linii środkowej i rozbieżności w celu generowania sygnałów. Ponieważ MACD jest nieograniczony, nie jest szczególnie przydatny do identyfikowania poziomów wykupienia i wyprzedaży. Uwaga: MACD można wymawiać jako Mac-Dee lub M-A-C-D. Oto przykładowa tabela ze wskaźnikiem MACD w dolnym panelu: Obliczanie Linia MACD to 12-dniowa wykładnicza średnia ruchoma (EMA) pomniejszona o 26-dniową EMA. Dla średnich ruchomych stosowane są ceny zamknięcia. 9-dniowa EMA linii MACD jest wykreślana ze wskaźnikiem, który działa jako linia sygnałowa i identyfikuje zwoje. Histogram MACD reprezentuje różnicę między MACD a jego 9-dniową EMA, linią Signal. Histogram jest dodatni, gdy linia MACD znajduje się ponad linią sygnału i jest ujemna, gdy linia MACD znajduje się poniżej linii sygnału. Wartości 12, 26 i 9 są typowymi ustawieniami stosowanymi w MACD, jednak inne wartości mogą być zastąpione w zależności od stylu handlu i celów. Interpretacja Jak sama nazwa wskazuje, MACD koncentruje się na zbieżności i rozbieżności dwóch średnich kroczących. Konwergencja występuje, gdy średnie ruchome zbliżają się do siebie. Dywergencja występuje, gdy średnie ruchome oddalają się od siebie. Krótsza średnia ruchoma (12 dni) jest szybsza i odpowiada za większość ruchów MACD. Dłuższa średnia krocząca (26 dni) jest wolniejsza i mniej reaktywna wobec zmian cen podstawowych papierów wartościowych. Linia MACD oscyluje powyżej i poniżej linii zerowej, która jest również znana jako linia środkowa. Te skrzyżowania sygnalizują, że 12-dniowa EMA przekroczyła 26-dniową EMA. Kierunek, oczywiście, zależy od kierunku ruchu średniej krzyża. Dodatni MACD wskazuje, że 12-dniowa EMA jest powyżej 26-dniowej EMA. Wartości dodatnie rosną, ponieważ krótsza wartość EMA odbiega od dłuższej wartości EMA. Oznacza to wzrost impetu. Wartości ujemne MACD wskazują, że 12-dniowa EMA jest poniżej 26-dniowej EMA. Ujemne wartości rosną, ponieważ krótsza wartość EMA dalej spada poniżej dłuższej wartości EMA. Oznacza to, że wzrasta siła w dół. W powyższym przykładzie żółty obszar pokazuje Linię MACD na ujemnym terytorium, ponieważ 12-dniowa transakcja EMA odbywa się poniżej 26-dniowej EMA. Początkowe przekroczenie nastąpiło pod koniec września (czarna strzałka), a MACD przesunął się dalej na terytorium ujemne, ponieważ 12-dniowa EMA oddzieliła się dalej od 26-dniowej EMA. Pomarańczowy obszar podświetla okres dodatnich wartości MACD, czyli gdy 12-dniowa EMA była powyżej 26-dniowej EMA. Zauważ, że linia MACD pozostała poniżej 1 w tym okresie (czerwona linia przerywana). Oznacza to, że odległość między 12-dniową EMA a 26-dniową EMA była mniejsza niż 1 punkt, co nie jest dużą różnicą. Przesunięcia linii sygnałowej Przesunięcia linii sygnałowej są najczęstszymi sygnałami MACD. Linia sygnału jest 9-dniowym EMA Linii MACD. Jako średnia krocząca wskaźnika, śledzi MACD i ułatwia dostrzeżenie zakrętów MACD. Przełomowe przejście ma miejsce, gdy MACD pojawia się i przekracza linię sygnału. Niedźwiedzi crossover występuje, gdy MACD zejdzie i przekroczy linię sygnału. Crossover może trwać kilka dni lub kilka tygodni, wszystko zależy od siły ruchu. Wymagana jest należyta staranność przed poleganiem na tych wspólnych sygnałach. Przejścia linii sygnałowej w skrajnych wartościach dodatnich lub ujemnych należy traktować z ostrożnością. Mimo że MACD nie ma górnych i dolnych limitów, czaty mogą oszacować historyczne ekstremum za pomocą prostej wizualnej oceny. Potrzeba silnego ruchu w zabezpieczeniach, aby pchnąć rozpęd do skrajności. Nawet jeśli ruch może być kontynuowany, impet prawdopodobnie zwolni, a to zwykle spowoduje przesunięcie linii sygnału na kończynach. Zmienność podstawowych zabezpieczeń może również zwiększyć liczbę zwrotów. Poniższy wykres przedstawia IBM z 12-dniowym EMA (zielony), 26-dniowym EMA (czerwony) i 12,26,9 MACD w oknie wskaźnika. W ciągu sześciu miesięcy nastąpiło osiem skrzyżowań linii sygnałowej: cztery w górę i cztery w dół. Było kilka dobrych sygnałów i złe sygnały. Żółty obszar wskazuje okres, w którym linia MACD przekroczyła 2, aby osiągnąć pozytywną skrajność. W kwietniu i maju były dwa słabe sygnały zwrotne dla linii sygnałowych, ale IBM nadal wykazywał wyższe trendy. Mimo że zwyżkowa dynamika zwolniła po gwałtownym wzroście, impet wzrostowy był nadal silniejszy niż w kwietniu i maju. Trzecie słabe połączenie linii sygnałowej w maju zaowocowało dobrym sygnałem. Crossover Centerline Crossovers są następnymi najpowszechniejszymi sygnałami MACD. Uparty crossover linii środkowej występuje, gdy linia MACD przesuwa się powyżej linii zerowej, aby uzyskać dodatnie. Dzieje się tak, gdy 12-dniowa EMA podstawowego instrumentu zabezpieczającego przenosi się ponad 26-dniową EMA. Niedźwiedzi crossover linii środkowej występuje, gdy MACD przesuwa się poniżej linii zerowej, aby obrócić wynik ujemny. Dzieje się tak, gdy 12-dniowa EMA przenosi się poniżej 26-dniowej EMA. Przejazdy linii środkowej mogą trwać kilka dni lub kilka miesięcy. Wszystko zależy od siły trendu. MACD pozostanie dodatni, o ile utrzyma się trend wzrostowy. MACD pozostanie ujemny, jeśli wystąpi trwały trend spadkowy. Następny wykres pokazuje Pulte Homes (PHM) z co najmniej czterema liniami dośrodkowymi w ciągu dziewięciu miesięcy. Uzyskane sygnały działały dobrze, ponieważ pojawiły się silne trendy z tymi crossoverami. Poniżej znajduje się wykres Cummins Inc (CMI) z siedmioma liniowymi crossoverami w ciągu pięciu miesięcy. W przeciwieństwie do Pulte Homes, sygnały te doprowadziłyby do licznych biczów, ponieważ silne tendencje nie pojawiły się po skrzyżowaniach. Następny wykres pokazuje 3M (MMM) z byczym crossoverem w środku pod koniec marca 2009 r. I niedźwiedzią linię środkową na początku lutego 2017 r. Sygnał ten trwał 10 miesięcy. Innymi słowy, 12-dniowa EMA była ponad 26-dniową EMA przez 10 miesięcy. To był jeden silny trend. Rozbieżności Rozbieżności powstają, gdy MACD odbiega od akcji cenowej podstawowego zabezpieczenia. Uboga dywergencja powstaje, gdy zabezpieczenie zapisuje niższy poziom niski, a MACD tworzy wyższy poziom niski. Niższy spadek bezpieczeństwa potwierdza bieżący trend spadkowy, ale wyższa wartość najniższa w MACD wykazuje mniejszy spadek. Pomimo mniejszej siły spadkowej, potencjał spadkowy wciąż przewyższa impet, o ile MACD pozostaje na ujemnym terytorium. Spowolnienie impetu w dół może czasem zapowiadać odwrócenie tendencji lub spory wzrost. Kolejny wykres przedstawia Google (GOOG) z byczą rozbieżnością w październiku i listopadzie 2008 r. Po pierwsze zauważmy, że używamy cen zamknięcia w celu identyfikacji rozbieżności. Średnie ruchome MACD039 są oparte na cenach zamknięcia i powinniśmy również rozważyć zamknięcie cen w zabezpieczeniach. Po drugie, zauważ, że były wyraźne spadki reakcji (doliny), ponieważ zarówno Google, jak i jego linia MACD podskoczyły w październiku i pod koniec listopada. Po trzecie, zauważ, że MACD utworzył się na niższym poziomie, ponieważ Google ukształtowało się na niższym poziomie w listopadzie. MACD pojawił się z byczą rozbieżnością z crossover linii sygnału na początku grudnia. Google potwierdziło odwrócenie z przełamaniem oporności. Niedźwiedzia dywergencja powstaje, gdy bezpieczeństwo zapisuje wyższą wartość, a linia MACD tworzy niższą wartość. Wyższy poziom bezpieczeństwa jest normalny dla trendu wzrostowego, ale niższy wzrost w MACD wykazuje mniejszy wzrost. Nawet jeśli impet wzrostowy może być mniejszy, impet wzrostowy nadal wyprzedza spekulację w dół, o ile wskaźnik MACD jest dodatni. Dążenie do rozpędu w górę może czasami zwiastować odwrócenie trendu lub znaczny spadek. Poniżej widzimy Gamestop (GME) z dużą borsuką dywergencją od sierpnia do października. Zapas okazał się wyższy powyżej 28, ale linia MACD spadła poniżej wcześniejszego poziomu i utworzyła niższą wysokość. Kolejne skrzyżowanie linii sygnałowej i przerwa wsparcia w MACD były niedźwiedzi. Na wykresie cen zauważ, jak złamane wsparcie zmieniło się w opór w odbiciu powrotnym w listopadzie (czerwona linia przerywana). Ten powrót zapewnił drugą szansę na sprzedaż lub sprzedaż krótką. Rozbieżności należy zachować ostrożnie. Niełasne rozbieżności są powszechne w silnym trendzie wzrostowym, podczas gdy bycze rozbieżności występują często w silnym trendzie spadkowym. Tak, dobrze to przeczytałeś. Uptrendy często zaczynają się od silnego postępu, który powoduje wzrost impetu (MACD). Mimo że trend wzrostowy trwa nadal, jego tempo jest wolniejsze, co powoduje, że MACD spada z najwyższych poziomów. Impuls wzrostowy może nie być tak silny, ale impet wzrostowy wciąż przekracza tempo spadkowe, o ile linia MACD jest powyżej zera. Przeciwieństwo pojawia się na początku silnego trendu spadkowego. Następny wykres przedstawia ETF SampP 500 (SPY) z czterema bessowymi rozbieżnościami od sierpnia do listopada 2009 r. Mimo mniejszej siły wzrostu, ETF był nadal wyższy, ponieważ trend wzrostowy był silny. Zwróć uwagę, jak SPY kontynuowała serię wyższych wzlotów i wyższych poziomów. Pamiętajcie, że impet wzrostowy jest silniejszy niż impet w dół, o ile jego MACD jest dodatni. Jej MACD (momentum) mogło być mniej pozytywne (mocne) w miarę rozszerzania się, ale nadal było w dużej mierze pozytywne. Wnioski Wskaźnik MACD jest szczególny, ponieważ łączy moment i trend w jednym wskaźniku. To wyjątkowe połączenie trendu i dynamiki można zastosować do wykresów dziennych, tygodniowych lub miesięcznych. Standardowym ustawieniem MACD jest różnica pomiędzy EMA z 12 i 26 okresów. Osoby poszukujące większej czułości mogą spróbować krótszej krótkoterminowej średniej kroczącej i dłuższej długoterminowej średniej kroczącej. MACD (5,35,5) jest bardziej czuły niż MACD (12,26,9) i może lepiej pasować do wykresów tygodniowych. Osoby planujące mniejszą wrażliwość mogą rozważyć wydłużenie średnich kroczących. Mniej czuły MACD będzie nadal oscylował powyżej zera, ale skrzyżowania linii środkowej i skrzyżowania linii sygnałowej będą rzadsze. MACD nie jest szczególnie dobry do identyfikowania poziomów wykupienia i wyprzedania. Mimo że możliwe jest zidentyfikowanie poziomów historycznie wykupionych lub wyprzedanych, MACD nie ma żadnych górnych ani dolnych granic, aby związać swój ruch. Podczas ostrych ruchów MACD może nadal przekraczać swoje historyczne skrajności. Na koniec pamiętaj, że linia MACD jest obliczana na podstawie faktycznej różnicy między dwiema ruchomymi wartościami. Oznacza to, że wartości MACD są zależne od ceny podstawowego zabezpieczenia. Wartości MACD dla 20 zapasów mogą wynosić od -1,5 do 1,5, podczas gdy wartości MACD dla 100 mogą mieścić się w zakresie od -10 do 10. Nie jest możliwe porównanie wartości MACD dla grupy papierów wartościowych o różnych cenach. Jeśli chcesz porównać odczyty pędu, powinieneś użyć Oscylatora Ceny Procentowej (PPO). zamiast MACD. Dodanie wskaźnika MACD do SharpCharts MACD można ustawić jako wskaźnik powyżej, poniżej lub za cennikiem ceny security039s. Umieszczenie MACD za działką cenową ułatwia porównywanie ruchów impulsu z ruchami cen. Po wybraniu wskaźnika z rozwijanego menu pojawia się domyślne ustawienie parametru: (12,26,9). Parametry te można dostosować w celu zwiększenia czułości lub zmniejszenia czułości. Histogram MACD pojawia się ze wskaźnikiem lub można go dodać jako osobny wskaźnik. Ustawienie linii sygnału na 1 (12,26,1) spowoduje usunięcie histogramu MACD i linii sygnałowej. Osobną linię sygnału, bez histogramu, można dodać, wybierając Exp Mov Avg z menu Advanced Options Overlays. Kliknij tutaj, aby zobaczyć na żywo wykres wskaźnika MACD. Używanie skanów MACD ze skanami StockCharts Oto kilka przykładowych skanów, które członkowie StockCharts mogą wykorzystać do skanowania różnych sygnałów MACD: MACD Bullish Signal Line Cross. Ten skan ujawnia akcje, które obracają się powyżej swojej 200-dniowej średniej kroczącej i mają zwyżkowy crossover linii sygnałowej w MACD. Zauważ również, że MACD musi mieć wartość ujemną, aby zapewnić, że ta poprawa nastąpi po wycofaniu. To skanowanie ma jedynie na celu wprowadzenie dalszych udoskonaleń. MACD Bearish Signal Line Cross. Ten skan ujawnia akcje, które są sprzedawane poniżej średniej ruchomej wynoszącej 200 dni i mają słabe połączenie linii sygnałowej w MACD. Zauważ także, że MACD musi być pozytywny, aby zapewnić, że ten spadek nastąpi po odbiciu. To skanowanie ma jedynie na celu wprowadzenie dalszych udoskonaleń. Dalsze badania: Od twórcy książka oferuje kompleksowe badanie dotyczące stosowania i interpretacji MACD. Analiza techniczna - Elektronarzędzia dla aktywnych inwestorów Gerald Appel

No comments:

Post a Comment