Přejít k navigační liště

Zdroják » Různé » Vývoj moderních webových aplikací na Mac

Vývoj moderních webových aplikací na Mac

Články Různé

No já snad nevěřím svým očím! On vyvíjí na Macu! – tahle spontánní reakce mě přiměla sepsat své osobní zkušenosti s vývojem webových stránek pod nakousnutým jablkem. A zároveň připravit malý návod, jak do toho vlaku skočit taky.

No já snad nevěřím svým očím! On vyvíjí na Macu! – tahle spontánní reakce mě přiměla sepsat své osobní zkušenosti s vývojem webových stránek pod nakousnutým jablkem. Tento článek by zároveň měl sloužit jako odrazový můstek pro nové vývojáře webových stránek, kteří hodlají používat Mac. Nakonec je určen také těm, kteří rádi experimentují a poznávají nové světy.

Nudný úvod

Ten klidně můžete rovnou přeskočit na další kapitolu, pokud vás nezajímá historie operačního systému od firmy Apple.

Moderní éru desktopových operačních systémů odstartoval Mac OS X (Macintosh Operating System 10) v roce 2001 – jeho hlavním přínosem bylo UNIX jádro a nové grafické rozhraní. Od roku 2012 se z označení vytratilo z označení Mac. Operační systém je nyní označován pouze jako OS X. Jednotlivé verze jsou rozlišeny prostřednictvím kódového jména. Poslední stabilní verze nese označení OS X Mavericks (verze OS X 10.9). Během října 2014 se můžete těšit na další aktualizaci (OS X Yosemite).

Co budeme instalovat?

Za slovním spojením “moderní webové aplikace” se může skrývat téměř cokoliv. Budu tedy vycházet ze své vlastní konfigurace:

Balíčkovací systém

OS X nemá balíčkovací systém! (Uživatelé Linuxu se teď zhluboka nadechnou a přestanou panikařit.) Existují tři balíčkovací systémy, které nepochází z dílny Apple:

Začínal jsem s MacPorts a postupně zcela přešel na Homebrew. Pro který hovoří několik pozitiv:

  • více spoléhá na systém a používá systémové knihovny. Nese to s sebou větší závislost na systému, ale vyšší rychlost při kompilaci/instalaci balíčku.
  • je “pouhou” Ruby obálkou nad systémovými příkazy (make, configure, make install).
  • instaluje balíčky do /usr/local nepřepisuje tak systémové soubory, vytváří pouze symlinky.
  • programy se instalují pod aktuálně přihlášeným uživatelem.
  • instalační předpisy jsou kratší a lépe pochopitelné.

Takže si Homebrew nainstalujeme. Spusťte si aplikaci Terminál (⌘+Space – Terminal) a spusťte následující příkaz (bez sudo):

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

Následujte instrukce na obrazovce:

==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1


Press RETURN to continue or any other key to abort
==> /usr/bin/sudo /bin/mkdir /usr/local

WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.

To proceed, enter your password, or type Ctrl-C to abort.

Password:
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local
==> /usr/bin/sudo /bin/mkdir /Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew
==> Installing the Command Line Tools (expect a GUI popup):
==> /usr/bin/sudo /usr/bin/xcode-select --install

Nezapomeňte nainstalovat XCode Command Line Toolls (je tam hlavně kompilátor jazyka C).

install-xcode

xcode-select: note: install requested for command line developer tools
Press any key when the installation has completed.
==> Downloading and installing Homebrew..
==> Installation successful!
==> Next steps
Run `brew doctor` before you install anything
Run `brew help` to get started

Hotovo! Na závěr ověřte funkčnost pomocí příkazu brew doctor , měl by vypsat Your system is ready to brew.

Textový editor

Během celého instalačního procesu budete potřebovat upravit řadu konfiguračních souborů, proto si nejprve nainstalujte kvalitní textový editor. Doporučuji zvolit Sublime. Pomocí následujícího příkazu si po dokončení instalce vytvořte symlink subl, bude se vám hodit později:

sudo ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /bin/subl

Začneme instalací NGINX

V terminálu spusťte příkaz brew install nginx a vyčkejte na dokončení. Pokud budete chtít spouštět NGINX automaticky po startu systému, vytvořte si následující symlink:

ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents

Server spustíte pomocí příkazu nginx a funkčnost ověříte zadáním příkazu open http://localhost:8080

nginx

Více informací o konfiguraci NGINX naleznete zde: https://github.com/OzzyCzech/dotfiles/blob/master/readme.md#configuration

Instalace PHP-FPM

Před instalací PHP musíte nejprve naklonovat instalační předpisy:

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php

Poté stačí spustit příkaz:

brew install --without-apache --with-fpm --with-mysql php55

Můžete vyrazit na kafe (máte cca 20 minut čas). Dále jistě budete potřebovat řadu PHP knihoven, ty vyhledáte pomocí příkazu brew search php55. Namátkou jsem vybral několik nejdůležitějších:

brew install php55-http
brew install php55-mongo
brew install php55-apcu
brew install php55-opcache
brew install php55-redis
brew install php55-xhprof
brew install php55-xdebug
# atd...

Po dokončení instalace přidejte do souboru ~/.bash_profile následující řádek:

export PATH="/usr/local/bin:/usr/local/sbin:$PATH"

OS X totiž obsahuje starší verzi PHP, kterou nechceme používat. Restartujte terminál (⌘+Q) a pomocí příkazu php -v && php-fpm -v ověřte, že vše funguje, jak má.

PHP 5.5.15 (cli) (built: Aug  6 2014 13:46:45) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

Závěrem vytvořte symlink ln -sfv /usr/local/opt/php55/*.plist ~/Library/LaunchAgents, který PHP-FPM nastartuje po spuštění systému.

Více o konfiguraci PHP-FPM naleznete zde: https://github.com/OzzyCzech/dotfiles/blob/master/readme.md#configuration-and-phpini

Mongo, Redis, Memcached, Mysql

Ty můžete klidně nainstalovat najednou:

brew install mongodb redis mysql memcached

A pokud budete chtít vše spouštět po startu systému, vytvořte si symlinky:

ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents   # mongodb
ln -sfv /usr/local/opt/memcached/*.plist ~/Library/LaunchAgents # memcached
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents     # redis
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents     # mysql

Případně si můžete jednotlivé služby spustit hned:

mongod --config /usr/local/etc/mongod.conf # mongodb
redis-server /usr/local/etc/redis.conf     # redis
/usr/local/opt/memcached/bin/memcached     # memcached
mysql.server start                         # mysql

Bude se vám hodit příkaz sudo lsof -i -P | grep -i "listen", pomocí kterého vypíšete všechny aplikace poslouchající na nějakém portu.

Nodejs a npm

Opět stačí spustit jednoduše spustit brew install nodejs balíčkovací systém npm bude nainstalován automaticky. Funkčnost ověříte pomocí příkazu node --version.

Git a bash

Instalace OS X obsahuje starší verzi git, můžete ji bez obtíží používat. Přesto doporučuji provést aktualizaci. Novější verzi nainstalujte pomocí příkazu brew install git.

Po dokončení instalace budete muset nový git prolinkovat do systému brew unlink git && brew link git. Restartujte terminál (⌘+Q) a spusťte příkaz git --version  – měli byste používat novější verzi.

Novější bash opět nainstalujete pomocí příkazu brew install bash. Poté je potřeba nastavit terminál, aby tento novější bash začal používat.

V okně Terminalu stiskněte ⌘+, (nebo přes menu Terminal > Preferences…) a v záložce Startup > Shell Open With nastavte cestu /usr/local/bin/bash a opět restartujte Terminal.

bash

Jak vše udržet funkční

Čas od času spusťte brew update && brew outdated a zastaralé aktualizujte pomocí brew upgrade [name] – ušetříte si tím spoustu nervů při aktualizaci velkého počtu balíčků najednou.

Homebrew uchovává všechny starší verze balíčků, má tendenci nekontrolovaně růst (brew info). Úklid provedete pomocí příkazu brew cleanup – tento příkaz odstraní všechny nepoužívané soubory a starší verze.

Závěrem ty osobní zkušenosti

Jsou tomu tři roky, co jsem opustil Ubuntu a ještě déle předtím Windows. Za tři roky jsem si zvykl na jiné rozložení klávesnice. Zvykl jsem si na ⌘+R místo F5 pro obnovení stránky v prohlížeči. A hlavně jsem si zvykl na to, že když něco funguje, tak to šetří spoustu drahocenného času.

  • Nové verze systému obvykle přežijete bezbolestně. Je lepší mít zadní vrátka v podobě zálohy na Time Machine.
  • Aktualizace systému (jedna až dvě ročně) se obvykle provedou bez vaší asistence v noci.
  • Více monitorů nebo projektor neznamená problém.
  • Notifikace, AirDrop, Spotlight, iMessage prostě fungují.

Abych jen nechválil. OS X není case sensitive (přestože se tak tváří). Pokud si disk naformátujete tak, aby skutečně case sensitive byl – nebude vám fungovat řada programů. Je tedy lepší dávat pozor při pojmenovávání souborů a nechat to tak, jak to je (Mac OS Extended (Journaled)).

OS X neumí nativně zapisovat na NTFS disky. Dříve nebo později na takový disk narazíte. Jedinou cestou je používat exFat nebo specializovaný software.

Každá záloha může selhat. Verzujte si své uživatelské nastavení a instalované balíčky: https://github.com/OzzyCzech/dotfiles

Komentáře

Subscribe
Upozornit na
guest
28 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Tomas Dvorak

Opravdu jsou lidé tak překvapeni vývojem na Macu? Vždyť na IT akcích je to vždy snad 50% mac a pak až další systémy.

Bubla

Jenže všichni ti lidé s Macem na něm mají virtuální stroj s Windows a v něm pracují, protože profesionální programovací nástroje na Macu nerozjedete.

Michal

Další největší profík na světě, co? Že je vás vždycky v diskuzích tolik… Co jsou u tebe profesionální programovací nástroje? Tak trochu se tím taky živím a za čtyři roky jsem nenarazil na nástroj, co by v OSX nefungoval. Že nepůjde Visual Studio, to je snad jasný. Ve Windows zase nerozjedeš Xcode.

David Ondřich

Všichni prokazatelně ne.

Nevím, jestli Eclipse, Maven, gcc / g++, git, SVN / Cornerstone a spousta dalšího SW jsou dostatečně profesionální, ale já je každotýdenně při práci používám.

Nicméně virtuální stroj opravdu v OS X mám, dokonce tři — na jednom je QNX a na dvou linux.

Tomas Dvorak

Můžete prosím specifikovat, jaké profesionální programovací nástroje máte na mysli?

mekele

Lopatu s numpadem.

Lukas

Jake konkrétně programovací nástroje? Ja dělám webový vývoj na Macu už přes 5 let a zatím jsem (kromě občas nutnosti otestovat web v IE) nenarazil na problém. Používám primárně IntelliJ IDEA, ale bez problémů fungují i třeba Netbeans nebo Eclipse. Samozřejmě pokud vyvijíte Windows aplikace, tak to není vhodny OS :)

Jjjjjjj

:D pan ho asi v zivote nevidel

satai

Chtelo se mi napsat, ze to neni dobre ani jako pokus o flame… ale jako to ten prispevek ocividne zabral.

expee

Na Macu vyvíjím už rok a přechod z Fedory byl tak jednoduchý, že už to snad ani nestojí za řeč. Java, tomcat a IntelliJ Idea jsou pro všechny platformy shodné. Stejně tak i git a maven. Víc toho nepotřebuji….

VojtechBartos

Urcite bych doporucoval Vagrant misto toho rvat vsechno do laptopu, ale jinak thumbs up

Vojtěch Mikšů

A ja bych ho zase nedoporucoval, protoze pak je prace podstatne pomalejsi. Asi pul roku jsem ho pouzival s pomerne komplikovanym projektem vyuzivajicim grunt s mnoha watchery a tasky a kazda kompilace/refresh byla pul minutove utrpeni. Vubec bych se toho rvani do laptopu nebal. Homebrew se drzi v /usr/local a je tezke neco „rozesrat“.

Michael Czolko

Pomalejší práce je v tomto případě relativní pojem. Instalace projektu vyžadovala pár příkazů do konzole než celý den instalování environmentu. Vagrant v žádným případě nenese zodpovědnost za pomalou kompilaci/refresh, Grunt sám o sobě je pomalej a aplikace může být dost prasácky napsaná. Díky Vagrantu dostaneš sjednocený vývojový prostředí. Není nic lepšího, když Ti ochotný kolega poradí se slovy: „U mne to funguje“. Příjde mi, že si Vagrant pleteš s VirtualBoxem či VMWare, kteří bojují se vzdáleným FileSystémem a díky tomu je konkrétně ten Grunt watch pomalej. Ale je pravda, že je to náročnější, přeci jen jedeš ve virtuálu další operační systém.

Vojtěch Mikšů

„Ale je pravda, že je to náročnější, přeci jen jedeš ve virtuálu další operační systém.“ Takže se mnou vlastně souhlasíš?

Michael Czolko

Vlastně ano, koupil jsem si lepší stroj, takže už mě tohle tolik nepálí. Jen říkám, že i přes tenhle oser nezapomínej na na výhody!

Honza Cerny

Pridal bych doporuceni na ZSH. V mem pripade jiz prednastavenou „distribuci“ https://github.com/robbyrussell/oh-my-zsh

Srigi

oh-my-zsh je fajn, pouzivam ho stale, hadam uz treti rok. Ale fakt spomaluje inicializaciu konzoly. Myslel som si, ze sa to zlepsi, ked budem mat SSD disk, ale skoro vobec to nepomohlo. Stale tam je otravny delay, asi 600ms, ked otvaram novu konzolu. Preto teraz pokukujem, ze to spravim inak.

satai

zsh je výborný, ale pro interaktivní práci (ne scriptování) jsem loni upgradoval na fish. I k němu doporučím oh my fish ;-)

Roman Klos

+1

MichalKleiner

Ja jsem pred rokem presel primo z Windows na MAC a uz predtim jsem naopak mel virtualni stroje s Linuxem pod Windows. Takze za me zadny problem, vse jsem si rozjel pres MacPorts tak, jak jsem potreboval.

V jedne diskusi tusim na Develu jsem narazil na to, proc pouzivat Mac, mozna to bylo dokonce i od srigiho:
Je to unix, ktery proste funguje.

yedpodtrzitko

Proc je v nadpis o vyvoji modernich webovych aplikacich a clanek samotny je o instalovani PHP?
K vyvoji v PHP je potreba porad instalovat webserver na localhost?
Nac Redis a Memcached zaroven? Resp. proc Memcached? Nejaky pripad, nac by se Redis nehodil?

Doporucil bych podivat se na Lunchy, coz je wrapper na launchctl umoznujici pohodlnejsi spravu sluzeb ( https://github.com/eddiezane/lunchy ).

yedpodtrzitko

Mam trochu pochyby, zda nainstalovani webserveru na localhost nejak pomuze priblizit se produkci, pokud tam bezi jiny operacni system s jinymi verzemi knihoven, jinou verzi jazyku atp.

t00r

Mac je mojou jedinou platformou na desktope uz dobrych 8-9 rokov, tiez pisem webove aplikacie okrem ineho. Ale zvolil som si uplne iny pristup – „serverovu“ cast mam cez VMware Fusion na virtuale a simulujem si produkcne linuxove prostredie, rokmi overeny a perfektne fungujuci setup. Mac pouzivam vyhradne ako „klientsku“ cast.

chleba

Proc nepouzit MAMP kterej v sobe ma uz vsechno. PhpMyAdmin taky sem schopnej nainstalovat na MacOS a npm se v podstate zrodilo na MacOS. Mac je na vyvoj vselijakejch aplikaci uplne super … uz na nem delam asi 4.roky a k Win nebo Linuxu bych se doma nejspis asi uz nevratil. V praci pouzivam vsechny 3.systemy na vyvoj HTML5 her.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.