Избор на технология

shelby

Member
Здравейте! Имам желание да направя платформа подобна на мобиле.бг и един блог (целта на упражнението е образователна не да правя конкурентна страница , искам просто да видя как стават работите и сега имам време което да използвам да науча нещо ново). Но в морето от технологии и езици за програмиране се изгубих. Опитах се да чета за Node.js и laravel , но ми се видяха сложни нещата и последно се опитвам да се занимавам с python и django, което малко повече ми върви. Бихте ли ме посъветвали при такава ситуация как да подходя да продължавам да чета django или да оставя на страна mvc фреймлърка и да пробвам на php ? Благодаря ви за отделеното време !
 
Все тая технологията, каквото ти харесва, това да е. На ларавел няма как да не се оправиш, свиква му се, после всичко е много лесно. node/expressJS ще те хвърли в небитието с разни promises и там например ще видиш, колко е лек експреса откъм codebase, но пък затова винаги ти се налага да добавяш една камара npm пакети. Ако ти се занимава с образователна цел - пробвай да го направиш rest api, няма значение технологията, но отпред да е някакъв фрейм, който да консумира сървъра. На бачкане ползваме точно laravel + react, и maintain-ваме едно expressjs api, ларавела е много по-удобен, поне за мен, много го улесниха за апита с resources, дето ги добавиха в 5.5 . Но със сигурност restful api + да кажем libraly като react, ще ти помогне повече отколкото обикновен сървър, който връща html.
Имай и едно наум, че ларавел е много близък с други фреймове, имплементира active record, тоест е близък до ruby on rails, също има общи библиотеки от symfony, за django не знам, но също python не се търси кой знае колко в бг за бачкане.
- много готино е това.
 
Последно редактирано:
Ако имах време и възможност бих пробвал да го направя serverless и целият софтуер да работи само с API колове хоствани в Amazon или Google Cloud. Може да разгледаш някой nodejs framework. Например този https://github.com/serverless/serverless
 
Можеш реално с всичко да го направиш, но за да не се мъчиш много, използвай някой фреймуърк. Аз лично бих препоръчал Node.js + AngularJS, но предложението за PHP фреймуърк - може би бих дал един глас за Laravel, но не бих изключил и Zend, вече зависи много кое точно ще ти свърши повече работа. python, ruby и тем подобни са за наистина тежки приложения, поне в моя опит там влизат предимно, за такива леки проекти - определено не се мъчи с нещо не чак толкова не мислено в насока API, така де, мислено е, но другите са идея по-лесно при емблементирането им. :)
 
Според мен ползвай само Ларавел, без някакъв front-end framework.
Щом задаваш този въпрос, значи си начинаещ в програмирането. В такъв случай не скачай в няколко технологии на веднъж. Ларавел е доста подходящ в момента, развива се, има голяма общност, има перспектива за вбъдеще. С този framework ще можеш да си направиш завършен сайт.
А ако го направиш като rest api и отпред му сложиш angular / react / vue само ще се затрудниш. Това означава да научиш на веднъж 2 framework-a на 2 различни езика, всеки със своите специфики. Много ще се опетлаеш и ще загубиш време. И трите изброени не са никак лоши, но по-добре научи едно нещо както трябва, отколкото 5 от които да не знаеш нищо.

За начинаещ програмист да направиш front-end & back-end на отделни технологии звучи по скоро като мисия невъзможна. Не си губи времето в такива неща.
Аз бих ти препоръчал php, вместо python или г/д който и да е друг, защото е много приятен език и има огромно търсене в момента. Някъде в bgdev имаше една статистика за България какво търсене има и php беше в пъти над другите. Докато при python ще имаш опции да работиш само за няколко фирми в цялата страна. Той е много хубав език, просто има малко търсене.
А най-голямо търсене има при js, но там бекенда ти ще трябва да е на node.js, който е малко по-различен от front-end framework-ите и също ще се объркаш доста.
 
Основното правило в тоя случай е - пиши на това, на което си най-продуктивен.

Иначе ползвай фреймуърк, защото иначе ще трябва да преоткриваш топлата вода многократно. В тоя ред на мисли - Laravel е чудесен за PHP, за Python може би Flask е по-добре.

Заеби всякакви front-end фреймуърци и глупости - такъв сайт не можеш да направиш на Angular, защото няма да се индексира от търсачките. За да преодолееш тоя проблем трябва да правиш server-side rendering на JS, което си е поредната молоумщина в JavaScript екосистемата. Единствено има смисъл за някакъв admin панел или нещо което е достъпно след като потребителя се е логнал. В този случай бих ти препоръчал VueJS - по-добрия React. Там learning curve-а е най-плавен и най-бързо ще имаш резултати...

Serverless (AWS Lambda или Azure Functions) не са подходящи за такъв тип сайтове, така че тоя вариант спокойно може да го пропуснеш за момента. Иначе ги разцъкай в последствие - има смисъл.

Сайтове с такова детайлно търсене рядко използват само БД ... Обикновено данните от базата се прехвърлят към NoSQL индекс от сорта на SOLR или ElasticSearch и там се случва същинското търсене, а самия индекс клъстер много лесно се скалира хоризонтално. Всяка нормална база би клекнала при търсене по толкова много критерии

Като цяло "платформа подобна на мобиле.бг" ми се вижда твърде амбициозна задача за начинаеш. По-добре започни с въпросния блок и после виж как ще се развият нещата.
 
мобиле бг е сайт от 2002. Как са се справяли преди навлизането на NoSQL

Виж как е изглеждал 2002-а година и колко обяви е имал:
2rdj3mu.jpg
 
Виж как е изглеждал 2002-а година и колко обяви е имал:
2rdj3mu.jpg
И това се е водили тогава добра визия и технология. Така де - къстам PHP + mySQL. :)

Не, че нещо, но са подменяли доста неща през годините, както и са внедрявали нови технологии, айде не чак технологии, но библиотеки, а за мобилната им версия няма какво да говорим, там е новично и съвременно. ;)
 
Но в морето от технологии и езици за програмиране се изгубих.

Ами започни от основите. Като за начало трябва да знаеш HTML и CSS до известна степен. Тези се учат в движение, но е добре да знаеш някои основни тагове и стилове. Хубаво е да знаеш и основните принципи при HTTP, все пак цялата комуникация се извършва върху тоя протокол.

Без JavaScript няма да минеш, просто всички браузъри това ползват. Като език е малко по-шашав от всички останали - пълно е с колбеци (callbacks), евенти и прототипи. Аз не бих ти препоръчал да захващаш дори jQuery преди да проучиш как работи JavaScript.

За сървъра не знам какво бих препоръчал :) Всичко различно от JavaScript (NodeJS) предполага, че трябва да научиш друг език, например PHP. И после на браузъра ще пишеш на JS, а на сървъра на PHP. Тогава ще се запиташ "Защо трябва да уча два различни езика, след като вече знам JS не може ли да го използвам на двете места едновременно?" Но на практика си има различни специфики - процесите в браузъра и на сървъра се случват по съвсем различен начин. В браузъра ролята на JS е да работи върху DOM дървото, да засича евенти и да променя елементи. Затова JS кода е асинхронен и имаш колбеци, то просто се налага. На сървъра обаче въобще няма такова DOM дърво, там не натискаш по бутони и не променяш HTML елементи, атмосферата е доста по-различна през повечето време. На сървъра четеш записи от базата данни и връщаш резултати => е много по-лесно и разбираемо кода да е синхронен, както е в PHP. Но JS е асинхронен по природа и се получава едно такова разминаване - блъскаш едни колбеци на сървъра за щяло и нещяло и се питаш "Защо по дяволите?". Така че може да е по-лесно просто да научиш език, специфично направен за да се ползва на сървъра.

Но държа да отбележа, че в зависимост от сайта може да е по-добре да бъде написан на NodeJS или на PHP. Значи, ясно е че като пишеш код на PHP, той е напълно синхронен - всичко започва от ред 1 и приключва на последния ред от кода, все едно четеш книга. Е да, но посетителите зареждат сайта асинхронно - Пешо не чака Гошо да си зареди страницата. Значи по някакъв начин PHP приема заявките на посетителите асинхронно, но самия код е синхронен, все едно има някакъв конвертор. Това става като за всеки потребител се отваря нещо като нов процес, което си има своите недостатъци - при по-голям наплив от посетители PHP ще клекне. При NodeJS всичко си е асинхронно в самия код и имаме само 1 процес дето обслужва всички входящи заявки. Това пък носи други недостатъци... ама да не задълбаваме повече :)

Пробвай това и онова, пък което ти хареса. Няма как да налучкаш най-добрия език за твоите предпочитания от първия път.
 
И това се е водили тогава добра визия и технология. Така де - къстам PHP + mySQL. :)

Не, че нещо, но са подменяли доста неща през годините, както и са внедрявали нови технологии, айде не чак технологии, но библиотеки, а за мобилната им версия няма какво да говорим, там е новично и съвременно. ;)
нека не се вкопчваме толкова в тая 2002г
На монго първия рилийз е 2008. На еластик 2010. И никой не вярва че в мобилето са ги внедрили /ако изобщо са/ в първата година нали.
в мобиле.де са 1.5 млн колите. Ако кажеш на някой дба че сърч по много критерии на толкова резултатит ще му сгъне базата ще го умориш от смях
И преди това е имало бази с милиони редове и търсене по много критерии и в момента не всички такива бази са NoSQL

Според мен питащия трябва точно топлата вода да открива и да му е много трудно, защото иначе след някоя друга година ще е нищо по различно от stackoverflow copy/paste девелопер с фешън думички в CV-то. За това и бъзнах георги, защото сме на коренно противоположни мнения, но за съжаление посоката в която тръгна не предвещава добра дискуция
 
nosql като термин може и да е нов, но това не значи че съществува от "вчера" (hint: първата версия на memcached излиза 2002/2003 и не те не са първите :)).

@shelby имаш още доста неща да понаучиш/прочетеш преди да правиш това упражнение.
 
@shelby Ако целта е да се научиш как се правят уеб страници, почни с нещо по-елементарно като за начало. Щото както си тръгнал висока цел си си поставил за човек който не знае нищо все още. Първо научи език някакъв език (php,perl,python) се тая каквото ти е на душата. Заедно с него някоя база данни mysql като за начало е винаги добре. Почни да четеш за http протокола и малко по малко ще се получат нещата.
 
Благодаря за отделеното време на всички ! Популярните езици за програмиране като java,c# съм почвал да ги чета но никога не съм задълбавал. За това се насочих към python защото синтаксиса е една идеа по-лесен, но вече ми станаха ясни "уж" работата с обекти, наследяване, абстракция .От около 2 седмици се опитвам да разцъквам django, напредвам но бавно . Какво ви е мнението за тази технология спрямо laravel ? За frond end частта мисля да използвам нещо по базово направено на bootsrap. Проблема при мен е че искам да стане бързо, а няма как да стане като не познавам технологията и за това търся най-лесния вариант.
 
Бързата работа срам за майстора. Няма как да стане бързо.Всъщност има ако инсталираш готова такава система сигурно за няколко дни ще можеш да се ориентираш къде какво , но не това е целта на задачата нали :)

Python като цяло е много добър,бърз и надежден. Учи те как да си подреждаш кода, така че да може лесно да се ориентираш в него.

Моето мнение е че преди да ползваш framework е хубаво да поработиш без framework.Това е изключително важно ако си решил да си изкарваш хляба с тази професия. Ако си решил пък че искаш просто да зглобиш нещо на бързо без да знаеш из основи кое как работи, да framework-a би те улеснил в това нещо.

Ето ти истината за frameworks казана от самия създател на php и всеки сериозен developer ще ти каже същото. Казаното във видеото важи за frameworks in general без значение от езика.

 
Последно редактирано:

Горе