LINUX.ORG.RU

Хочу написать вэб-приложение

 , , ,


0

1

Собственно, сабж. Никогда с вэбом не сталкивался, даже в архитектуре клиент-сервер ничего не писал, с БД не работал, HTML/CSS/Javascript/Php/ и т.п. не умею, опыта вообще ноль. Хочу - чтобы в браузере открывалась страничка с удаленного сервера, я ввожу текст в поле - идет запрос на сервер, и в другое поле выводится ответ или в третье рисуется графический примитив, допустим. через ajax какой-нибудь или что там еще. В перспективе развития - чтобы несколько человек зашло на страницу и при команде от любого ответы приходили всем. Собственно, вопрос - сейчас 100500 модных слов, технологий и фреймворков - что посоветуете для данной задачи? Какой сервер, и т.п. Особых наворотов не надо, платные компоненты также не хочется рассматривать.


Ответ на: комментарий от filequest

Короче, ты не в теме, я так и понял, что ты просто кукарекушка.

Конечно не в теме :-) Стек не раскрутился после throw FIN, а программа продолжает работать сама по себе даже после того, в консоль была выведена строка FIN :-) Лол :-)

anonymous
()
Ответ на: комментарий от anonymous

блин, бо чего же ты трудный. Ты же сам цитировал какую то хренотень, которая прямо противоречит тому, что ты сейчас кукарекаешь. Все давай, до свиданья, специалист.

filequest
()
Ответ на: комментарий от filequest

блин, бо чего же ты трудный. Ты же сам цитировал какую то хренотень, которая прямо противоречит тому, что ты сейчас кукарекаешь. Все давай, до свиданья, специалист.

Засчитано :-) Не забудь прочитать хотя бы Eloquent JavaScript :-) Ведь его написал Common Lisp известный программист в прошлом :-) Там про раскрутку стека написано :-)

anonymous
()
Ответ на: комментарий от anonymous

нет, спасибо. Пользователь более слабого языка едва ли может что-то написать о более сильном(не забываем, что JS — это еще и ООП - язык, и это его наиболее сильная сторона)

filequest
()
Ответ на: комментарий от Nervous

Подделки, что же еще. Лисп не был спроектирован, он развивался. Десятилетиями. Вбирая в себя жемчужины *практической* разработки. CL вобрал в себя все это, когда ребята из DARPA решили, что нужен стандарт. А те, что ты перечислил, решили, что это тупой легаси бред и пошли своей дорогой к «чистоте» и прочему счастью. Удачи, им, она им понадобится.

anonymous
()

Например связка Django + Python. В свое время писал на них систему заявок технической службе. Бесплатно, порог вхождения довольно низок.

saibogo ★★★★
()
Ответ на: комментарий от filequest

Не, ты безнадежен, аnonimous, прощай :)

anonymous
()
Ответ на: комментарий от filequest

нет, спасибо. Пользователь более слабого языка едва ли может что-то написать о более сильном

Хахаха :-) В отличии от любителей всякой никому не нужной параши, вроде языков с такой неимоверно ненужной гибкостью, где можно лизнуть пятку через гланды, этот пользователь «более слабого языка» написал на JavaScript известные и используемые в мире программы: Tern, CodeMirror, ProseMirror. Написал хорошую библиотеку Postmodern для Лиспа, компилятор JavaScript -> Common Lisp, написал книги о JavaScript, консультирует и помогает людям :-) Не чета всяким разным посредственностям :-) Лол :-)

anonymous
()

Вот это за хлебушком сходил.... Не, я понимаю, что выдал пару провокационных фраз, но я не специально :)

Да, я ничего не знающий фп-дрочер (и haskell люблю, но не умею, и схему так же). Да, я жертва стереотипов - и именно поэтому так написал про джаваскрипт. Хотя я понимаю, что сейчас и в ближайшем будущем это нативный браузерный язык, и в любом случае придется с ним знакомиться, в отличие от того же пхп, например. Но писать на нем серверсайд - это если бы я уже знал его хорошо, костылил бы фронтенд годами, и захотел все в одном языке и флаконе - тогда однозначно взял бы ноду.

Теперь про джаву. Как фп-дрочер, я тоже не фанат ее. Но когда выбирал язык с перспективой портирования на Андроид - Котлин был не релизнутый, Кложа была и осталась тормозная (запуск на андроиде), Скала пугающая, Хамарин с С-Ф-шарпами - платный... Это сейчас Котлин релизнулся, Хамарин купили, сделали бесплатным и пиарят вовсю... А джава - нативная, с отличной поддержкой в Идее, и с морем уже решенных моих будущих граблей в ответах по всему инету. Поэтому и накостылил на ней. Хотя и писал на ней всего месяц в жизни - январь этого года. Я с интересом смотрю и на Го и на Питон и на Джаваскрипт и на кучу других языков (вот только Пхп все-таки не хочу, уж простите меня его апологеты). Но мне надо с чего-то начать - я ни в зуб ногой, а выбор огромен. И поскольку у меня уже есть Свинговое жаваприложение - то естественно при переводе его на вэб оставить серверную часть на джаве, по крайней мере саму логику. Я не настолько разбираюсь, чтобы придумать архитектуру, которая на серверсайде будет крутить мою джава-логику, при этом другие задачи решая модулями на других языках. Но клиентскую часть я был готов писать в блокноте на хтмл/цсс/жаваскрипте, и постигать кучу моментов, с этим связанных. То, что Ваадин инкапсулирует от меня все это великолепие, оставляя только наружнее апи - это сильно облегчит задачу, хотя и понимания процессов не прибавится. Но с другой стороны - если предлагаются удобные высокоуровневые абстракции - то почему бы ими не воспользоваться?

ЗЫ хотя если есть другие ИДЕ-фреймворки, в которых есть удобно запускаемые встроенные сервера, для которых не нужно каждый раз полностью собирать все приложение - то это тоже интересно попробовать.

Ivana
() автор топика
Ответ на: комментарий от filequest

Угу, страуструп тоже много чего нагородил, может и его тоже зауважать до кучи?

Это лично дело каждого, уважать его или не уважать :-) Но с ним приходится считаться, хочется того или нет :-) В историю он уже вошёл, как создатель самого сложного языка программирования на планете :-) Но давай лучше не будем сейчас переходить к обсуждению цепепе :-) Не охота мне здесь и сейчас это обсуждать :-) Салют :-)

anonymous
()
Ответ на: комментарий от anonymous

Поддерживаю предложение не обсуждать здесь С/С++. Это отличные языки (это не наброс на холивар про их недостатки :)), но их я бы на начальном этапе исключил из рассмотрения для сабжа темы.

Ivana
() автор топика
Ответ на: комментарий от Ivana

Ну я придумал такую схему, которая более укладывается в голове человека, который хоть что-то умеет.

Пишем себе на жабаскрипте, либо используя какую-нибудь тулзу для нормального язык(http://leaningtech.com/cheerp/, либо емскриптен, но он не юзабельный) бустрап. Там уже поднимаем вебсокет и общаемся как с нормальным приложением. Учим его понимать нормальный бинарь и нормальные протоколы.

Тем самым нам не нужны хттп, ури, ксс, хтмл, веб-серверы, текст и прочее убожество. Нам надо только уметь отвечать на get отдачей статичного скрипта. А дальше там есть индексдб в которую всё это забивается и спокойно работает оффлайн без всякой херни.

Документы строим руками, декорируем то же. Делается простой мини-фреймворк - всё просто и понятно.

registrant27492
()
Ответ на: комментарий от Ivana

В принципе, подобный подход можно использовать, только, естественно, не такой, а смысл, что бОльшая часть приложения у тебя будет работать на клиенте. Ты шлешь клиенту код, он его исполняет, потом может запросить еще что-нибудь, и тд. Это сплошь и рядом интерактивность и асинхронность, так, собственно современные приложения и делаются. Это может быть вообще одностраничник, который постоянно перерисовывается. Но если JS не очень хорошо знаешь, трудновато будет, на бутстрапах жекверях и прочих перделках далеко не уедешь:)

filequest
()

Тебе понадобятся следующие знания - html, css(куда же без него?) и javascript. Использовать фрамеворки и библиотеки совсем не обязательно. Это фронтенд.

Для бэкэнда нужно выбрать язык. Можно взять хайповый node.js(кстати, его хайп уже сошёл на нет), а можно качественные штуки проверенные временем, такие как Python с Django/Flask/etc.

th3m3 ★★★★★
()

При всех разногласиях почти все упоминают некий «вэбсокет». Только начал читать что это за зверь, и чувствую, что это хорошая штука. Единственно что смущает - фраза в вики

В конце ноября 2010 Adam Barth опубликовал результаты исследования надежности используемого протокола[3]. По его результатам выяснилось, что в случае использования прозрачных прокси-серверов, возможна подмена кеша передаваемых данных с тем, что пользователи вместо реальных данных будут получать версию данных от злоумышленника. Проблема оказалась достаточно серьёзной для того, чтобы разработчики Firefox и Opera объявили о том, что в будущих версиях их браузеров поддержка веб-сокетов будет по умолчанию отключена вплоть до устранения проблемы небезопасности данного протокола (хотя осталась возможность их включить).

Или это уже неактуальная информация и все стало хорошо с приходом wss? Проверил - мой хром поддерживает. Просто не хочется столкнуться с ситуацией, когда приложение работает только на одном браузере. Народ будет заходить, видеть фигу, плеваться и уходить навсегда, даже не подумав включить поддержку вебсокетов в браузере. Я конечно не имею в виду поддержку IE6, но не знаю какая сейчас ситуация с этим.

Ivana
() автор топика
Ответ на: комментарий от Ivana

Или это уже неактуальная информация и все стало хорошо с приходом wss?

Неактуальная, в связи с усовершенствованием протокола.

Для совмесимости с более старыми браузерами можно использовать схемы вроде Socket.IO или SockJS, позволяющие использовать вебсокеты если они работают, и эмуляцию имеющимися средствами в противном случае

annulen ★★★★★
()
Ответ на: комментарий от annulen

Тогда это ваще круто. А еще думал создавать тему или нет. А то так и читал бы в инете статьи типа «клиент формирует запрос серверу, а сервер в ответ пересылает клиенту новую html-страницу» и кусочный рефреш типа ajax-а казался бы пределом мечтаний. А тут такая асинхронная красота! Нажал на клиенте кнопку 200 раз, отправил серверу 200 заданий, он бедняга крутится, на 201-й раз говорит - хорош, лимит в 200 для таких как ты, а потом начинает так же асинхронно ответы присылать. Единственно что - не понимаю, если ответы длинные и занимают много пакетов - они будут перемешиваться или реализация протокола гарантирует, что на клиенте будет вызвано ровно 200 коллбэков по приему, и каждый коллбэк получит свою «Войну и мир» без пересечения с другими? Надо почитать еще про это будет, как в жаваскрипте эти ответы асинхронно параллельно обрабатывать...

Ivana
() автор топика
Ответ на: комментарий от Ivana

Обработка всего - это твоя задача. Как напишешь - так и будет. Как отправишь - так и придёт. Вебсокет работает поверх tcp, а в нём порядок гарантируется.

Никаких пересечений в жабаскрипте не бывает - он однопоточный.

registrant27492
()

Пост куда-то потерялся. Выложу ещё раз, может кому пригодится.

Минимальная старничка, динамически обновляемая сервером после нажатия кнопки:

(app)
(action
   (html 0 "Hello Web" "@lib.css" NIL
      (form NIL
         (<h1> NIL "Hello, web" (gui '(+Init +NumField) 0))
         (gui '(+JS +Button) "Inc"
            '(let Num (field -1)
                (set> Num (inc (val> Num))))))))

$ sudo apt-get install picolisp

$ pil @lib/http.l @lib/xhtml.l @lib/form.l --server 8080 hello.l -wait

anonymous
()
Ответ на: комментарий от anonymous

может кому пригодится

Спасибо, очень занимательно. Может напишете подробное пошаговое руководство по созданию сайтов на пиколиспе, да выложите ссылку? А я тем временем попробую победить жавский Jetty-сервер, чтобы он запускался и отзывался из Idea community в Maven-проекте.

Ivana
() автор топика
Ответ на: комментарий от Int0l

Я пробовал. И пилил на нём реальную связку сервер + Андроид-приложение. Щас работает в продакшне, никто не жалуется. Единственное - пришлось серверную часть в докере разворачивать, так как метеор гвоздями прибит к ноде 0.10, и это единственный фактор, который меня там бесит.

border-radius
()
Ответ на: комментарий от border-radius

И тебя не напрягает жручесть памяти и 5-10 секунд на обновление изменившейся страницы?

anonymous
()
Ответ на: комментарий от anonymous

Отнюдь. С учётом туевой хучи подключенных приложух это нормально. Меня напрягает гвоздеприбитость метеора к древней ноде, то есть невозможность заюзать, например, шестую версию и, как следствие, невозможность писать серверную часть на ES6 безо всяких бабелей.

border-radius
()
Ответ на: комментарий от border-radius

Спасибо, давно хотел комментов про практику метеора.

anonymous
()
Ответ на: комментарий от Ivana

... пошаговое руководство по созданию сайтов на пиколиспе, да выложите ссылку?

Начните отсюда: http://picolisp.com/wiki/?home

Web Development: http://picolisp.com/wiki/?web Более подробно по этой теме: http://software-lab.de/doc/app.html

Наверное, это будет также интересно: http://www.prodevtips.com/tag/pico-lisp/

anonymous
()
Ответ на: комментарий от anonymous

Не смеши :-) Что такое PicoLisp против того же Node.js? :-) Что такое встроенная в PicoLisp СУБД против того же PostgreSQL? :-) При всём моём уважении к Лиспу... :-)

anonymous
()
Ответ на: комментарий от anonymous

Ну и поскольку нужна ява ...

... уже есть Свинговое жаваприложение - то естественно при переводе его на вэб оставить серверную часть на джаве, по крайней мере саму логику.

архитектура, которая на серверсайде будет крутить джава-логику: http://picolisp.com/wiki/?javacode

А это минимальное свинговое приложение:

(let (Frame (java "javax.swing.JFrame" T "Bye-Frame")
      Button (java "javax.swing.JButton" T "OK") )
   (java Frame 'add "South" Button)
   (java Button 'addActionListener
      (interface Button "java.awt.event.ActionListener"  # When button is clicked,
         'actionPerformed '((Ev) (bye)) ) )            # Exit PicoLisp
   (java Frame 'setSize 100 60)
   (java Frame 'setVisible T) )
anonymous
()
Ответ на: комментарий от anonymous

А ты выкати сюда результаты запуска:

$ ab -n100000 -k -c800 ...
Посмотрим на твою «красоту» под другим углом :-)

anonymous
()
Ответ на: комментарий от anonymous

Что такое PicoLisp против того же Node.js? :-)

Что такое встроенная в PicoLisp СУБД против того же PostgreSQL? :-)

Если проблему можно решить используя один маленький(~200kB) picolisp, то зачем нужна монстрообразная связка apache+Node.js+PostgreSQL+javascript?

anonymous
()
Ответ на: комментарий от anonymous

Если проблему можно решить используя один маленький(~200kB) picolisp, то зачем нужна монстрообразная связка apache+Node.js+PostgreSQL+javascript?

Пардон, я всегда, почему-то, думаю о чём-то масштабном :-)

anonymous
()
Ответ на: комментарий от anonymous

Пиколисп, повторюсь, интересен. Тем более, у меня нет претензий на масштабность. Но сейчас у меня уже работает обычная жаваскриптовая html-страничка, поднимается вэб-сокет и функционирует чат «на одного» - осталось добавить мультиюзерность. Ну и на этом сделать интерфейс приложения. Так что имхо имеет смысл дописать на этой технологии.

Ivana
() автор топика
Ответ на: комментарий от Int0l

Сейчас через скрипт много чего ставится, к примеру homebrew, pip, rvm, nvm и прочее. Там ставят, значит, cli (утилиты для терминала) версию для бутстраппинга приложухи на метеоре. Я пробовал метеор чисто для себя, мне понравилось, естественно, считаю для новичков его супер оптимальным, получше, чем Джангу с питоном учить - учить новичку придётся всего один язык, а пользы миллион. В продакшене метеор только у нескольких клиентов, лично я для себя использую express.js + backbone + vue.js. Есть ещё какой-то клон метеора, более активный в разработке, да и вообще, на данный момент web framework'и для Node.js - это бурно развивающаяся отрасль. Сейчас людей немного отпугнула неоднозначность развития самого Node.js и NPM - были срачи в сообществах и т.п., что и отпугивает другие американские компании вкладывать деньги в стартапы на JavaScript + V8.

menangen ★★★★★
()
Последнее исправление: menangen (всего исправлений: 1)
Ответ на: комментарий от filequest

Ты прав, вся экосистема этих язычков подохла не спроста, это и показало, что они менее жувичие потому, что более слабые. Почти как в биологии, только быстрее, но и инертность некоторых «илиток» позволяет существовать им на задворках человечества.

menangen ★★★★★
()
Ответ на: комментарий от Ivana

Как уже советовали Метеор.
Или N2O. В N2O на эрланге можно весь код писать и html, и javascript. Т.е. n2o может erlang код компилять в JS. Я когда это увидел прибалдел.
Плюс еще у N2O сразу клевый пример с чатиком, автообновлением кода в браузере, если код изменился на сервере.. Поменял ты скрипт на ералнге, n2o его компилит в JS и сразу отправляет изменения всем браузерам.
В n2o вся такое легкое (кроме самого erlang с которым нету времени разобраться). Ну короч N2O самое клевое из того что я видел.
Плюс автор еще какой-то яп пилит с системой типов который круче haskell должен быть, по его мнению.

Int0l ★★
()
Ответ на: комментарий от Int0l

В N2O на эрланге можно весь код писать и html, и javascript. Т.е. n2o может erlang код компилять в JS. Я когда это увидел прибалдел.

Много было рассказано подобных басней про «не нужно учить разные технологии, давай, используй наш волшебный фреймворк, который сгенерирует всё из одного языка» :-) На практике выясняется, что автор сайтишки поставлен в рамки, в которые сам себя и загнал :-) А время то идёт... :-)

Плюс автор еще какой-то яп пилит с системой типов который круче haskell должен быть, по его мнению.

Хахаха :-)

anonymous
()
Ответ на: комментарий от menangen

Ты прав, вся экосистема этих язычков подохла не спроста, это и показало, что они менее жувичие потому, что более слабые. Почти как в биологии, только быстрее, но и инертность некоторых «илиток» позволяет существовать им на задворках человечества.

Хахаха :-) И какую часть хотя бы одного язычка тебе довелось изучить, чтобы делать такие умозаключения? :-) Лол :-)

anonymous
()
Ответ на: комментарий от Int0l

Какие рамки ты о чем?

В которые вгоняют авторы фреймворков малоквалифицированных ваятелей, рассказывая про свои волшебные технологии :-) А потом получаются вопросы вида: «а как мне в вашей технологии, компилирующей код на языке X в JavaScript подключить библиотеку L, а то я пишу, вот так, а оно не работает» :-) А время идёт... :-)

anonymous
()
Ответ на: комментарий от anonymous

Ну вот какой-то дауненок не может подключить библиотеку и че ? Лучше изучать кучу технологий/городить подключать кучу костылей? Пусть использует rails+html+js+webpack+«кучи говна» тогда, это его выбор. А если не хочется ковыряться в этом говне то есть альтернатива это N2O.

Int0l ★★
()
Ответ на: комментарий от Int0l

Как уже советовали Метеор.

Метеор - это пибамбас к Ноде.жс? Как (если) дойду до Ноды, посмотрю наверное.

Про Максима Сохацкого с его оксидом азота тоже интересная история. Но пока на будущее.

Ivana
() автор топика
Ответ на: комментарий от anonymous

Так что хочешь поломать можно :-)

Нет - не дерьмо не поломается ни от чего.

На большую нагрузку нужно подругому делать.

Это не большая нагрузка. Это никакая нагрузка и если твоё дерьмо показывает 5рпс - это чисто его проблемы, а не «большая нагрузка».

registrant27492
()

Ах да, если тебе не нравиться то, что я кого-то оскорбляю - так и пиши. Я перепишу это по-иному, но когда вот тут:

Хочу написать вэб-приложение (комментарий) и ещё в сотне мест пишут так же, как я - почему я не могу писать так же? Ты три либо всё, либо не три ничего.

registrant27492
()
Ответ на: комментарий от registrant27492

А оно мне надо защищать helloworld приложение в 10 строк от дос атаки?

твоё дерьмо ...

Поделись своей мудростью с нами и покажи свой код, делающий тоже самое, но лучше.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.