LINUX.ORG.RU
ФорумTalks

2024: Куда движется Web и с какого конца на него смотреть?

 , ,


1

4

Привет!

После изучения HTML и какого-то зачаточного знакомства с тогдашним JavaScript лет 20 назад я сознательно избегал всего этого «около-веба». Тем временем оно росло, цвело, раскидисто раскидывалось и заняло приличный кусок рынка.

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

Ajax, Vue, Flutter, TypeScript, React - сходу навскидку называю, при том что не слежу вообще за темой

Почему не произошло отделение языка (JavaScript, TypeScript, Flutter) от реализаций библиотек которые рисуют эти ГУИ?

Почему не взлетел(?) WebAsm? Почему мы не пишем Web GUI на обычных нормальных языках, используя обычные нормальные библиотеки?

Переизобретается ли раз за разом велосипед, который едет подпитываемый неофитами, которые не помнят даже того, что было год назад, по одним и тем же граблям?

Есть ли понимание каким должен быть идеальный веб и если да то какая часть этой инженерии наиболее правильно движется в эту сторону?



Последнее исправление: ahdenchik (всего исправлений: 1)

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

Наследие, нельзя просто взять и отказаться от всего что было сделано до этого.

Именно это веб-программисты и делают с регулярностью, достойной лучшего применения

Имеется в виду изобретение фреймворков?

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

Именно это веб-программисты и делают с регулярностью, достойной лучшего применения

Прямо уж веб-программисты, тебе заказчик в требованиях прописывает что должно работать в Chrome, Firefox, Safari. Не знаю как сейчас но раньше прямо требовали совместимость с конкретными версиями, сейчас наверное требуют работоспособность с определенных версий Android и IOS.

У тебя и сейчас загружается обфусцированный JS-блоб который ты точно так же не можешь ни прочитать ни исправить

Ну тут не поспорить. Если останется DOM и прозрачная коммуникация с сервером то у меня возражений против байткода нет.

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

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

Я об этом же и пишу.

И да, в некоторых хитрых случаях между fetch и xhr есть различия в поведении.

Конечно, иначе бы писать обертку над xhr в виде fetch вообще не имело бы смысла.

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

Почему не произошло отделение языка (JavaScript, TypeScript, Flutter) от реализаций библиотек которые рисуют эти ГУИ?

Реализации написаны на этих языках, но никто не заставляет этими библиотеками пользоваться.

Утверждаю что Flutter невозможно использовать без использования Dart

ahdenchik
() автор топика

Ajax

24 года

Vue

20 лет

Flutter

4 года

TypeScript

12 лет

React

22 года

М.б поменьше читать советских газет до обеда?

Почему примерно раз в полгода появляется новый правильный фреймворк который точно станет будущим, но через год про него все забывают?

Потому что создать фреймворк не супер сложно

Почему не произошло отделение языка (JavaScript, TypeScript, Flutter) от реализаций библиотек которые рисуют эти ГУИ?

В смысле? Ты можешь юзать в JS библиотеки на TS и наоборот.

Почему не взлетел(?) WebAsm? Почему мы не пишем Web GUI на обычных нормальных языках, используя обычные нормальные библиотеки?

Ну видимо потому, что «мы» не хотим.

Переизобретается ли раз за разом велосипед, который едет подпитываемый неофитами, которые не помнят даже того, что было год назад, по одним и тем же граблям?

Ну пусть переизобретают, вам что жалко?

Есть ли понимание каким должен быть идеальный веб и если да то какая часть этой инженерии наиболее правильно движется в эту сторону?

Вот многие из JS фреймворков сейчас пришли к весьма похожему друг на друга виду. Так что спасибо вам большое за ваше беспокойство за веб, и поменьше читайте до обеда советских газет.

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

22 года

М.б поменьше читать советских газет до обеда?

Так никаких других нет! Всё что видит человек со стороны, который не погружён в тему, это хипстерские морды в статьях на Хабре о том как реактивность(!!) изменит мир Веба. Аэродинамика, блин!

Почему не произошло отделение языка (JavaScript, TypeScript, Flutter) от реализаций библиотек которые рисуют эти ГУИ?

В смысле? Ты можешь юзать в JS библиотеки на TS и наоборот.

А я могу юзать Flutter из C++? Из Rust? А почему?

Другими словами, зачем мне знать, например, бессмысленный тупиковый Dart если я могу в замечательный универсальный Rust?

Переизобретается ли раз за разом велосипед, который едет подпитываемый неофитами, которые не помнят даже того, что было год назад, по одним и тем же граблям?

Ну пусть переизобретают, вам что жалко?

Знания не бесплатны, работающая голова - это дорого. (У C++ программиста и так голова забита знанием костылей языка за последние 30 лет)))

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

Конечно, иначе бы писать обертку над xhr в виде fetch вообще не имело бы смысла.

Вот только в том же Хроме скорее xhr использует низкоуровневую реализацию fetch, а не наоборот

static_lab ★★★★★
()

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

Идеальный реальный веб - server side генерация страничек, javascript в умеренном количестве для интерактивности, но только в рамках тематики конкретной страницы (скрипты не должны влиять на потенциально индексируемый контент). И обязательно возможность править шаблоны без перекомпиляции всего приложения, чтобы например поставить в другой угол рекламный блок.

А, и ответ на вопрос куда движется веб. Веб никуда не движется, он стоит на месте. Разделился на две половинки. Первая это собственно веб, в котором как были 30 лет назад HTML, CSS, PHP и JQuery, так и остались с минимальным прогрессом за все это время (потому что stateful javascript фреймворки это деградация, за исключением определенных ниш вроде гигантов а-ля гугл и фб и админок). А вторая это приложения.

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

А я могу юзать Flutter из C++? Из Rust? А почему?

Т.е. ты хочешь манипулирование дом из WASM? Ну может допилят и дадут, то тут то там просьбы об этом звучат.

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

Всё равно каким путём, но я, как минимум, не хочу изучать язык (заведомо плохой язык!) чтобы сделать себе сайт из 3 страниц и двух форм

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

Для этого не обязательно изучать стек вебтехнологий, все эти знания нужны только для Single Page Application (переложение которое шифруюется под веб-старичку). Для трех страиц и формы достаточно HTML+CSS, ну может быть немного Vanial-JS. А если без форм, а просто сайт с инфой то можно пользоваться статическими генераторами, такие есть и на сях написанные.

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

как реактивность(!!) изменит мир Веба

Вообще концепция реактивности для написания GUI очень удобна, но хипстеры связывают её скорее только с Реактом, хотя на самом деле изменение интерфейса по изменению состояния было реализовано ещё в Tcl/Tk лет 30 назад.

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

А, кажется, понял! У веб программистов нет понимания того, что приложение может быть написано на 10 языках, и все они вместе могут быть собраны в кучу (слинкованны, например) и замечательно работать? И что гуёвая библиотека может быть написана на одном языке, а вызываться из трёх других?

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

Вот я такое предположение делаю, а потом прикидываю как долго я бы создавал аналогичное в виде десктопного приложения (ну примерно полчаса) и понимаю что на веб в таком виде я потрачу день.

Это ведь не нормально? Оно ведь как-то не так значит должно быть организовано?

Я видел курьёз как один человек на ассемблере (не WebAsm!) сайт делал. Но это курьёз, должны быть более простые пути

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

У C++ программиста и так голова забита знанием костылей языка за последние 30 лет

Я конечно все понимаю, но блин… разве трудно пару вечров потыкать какой-нибудь язычок? Программисты C++ не пишут автоматизацию на BASH? Не приходилось ли им пользоваться каким-нибудь LUA? Кто заставляет изучать веб-стек на фронтендера?

Aber ★★★★★
()

Вопрос: кто-нибудь понимает куда оно движется?

Браузер движется в сторону того, чтобы быть единой операционной системой для веб-приложений.

Почему примерно раз в полгода появляется новый правильный фреймворк который точно станет будущим, но через год про него все забывают?

Самым популярным фреймворкам уже под десяток лет. Остальное - шелуха.

Почему не произошло отделение языка (JavaScript, TypeScript, Flutter) от реализаций библиотек которые рисуют эти ГУИ?

Я не понял вопроса. Что за библиотеки, о чём речь? За рисование отвечает браузер.

Почему не взлетел(?) WebAsm?

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

Почему мы не пишем Web GUI на обычных нормальных языках, используя обычные нормальные библиотеки?

Потому, что они хуже чем общепринятый в вебе подход. Но лично тебе никто не мешает переписать LOR на Qt. Эти демки работают здесь и сейчас: https://www.qt.io/qt-examples-for-webassembly

Переизобретается ли раз за разом велосипед, который едет подпитываемый неофитами, которые не помнят даже того, что было год назад, по одним и тем же граблям?

То, что круговорот библиотек и инструментов в вебе высок в сравнение с другими областями, спорить не буду. Но полагаю, это лишь следствие популярности. На одного эмбеддед сишника приходится тысяча JS программистов.

Есть ли понимание каким должен быть идеальный веб и если да то какая часть этой инженерии наиболее правильно движется в эту сторону?

В вебе нет единой движущей силы. Там много игроков с разными интересами. Общий вектор движения - предоставление доступа к всё большему набору возможностей хоста. Веб-сайт сегодня может получить доступ ко всем процессорам, оперативной памяти, USB-портам, Bluetooth-адаптеру, низкоуровневый доступ к видеокарте, доступ к звуковой карте, жёсткому диску. Этого хватает для реализации достаточно широкого спектра приложений, от CAD-систем до AAA-игр. Думаю - это конечная цель веба - заменить собой операционную систему. Т.е. в идеальном линуксе ядро запускает хром сразу после загрузки, а в нём уже пользователь открывает нужные сайты, в которых работают нужные ему приложения.

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

Так ведь нет, фактически, других языков. Поэтому ни потребности, ни инструментов для такой возможности как бы и нет. Вот и пишут GUI-библиотеки на JS/TS как обёртки на DOM API. Когда WASM наконец допилят для полноценной поддержки DOM, может быть и появятся универсальные библиотеки. Однако есть сильные сомнения. Даже на десктопе с этим довольно туго. Из других языков можно использовать только библиотеки с сишным интерфейсов, как GTK. А вот даже с Qt уже сильно сложнее. Я даже не говорю про, например, возможность вызвать из С++ гуишную библиотеку Swing, написанную на Java.

Так что, вероятно, как я уже говорил выше, появится зоопарк несовместимых между собой GUI-библиотек поверх WASM DOM для каждого из языков.

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

У C++ программиста и так голова забита знанием костылей языка за последние 30 лет

Я конечно все понимаю, но блин… разве трудно пару вечров потыкать какой-нибудь язычок?

Я убеждён что неспециалист по компиляторам и тому подобному может хорошо знать максимум 4-5 языков. Все эти слоты у меня уже заняты, сорян

Кто заставляет изучать веб-стек на фронтендера?

Авторы обсуждаемых тут фреймфорков. Оторвать от них язык не-воз-мож-но

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

Я не понял вопроса. Что за библиотеки, о чём речь? За рисование отвечает браузер.

За рисование отвечает видеокарта

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

То есть, цель веба сделать хуже чем всё было в 1995 году

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

Когда WASM наконец допилят для полноценной поддержки DOM

А что там за затык с этим? Со стороны задача выглядит элементарной

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

Вот я такое предположение делаю, а потом прикидываю как долго я бы создавал аналогичное в виде десктопного приложения (ну примерно полчаса) и понимаю что на веб в таком виде я потрачу день.

Так это просто потому, что с непривычки, не? Нужно время на эксперименты, вкуривание документации и т.п. Или это потому, что для десктопа есть IDE с формошлёпером? Так тогда возьми Тильду или аналогичный инструмент. Лет 20 для веба был визуальный FrontPage.

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

специфицированы приоритеты операндов и правила преобразования типов?

В js все - объект. Из-за прототипированного наследования.

typeof null == "object" 

Ну это пол беды, они не смогли нормально с числами разобраться и в итоге тупо добавили костыль под названием NaN. А потом почесали репу и ввели undefined чтобы null-у было не так одиноко.

Ну и призыв миддла при общении с архитектом это кек. Он ещё за интероп в Лиспе не ответил.

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

Фреймворки нужны для SPA, для мутации состояний на клиенте и для монипулирования DOM, трушный Ъ кодер вообще скажется JS ненужен и web-должен быть статичным. Изучать вебстек нужно только чтоб писать приложения исполняющиеся на [Browser]VM, и так делают только потому что пользователи не хотят ставить N приложений на свои компьютеры.
Если ты хочешь писать приложение исполняющееся в бразуре, то твои претензии я понять могу. Если же тебе нужны 2-3 странички в HTML то нет, твои причитания становятся странными, тебе нахер не нужны Vue, React и т.д..

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

Вот только в том же Хроме скорее xhr использует низкоуровневую реализацию fetch, а не наоборот

У вас сейчас хвост виляет собакой.

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

они не смогли нормально с числами разобраться и в итоге тупо добавили костыль под названием NaN

The IEEE standardized the computer representation for binary floating-point numbers in IEEE 754 (a.k.a. IEC 60559) in 1985.

Нео, проснись, он уже в твоей сишечке

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

Если ты хочешь писать приложение исполняющееся в бразуре, то твои претензии я понять могу. Если же тебе нужны 2-3 странички в HTML то нет, твои причитания становятся странными, тебе нахер не нужны Vue, React и т.д..

Ради универсальности же!

Приложение исполняющееся в браузере это обычное приложение для какой-то другой платформы, больше никакой разницы. Именно за это я и ратую и не понимаю нафига они плодят TS/Dart и всю эту катавасию вместо того чтобы дать доступ к DOM из блобов, которые грузятся в браузер

ahdenchik
() автор топика

После изучения HTML и какого-то зачаточного знакомства с тогдашним JavaScript лет 20 назад я сознательно избегал всего этого «около-веба». Тем временем оно росло, цвело, раскидисто раскидывалось и заняло приличный кусок рынка…..Почему примерно раз в полгода появляется новый правильный фреймворк….

Такое у меня складывается чувство, что 20 лет назад вы какой-то другой веб изучали, не такой как все. Двадцать лет назад самый ходовой браузер ИЕ поддерживал три(!!!) скриптовых языка, а может и больше, я только три помню: javascript, jscript, VBA. А еще в браузерах жила полноценная джава, а еще ActionScript, а еще ActiveX, это я молчу про всякие VRML, а еще одновременно существовали кардинально несовместимые подходы к динамической верстке - XHTML и DHTML, а еще у каждого был свой ни с чем не совместимый набор CSS свойств и JS API, майкрософт насильственно внедряла свои фильтры и сильверлайт и всеми ногами упиралась не пуская в массы HTML5 и CSS3. Засабмитить форму без перезагрузки всей страницы можно было через анальную боль - невидимые фреймы и прочий геморрой, а выпадающее меню могли себе позволить только самые продвинутые сайты и это реально требовало кучу усилий. Красота правда? Никаких сраных фреймворков. Не то что сейчас. Товарищ, двадцать лет назад сайтописание было реальным головняком, а сейчас это баловство и игрушки; великое множество фреймворков этому прямое подтверждение - фронтенд стал простым и доступным для широких масс развлечением, а там где масса юзеров, там и масса предложений.

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

Какое дело тормозящей до пары fps форме на клиенте до того на чём там бек написан?

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

Давайте сократим до «У веб программистов нет понимания» и это отлично пишет последние 15 лет.

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

Ну и призыв миддла при общении с архитектом это кек

Ой, прастити, погонов не заметил, уважаемый PHP-архитектор

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

Вот именно так всё и было, да, именно это время. Даже VRML пробовал.

Товарищ, двадцать лет назад сайтописание было реальным головняком, а сейчас это баловство и игрушки;

Для меня всё выглядит РОВНО наоборот! Тогда всё было понятно, сейчас - нет. И где достоверную инфу брать тоже непонятно.

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

И при этом непонятно как к этому подступиться и почему нужно выбрать этот фреймворк, а не тот. (Или их надо два, для сервера тоже какой-то? А сам сервер теперь какой нужен?)

Или, например, как нанять веб-программиста, а не идиота, который выучил правильные слова для собеседования?

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

из блобов, которые грузятся в браузер

Как собираетесь решить проблему с разными архитектурами процессоров, разрешениями экрана, индексированием блобов гуглом и прочими юзерскриптами и фичами для слепых?

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

Он же сказал что хочет манипулировать DOM, так что отображение останется как раньше, под капотом все манипулирование состояниями веб приложения будет на WASM.

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

Может быть примерно как смысл Go: создание группы программистов, наглухо привязанных к платформам Гугла. Тогда им некуда будет деваться кроме работы на Гугл.

Иначе не могу объяснить почему Dart, который вообще был создан как замена JavaScript, используется для создания нативных мобильных приложений

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

Тогда всё было понятно, сейчас - нет. И где достоверную инфу брать тоже непонятно.

Тогда у вас не было идеи фикс, что от +1 ЯП черепушка треснет. Это бред. Наоборот, чем больше знаешь, тем легче что-то новое освоить, так как много похожего. Хотите - выбирайте фреймворк, ищите под него библиотеку виджетов и вперед.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)

куда оно движется?

К смерти и перерождению. Учитывая накопленную карму — перерождение будет так себе.

Почему примерно раз в полгода появляется новый правильный фреймворк

Потому что NIH

Почему мы не пишем Web GUI на обычных нормальных языках, используя обычные нормальные библиотеки?

Потому что это уже нормальные программы, а вебдваноль — это попытка скрестить собственно веб (система доставки гипертекста) и ужа в виде всяких там поначалу жыэсов, а после — других чудищ, много страшнее и уродливей. Чтоб свистело и пердело красивше.

Есть ли понимание каким должен быть идеальный веб и если да то какая часть этой инженерии наиболее правильно движется в эту сторону?

Ага. И у каждого своё. Ностальгирующие мастульгируют на small web и старый веб, для всего кроме собственно гипертекста пытаясь использовать специализированный софт, неофиты ты же, размахивая воткнутым в то, что у них вместо головы, флагом с надписью «Вы все луддиты, щас покажу как надо!!11» радостно устремляются навстречу приключениям. Корпорасты пропихивают мутацию в вебтриноль, где ты в идеале из браузера должен вылезать только для оплаты подписки.

В общем всё плохо, веб мутирует в нечто чудовищное, энтузазисты-олдскульщики расползутся по смолвебам и всяким там gemini с gopher’ами и будут там илитарствовать. Остальные будут либо страдать, либо наслаждаться.

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

Как собираетесь решить проблему с разными архитектурами процессоров,

Для блобов WebAsm эта проблема решена же уже, нет?

разрешениями экрана,

Пишите программы нормально - нормально всё будет

индексированием блобов гуглом

Чиво? Зачем?

и прочими юзерскриптами и фичами для слепых?

Также как в любых других GUI-приложениях (см. Windows)

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

И при этом непонятно как к этому подступиться и почему нужно выбрать этот фреймворк, а не тот. (Или их надо два, для сервера тоже какой-то? А сам сервер теперь какой нужен?)

А где написано, что разработка ПО перестала быть инженерной дисциплиной? У профессиональных разработчиков нет с этим проблем, а если вы хотите по-легкому вкатиться, ну попробуйте по-легкому вкатиться в проектирование мостов и тоннелей - может там легче будет, я не знаю.

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

А что там за затык с этим? Со стороны задача выглядит элементарной

Объекты могут удаляться из DOm. Если на какой-нибудь объект будет ссылка из приложения на WASM, то либо она станет битой, либо придётся сохранять этот объект. Тогда будет утечка памяти.

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

Тогда у вас не было идеи фикс, что от +1 ЯП черепушка треснет. Это бред. Наоборот, чем больше знаешь, тем легче что-то новое освоить, так как много похожего.

Это работает когда тебе 15 лет, а вместо школьного аттестата справка

Когда смотришь очередной язык (вы знаете эти 10 минут чтобы понять почему очередной Dart это фигня), а в нём все те же косяки, которые 15 лет назад уже были обсосаны и поняты, то наступает что-то типа выгорания

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

и прочими юзерскриптами и фичами для слепых?

Также как в любых других GUI-приложениях (см. Windows)

WASM не предоставляет никакого Accessibility API, тем более универсального для всех платформ

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

The IEEE standardized the computer representation for binary floating-point numbers in IEEE 754 (a.k.a. IEC 60559) in 1985.

Который определяет sNaN и qNaN. Тк js соответствует ECMAScript то вы попадаете в просак: JavaScript doesn't have a single NaN value, in fact, according to ECMA-262, there are 18,437,736,874,454,810,627 values, representing the double-precision 64-bit format IEEE 754-2019 values as specified in the IEEE Standard for Binary Floating-Point Arithmetic, except that the 9,007,199,254,740,990 distinct 'Not-a-Number' values of the IEEE Standard are represented in ECMAScript as a single special NaN value. Те js имеет приблизительно пародию на qNaN из IEEE стандарта. Сигнальным sNaN тут не пахнет тк он не выдаёт исключение.

Нео, проснись, он уже в твоей сишечке

Вам с таким уровнем стоит идти общаться с Ловсаном. Ваш Нео.

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

Решаемая техническая проблема, прикрутят RC и GC к DOM объектам и появится доступ из WASM.

Я не говорю, что она нерешаемая, я говорю о том, что это не «элементарная задача»

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

Это, видимо, и есть уровень решаемых веб-программистами проблем?

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

Ну значит скоро можно ждать, ТС надо немного потерпеть и не раскавычивать лодку :)

Aber ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)