Есть такие динозавры, как я, которые помнят времена без ajax и прочих удобных механизмов подгрузки. В те ламповые времена мы делали скрытый iframe и в него загружали backend обработчик, который просто выплевывал js и делал нужную обработку на родительском фрейме. Т.е. с бэка приходили не данные, а готовые команды как поменять страницу. Это были брутальные времена, теги <font>, <object>, <frameset>, <center>, проблемы с прозрачными png... И знаете какая была проблема тогда у программистов? Как в IE сделать подгрузку в скрытом фрэйме так, чтобы небыло характерного звука, который IE добавлял при каждой перезагрузке страницы.
ммм... ностальгия
<meta http-equiv="refresh" content="1">
или
flush();
ob_flush();
sleep(1);
если уже понастальгировать про мету, то такое
<meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5)">
<meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5)">
Это работало только в IE (на тот момент 80% всех пользователей) и это было превосходная штука. Суть её в том, что можно управлять эффектом смены страницы. Например, можно при клике по гиперссылке текущую страницу разрушать ромбиками, а новую показывать шторками. Это все убрали ещё в IE9, но просуществовало оно прилично. Помню на форуме собственного производства применял. И... Мода, как известно, возвращается) Сейчас есть новое WebAPI , которое примерно такое же позволяет делать
document.documentTransition.prepare({...})
Вот тут подробнее https://developer.chrome.com/blog/shared-element-transitions...
а помните были карты изображений на html. можно было на картинке задать координаты, и при нажатии на ней открывалась нужная ссылка?
Еще бы! Одна из возможностей создания "кривых" интерактивных областей до полноценного появления поддержки svg, исключая, конечно, флеш и сервелат.
sleep(1); тут был необходим по двум причинам:
1) sleep не учитывается как процессорное время при исполнении скрипта, от чего он не завершался аварийно по таймауту установленному в max_execution_time (конечно можно было бы установить в рантайме set_time_limit)
2) Т.к. этот код гонялся в цикле, то опрос таблицы БД, отвечающей за последний стек обновленных данных, происходил раз в секунду, чтобы минимизировать нагрузку и не долбить запросами бессмысленно
без понимания задачи сложно судить.
так понимаю, там не было возможности один раз опросить БД, получить все данные, в цикле отрисовать что нужно.. и один раз выплюнуть результат?
Если кратко, то это был чат и таким образом в нем была реализована возможность вывода сообщений фактически в реалтайме (с делейем в 1 секунду конечно).
Это сейчас можно сказать, что нечего колхозить, а используй: jquery+ajax с интервалом, лонг полинг, socket.io с вебсокетами, pub\sub'ы, feather, derby, meteor, grpc, graphql и всякие другие названия и аббревиатуры.
Но это был год, эдак 2005-2006, и реализовано это было на стеке php4.4.x + mysql с упором на IE (в фоксе, вроде, не работала такая реализация)
А суть проста, главный фрейм висел постоянно в состоянии загрузки, за счет конструкции
flush();php скрипт в цикле опрашивал таблицу с последними сообщениями и осуществлял вывод, за счет ob_implicit_flush была возможно осуществлять сброс вывода буфера сразу после ob_flush, таким образом новые сообщения моментально отображались в данном фрейме (за каждую итерацию цикла).
ob_flush();
sleep(1);
понял.
в таком стеке работать не приходилось. я развращён php7.4 Yii2 + ajax.
за что люблю разработку... каждый раз начиная таску разрабы говорят "это не возможно"... а потом как то да реализуют.
Изображения, свёрстанные таблицами из кусков. Платформозависимый CSS, платформозависимые скрипты, платформозависимое всё. «А ты точно везде включил поддержку юникода? У меня тут кракозябры какие-то» Поворот GIF на 90 градусов, чтобы уменьшить его размер. ActiveX, Flash, Java Applet.
Господи, как это было… хуёво!
Ну вот Flash чем же хуево? Он был отличной штукой. Сейчас ему до сих пор нет адекватной замены. Все то WebAPI, что предлагают браузеры во-первых сложнее в применении (тот же WebSocket vs Socket в AS3, или HTMLCanvasElement vs Sprite, или банально фоновый звук воспроизвести c loop в html без костыля нельзя), а во-вторых flash очень хорошо все оптимизировал и в итоге ресурсов требовалось меньше, не нужно было заботиться о кроссбраузерности. Короче я как AS2/AS3 Flash разработчик в прошлом категорически не согласен, что это было хуево )
и чем проприетарность мешала, например, вам лично? Я вот сколько себя помню сижу на проприетарном Windows и не сказал бы, что мне от этого плохо.
А по поводу дырявости - любой популярный продукт подвержен такому, но flash регулярно обновлялся и уязвимости закрывались.
Коллега, не спора ради выскажу Вам своё мнение. Если у Вас нет ни тени сомнения в себе, то не стоит дальше читать.
Чем глуше закрыта и уже локализована разработка API, тем выше в нём уровень абстракций ввиду специализации под нужды конкретных компаний-заказчиков. В открытых свободных системах задача проектирования абстракций передаётся пользователям API, ограничивая спецификацию до минимума, максимально приближая её к железу.
Таким образом, от открытых API получают выигрыш разработчики кроссплатформенных систем, потому что сокращаются затраты на оборачивание внешних API в собственные абстракции. В частности, тут и есть мой личный профит.
Проблема дырявости Flash была в том, что он везде был дырявый одинаково, а у разрабов-пользователей не было возможности самостоятельно убедиться в его надёжности. В противовес, сейчас каждый браузер дыряв по-своему, а его исходный код можно свободно читать. Спецификация одна, а реализовывает её каждый по-своему. Такой вот уход от монополии.
звучит все разумно) Со своей стороны мне было безразлично проприетарный flash или нет, у него хорошая документация, багов было не много, разрабатывать было комфортно. Конечно если вспомнить, то flash плеер нужно было устанавливать (как и для других подобных вещей, типа Silverlight или Java Applet) и это сильно мешало, но множество других плюсов перевешивало этот недостаток. Да и не только разработка на флеше была крутой, ещё ведь на нем делали мульты, различные полуигровые баннеры и кучу всего. Поэтому я вспоминаю эпоху флэша как нечто хорошее, точно не как "хуевое" :D
Абстракции вечны, реализации сменяют друг друга. Концентрируя внимание на высоком уровне, на философии, и используя низкий уровень лишь в качестве инструмента, можно сохранить здравый рассудок в калейдоскопе прогресса техники.
Тот факт, что я когда-то писал на хуёвых языках и платформах, не делает меня хуёвым человеком. Отрицание факта хуёвости этих решений по сравнению с новыми альтернативами делает меня человеком, отрешённым от настоящего, живущего прошлым. Подобный расклад лично меня не устраивает, но я никому не навязываю своё мнение.
Какой-то философский шум, с которым так и хочется поспорить. Особенно та часть про абстракции вечны) Но толку спорить нет. Тут каждый со своего опыта и мировоззрения смотрит. Я тоже программировал на многих ужасных языках, то же семейство Basic, начиная с QBasic, Real Basic, VB, VBS, VB for DOS. Да и из свежих выученных языков тоже к говну отнесу Rust по ряду причин. Однако я полностью объективно заявляю, что до сих пор, со всеми прелестями js на свежих ES стандартах, или TypeScript - AS3 (Adobe Flash 8+) был отличным языком того времени, в котором было то, что многие другие языки до сих пор не применили. Поэтому абстракции и их реализации - это все просто красивые философские речи про архитектуры, а по факту загубили отличный язык, жаль он помер вместе с flash)
ну первое, что на ум приходит - область видимости internal. Т.е. я мог объявить класс или метод класса видимостью internal и его могли вызывать все, кто в том же пакете классов. Штука реально полезная, когда хочешь иметь чистый интерфейс публичных классов, но при этом позволять внутри пакета классам общаться между собой без преград.
Если конкретно с TS сравнивать, то например в AS было четко с примитивными типами string и number, а в TS, как известно, типы string и String - это разные типы.
Ну а все остальное - это уже набор возможностей самого языка, это нельзя сравнивать с TS, так как по сути TS не является языком, а лишь сахар для JS.
Ок, уязвимости были, как собственно везде они есть. Но это не мешало флешу (flex, air) быть отличным популярным (при наличии конкуренции) инструментом и не отменяет того, что AS3 был классным языком (по сравнению с JS) :P Мне флеш запомнился только хорошим, так что не буду позволять "переписывать историю", как это модно сейчас говорить, и всем внушать, что он был "хуевым" :D
Нет, не везде. Столько дыр, сколько в продуктах Адобе, не было нигде) Конкуренция какая? Сильверлайт, который был еще дерьмовей?)
JS норм, если Тайпскрипт брать, а не оригинал.
js норм конечно, но AS3 круче :P Заявляю как разработчик и JS, и AS3. Но все вкусовщина, а ней не спорят, кому-то действительно flash и as не нравился
Столько дыр, сколько в продуктах Адобе, не было нигде)
видимо про IE вы ничего не слышали...
Слышал. Только там один IE. При чем проблема была с ним не в количестве багов, а в том, что юзеры его не обновляли. У Адобе же критические уязвимости находились постоянно, по несколько штук за год. При том не только во Флеше, но и во всех возможных плагинах типа Акробата.
Если взять любую связку эксплоитов начала 10-х годов, там будет 1-2 устаревших эксплоита для IE, пара для Явы и штук 10 для продукции Адоба, из которых пара будет вполне свежих 1-day)
тем не менее уязвимости не повод считать продукт говном, имхо. Если бы были кучу багов - да, глюков, неудобств и тд - это повод. Мне как и разработчику, и как пользователю флеш (и air) очень нравились.
Как уже выше написал - это было удобно и просто. Сейчас на js сложнее делать многие фичи, которые на flash в три клика делалсиь






IT-юмор
7.5K постов53.3K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору