Заставить работать машину клиента!
(Эта тема расположена в архиве и закрыта для обсуждения.)

Версия для печати (стр. 1)

Конференция: Конференция iXBT.com (http://forum.ixbt.com/)
Форум: Программирование (http://forum.ixbt.com/?id=26)
URL: http://forum.ixbt.com/topic.cgi?id=26:39751


Страницы: 1 2 3 4 5 · далее / все сообщения темы на одной странице

Vladimir Rybinkin, 08.07.2009 15:41
Прошу прощения за название темы - плохо представляю, как ее назвать. Суть: хочется обсудить некоторые нюансы идеологии программирования софта для работы на компьютере клиента (именно идеологии, а не собственно программирования, с самым общим кодом принципиальных моментов). Крайне желательно без "наворотов" типа ActiveX или там DHTML, т.е. примерно с возможностями JS образца IE3). Основная задача - разгрузить серверное ПО (все, что можно делать на клиенте, нужно делать на клиенте). Иными словами, что в принципе можно выжать из JS.

Я очень мало (и давно) программировал для броузера, но некоторые наработки остались. Общие впечатления от тех времен: большинство возможностей JS на фиг не нужны, но именно они почему-то чаще всего встречаются на веб-страницах . Мой (затравочный, субъективный) перечень абсолютно необходимых: charAt, document(close/write), eval, indexOf, length, new(Array/Object), parent, substring. Кажись, все. Ах, да - onLoad. Кроме того, для полноценного программирования обязательно наличие фреймов.

Примерный перечень задач (тестовые):
- перепись кадра из себя и из дочернего кадра (сына, внука).
- установка (удаление, переименование) объектов и их полей.
- создание поля со ССЫЛКОЙ на другой объект (а не КОПИЕЙ самого объекта).
- итерационный обмен с сервером(ами) из разных фреймов, обмен данными между ними.
- диалоговая настройка параметров страницы (количество и расположение фреймов, палитра).
- вывод "вражьей" (запрошенной из Инета) страницы в своем формате. Собссно, нужен доступ к тексту страницы (фрейма) как к строке (загоняем в невидимый фрейм, парсим, и выводим "как надо").
- установка (удаление, переименование) обработчиков событий клавы и мыши.
- генерация событий (нажатие клавиш на клавиатуре или мыши, перемещение мыши) вместо юзера.
- модификация защищенных от записи полей объектов.

Вот что навскидку получилось. Что упустил, что лишнего нагородил, где наврал?

1. arsa, 08.07.2009 16:48
Vladimir Rybinkin
хм... ну с IE3 вы загнули. зачем изобратать колесо?
Если вам нужно нормально писать на клиенте в javascript, то используйте библиотеки. То, что вы написали это действительно уровень примерно 1999-го года.

И вообще, в принципе не очень понятно что вы написали (что значит "перепись кадра" например). Поставьте нормально задачу.

В общем есть два уровня библиотек:
jQuery (и подобные) - обычные операции с элементами страницы, а так же с сетью
ExtJS, jQuery UI (и подобные) - для визуальных элементов

2. Vladimir Rybinkin, 09.07.2009 10:42
arsa
цитата:
зачем изобратать колесо?
Чтобы не плодить лишние сущности.
цитата:
используйте библиотеки
С удовольствием. Какие библиотеки реализуют указанное?
цитата:
То, что вы написали это действительно уровень примерно 1999-го года.
Ха-ха-ха! Тем более.
цитата:
в принципе не очень понятно что вы написали (что значит "перепись кадра" например).
Ну, здрассьте! Так что ж Вы про библиотеки? Переписать - значит изменить текст. Скажем, выдать в иной палитре, с иными расположением фреймов.

Так как получить доступ к тексту страницы, как к строке?

3. arsa, 09.07.2009 16:15
ох... так это вы так frame перевели понятно теперь.
в принципе всё делается через DOM, через document.getElementById , да и в общем остальные вещи что вы написали тоже.
честно говоря я и сам не думал что через jQuery будет сильно проще, но однако сильно упрощает.

главный в общем момент - фреймы в современных браузерах не нужны - их спокойно заменяют div-ы и динамическое их наполнение через javascript (например jQuery UI Tabs умеют загружать страницы сами). фреймы только усложняют излишне структуру.

4. Skip, 09.07.2009 18:15
цитата:
Vladimir Rybinkin:
1. Крайне желательно без "наворотов" типа ActiveX или там DHTML, т.е. примерно с возможностями JS образца IE3).
2. Основная задача - разгрузить серверное ПО (все, что можно делать на клиенте, нужно делать на клиенте). Иными словами, что в принципе можно выжать из JS.
Я бы сказал, что требования несовместимы. JS образца IE3 не умеет практически ничего. И уж точно ничего из того, что Вам нужно.

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

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

5. arsa, 09.07.2009 19:04
Вполне реально написать толстого клиента на JS, сам этим занимаюсь (например на ExtJS).
Даже можно хранение данных привинтить через Gears/AIR/HTML5 - некоторые демки ExtJS являются законченными приложениями вообще без общения с интернет.

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

Но всё таки есть класс приложений которые должны быть в "облаке" - я считаю что это практически все приложения, работа которых сводится к вводу данных в формах. Основная мотивация - приложение будет в основном работать через интернет (простота доставки, обновления), и хочется кросс-платформенности. см. google, SaaS и.т.п.

6. Vladimir Rybinkin, 30.07.2009 09:45
Еще раз по теме (после вынужденного перерыва):

По содержанию предыдущих ответов я пришел к выводу, что меня просто не поняли. Совсем не поняли. Тема мне представляется важной, так что попробуем еще раз.

1. По поводу "использования библиотек". Согласен, при условии, что для интерпретатора (то бишь JS) библиотеки и есть ТЕКСТЫ функций. Ничто другое меня не интересует, меня интересует ИДЕОЛОГИЯ программирования на JS, т.е. не продукт, а инструмент для его получения. Максимально использующий все возможности языка.

2. IE3 взят сознательно, поскольку это более ранние, более простые, более отлаженные, и даже более важные (по крайней мере, на момент разработки языка) возможности. Именно эти возможности я и хочу в первую очередь "выпотрошить". Использовать же то, что появилось после примерно 1999-го года, по-моему, нужно лишь в случае невозможности простого решения, реализуемого для IE3. Тем более, что фразы типа JS образца IE3 не умеет практически ничего без смеха читать нельзя. Равно как и про абсурдность использования "неполноценного" ПО более чем десятилетней(!) давности. Извините, господа, но для меня подобные фразы свидетельствуют лишь о квалификации автора. И не стоит меня уверять, что с "примерно 1999-го" по примерно 2009 в программировании произошла революция - произошла скорее ДЕГРАДАЦИЯ!.

3. О фреймах: я допускаю, что "фреймы в современных браузерах не нужны", но на слово никому не верю. Если действительно "их спокойно заменяют div-ы", то мне нужно знать, ПОЧЕМУ ИМЕННО фреймы хуже. "Динамическое их наполнение" или "умение загружать страницы" не предлагать - фреймы, по моим данным, тоже прекрасно все это умеют. Кроме того, в моем понимании, фрейм - это:
3.1. HTML-код, интерпретируемый броузером для выдачи юзеру.
и/или
3.2. набор функций JS для каких-либо действий на клиенте.
и/или
3.3. набор данных, над которыми эти действия выполняются.
и/или
3.4. место для хранения HTML-кода, функций и данных (важнейшая вещь!).
и/или
3.5. автономно работающий ПРОЦЕСС в рамках единой задачи (окно броузера).

Поэтому мне совершенно непонятно:
- чем может кого-то не устраивать такая прелесть?
- что здесь может быть сложного?
- чем это вообще можно заменить (что могут предложить неведомые мне div-ы)?
- и, если даже и можно - НА ХРЕНА?!

4. Про серверное ПО, тонкого и толстого клиента. Клиент не просто тонкий, а тончайший - голый броузер. Но должен при необходимости "косить под толстого", подгружая (прозрачно для пользователя) нужные методы, классы, структуры. Серверное ПО разгружается автоматически, поскольку ему не нужно выполнять любые задачи, которые могут быть сделаны на клиенте. Скажем, заниматься оформлением страницы (а это иногда намного больше половины кода). Или фрагментировать выдачу, возложив на клиента итерационные запросы (например, при работе с СУБД). Иными словами, возможность динамически подгружать необходимый инструментарий (и удалять ненужное) снимает проблему "толщины клиента" напрочь. Возражения?

5. JS есть интерпретатор. Более того, у него даже int/float, по слухам, отсутствуют (руки бы оторвал). Т.е. имеем всего-то тип данных STRING, да две группы: ARRAY и OBJECT. Любой метод - тот же STRING. В головном (FRAMESET) кадре храним классы и методы - доступны из любого верхнего. Остальные - перезаписываемые при необходимости (даже если он один) - могут модифицировать базовый инструментарий, при желании иметь свой. Т.е. итерационный обмен с сервером, смена палитры, и прочая Query/UI получаются чуть ли не автоматически. Во всяком случае, ПРОСТО. Ну и на закуску программирование в объектах и событиях под рукой (при наличии совсем малого числа базовых функций, вряд ли более 20). Где я неправ?

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

Мне уже говорили (даже здесь), что JS/IE3 устарелый, беспомощный инструмент. Не могу согласиться, по одной простой причине: там имеется eval, т.е. аналог указателя, со всеми вытекающими. Это же инструмент ЧУДОВИЩНОЙ силы! Если бы не было eval - согласен, язык и был бы как раз тем самым дерьмом, как меня здесь уверяют. Да и я бы не дергался. Но eval-то есть...

Ой, мамочки! Завалялся тут у меня набор примеров, как надо писать на JS - старенький, от 2003 года. "The best software you can imagine", так сказать. Чего-то там прыгает, тикает, в Инет лезет, броузер детектирует... Решил я глянуть, как они eval используют. И просто со стула рухнул: на 37 файлов учебных примеров eval не используется НИ РАЗУ!!! Охренеть!

Господа! Если и вы ТАКОЙ технологией программирования на JS пользуетесь, то я теперь понимаю, ПОЧЕМУ вы мне ТАК отвечали. Но это же детский сад - прости, Господи! Ау, господа - скажите, что это не так, что вы eval активно используете. Ведь в противном случае мы вообще на разных языках говорим... Тады - ой. Тады "дайте мне eval, и я переверну Землю".

Планируемая технология: берем головной кадр (index.htm), ставим туда FRAMESET (на один фрейм). Там по onLoad вешаем функцию инициализации, которая создает на родителе (в том самом index.htm, который и нужен-то исключительно для хранения) базовый набор методов, и переписывает фрейм (сама себя, она больше не нужна) на любой другой (рабочий). Или тоже на FRAMESET, если рабочих кадров больше одного. В любом рабочем кадре повесим на какое-нить событие (тот же onLoad) функцию, которая ИСПОЛЬЗУЕТ этот самый набор. Проверяем - все данные, все методы живы и здоровы. Ура! Теперь из любого кадра можно пополнять, удалять, модифицировать этот набор, т.е. мы автоматически имеем хоть толстого клиента, хоть тощего, динамически худеющего или толстеющего, как нам заблагорассудится. Вешаем нужное количество фреймов (в т.ч. невидимых), раздаем им задания, и наслаждаемся жизнью. Обмен данными - тривиален, мультизадачность - реализуема, настройку всяких там палитр юзеру и отдадим - нехай ковыряется. Что остается? Программирование в объектах и событиях. В объектах у меня уже все работало именно так, как я и хотел бы в идеале (привираю, естественно), в событиях - пока хреновенько. Господа, ну это же сказка! Поработаем малек?

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

Ах, ну да - тебе ж нужно обеспечить возможность использования встроенных функций по указателю, а это куда важнее. Так, остынем, подумаем. Очевидно, что я был неправ - существующая технология неизмеримо лучше. Итак, судя по всему, переменные "на морде" все-таки хранятся, хоть она и FRAMESET. Стало быть, тексты функций можно залепить именно туда. Упс! А вот этого как раз делать и нельзя - теряется динамика "толщины клиента". Иными словами, фрейм с инструментарием перезаписывать нельзя, и не перезаписывать тоже нельзя. Хоть заводи еще один промежуточный FRAMESET для хранения уже текстов функций (динамического набора и ре-инициализации опирающихся на них методов). М-д-а-а. Грустно. Впрочем, почему бы и нет - ведь это всего лишь неудобства, но не функциональные ограничения.

Ладно, допустим - базовых функций кот наплакал (их и храним на морде), а основные методы будут сосредоточены на технологии программирования в объектах - так, собссно, и планировалось. Далее: переменные, представляющие собой тело функции, тоже ведь заводить не запрещается. И, если мы динамически сгенерим страничку, запишем туда содержимое этих переменных, то эта гнида обязана (надеюсь!) посчитать их за настоящие функции. Таким образом, какая-никакая динамика даже по набору функций все же возможна, хоть это и левой ногой правое ухо. Детям, к тому же, помимо собственных текстов, доступны и родительские.

Продолжение следует...

7. lvqcl, 30.07.2009 14:14
По-моему, эта тема уже для палаты № 26. Хочу комментов dozen'а.

8. Vladimir Rybinkin, 30.07.2009 15:34
lvqcl
Конечно, конечно . Впрочем, комментарии я как раз с удовольствием бы послушал. Даже от "dozen'a".

Продолжаю "поток сознания":

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

Та-а-ак! А куда же повесить инициализацию на морде, чтобы она сработала до FRAMESET? Инициализацию запустить можно, наскоко я прнимаю, только из BODY, а FRAMESET еще в хидере. Таким образом, ребенок может запуститься раньше, чем завершится инициализация. И помешать этому лично я не вижу никакой возможности. Да, начинаю понимать, ПОЧЕМУ фреймы могут не нравиться - лезут поперед батьки в пекло. И как же мы раньше это обходили? Ах, да - у нас толщина клиента не менялась... Что же делать? Ага! А если флаг поставить?

Вот зараза! Флаг ставится, флаг виден, без FRAMESET по окончании инициализации снимается, а вот вместе... видимо, фрейм перехватывает управление, и не дает завершить инициализацию. Господа, а что там вместо onLoad можно предложить? Что-то я слыхивал про передачу фокуса... Ах, нет - все еще хуже: сам факт наличия FRAMESET в хидере уже есть основание "положить" на BODY. Оригинально!

Еще раз формулируем задачу: нужен один "вечно живущий" фрейм (я уж буду пока использовать этот термин), предназначенный исключительно для хранения инструментария (методы, классы, тексты основного набора функций). Над ним (вынужденно, поскольку тело функции внутри переменной непригодно для ее вызова) - второй (уже перезаписываемый) фрейм для хранения тел функций переменного состава (толщина клиента). И уже над ними - рабочие фреймы, состав которых определяется конкретной задачей. Вопрос: как это реализовать? Ах, да - до "появления на свет" второго фрейма, первый должен завершить инициализацию.

Пока суть да дело, попробуем сосредоточить тела функций на морде, а инициализацию провести из ребенка. Ух ты! Неужто работает? Ребята, а ведь это, кажись, альтернатива! И после перезаписи "толщины клиента" ре-инициализацию тоже можно выполнять из ребенка... В обчем, тьфу-тьфу.

Теперь попробуем скроить что-нить читабельное из броузера. Что нам нужно? Пока что заведем три основных объекта: c(CLASSES), d(DATA) и m(METHODS). Извиняюсь за мало прорубаемую нотацию - вся эта кухня у меня предназначена для генератора, а там все подробно излагается. Для броузера же нотация вполне съедобна - ничуть не хуже, чем любая другая (разве что компактнее).

Для затравки - перечень раннего "барахла" (просьба уточнять, дополнять, модифицировать).
Методы:
- анти-eval
- закрытие окна (Close/Delete)
- открытие окна (Create/Open)
- передача фокуса
- перечень методов/свойств объекта
- получение индекса объекта в массиве
- получение значения поля/удаление поля
- прорисовка (конструктор) объекта/класса
- прорисовка окна/фрейма, перемещение окна
- создание класса/объекта по существующему классу
Классы: button, checkbox, form, frame, hidden, image, link, option, password, radio, select, table, text, textarea, textbutton
Теги: BODY, CSS, END, HEAD, HTML, MAIN, META, SCRIPT, TITLE

Что нам нужно из методов-функций? Начальный "джентльменский набор": eval, document.close/write, new Array/Object, indexOf, substring. Плюс парсер для работы в объектах. Из данных - разделитель параметров строки объектов. Из классов... Вау! Пока ваще ничего - эта хреновина уже рисует страницы.

Короче говоря, в первом приближении старые наработки восстановлены. Раньше вся эта кухня меняла набор фреймов и палитру, как перчатки, делала итерационные запросы в зависимости от текущих данных и т.д. Теперь аккуратненько все проверим, расставив данные по нужным файлам, и займемся, наконец, классами и методами на объектах. Второй фрейм пока не нужен - затирается. Что-то мне подсказывает, что он вообще не понадобится: объем базовых функций ничтожен (на данный момент - стыдно сказать - 478 байт), и я не вижу решительно никаких поводов для его сколько-нибудь серьезного увеличения.

Продолжение следует...

Добавление от 31.07.2009 09:23:

Ну что молчим? Как там с "изобретением колеса", "номерами палат", "дохлыми" возможностями JS/IE3, "излишне усложненными структурами", "уровенем примерно 1999-го года", "слабыми представлениями принципов работы клиент-серверных приложений", толстыми и тонкими клиентами, "полноценными приложениями", супер-пупер-библиотеками? Что ж вы, черти, приуныли?

Продолжаю "поток сознания":

Так. Программирование в объектах худо-бедно работает. Возможна и рекурсия, т.е. технология стека очередей. Реализована также двухпоточная технология (сопрограммы). Теоретически можно сделать и многопоточную, но я пока не вижу этому применения. Что у нас новенького появилось? Всего-то две функции (общим весом в 157 байт): инициализация группы полей, да выполнение двух потоков (шаблон и данные). Инициализация, кстати, идет уже и через строку методов. Ах, да - завел еще один глобальный объект b(BODY) для хранения указателей на текущие объекты (т.е. для повышения универсальности кода).

Многострочные переменные, кажись, не работают. Для генератора это по фигу, а ручками писать создает некоторые неудобства. Регистр переменных важен - это неплохо. С кавычками еще морока будет... Господа, а какие еще есть кавычки (кроме двойной и одинарной). Мне бы еще пару-тройку. Чтобы в теле строки можно было использовать кавычки, а сами строки "обувать" во что-то иное.

Теперь - классы. В первую очередь - для юзера: окна, палитры, выпадающие списки и прочая хрень. Делаем минимальный набор по классам и их атрибутам, по мере необходимости пополняем. В первую очередь - окно броузера (или фрейм). Конструктор, стало быть - строка методов для его прорисовки. Пока все. Ах, да - список дочерних фреймов плюс родитель, да еще уровень иерархии (для организации доступа). Еще не помешает имя, и список событий (для обработчиков).

Конструктор окна - это в первом приближении: HEAD (TITLE, META, STYLE, SCRIPT) + BODY. Пущай будут пока атрибутами, как и сам конструктор или палитра. Впрочем, нет: палитра - вполне себе класс.

Итак, класс "фрейм" (окно, страница):
- имя класса
- имя родительского фрейма
- список имен дочерних фреймов (массив)
- уровень иерархии в группе фреймов
- используемые события (массив)
- конструктор класса (у самого класса - по умолчанию)
- палитра
Что-то коряво получается. Начнем-ка лучше с палитры - проще.

Класс "палитра":
- имя класса
- конструктор класса (видимо, только у класса - у объектов не нужен)
- цвет фона (в терминах HTML - BGCOLOR)
- цвет обычного текста (TEXT)
- цвет выделенного текста (LINK)
- цвет особо выделенного текста (ALINK)
- цвет "заблокированного" текста (VLINK)
Видимо, в BODY нужно держать ссылку на текущую палитру (в DATA - на палитру по умолчанию). Коструктор будет выглядеть примерно так (шаблон для сопрограммы):
var I='Qw"#"Q';
Иначе говоря, предназначен пока для выдачи по document.write, обрамляет цвет кавычками, и пришпиливает впереди знак '#'( - разделитель параметров,  - код перехода к сопрограмме).

Создание класса (забавно, но имена атрибутов в классе вроде как и не нужны):
var I=`ic,"p",m.o()ic.p,"c",'Qw"#"Q'`;

Ну вот и приплыли: обратный апостроф на кавычку не тянет . Впрочем, не поможет - еще и разделитель параметров, код передачи сопрограмме... Значит, делать будем в два приема. Примерно так:
var J='Qw"#"Q';
var I='ic,"p",m.o()ic.p,"c",J';
Это - работает.

Итак, класс (в первом приближении) заведен. Теперь инициализация объекта палитры. Ух ты! Даже не ожидал. Переменной pal в коде нет (заводится динамически, в строке методов), но... взгляните на код:

код:

alert(pal);
m._(I);
alert(pal.b);

Первый alert генерит ошибку, и прекращает выполнение программы - дескать, "не определен объект pal". Если же его убрать - второй прекрасно работает, т.е. видит не только саму переменную, но и ее поля "внутре" (в данном случае выдает цвет фона). Отлично!

Хм. А на хрена нам вообще этот объект? Пущай все палитры в классе и сидят как массив. Не, это уж совсем неприлично. Да и неудобно с индексами. Положим-ка мы их в DATA, а то там окромя разделителей ни хрена нет. Штучки три - с белым, черным и синим фоном. И в BODY по умолчанию - с белым.

Упс! Парсер написан неправильно. Точнее, рекурсивный вызов работает, сопрограммы без рекурсии - тоже, а вот вместе... Ладно, не горит. Опосля как-нить, устал я что-то.

Продолжение следует...

9. Vladimir Rybinkin, 03.08.2009 11:11
Так я что-то не понял: здесь вообще живые люди есть? Программисты, в смысле? Или только эти... распальцованные? Способные лишь на советы типа "использовать библиотеки" - потрясающая мудрость! Али тема неинтересна? Смешно - это и есть тема всей конфы. Ладно, подождем еще малек - вдруг чудо...

Продолжаю "поток сознания":

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

От программного стека, разумеется, придется отказаться - безнадежно, это мы уже проходили. А вот парсер, кажись, можно сохранить. Только ему вместо "сопрограммного" перехода нужно научиться управлять стеками. Блин, что ни делаешь - все равно пулемет получается, то бишь SINT. Значит, нам нужно: рекурсия внутри одного потока (call/return), переключение управления между потоками (сопрограммы) - при этом первый поток всегда управление (шаблон), второй - данные, требующиеся этому шаблону. Заодно неплохо бы сделать "двупоточную рекурсию" - второй поток становится первым, а вторым ему подсовываются его "персональные" данные - тогда виртуальное число потоков может быть любым (при двух стеках). Ну что же, попробуем...

Вначале промоделируем мысленно управление потоками (чтобы потом не было мучительно больно). Итак, генерация страницы. Первый поток - шаблон, второй - данные (для простоты - из двух частей, скажем, содержимое тега TITLE, а затем - BODY). Все оформление страницы, допустим, лежит на шаблоне. Тот начинает:
<HTML><HEAD... Нет, HEAD пущай будет самостоятельной строкой методов (в терминологии SINT - очередь). Тогда - ныряем в стек очередей первого потока.
<HEAD><TITLE... ныряем еще раз.
<TITLE> а теперь прыгаем на второй поток:
TEST и снова на первый
</TITLE> - данные закончились, "выныриваем".
<META...<STYLE...</STYLE><SCRIPT...src=" Ага! Нужны данные из потока, но НЕ ТЕ. Стало быть, SCRIPT - это тоже отдельная очередь. И не просто очередь, а очередь со своими собственными данными. Значит, ныряем в оба стека: сначала переустанавливаем стек данных (второго потока), затем по обычной технологии ныряем в первый стек.
PUSH (строка с именем(ами) включаемых файлов)
<SCRIPT language="JavaScript" src=" - прыг!
test.js - скок!
" type="text/JavaScript">
POP - восстанавливаем стек данных
</SCRIPT> - вынырнули
</HEAD> - еще раз вынырнули
<BODY BGCOLOR=... стоять! Выдача палитры должна быть еще хитрее. Ныряем:
PUSH (очередь метода выдачи палитры)
BGCOLOR="

А теперь смертельный номер: метод выдачи цвета - это шаблон (т.е. ПЕРВЫЙ поток), но лежит он в данных (во ВТОРОМ потоке). Значит...

Надо же! Ничего "смертельного" чтой-то не просматривается - обычная рекурсия.
w"BGCOLOR="_c.p.cw" TEXT="_c.p.cw" VLINK=... - шаблон
wb.p.bwb.p.twb.p.v... - данные. Неужто так просто?!

Да уж, "просто"! Ручками написать такое - 5 секунд, а я уже второй день маюсь. Да и "смертельный номер" наверняка в будущем понадобится. Что же в награду? А в награду - возможность выдачи страниц каждому юзеру в "его собственной" палитре. Не так уж и мало! Не говоря уже про "бесплатное приложение" в виде базовых функций и методов инициализации. Если, конечно, все это вообще работает. Попробуем запрограммировать... goto убрали, козлы!

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

Продолжение следует...

10. Sioln, 03.08.2009 11:36
Vladimir Rybinkin
Извините, Владимир, но я почитал-почитал... и ничего не понял.. Вы чего хотите то?
В одном предложении, пожалуйста.

11. Vladimir Rybinkin, 03.08.2009 15:58
О! Провокация на ответ удалась.

Sioln
В одном предложении... А разве это будет легче понять? Пожалуйста: хочу инструментарий на JS/IE3, позволяющий с максимальными удобствами реализовывать все, что нужно конечному пользователю (в идеале - пользователю СУБД). Ну и первый тест подоспел - можно посмотреть...

Продолжаю "поток сознания":

Значит, нам понадобится массив стеков на BODY (вдруг больше двух потребуется), каждый из которых тоже массив, но уже строк. Там же индекс текущего стека для ориентировки, где находимся. Инициализируем стек шаблонов стартовой очередью, и вперед (второй стек уже в парсере и изготовим).

Во дела! Никак не думал, что так легко пойдет. Шарахнул контекстной заменой, и всего-то пара ошибок по невнимательности. Так защищаться можно!

Так, понятно - не хвались, едучи на рать... Чо-то я ваще ни хрена не понимаю: если я завожу элемент массива с индексом, равным его длине, то длина, как и положено увеличивается на 1. А если я этот элемент УДАЛЯЮ, то длина НЕ МЕНЯЕТСЯ! При этом элемент становится undefined, а следующему за ним хоть бы хны! Оба-на! А если внаглую length--, то все путем?! Я хренею, дорогая редакция! Ну... допустим - бум надеяться, что это хозяйство работает ПРАВИЛЬНО. Хотя дырявые массивы смотрятся несколько странно.

А вот за goto я не только руки, но и ноги бы повыдергивал. Пижоны! Из-за этого (и невозможности удаления объектов по указателю) приходится код дублировать. Ладно, особого сопровождения не предвидится - потерпим. А куда ж ты на фиг денешься!

Еще раз формулируем технологию. Вначале - инициализация "морды". Минимально необходимая - функцией по onLoad, затем - строкой методов. Функция на текущий момент - это (260 байт все удовольствие):

var r="parent.";function _(){var x,y,z="bcdm";for(x=0;x<z.length;x++)
{y=z.charAt(x);eval(r+y+"=new Object");eval(y+"="+r+y);}m.e=eval;
z="afios_";for(x=0;x<z.length;x++){y=z.charAt(x);m.e("m."+y+"="+r+y);}
b.s=m.a();b.s[0]=m.a();b.i=0;d.D="";b.s[0[0]]=I;m._();}

Лана, дам уж комментарии от генератора, а то и свихнуться недолго.
код:

var r="parent."; // строка имени ссылки на головной кадр
function _() // начальная инициализация данных
{ // (после выполнения перезаписывает свой кадр)
var x,y,z="bcdm"; // массив символов имен объектов
for(x=0;x<z.length;x++) // цикл создания глобальных объектов
{ // в головном кадре
y=z.charAt(x); // текущий символ (имя объекта)
eval(r+y+"=new Object"); // создаем объект
eval(y+"="+r+y); // вроде как указатель на объект
} // конец цикла создания объектов
m.e=eval; // вычисление адреса объекта по строке
z="afios_"; // инициализация основного набора методов
for(x=0;x<z.length;x++) // по текстам из головного кадра
{ // коды функций и имен методов совпадают!
y=z.charAt(x); // односимвольное имя метода
m.e("m."+y+"="+r+y); // заводим метод как ссылку на тело функции
} // конец цикла инициализации методов
b.s=m.a(); // массив стеков (планируется только два)
b.s[0]=m.a(); // стек шаблонов (массив строк)
b.i=0; // индекс текущего стека
d.D=""; // разделитель параметров строки объектов
b.s[0[0]]=I; // загружаем стек шаблонов
m._(); // продолжение инициализации - парсером
} // _()

Таким образом, все глобальные объекты заведены, все тексты (неизменяемых) функций морды переведены в методы. Теперь инициализация в парсере: создаем стек данных, код перехода на сопрограмму (коды разделителей на всякий случай хранятся как данные - вдруг динамическая замена потребуется). Затем инициализация необходимых встроенных функций (типа alert или document.write). Затем наполнение объектов CLASSES и DATA, установка текущих параметров на BODY, и... все - перерисовка на рабочий кадр. Приступим.

Стек данных завели... встроенные методы тоже... палитру (класс) с конструктором... шаблоны страницы, HEAD и TITLE... указатели на них из BODY... двухпоточный запуск... псевдо-рекурсия... переход на сопрограмму... псевдо-return... Работает!

Честно говоря, думал, что быстрее получится. Старею. Но и отладчик "классный" - то "работает" (точнее, ни фига не делает, но и не ругается - типа, "выполнено"), то прикалывается (неопределенная ошибка), то лепит горбатого ("ожидается наличие объекта" - не там, и не по делу - "универсальная" диагностика на целый спектр различных ошибок). Впрочем, это все мелочи, главное - имеем (принципиально) любую динамику по данным и переменную толщину клиента. Ах, да - если существует второй фрейм... доступ к данным через лишний parent... работает! А запись в родителя (то бишь удаление второго фрейма из третьего)... аналогично переопределяем document.write/close... работает! На этот раз обе проверки прошли с первого тыка. Не зря возился!

Уф! Готов первый тест для броузера. Кому интересно - в аттаче. Еще бы теперь научиться выполнять document.open/read, и тогда нам сам черт не брат! Так хто там бочку катил на JS/IE3?!

Продолжение следует...

К сообщению приложены файлы: 1.rar, 2Кb

12. Sioln, 03.08.2009 16:09
Vladimir Rybinkin
хочу инструментарий на JS/IE3, позволяющий с максимальными удобствами реализовывать все, что нужно конечному пользователю (в идеале - пользователю СУБД).
Эм... т.е. проверку прав тоже на клиенте делать будем?
Или Вам не инструментарий, а GUI надо?

Добавление от 03.08.2009 16:16:

Перечитываю и ещё больше не понимаю.. Вам IDE на JS хочется?

Добавление от 03.08.2009 16:17:

Запустил ваш "тест"

код:

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 4.0.20506; .NET CLR 3.0.30729)
Timestamp: Mon, 3 Aug 2009 12:16:56 UTC


Message: Permission denied
Line: 1
Char: 416
Code: 0
URI: file:///C:/Users/Sioln/Desktop/New%20Folder/b.j


13. Vladimir Rybinkin, 04.08.2009 10:03
Sioln
цитата:
Эм... т.е. проверку прав тоже на клиенте делать будем?
Почему на клиенте? Какие вообще проблемы с проверкой прав?
цитата:
Или Вам не инструментарий, а GUI надо?
Инструментарий. В том числе для GUI.
цитата:
Вам IDE на JS хочется?
А что такое IDE?
цитата:
Запустил ваш "тест"
Из архива, что ли? У меня прекрасно запускается... Или у MSIE 8.0 (у меня 5 или 6 - не помню) какие-то навороты? Или NT 6.0 (98) чего-то надо? Или настройки чего-то не позволяют? Там же (в тесте) НУ НИЧЕГО нет!

Продолжаю "поток сознания":

Что-то все-таки не то. Даже сформулировать не могу. Периодически происходит нечто странное: выскакивают ошибки типа "неопределенная ошибка" (детектировать, стало быть, можно, а понять, чего именно поймал - ну никак низзя!) или "неожиданный вызов функции" (раз двадцать вызывалась без проблем, а потом бац - и глаза на лоб). При этом дальнейшая работа то абсолютно правильная, как будто никакой ошибки и не было, то аварийная остановка. Такое ощущение, что всякие генерируемые теги script начинают жить своей жизнью (интерпретироваться раньше времени). Впрочем, не уверен. Но раздражает. Текстов-то с гулькин нос, интерпретируй не хочу - чего выеживаться?

Что же нам делать с document.read? Не видать чтой-то такого сервиса. А чего у него вообще есть? Вот зараза, не показывает! А window? Этот - пожалуйста, со всей душой. Так...

Ух ты! clipboardData="[object]" это что за зверюга такая? dropEffect... effectAllowed... Ни хрена не понял!

document="[object]" - Ну?! А этот "object" покажешь? Ах ты гнида! А почему?! А, ну конечно - "неопределенная ошибка" - куды уж тебе разобраться...

Чо только не придумают! onbeforeprint, onbeforeunload...

Вау! window.body - пустота, а на window.document.body... Ой, скоко ж тут дерьма-то всякого понавалено... canHaveChildren... и как они сами-то в таком кошмаре разбираются? Ага! innerHTML, innerText - это уже интересно... Но не совсем то... nodeName="BODY" - О! Верно! Теплее, теплее... outerHTML, parentElement, parentNode, readyState="complete" - одуреть! Так, стоп! А почему ошибки на этот раз нет?! Ага, зараза! От нас не скроешься!

О, Господи! Очередная порция, так сказать, параметров. Длиной в километр. activeElement, applets, childNodes, documentElement, protocol, scripts, security... Господа, тону! Кто здесь плавал - помогите! Теперь я понимаю броузер - где ж тут определиться с ошибкой - сам черт ногу сломит!

Тем не менее, доступ к телу (BODY) в виде HTML и в виде текста получен - ура! Теперь бы еще к HEAD. Ну, к TITLE - понятно...

Впрочем, чего я страдаю? С HEAD как-нить на досуге разберемся. А все остальное принципиально имеется - все, что и хотелось: переписывать кадр умеем, с полями объектов проблем особых нет, ссылки худо-бедно эмулирем, обмен данными между фреймами моделировали, доступ к телу "вражьей" страницы обозначился... С событиями еще не работали, но особо пока и не требуется. Теперь остается техника - как именно лучше всего реализовать текущие требования. Ау, господа - навалимся гурьбой?

Для полного счастья нужно: обсудить и отладить структуру паспортов для выдачи таблиц, списков и разных прочих промптов, методы обмена данными (в т.ч. с Инетом), оформления страниц, разных полезных вкусностей. В этих моих "учебных" примерах приводится какая-то абсолютная хрень - прыгает чего-то, мельтешит... А какой внешний (оформительский) инструментарий НА САМОМ ДЕЛЕ нужен? Идеальный, для ПОЛНОГО счастья, поскольку принципиальных ограничений по возможностям лично я УЖЕ не вижу (кто знает - вэлкам, тоже важно). Так какая для этого нужна БИБЛИОТЕКА?

Поток сознания закончился. Теперь - техника.

Во-первых, а не зря ли я программный стек отменил? Вызов-то удобнее. Да и какое дело прикладнику до стеков (тем более, до стеков очередей)? В SINT у меня сделано хитрее... Ладно, попробуем:

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

Во-первых, морда. Предположим, что на сайте допускается сразу два типа обслуживания: с постоянной (скажем, index.htm) и переменной (index.html) толщиной клиента. Оба входа предназначены исключительно для хранения глобальных объектов, методов и текстов глобальных функций. Во втором случае предполагается промежуточный дочерний фрейм для хранения текстов функций переменного состава. Сын же index.htm (или внук index.html) - это уже головной рабочий кадр. Если и он фреймообразующий, рабочими становятся уже внуки (правнуки). Дальше в "генеалогию" лезть как будто незачем.

Поскольку инициализация (да и работа) по любому входу во многом совпадает, инициализацию запустим по общему алгоритму, при этом тип обслуживания будет определяться по идентифицирующей переменной на морде (по самому факту ее существования) - см. аттач. Загрузочный фрейм (всегда сын) создает и инициализирует объекты на морде, после чего переписывает себя либо на рабочий кадр, либо на кадр хранения текстов переменного состава. В последнем случае... нет, что-то лень мне заниматься тем, что может вообще не понадобиться. Короче, ответвление обозначено, реализация - в случае возникновения потребности, принципиальная возможность имеется - проверено.

Рабочий кадр любого уровня иерархии получает доступ к данным и методам через единственное определение r="parent.[parent.][parent.]..."; В остальном тексты кадров разных уровней неотличимы (если, конечно, выполняют ту же работу). Обмен данными между фреймами либо непосредственно по имени, либо через кого-то из родителей (уж морда-то всякому родитель).

Перечень основных функций (аттач, файл a.j) неизменен, приложение к морде. Это по определению наиболее важные (оптимизированные, отлаженные) функции, посему просьба критиковать и состав, и содержимое.

Начальная загрузка (файл a.h -> b.j): создание объектов и методов (той самой пресловутой "библиотеки"), загрузка начального рабочего кадра (то бишь "настоящего" index.htm, предназначенного для посетителя сайта), и обеспечение доступа к этой библиотеке создателю странички (прикладнику). Никакого контроля за деятельностью прикладника не проводим (не транслятор, чай), считаем, что он и сам соображать должен (тем более, что "прикладник" - это я и есть ). Инструментарий должен обеспечивать максимально комфортную реализацию всего того, что взбредет в голову прикладнику и, если тот позволит - конечному пользователю. Господа прикладники, изложите, плиз, что же вашей душе угодно? Каких возможностей не хватает при разработке? При сопровождении? Чего не хватает юзеру? Чем его можно заинтересовать, чтобы он, придя на ваш сайт, отправился дальше именно в ваших "доспехах"? Или даже собирал бы себе клиента с "разных" сайтов. Во игрушка-то, а? Кстати, разобрался с "неожиданным вызовом" - переопределяю m.e=eval; - неожиданности заканчиваются. . Остальным встроенным функциям (типа alert) - по барабану. Ну и гадюшник!

Для затравки: я тут грозился arsa сотворить клиента для google (сервис для уточнения запросов). Попробуем, что ли?

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

Продолжение следует...

К сообщению приложены файлы: 1.rar, 2Кb

14. Sioln, 04.08.2009 11:16
Vladimir Rybinkin
Из архива, что ли?
Нет, распаковал.


У меня прекрасно запускается...
Могу только поздравить

15. Vladimir Rybinkin, 05.08.2009 09:49
Sioln
цитата:
Нет, распаковал.
Странно...
цитата:
Могу только поздравить
Не, это я Вам могу посочувствовать. Судя по диагностике, там проблемы с загрузкой b.j. А он грузится ПОСЛЕ a.j. А технология загрузки того и другого отличается лишь одной буквой. Той самой - a или b. Так что обнаглела Ваша софтина вконец. Токо на помойке ей и место.

all
Похоже, последний тест: все прекрасно работает, и мне уже просто лень что-то вылизывать (скажем, по нормальному надо бы данные на морду отправлять в динамике и т.п.). Так что слеплено несколько топорно, но все-таки: целый сайт в одном флаконе (он же страница - см. аттач), общим весом в... ща... 620 виртуальных страниц. Ха! И сайт-то не маленький! И не хило перевязанный. Так хто там забижал JS?! А ну-кось, где там "библиотекари"? Смогете сварганить подобное, и не уползти при этом на пару порядков по объему? Вот вам и разгрузка сервера: выдай такую "страничку" юзеру - и он целый день больше не будет тебя беспокоить. Если, конечно, инфа его интересует - цены там на билеты, расписание поездов, отелей, путеводитель по товарам, по лекарствам и болезням... Фильтры еще можно приделать (прям ща и попробую). А если еще сервис дать, чтобы можно было собственную базу собирать...

Кстати, технология работы называется "ни шагу назад", поскольку эта придурь (которая броузер) умудряется каким-то образом вести "историю" посещенных страниц ( ). Я просто балдею - сам же, дубина, интерпретируешь! Не видишь, что ли, что страница ТА ЖЕ САМАЯ?! Ну и лепит то, что по дурости своей считает "предыдущей страницей" (точнее, страницАМИ)... Все, естественно, перестает работать.

Некоторые пояснения: буквально любое слово текста (кроме разве что заголовков) есть ссылка. К сожалению, показать, что это именно ссылка я пока не умею: если поставить HREF, ручки шаловливые броузера немедленно куда-то лезут ("невозможно отобразить страницу"). Хотелось бы выделять эти ссылки цветом (всегда) и подчеркиванием (при наведении мыши).

Далее. Специально обозвал кнопку "Home" как "Ремонт" (то бишь перезагрузка index.htm вместе со всем инструментарием) - своего рода защита от "интеллекта" этого козла. Ну и игрушку с палитрой повесил - для симметрии. А между ними - навигация (над ними, ясный пень, алфавитная). Навигация такая: название типа ресурса есть ссылка на все ресурсы данного типа (имеющиеся на странице, разумеется - той, которая "сайт"). Чекбокс же есть фильтр для показа ресурсов этого типа на текущей странице (это уже на любой виртуальной, до отмены фильтра). В общем, понажимайте - думаю, там все прозрачно. А потом скажите, "чего в этом супе не хватает" (чего еще может понадобиться самому привередливому юзеру).

Кстати, а что это я фигней занимаюсь? Второй фреймообразующий кадр нужно сделать ОБЯЗАТЕЛЬНЫМ (как и первый). Тогда третий кадр всегда рабочий, при желании их может быть скоко угодно (в т.ч. невидимых), а второй кадр "по совместительству" может хранить переменную толщину клиента. Четвертый уровень - для временных кадров (для экзотики). Стройненькая такая система получается...

Ну что, займемся делом? ИДЕАЛЬНЫМИ классами? Которые не просто строки, а структуры, с пользовательскими атрибутами, с методами, сами методы... Навскидку - желательно бы иметь постоянно висящее меню (возможно, выпадающее), и отдельный фрейм "Настройка" (возможно, временный). Сервис "Игрушка" - диалоговая модификация данных и их структуры (переделка полученных с сервера(ов) страниц, сборка собственной БД, сохранение и восстановление у себя (типа config). Чо бы еще придумать? Присоединяйтесь, господа бароны, присоединяйтесь!

Ах, да - забыл сам тест прилепить.

К сообщению приложены файлы: 1.rar, 7Кb

16. Vladimir Rybinkin, 06.08.2009 11:42
Ну что, снова все замолчали?

Насчет последнего теста я, конечно, погорячился. Надо бы еще БД попробовать. Не ту кастрированную и однородную, как в предыдущем тесте, а... Во! Возьмем-ка мы "Борей", он же "Northwind", он же учебная БД для MS Access - там наверняка пользовательские классы понадобятся. Оригинал валялся где-то на microsoft.com (думаю, и сейчас валяется). Предварительно отрежем неанглоязычные ресурсы, шоб глаза не мозолили (в смысле, использующие не латинские символы). Да подрихтуем малек схему БД, а то совсем уж позорище. Учителя, блин! .

Да... В этом дерьме тоже повозиться придется... Да выдачу обдумать. Но меня просто убивает мертвая тишина в ветке. Неужели программистов вообще не осталось? Чем вы ваще занимаетесь в этой конфе? Так... Судя по заголовкам - ничем . Ау, модераторы! Вы бы хоть звание экспертов отменили, что ли. А то мне, постороннему человеку, бывает просто стыдно читать бредни под этим статусом. А вам?

17. Sioln, 06.08.2009 12:55
Vladimir Rybinkin
Тебя уволили чтоли?

18. Биомеханик, 06.08.2009 13:11
Vladimir Rybinkin, тебе поговорить не с кем что ли?!

19. Vladimir Rybinkin, 08.08.2009 12:05
Sioln
цитата:
Тебя уволили чтоли?
Нет.

Биомеханик
цитата:
тебе поговорить не с кем что ли?!
Вот именно - не с кем. Тема, на мой взгляд, исключительно важная. Уровень же участников ветки - нулевой (мой - тоже). Неужели профессионалы никогда не занимались клиентской частью?

20. Vladimir Rybinkin, 10.08.2009 09:32
Да ужжж... Тишина даже и не удивляет. Мож, пользователи какие забегают сюда?

Разобрался я с "Northwind". Отрезал неанглоязычные ресурсы, изменил схему БД. Пользовательские классы (старые, с модифицированной структурой - убрал всякую муть типа Discontinued, кое-что вынес в отдельные классы): Categories, Customers, Employees, Order Details, Orders, Products, Shippers, Suppliers. Пользовательские классы (новые): Address, Company, Person, при этом Address развернул в дерево (City, Country). Кое-какие поля (должность, скидка, ...) сделал перечисляемыми - для разнообразия. Редактирование пока не планирую, да и вряд ли вообще притронусь - техническая реализация элементарна, а вопросы удобства в работе и организации контроля по определению лежат на юзере - пущай у него голова и болит. Так что считаем, что базу редактирует некий абстрактный "персонал", а посетителям сайта предлагается уже готовая жвачка.

А, черт! "Персонал" недосмотрел - еще подрезать можно... англоязычные товары неанглоязычных производителей - на фиг... их потребителям, соответственно, облом... из заказов тоже вышвыриваем... "опустевшие" и "чужеземные" заказы туда же... перевозить их не нужно... сопровождать тоже... заказчиков, оставшихся вообще без товара... Блин, надеюсь, они не очень "интернационализмом" увлеклись - что-то в базе все же останется? Не, малек осталось - где-то около трети - отлично! На всякие глупости, типа одинаковый номер телефона у разных компаний ( ) обращать внимания не будем.

Теперь - как хранить все это барахло на странице? Вообще говоря, глаза разбегаются: можно как "отношения" (опять же - массивы строк или массивы объектов), можно с атрибутами в качестве имен полей или значениями аналогичных полей класса, можно... А что проще? Думаю, так: единый массив строк на все про все, пользовательские атрибуты в классах, имя класса в элементе, интерпретация данных элемента (поля значений, ссылки) - "классовыми" методами, доступ к элементу - по индексу. Ну, можно еще "реляционный", по ключу (если индекса под рукой не окажется). Что еще? Внешний вид (виртуальной) страницы определяется классом текущего элемента - либо "персональная" на элемент, либо на всю группу класса. Хотя... это все проблемы шаблона. Ну и время от времени надо бы заставить ее чего-нить посчитать. Приступим...

Так. Шаблончиков у нас будет... чтой-то до хрена... Ладно, пущай - и мне надо малек руку набить на JS, и вас, обормотов, поучить, как надо программы писать. Перечисляемые типы надо бы снабдить фильтрами (по типу Excel). И при генерации страницы посчитать какую-нить статистику, типа суммарных объемов поставок - пущай клиент вкалывает! Как и записано в названии ветки.

Посмотрим, что можно выжать из этого дела.

Классы:

Persons
FirstName, LastName, Title, косвенно - Company и ее вид (Customer, Supplier). Скучновато... Используем для фона - более обширная информация о компании, и только.

Employees
Тот же Person, но более развернутый - Address, HomePhone, BirthDate и прочая хрень. Ах, нет - они связаны с заказами, и между собой какая-то система подчинения. Ok, заслуживает персональной странички.

Products
QuantityPerUnit, UnitPrice... Ага! Это уже интересно - движение товаров и денег (подробности в Order Details). Аналогично - Categories: тот же Products, но более общий. И то, и другое заслуживает персональной странички.

Addresses
Тоже просто дополнительная информация о компании или человеке. Однако City и Country, бесспорно, претендуют на персональную страницу.

Companies
Три вида: Customers, Suppliers и Shippers. Надо же - не пересекаются: одни только производят, другие только потребляют - примитив! Зато можно в качестве обобщенных компаний использовать City и Country - эти наверняка пересекаются. Заслуживают "кармана" (для денег), и... объемная страничка получается на каждого: товары, поставщики, потребители, заказы...

Orders (Order_Details)
О! Тут еще движение товаров и денег ВО ВРЕМЕНИ! Даже самому интересно стало, что получится - не как программисту, а как пользователю. И чего у нас творится с датами? О, Господи! BirthDate=8.12.1998, HireDate=1.5.1992 - что бы сие значило? Ладно, хрен с ними... Ого! Почти 500 уникальных - есть, где развернуться. 24 месяца трех разных лет, обычно полсотни событий в каждом (от 7 до 131). Здесь совершенно потрясающую игрушку можно сделать. Графики изменения содержимого карманов во времени рисовать - это, конечно, слишком, но...

А это что еще за бред?! UnitPrice в Order Details в точности повторяет его же в Products. Ну и на хрена он такой хороший там нужен? Поганой метлой!

Так, а скоко у нас всего ресурсов? 1705, из них на страничку претендуют... всего-то 246! Или 714, если заказам подарить по страничке (не фиг баловать, хотя реализовать и просто, и дешево в смысле объема). Кстати, а объем? До 64К малек не дотягивает. Правда, он еще подрастет где-то на треть. Но все равно - страничка по нынешним меркам легкая. Но по моим наполеоновским планам должна драть Access по функциональности, как кота. Посмотрим...

Теперь - как все это хозяйство должно жить во времени. Производители товары производят, покупатели потребляют, перевозчики перевозят, деньги движутся в обратную сторону. Каждая компания (а также город и страна) имеет собственный "карман", в котором изначально 0 (американских) рублей. При каждом событии (ShippedDate) заказчик платит производителю, скажем, Product * Quantity * (100% - Discount) * UnitPrice, а перевозчику... понятия не имею... пущай будет Freight. При этом за дострочную поставку (ShippedDate < RequiredDate), допустим, даем премию в 5%, а за каждый день просрочки - штраф 0.5%. Города и страны суммируют доходы и расходы своих предприятий. Таким образом, от события к событию карманы участников как-то изменяются - это динамика во времени. Меняется, кстати, и количество связей между поставщиками и потребителями, объем товарооборота между компаниями, странами, городами. Что еще? Популярность товаров и категорий товаров по объему товарооборота... И посмотреть все это можно для любого предприятия, города страны, товара или категории за любой период времени - это просто фильтр. Впрочем, чего гадать? Хрен ли думать - трясти надо!

Уже вполне можно подвести некоторые итоги. Итак, возможности JS в плане написания клиентской части ОГРОМНЫЕ! Я ожидал гораздо худшего. И не используются они, судя по всему, вообще никем, и никогда - вот уж этого тем более не ожидал. Так что, как говорил Аркадий Райкин, гляжу я на вас и думаю: ну и дураки же вы все!

21. dozen, 11.08.2009 18:15
Sioln
Вы чего хотите то?

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

Тему надо в 26-ю конфу, там энтузиасты всё в подробностях дяде Вове объяснят. Начнут, пожалуй, с CSS.


Ему, наверное, кто-то подарил подшивку журнала Хакер за 2003-й год (покупать свежий ему не по карману) , откуда он узнал про JavaScript. До AJAX он еще не дочитал, это в декабрьском номере, а он пока на февральском.

P.S. "Палитры" он меняет, я щас штанишки описаю! Поллитр поменяно, однако, явно немало...

22. Vladimir Rybinkin, 12.08.2009 09:39
dozen
А, черт! А я как раз пригласил в "Крошке"... Впрочем, а не зря ли? По делу "энтузиасту" явно сказать нечего?

All
Финиширую с базой: еще малек подрезалась, да оптимизировались индексы. Кроме того, решил все-таки пожалеть клиента: дать элементам необходимые ссылки окружения (чтобы не искал тупо, как в прошлом тесте). Получается такая структура:

Морда (Northwind). Дети - группы (массивы) объектов одного класса: Cities, Companies, Countries, Customers, Employees, Orders, Persons, Products, Shippers, Suppliers. Каждая группа - виртуальная страница с собственным форматом выдачи. Не уникальным - скажем, Customers или Suppliers принадлежат классу Company и, разумеется, имеют его формат. Некоторые классы (например, Addresses, Order Details) вообще не имеют собственных страниц - ни персональных, ни групповых. Класс Persons (а в первоначальном замысле и Orders) имеют лишь групповую странцу, остальные - оба вида. Классы имеют (как правило) два формата выдачи: краткий (для форматирования объекта на "чужих" страницах) и развернутый (на своей "персональной"). Объектам класса Order разрешил все-таки иметь персональную страницу. Как же все-таки эту скотину заставить использовать HREF только для STYLES?

Классы - от простого к сложному (впрочем, особо простых что-то не просматривается ):

Persons
Только группа, персональных страниц не имеет. Заголовок (Persons) - ссылка на морду. Одна таблица детей формата: LastName, FirstName, Title, Company (CompanyName, ссылка, для Employees - морда).

Orders
Группа объектов с персональными страницами. Заголовок (Orders) - ссылка на морду. Одна таблица детей формата: OrderID (ссылка), Customer (CompanyName, ссылка, фильтр), Employee (FirstName+LastName, ссылка, фильтр), OrderDate (до начала указанного диапазона дат строки таблицы "подкрашиваются", после диапазона - не выводятся).

Order
Персональная страница объекта класса Order. Заголовок (OrderID) - ссылка на группу Orders. Выводимые данные: Customer (CompanyName, ссылка), Employee (FirstName+LastName, ссылка), Shipper (CompanyName, ссылка), OrderDate, RequiredDate, ShippedDate, Freight. Имена атрибутов - ссылки на групповые страницы (если они существуют). Одна таблица детей формата: Product, (ProductName, ссылка), Category (CategoryName, ссылка), UnitPrice, Quantity, Discount, Sum (считается в процессе генерации страницы). После таблицы - расчетное значение TotalSum (включая Freight с премией или штрафом, как было указано выше по ветке).

Employees
Группа объектов с персональными страницами. Заголовок (Employees) - ссылка на морду. Одна таблица детей формата: Name (TitleOfCourtesy+FirstName+LastName, ссылка), Title, HomePhone.

Employee
Персональная страница объекта класса Employee. Заголовок (TitleOfCourtesy+FirstName+LastName) - ссылка на группу Employees. Выводимые данные: Title, Address, HomePhone, BirthDate, HireDate, Chief (TitleOfCourtesy+FirstName+LastName, ссылка), Notes. Одна таблица детей. Формат таблицы - как для Orders (без столбца Employee).

Products
Группа объектов с персональными страницами. Заголовок (Products) - ссылка на группу Categories (не на морду!). Одна таблица детей формата: Product (ProductName, ссылка), Category (CategoryName, ссылка, фильтр).

Categories
Группа объектов с персональными страницами. Заголовок (Categories) - ссылка на морду. Одна таблица детей формата: Category (CategoryName, ссылка).

Companies
Группа объектов с персональными страницами. Заголовок (Companies) - ссылка на морду. Одна таблица детей формата: Company (CompanyName, ссылка), City (CityName, ссылка, фильтр), Country (CountryName, ссылка, фильтр).

Cities
Группа объектов с персональными страницами. Заголовок (Cities) - ссылка на морду. Одна таблица детей формата: City (CityName, ссылка), Country (CountryName, ссылка, фильтр).

Countries
Группа объектов с персональными страницами. Заголовок (Countries) - ссылка на морду. Одна таблица детей формата: Country (CountryName, ссылка).

Персональные страницы Product, Category, Company, City, Country - там совсем сложно получается. Как-нить на свежую голову.

Тема перенесена 12.08.2009 10:49 moderator-Bio из форума "Программы: Интернет"

24. Джамаль, 12.08.2009 11:07
Кто здесь?

25. dozen, 12.08.2009 17:02
Не для ВР, а для общего образования любопытных, расскажу немного о GWT (Google Web Toolkit).

Эта библиотека необычна тем, что включает в себя компилятор байт-кода JVM в Javascript. Буквально. То есть код страницы пишется на Java -- есть кучка классов, описывающих Layouts и элементы ввода. Затем получившийся Java-code пропускается через GWT-compiler, и тот создает идентичный Javascript-code.

Что интересно, если не нужны вызовы к серверу (AJAX), то получившийся набор HTML/JS можно деплоить на любой голый web server (т.е. без жабы), и код будет работать. Если нужны, то жаба тоже не обязательно -- достаточно любого тула (например, PHP), способного ответить на JSON.

Есть всякие удобства, типа AJAX-методов и интернационализации.

Куча народа создает свои компоненты к GWT. Я лично использовал чудные сторонние компоненты построения графиков.

Разумеется, есть и ограничения. Не все методы всех жабо-классов поддерживаются, ведь GWT по сути предоставляет JS-версии методов Java (только использованные методы добавляются в конечную "сборку").

Примеры в работе можно посмотреть здесь (http://code.google.com/webtoolkit/examples/) .

Я, вообще, не UI-guy. Но с помощью GWT добавил к моим приложениям морды за пару дней.

26. arsa, 12.08.2009 17:10
кстати есть Ext GWT - вообще супер библиотека

27. dozen, 12.08.2009 17:14
arsa
Ext GWT - вообще супер библиотека

но стоит денег (http://extjs.com/store/gxt/)

однако, ВР, несомненно, стоит ознакомиться (http://extjs.com/products/gxt/) . дабы обрести (недостижимый) идеал.

28. arsa, 12.08.2009 18:03
dozen
да, если не хочется ввязываться в GPL, то стоит денег.
раньше был ещё LGPL (в версии 2 самого ext), но к сожалению он немного не подходит под реалии веба.

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

29. Hedin, 12.08.2009 18:06
dozen
но стоит денег

gwt-ext выглядит вроде не хуже, и под LGPL.

Начальство впечатлилось, теперь вот придётся прототип приложения переводить с JSF/RichFaces/SWF на GWT/GWT-Ext.
Благо не так много наваять успели.

У GWT есть одна существенная особенность - это уже полноценный клиент с RPC получается, в отличии от простого Web-приложения. А трёхзвенку таки сложнее программировать чем двухзвенку...

30. arsa, 12.08.2009 18:38
Hedin
да, конечно сложнее. но есть несколько упрощающих решений, от asp.net ajax (в смысле классов оборачивающих ajax веб сервисы, уверен что для java тоже есть что то похожее), до Ext.Direct http://extjs.com/products/extjs/direct.php

но конечно контракт (веб сервис) всё равно приходится описывать - в базу грязными руками никто не пустит

31. Hedin, 12.08.2009 19:22
arsa
до Ext.Direct

Да сам обмен - это ерунда, я уже gwt-rpc exporter под spring на сервере прикрутил. В двузвенке всё-таки удобно пользоваться долгоживущими сессиями JPA/Hibernate. А в 3-хзвенке: сессия на запрос, заморочки с DTO и т.д. и т.п...

Я на прошлой работе хлебнул 3-хзвенки полной ложкой, так было хорошо о ней на время забыть, теперь вот опять вспоминать придётся...

32. arsa, 12.08.2009 19:44
Hedin
я делал реально хорошо работающий ext->asp.net ajax wrapper->asp.net web service-> OR/M -> sql
OR/M можно менять, хоть hibernate хоть что. но в общем конечно акцент в работе с обьектами был на клиенте - на сервере (если нужно) только проверка доступа пользователя к изменениям некоторых полей обьекта (что конечно тоже геморой, но без этого никуда).

в частности OR/M который я использовал имел фичу генерации asp.net веб сервисов использующих классы сделанные тем же OR/M-ом - это сильно упрощало расширение системы, то есть буквально создавая новую таблицу в базе я получал новый JS класс на клиенте (по выше описанной цепочке).

собственно я довольно много времени провёл подбирая такую цепочку в которой у меня получится RAD решение (за исключением самого UI - тут к сожалению для JS мало чего хорошего пока есть, хотя под Ext есть визуальный разработчик форм уже)

33. Konstantin Mironovich, 12.08.2009 22:48
100пудов автор ИДЕОЛОГИЧЕСКИ замышляет что-то типа AJAX.
правильные идеи витают в воздухе и приходят не в одну голову.. рано или поздно..

Добавление от 12.08.2009 22:52:

помогу-ка автору припасть к идеологическим истокам (http://www.adaptivepath.com/ideas/essays/archives/000385.php)

34. Hedin, 12.08.2009 23:42
Konstantin Mironovich
100пудов автор ИДЕОЛОГИЧЕСКИ замышляет что-то типа AJAX.

Есть такой вариант, "AJAX для бедных" (на базе iframe (http://ajaxpatterns.org/IFrame_Call) ), наверное что-то типа этого.

рано или поздно..

Ну как-то уж совсем поздновато получается.

35. dozen, 13.08.2009 07:47
Hedin
это уже полноценный клиент с RPC получается, в отличии от простого Web-приложения. А трёхзвенку таки сложнее программировать чем двухзвенку...

Мне это больше нравится. Вместо кучи мусора в JSP и сервлетах, где перепутан UI, бизнес-логика и доступ к базе, разделение образуется само собой -- под client.* -- UI, под server.* -- RPC-сервлеты, под business.* -- логика.... короче, есть в этом определенный цинус.

В двузвенке всё-таки удобно пользоваться долгоживущими сессиями JPA/Hibernate. А в 3-хзвенке: сессия на запрос, заморочки с DTO и т.д. и т.п...

Не понял? А кто мешает использовать "долгоживущую сессию" под RPC? Куку-то все равно браузер передает, так что HTTP-session поддерживается. Или я чего-то не понял в трудностях?

Правда, я лично "долгоживущие" не использую. Во избежание перерасхода ресурсов и для актуальности кэша.

Konstantin Mironovich
рано или поздно..



Hedin

Ну как-то уж совсем поздновато получается.

Да ладно, у него темп жизни такой. С timezone offset в 5 лет. Пора привыкнуть.

36. Hedin, 13.08.2009 09:32
dozen
А кто мешает использовать "долгоживущую сессию" под RPC?

Мешает само наличие RPC, в частности использование DTO. С ними уже как-то пофиг время жизни сессии. А если без DTO (с detached объектами), то всё равно радости немного, да и на клиенте их не очень хорошо использовать.

Главная беда - это строительство полноценного CRUD для сложносвязанных объектов. Длинные сессии интересны не сами по себе, а простотой программирования редактирования объектов в несколько шагов/экранов. Я не говорю, что это в 3-хзвенке невозможно, но жизнь RPC таки отравляет.

37. Vladimir Rybinkin, 13.08.2009 11:03
О, Господи! Ну, ладно - разговор, вижу, идет - почитаем на досуге. Последние наработки:

Product
Персональная страница объекта класса Product. Заголовок (ProductName) - ссылка на группу Products. Выводимые данные: Category (CategoryName, ссылка), QuantityPerUnit, UnitPrice. 3 таблицы детей.
Формат 1-й таблицы: Supplier (CompanyName/CityName/CountryName, ссылка).
Формат 2-й таблицы: Customer (CompanyName/CityName/CountryName, ссылка).
Формат 3-й таблицы: OrderID (ссылка), Customer (CompanyName, ссылка, фильтр), OrderDate (до начала указанного диапазона дат строки таблицы "подкрашиваются", после диапазона - не выводятся), Quantity, Sum (считается в процессе генерации страницы). После таблицы - расчетное значение TotalSum.

Category
Персональная страница объекта класса Category. Заголовок (CategoryName) - ссылка на группу Categories. Выводимые данные: Description. 3 таблицы детей.
Формат 1-й таблицы: Product (ProductName, ссылка, фильтр), Supplier (CompanyName/CityName/CountryName, ссылка, фильтр).
Формат 2-й таблицы: Product (ProductName, ссылка, фильтр), Customer (CompanyName/CityName/CountryName, ссылка, фильтр).
Формат 3-й таблицы: OrderID (ссылка), Product (ProductName, ссылка, фильтр), Customer (CompanyName, ссылка, фильтр), OrderDate (до начала указанного диапазона дат строки таблицы "подкрашиваются", после диапазона - не выводятся), Quantity, Sum (считается в процессе генерации страницы). После таблицы - расчетное значение TotalSum.

Company
Персональная страница объекта класса Company. Заголовок (CompanyName) - ссылка на группу Companyies. Выводимые данные: Address (City, Country - ссылки), Phone, Fax, ContactName (FirstName+LastName, ссылка). 3 таблицы детей.
Формат 1-й таблицы: Product (ProductName, ссылка, фильтр), Supplier (CompanyName/CityName/CountryName, ссылка, фильтр).
Формат 2-й таблицы: Product (ProductName, ссылка, фильтр), Customer (CompanyName/CityName/CountryName, ссылка, фильтр).
Формат 3-й таблицы: OrderID (ссылка), Product (ProductName, ссылка, фильтр), Customer (CompanyName, ссылка, фильтр), OrderDate (до начала указанного диапазона дат строки таблицы "подкрашиваются", после диапазона - не выводятся), Quantity, Sum (считается в процессе генерации страницы). После таблицы - расчетное значение TotalSum.

City, Country - по формату Company, но окружение из своего "круга".

Так, хватит "теории" - надо же посмотреть, что получится - наверняка многое поменяется. Ах, да - линки... Ну уж это я описывать не буду, скажу только, что число ребер (в графовом представлении) уже не минимально необходимое (как в прошлом тесте), а может быть избыточным (для скорости доступа). Виртуальные ребра (через промежуточные узлы) с той же целью могут заменяться реальными. Короче, собираем БД уже для представления на странице.

Не, чо-то страшновато... Соберем лучше в минимальной конфигурации, а потом добавим по мере необходимости. Собрал, имеем: классов - 21, узлов - 1644, ребер - 4834, байт - 59510. Теперь перенесем все это дело на страницу... Так, в чем дело?! Ну и чем тебе эти 4 сотрудника не нравятся? А, вона что - у них кавычки внутре... ну, это мы враз... так, сожрала. Теперь начнем потихоньку открывать выдачу (и инициализировать классы). Начиная с морды. О, я как раз на границе 64К. Надеюсь, неприятностей по этому поводу не будет? Кстати, заведем-ка мы юзеровские классы отдельным объектом.

Так, до уровня предыдущего теста мы почти догнали (морду рисует) - перекур!

Добавление от 13.08.2009 15:24:

Всем спасибо, но... разговор-то идет, но, по-моему, не туда. Да и не очень похоже, что идет - и здесь замолчали...

dozen
Хотел было уж врезать... ну да ладно.

цитата:
То есть код страницы пишется на Java -- есть кучка классов, описывающих Layouts и элементы ввода. Затем получившийся Java-code пропускается через GWT-compiler, и тот создает идентичный Javascript-code.
То есть код страницы пишется на C (точнее, на SINT) -- там есть все, что душе угодно (мало будет - добавим). Затем получившийся exe-файл (в статике - генератор страниц, в динамике... ну, скажем, СУБД) создает необходимый Javascript-code (кому он нужен, голый-то?), вместе с необходимыми ДАННЫМИ (для генератора - из шаблонов, для СУБД - из БД. Ну и на кой хрен нужен этот кастрированный сервис GWT?

Чем хороши "AJAX-методы" - я не знаю, "интернационализация" - смешно и говорить, компоненты построения графиков - это да, это интересно. Кто строит-то - сам клиент али сервер?

arsa
цитата:
кстати есть Ext GWT - вообще супер библиотека
Ну дык... Я уже просил - слабо сделать на ней сервис для корректировки запросов к Google? Или хотя бы мой третий тест (зуб даю, минимум на порядок код вырастет, если вообще работать будет ).
цитата:
в базу грязными руками никто не пустит
Ну дык... В моем случае, по крайней мере, делай, что хошь
цитата:
это сильно упрощало расширение системы, то есть буквально создавая новую таблицу в базе я получал новый JS класс на клиенте
Какое дело КЛИЕНТУ до таблицы в БАЗЕ?! Тем более, что в моих базах, например, ваще никаких таблиц нет. Реляция есть идеологический тупик, для сложных задач не годится. А уж класс на клиенте получить...
цитата:
тут к сожалению для JS мало чего хорошего пока есть
Вот именно! Зато у самого JS много чего хорошего есть. Точнее, немного - только eval - но это не так уж и мало.

Konstantin Mironovich
цитата:
100пудов автор ИДЕОЛОГИЧЕСКИ замышляет что-то типа AJAX.
Вот уж понятия не имею. Если AJAX и в самом деле "правильная идея" - то возможно...
цитата:
помогу-ка автору припасть к идеологическим истокам
А, черт! А я в TXT качнул. Но все равно - спасибо.

Hedin
цитата:
А трёхзвенку таки сложнее программировать чем двухзвенку...
Разве? И чего там насчет RPC? Переменная толщина клиента (в терминологии этой ветки) и есть RPC. Даже лучше: P (которая R) вначале транспортируется на клиента, и затем уж она - C, C, C, C, C, C, C, ... В чем проблемы-то?
цитата:
В двузвенке всё-таки удобно пользоваться долгоживущими сессиями JPA/Hibernate. А в 3-хзвенке: сессия на запрос, заморочки с DTO и т.д. и т.п...
Ах, вона чего... Ну, дык... В моем варианте держи "сессию" хоть сутками. И безо всяких "заморочек" - получил выборку из БД "на руки", и редактируй до посинения. Затем все "оптом" - на сервер. Поди плохо?
цитата:
Есть такой вариант, "AJAX для бедных" (на базе iframe), наверное что-то типа этого.
Лана, и это качнем. Хотя... честно говоря, не вижу смысла - у меня полное ощущение, что я УЖЕ умею все, что душе угодно, а вот вы, господа, судя по постингам, как раз имеете какие-то ПРОБЛЕМЫ. Ну и?

dozen
цитата:
Куку-то все равно браузер передает, так что HTTP-session поддерживается. Или я чего-то не понял в трудностях?
Я - тоже. На хрена HTTP-session поддерживать - не понимаю. Мой подход на это дело пилюет с высокой колокольни.
цитата:
Да ладно, у него темп жизни такой.
М-д-а-а. Ну, извини - напросился все-таки...

Достопочтимый сэр! Ведь мы с тобой не первый год знакомы. Ведь у меня уж тыщу лет насчет твоей квалификации никаких загадок не осталось. И ты это ПРЕКРАСНО знаешь - одной только "малой модели" мне за глаза хватило, чтобы вынести вердикт. А это было еще при царе Горохе. С тех пор диагноз только подтверждался. Ну перед кем ты здесь подпрыгиваешь? Перед публикой? Перед теми, кто в этой ветке на тебя молился (вот приедет dozen - dozen нас рассудит)? Защитная реакция дилетанта, который косит под эксперта? Но это же глупо, мил человек! Ну сам сообрази - приходит сюда чел, который тебя вообще не знает, и читает... ну, скажем, твой первый пост в этой ветке. И какое мнение у него про тебя может сложиться? Ну, кроме: Идиот! Вот и я не знаю...

Вот скажи мне, дураку - зачем ты терминами разными бросаешься (что здесь, что в "крошке")? Чтобы продемонстрировать, что ты знаешь, как они пишутся? Или что ты ветку не удосужился прочесть? Или ты полагаешь, что здесь народ собирается глупее тебя? Трудно поверить: скажем, насчет "палитр" я несколько раз все объяснял открытым текстом. Ладно, специально для тебя - повторю, разжую, и в рот положу: палитра есть наиболее простой и наглядный способ ОТЛАДКИ ИНСТРУМЕНТАРИЯ. Сразу видно, работает ли, и так ли, как хотелось. Отлаживал же я управление стеками, динамический вызов методов, перезапись кадров, шаблоны и прочую хрень. Доступно? Я, в принципе, понимаю - тебе это сложно, тебе нужно увидеть знакомое слово, и бежать "штанишки описывать". Но ведь это же только ТВОИ проблемы, дорогой!

И стиль твой для незнакомых... Можно подумать, что ты очень озлоблен на меня за что-то, что мы с тобой враги кровные... Дыши глубже - я к тебе давно уже хорошо отношусь. И, кстати, про "результаты" - ну не позорься, а? Я много раз выкладывал и тексты, и экзешники, а в этой ветке все даже и в одном флаконе. И в трех экземплярах. И четвертый готовится. И процесс создания описан - я все это писал и описывал одновременно - прямо в процессе жизни ветки. Ну какого еще рожна тебе нужно, чтобы понял, о чем речь?! Ведь даже броузер все прекрасно понимает. По крайней мере, мой - простенький, без наворотов. Ты же, со всеми твоими "CSS, AJAX и подшивками журнала Хакер" никакого "результата" дать не способен. Я давно это знаю. Ты - тоже. Хочешь, чтобы и другие узнали?

38. dozen, 13.08.2009 17:56
Vladimir Rybinkin
Ну и на кой хрен нужен этот кастрированный сервис GWT?

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

Посему твои потуги и вызывают саркастическую усмешку.

P.S. Про палитру уржался еще больше! Какой матёрый петросянище!

39. lvqcl, 13.08.2009 21:30
Vladimir Rybinkin
Перед теми, кто в этой ветке на тебя молился (вот приедет dozen - dozen нас рассудит)?
Это Вы про меня? ( Заставить работать машину клиента!, #7 (http://forum.ixbt.com/topic.cgi?id=26:39751:7#7) ) Боюсь, Вы не совсем правильно меня поняли. Я просто хотел moar lulz.

dozen
Твоя вечная проблема, дядвов,
Думаю, что для его экологической ниши (whatever it is) это не проблема, а просто... особенность.

40. dozen, 14.08.2009 07:45
lvqcl
Думаю, что для его экологической ниши (whatever it is) это не проблема, а просто... особенность.

Даже экологическая ниша "собиратель огрызков на помойке" требует уважения к чужому опыту -- иначе не отсеять заведомо вредные огрызки.

А ВР -- это просто ходячий синдром Not Invented Here. Как он существует в мире, где надо кушать испеченный другими хлеб, пить надоенное другими молоко, жить в построенных другими домах, и ездить в собранных другими машинами -- я не представляю. У него же должны постоянно чесаться руки испечь хлеб самому (изготовить плуг, вспахать, посеять, всборонить, поливать, пожать, отмолотить, перемолоть, испечь), надоить (начиная с зачатия будущей бурёнки -- всё сам, всё сам!), построить дом (надеюсь, живет один и в 3-х радиусах падения его дома от прочих построек), собрать копейку из самостоятельно нарезанных гаек и болтов... его знаменитую 386-у он тоже, наверное, сам собрал, аккуратно впаивая самолично вырезанные на глаз из цельного куска кремния микросхемы.

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

41. Vladimir Rybinkin, 14.08.2009 10:14
dozen
Ну... я ничего другого и не ожидал. Врать не надо. Впрочем... я все сказал уже.

lvqcl
цитата:
Боюсь, Вы не совсем правильно меня поняли
Не бойтесь - правильно. С Вами мы ведь тоже не первый раз видимся?

По ранее даденнім ссылкам:

Hedin
Ну и чо там "для бедных", кроме трогательной "Goal Story"? visibility : hidden? Или "We're using the frame as a data repository" - я об том и талдычу. Да еще "but as an experimental demo shows... On the server, we're..." О! extractIFrameBody($("iFrame")).innerHTML - это я для ВРАЖЬИХ страниц планировал использовать. А они, значицца, для собственных?! Another approach ... calls a function defined in the parent - слава те! Unfortunately, this approach creates substantial coupling between the server and browser. ( ) That's possible because all behaviour was encapsulated in the onload() function. Не, даже лень читать - это явно не "для бедных", а "для глупых". Полный бред! Ух ты! Google Maps, perhaps the most famous Ajax application. Ясненько... у топку.

Konstantin Mironovich
Посмотрим все же на "идеологические истоки". Хотя рекламу им дали в прошлом источнике...

A New Approach - прям так сразу? Я что-то не понял, народ здесь тоже хочет сказать, что старый "Approach" никуда не годится?

Now look at Google Maps - да что они, помешались все на этих мапах?! Гуглю не хило бы вначале свой ПОИСКОВЫЙ сервис по-нормальному сделать...

with no waiting for pages to reload - Упс! Это ВОТ ЭТО ВОТ они рекламируют?! Неужто и в самом деле профессионалы клиентом не занимались?! Я-то, грешным делом, думал, что это "ясно даже и ежу", а это, оказывается, "new approach to web applications"... Asynchronous JavaScript + XML, стало быть, - и будет табе щастье... Однако!

Ajax isn't a technology. It's really several technologies - вах-вах-вах!

Figure 1: ну да, именно про это я и говорю. Это я Ajax изобрел, что ли?! Сверхновый подход?! Ой, уписаюсь!

Секундочку! А какого хрена processing только... А чем, собссно, Ajax engine занимается?! А, понял: это я БУДУЩИЙ Ajax изобрел - не доперли исчо товарисчи и processing ему впендюрить...

Instead of loading a webpage, at the start of the session, the browser loads an Ajax engine - written in JavaScript and usually tucked away in a hidden frame. Ну, блин, ну один в один! Токо у меня наглости не хватило обозвать это "engine", и уж тем более "really several technologies". И в качестве "hidden frame" у меня используется сам frameset - чего еще надо? Да, кстати - ихто там в начале ветки вякал, что "фреймы в современных браузерах не нужны"?!

Не, я просто отказываюсь понимать! Еще где-то в 2002 (или даже раньше) мои орелики, Антон и даже Олег, для системы документооборота (и не только) занимались ровно тем же самым, чем и пресловутый AJAX - асинхронным обменом (и не только). И вы мне хотите вдолбить, что все остальное человечество до сих пор освоило лишь половину этой технологии?! Побойтесь Бога, господа! Konstantin Mironovich, откройте уж ДО КОНЦА глаза, а то у меня просто крыша едет. И при этом какой-то там dozen еще смеет меня учить?! Да я ради такой хрени и ветку бы не завел - у меня задачи посерьезнее.

Every user action that normally would generate an HTTP request... Во-во! Задолбали ручонки шаловливые броузера! Чуть расслабишься - реквестится, скотина!

takes the form of a JavaScript call to the Ajax engine instead - именно так.

Ajax is an important development for Web applications - ну хто бы мог подумать!

and its importance is only going to grow - охренеть!

following Google's lead ( )

we've received an enormous amount of correspondence from readers with questions about Ajax - я и обращался к простым юзерам - хоть те-то должны понимать проблему!

Ajax isn't something you can download - и это, блин, не ежу понятно, оказывается...

Детский сад! Детский сад!! И эти придурки даже еще и не знают толком, что делать с этим "complex JavaScript code on the client" (!!!) Because this is a relatively new approach, our understanding... ( )

Ну Мироныч, ну удружил! У меня до сих пор челюсть на место не встала... Хотел было заняться тестом, но где уж там - вырубил ты меня напрочь. 100пудов - браво! Токо повторяю: ради одного сраного AJAX я бы и ветку не завел. Тема ветки (в новой терминологии ) - как раз евойный processing.

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

Итак, имеем: данные - полученная от БД выборка, она же субграф (связей между элементами - до мамы), она же локальная БД (юзеру - не отличить, за энто дело отвечает APS - Ajax Processing Software ). Элементы - разнородные. В графовой терминологии - узлы (возможно, сложные - т.е. структуры), в реляционной - кортежи (или поля, или отношения, или столбцы - какой элемент). Ребра (точнее, дуги) лежат прямо в элементе (сложные ребра пока не трогаем). Доступ к элементам - по ЛОКАЛЬНЫМ идентификаторам. В принципе, должны бы храниться и глобальные (идентификаторы самой БД), но редактировать я пока что (в этом тесте) не хочу - так что не нужны. Связи между элементами, ессно, тоже локальные.

Хранение элементов на странице - в одной куче (массиве строк), тогда ID элемента есть просто индекс в этом массиве. Классы... ну ладно, для простоты - в ДРУГОМ массиве (метаданных). Там - описание элементов класса: имена атрибутов, типы данных (число, строка, ссылка), возможно - методы... "и все, что понадобится впредь".

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

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

Ну вот так где-то приблизительно. Остальное бум смотреть "по месту". Тем более, соображать что-то после нокаутирующего удара от AJAX...

P.S.
ivanhoe
(если он меня слышит - стыдно стало гадить в ту ветку)
цитата:
Посмотрите в исходный текст своей ветки.
Я и говорю: JS вообще никто толком не использует.
цитата:
eval уже много лет не является приличной конструкцией.
А позволительно ли будет узнать - почему?
цитата:
Причин его не использовать может быть масса:
Если не считать таинственного "и пр.", все претензии к JS, но не к eval. Что же касается экзотического "и такое бывает" (ИМХО, бред), то и здесь лично я не вижу никаких "очевидных причин".
цитата:
Очевидно в пользу Haskell
Кому?
цитата:
в котором eval использовать не принято
Я же русским языком сказал: А если в том, в чью пользу, не использовать то, что ТАМ принято?
цитата:
Это все относится к типизации и это только майнстрим.
Упс! К типизации?! Полиморфизм?! А как насчет type var образца JS? Во типизация-то, во полиморфизм! Мож, вначале договоримся о терминах? К тому же, Вы описали какие-то неустаканившиеся телодвижения, "непонятно зачем, неизвестно на кой", да еще в майнстрим! Не кажется ли Вам, что говорить о типизации... по крайней мере, несколько преждевременно?
цитата:
Объясните мне что такое классы типов на примере JavaScript.
Я уж когда-то бодался... Наскоко я помню, в Вашем же присутствии. И с большим удовольствием врезал: "Не фиг мне говорить, что я не знаю... вы их не знаете сами". Так что вначале объясните мне, плиз, что есть "классы", что есть "типы", что есть "классы типов" безотносительно к JavaScript. А уж затем... Кстати, повторяю вопрос: Какие проблемы-то?

42. Chippy2003, 14.08.2009 10:30
Vladimir Rybinkin
В моем варианте держи "сессию" хоть сутками. И безо всяких "заморочек" - получил выборку из БД "на руки", и редактируй до посинения. Затем все "оптом" - на сервер. Поди плохо?
гениально
но сервер принимающий опт ведь уже готов и успешно протестирован на сотне concurrent клиентов, правда же ?

43. evilbloodydemon, 14.08.2009 10:59
Vladimir Rybinkin

а можно про вашу концепцию прорыва в будущее почитать, скажем, в десяти словах, а не в десяти томах?

44. dozen, 14.08.2009 17:14
Vladimir Rybinkin
В графовой терминологии - узлы

А-а-а-а, понеслось по новой! "Сетевые базы, туда-сюда, всё супер-пупер, реляция не справится (зато JS -- конечно!), я самый крутой, я начальник цеха, у меня и подчиненные есть (угу, ога), вот и офис у меня (здание заброшено за аварийностью), щас вот выложу миллион узлов, вот щас, щас... устал ждать, выключил, пока посмотрите картинку, вот, вот и еще вот, нет, бинарника не дам, нет, параметры с входа не читаем, только что зашито внутрь, и вообще, я устал, меня еще свершения ждут, некогда мне больше глупостями заниматься!"

Гуглю не хило бы вначале свой ПОИСКОВЫЙ сервис по-нормальному сделать...

... сказал ВР, у которого каталогизатор ставил (и до сих пор ставит) вместе "катер" и "Екатеринбург" -- да-да, он же сделан по-нормальному, через SUBSTRING.

45. Konstantin Mironovich, 14.08.2009 21:59
Vladimir Rybinkin
ради одного сраного AJAX я бы и ветку не завел.

не помогло..


автор, как всегда, извернулся, "уточнив проблематику".
fuzzy logic в действии..

46. dozen, 15.08.2009 01:05
Vladimir Rybinkin
К сообщению приложены файлы: 1.rar

Решил один раз увидеть, чтобы уши вконец не завяли. Не работает. Почему? А ругается на то, что eval() неправильно зовешь:


Error: function eval must be called directly, and not by way of a function of another name
Source File: file:///C:/TEMP/VR-JS/b.j
Line: 1

Firefox 3.5.2

Ах, да! Для тебя же не новость, что сейчас следует поддерживать как минимум IE, Firefox, Opera, Safari и Chrome? И что между ними есть определенные различия? И что библиотеки, подобные GWT или ExtJS браузер детектят и прикладывают воркэранды, чтобы они вели себя более-менее одинаково?

47. Chippy2003, 15.08.2009 01:46
Hedin
gwt-ext выглядит вроде не хуже, и под LGPL.
Там засада. GWT-Ext это всего-лишь wrapper над обычным Ext JS, а последний Ext JS под LGPL - 2.02

В общем с Ext мутно, ничего лучше вроде как нет, при этом это лучшее - весьма знатный глюкодром, ну и авторы жадные, как дети .

48. ivanhoe, 15.08.2009 02:47

Надо сказать, темы (и сообщения) Владимира здорово оживляют данную конференцию. :)


Vladimir Rybinkin

цитата:
А позволительно ли будет узнать - почему?
Потому что уже много лет существует, например, метапрограммирование. Собственно, eval это тоже в некоем роде метапрограммирование, в предельно грубом из всех возможных видов. Соответственно, требующее очень большой аккуратности при использовании, сравнимом с аккуратностью с работой с указателями. Как и указатели, eval не дает никаких преимуществ по сравнению с более прогрессивными конструкциями, но требует, повторюсь, нечеловеческой аккуратности, которой не обладает никто и код получается плохой, ненадежный, дырявый, ... неприличный в общем.

цитата:
Если не считать таинственного "и пр.", все претензии к JS, но не к eval. Что же касается экзотического "и такое бывает" (ИМХО, бред), то и здесь лично я не вижу никаких "очевидных причин".
Думаю что server-side javascript явление не такое уж и экзотическое (т.к. входит в значительную часть серверов приложений для Java) и апологеты Java (например, dozen) могут привести массу примеров где оно используется. "Очевидная причина" такая: если дать пользователю возможность исполнять собственный код на сервере, то он сможет сделать с этим сервером все что угодно и это плохо по определению, т.к. могут найтись (и находятся) злоумышленники, которые, например, взломают сервер и будут рассылать через него спам.

цитата:
Кому?
Думаю любому, кто хотя бы видел примеры интерпретаторов и на том и на другом. По компактности кода haskell проигрывает разве что какому-нибудь K (http://en.wikipedia.org/wiki/K_(programming_language)) или иному потомку APL (при этом код на APL-подобных языках совершенно нечитаемый, в отличии от).

цитата:

Я же русским языком сказал: А если в том, в чью пользу, не использовать то, что ТАМ принято?
А ТАМ ничего не принято, кто как хочет, тот так и пишет. Из более-менее стандартного есть штук пять генераторов парсеров и примерно столько же комбинаторных библиотек. Если писать вообще полностью свое собственное, то вполне функциональная библиотека комбинаторов для парсинга на Haskell пишется за полчаса и занимает 15-20 не слишком длинных строчек. Могу свою показать, писал много лет назад в учебных целях.

цитата:

Упс! К типизации?! Полиморфизм?! А как насчет type var образца JS? Во типизация-то, во полиморфизм! Мож, вначале договоримся о терминах?
Владимир, Вы, однако, проспали и все уже обо всем договорились. Во-первых в JS типизация динамическая, причем образца 70-х готов 20-го века. Если учить ребенка современным веяниям в динамической типизации, то его надо учить perl и Moose. Во-вторых основное развитие по части типизации сейчас происходит в типизации статической, когда максимум возможного контроля делается в период компиляции, а не во время исполнения, как в динамических языках. И учить этим вещам на примере динамических языков можно только одним способом: реализовать на JavaScript статически типизированный язык и уже на примере этого языка показывать что такое типизация, настоящая и развивающаяся. Остается вопрос: не слишком ли это будет сложно и зачем тогда вообще нужен JavaScript?

цитата:
К тому же, Вы описали какие-то неустаканившиеся телодвижения, "непонятно зачем, неизвестно на кой", да еще в майнстрим!
Кроме концептов (которые, кстати, очень похожи на классы типов из Haskell) все упомянутое в моем постинге уже устаканилось.

цитата:
Кстати, повторяю вопрос: Какие проблемы-то?
Ну как-то странно вот так ставить такой вопрос не имея представления о предмете.

Ссылки для вхождения "в тему":
* классы типов и ad-hoc (параметрический) полиморфизм http://en.wikipedia.org/wiki/Type_class
* полиморфизм вообще http://en.wikipedia.org/wiki/Polymorphism_(computer_science)
* типизация http://en.wikipedia.org/wiki/Static_typing

P.S. Неужели Вы теперь используете СУБД?!?

P.P.S. Не советую экспериментировать с гуглом. У меня один коллега (большой фанат гугла) доэскпериментировался, гугл напрочь забанил его домашний IP.

49. dozen, 15.08.2009 05:50
ivanhoe
Думаю что server-side javascript явление не такое уж и экзотическое

Вполне не экзотическое. Когда народ пишет софт, который деплоится у разных заказчиков, и код надо кастомизировать под каждого (включая и поведение, а не только вид) -- вот тогда динамические языки и прикручивают. Но Javascript не особо популярен, IMHO, больше всякие Groovy.

Хотя где-то видел систему, где кусочки кода могли исполняться как на клиенте (браузер), так и на сервере -- по настройкам. Кусочки были, разумеется, написаны на JS по такому случаю.

Добавление от 15.08.2009 05:52:

ivanhoe
Неужели Вы теперь используете СУБД?!?

Точный вопрос -- ".... RDBMS?". Его сетевые монстрики -- тоже СУБД ведь.... а куда он денется? Когда уже бесплатные базы типа Postgres достигли уровня качества и производительности, которые раньше были доступны только на большом железе -- кому надо нафиг мучаться с сетевой моделью?

Добавление от 15.08.2009 05:55:

Chippy2003
ну и авторы жадные, как дети

Ну что значит -- жадные? у них, наверное, семьи и дети есть. Не хочешь платить -- девелопь то же самое сам. Думай, что получится дороже...

50. ivanhoe, 15.08.2009 07:57
dozen

цитата:
Его сетевые монстрики -- тоже СУБД ведь...
Скорее просто БД (без СУ), т.к. СУ подразумевает все-таки некую отчуждаемость от конкретно-написанной БД.

цитата:
Когда уже бесплатные базы типа Postgres достигли уровня качества и производительности, которые раньше были доступны только на большом железе -- кому надо нафиг мучаться с сетевой моделью?
Ну где-то (говорят) в параллельной вселенной живет компания IBM и ее Кастомеры. В этой вселенной есть Майнфреймы, Сетевые DBMS и Программисты, пишущие миллиарднострочные Проекты на самом Серьезном Языке Программирования (COBOL). Там же существует много других технологий инопланетного разума, недоступных пониманию нормального человека (SNA-сети, терминалы 3270 и пр.)

Но Владимир конкретно упомянул MS Access и базу данных "Борей". Прям ностальгия накатила, я ведь "Бореем" тоже вдохновлялся N лет назад и даже использовал в MS Access качестве фронтенда к PostgreSQL/*nix.

P.S. А вообще с нереляционками активно мучаются сильнораспределенные товарищи (google, facebook и пр.), см. например, http://blog.oskarsson.nu/2009/06/nosql-debrief.html Правда (т.к. не силен в теории нереляционок) не знаю как называются ихние модели, ассоциативные м.б?

51. arsa, 15.08.2009 17:47
ivanhoe
eventual consistency

52. Chippy2003, 15.08.2009 20:43
dozen
Не хочешь платить -- девелопь то же самое сам.
Откуда уверенность, что если заплатить - не будешь девелопить тоже самое ?
Ext не относится к числу библиотек, которые взял и они заработали как есть. Рано или поздно большинство их классов так или иначе обрастают наследниками/хаками. И тут уж вопрос что лучше, основываться на стабильной LGPL 2.0.2 или на нестабильной Commercial 3.x которая ничего особо нового и не принесла.

ЗЫ: как дети, этот попытка запрета использовать 2.0.2 по причине появления классной новой и GPL/комерческой 2.1 или 2.2.
Представь, что springsource сейчас объявит: так ребятки, Spring 3.0 стоит теперь 10К$ per CPU, а 2.x мы вообще удаляем с сайта и его нельзя использовать, так как теперь есть супер-пупер 3.х

53. ivanhoe, 15.08.2009 22:51
arsa

Я имею в виду модель данных, а не модель целостности. Не уверен, впрочем, что у нее вообще есть какое-то название.

54. arsa, 16.08.2009 02:21
ivanhoe
ну понятно что почти все они хранят просто key-value, кстати недавно читал что реализовали postgres поверх hardoop (гибриз точнее)
http://dbmsmusings.blogspot.com/2009/07/announcing-r…oopdb-longer.html

55. dozen, 16.08.2009 08:38
ivanhoe
Правда (т.к. не силен в теории нереляционок) не знаю как называются ихние модели, ассоциативные м.б?

Хрен знает, только для типового энтерпрайза они не подойдут IMHO. Они хороши, когда связанные данные легко можно сфедерировать (слово кривое) вместе. Сложные аггрегатные репорты по этим их бигтэйблам как гнать -- я не знаю (то есть в теории конечно map reduce ихний помочь должен, но теория с практикой обычно расходится). С другой стороны... данные аккаунта какого-нибудь в банке хранить вместе на одном хосте -- и доступ быстрый будет... аггрегаты все равно вычислять геморно, зато горизонтально масштабируется -- ну чистый гугль! Но кто ж тогда проценты от продажи тяжелого железа получаться будет, да откаты с них, а?

Chippy2003
Откуда уверенность, что если заплатить - не будешь девелопить тоже самое ?

Нет уверенности -- не плати. Делай своё. В жадности-то зачем обвинять? А то пользоваться хочу, а платить -- "оне жадные!". Кто тут жадничает еще, а?

Ext не относится к числу библиотек, которые взял и они заработали как есть. Рано или поздно большинство их классов так или иначе обрастают наследниками/хаками.

Так происходит с любой (ЛЮБОЙ) широкоиспользуемой либой. Ожидать обратного -- несколько простовато, не?

Представь, что springsource сейчас объявит: так ребятки, Spring 3.0 стоит теперь 10К$ per CPU, а 2.x мы вообще удаляем с сайта и его нельзя использовать, так как теперь есть супер-пупер 3.х

Я всё жду, когда до них допрет, что так и надо сделать. Про "нельзя использовать" -- это ты загнул, лицензия обратной силы не имеет, но вот "убрать с сайта" -- имеют полное право, ибо САЙТ ИХ. Жадные? Обзаведись мортгажем с variable rate, потом суди.

Вообще вся их бизнес-модель -- на данный момент глупость. Продажа поддержки -- это продажа себя по часам, а часов в сутках ограниченное число. Итого их бизнес имеет естественные ограничения на рост. Выпуск коммерческих лицензий типа Enterprise позволил бы масштабировать бизнес кратно ("они спят, бизнес идет"). Они начинают туда двигаться, отсюда и появление всяких tc Server да dm Server, но (IMHO) это несколько не то (к тому же они их бесплатно раздают). Это (особохитрожопые сервера) ниша JBoss, и если вдруг SpringSource нароет что-то полезное в этих tc/dm, то оно появится в следующем JBoss как пить дать. Им (SpringSource) нужно именно лицензировать Spring. Включив в Enterprise версию определенные важные фичи, которых не будет в Community version. Тулсы продавать как Spring Workshop за $1000 за место.

Или парни так и должны пожизненно на телефонах сидеть, консультировать тупых кодеров, и на конференциях выступать? Незавидная доля для тех, кто считай в одиночку поднял алтернативную к JavaEE модель (и во многом повлиял на изменения в ней).

56. Vladimir Rybinkin, 17.08.2009 09:37
О, активность, вроде, есть. Я, правда, догадываюсь, О ЧЕМ она... Только один хрен - ни отвечать, ни даже читать сил нет. Даю последний "отчет о проделанной работе". Тяжеловат получился для одного поста, но что же делать - знать, работал много! Начат в пятницу хто ж начинает-то в пятницу!, закончен - вчера.

Так, отдышались, отсмеялись - "за работу, товарищи"!

Самые простой тип данных у нас - одно информационное поле, вообще без исходящих дуг (на них - ссылаются). Это: должности, скидки и... как-то по-дурацки они там называются... короче - обращение (Dr, Mr, Mrs, Ms). Класса им, стало быть, не положено (класс по умолчанию - DEFAULT). К этому же классу можно было бы отнести и однопольные элементы с обезличенными ссылками, но таких у нас в базе и нет - "групповуха" (Cities, Companies, ...) имеет персональные страницы. Значит, этим элементам положен личный шаблон, а объединяются они в класс SIMPLE, который все, кроме шаблона наследует от DEFAULT.

Далее: все остальные классы представляют структуры из информационных и ссылочных полей. Стало быть, в классе описываются они... да точно так же! Имя класса (или NULL), имя шаблона (или NULL - признак наличия персональной страницы у объектов класса), обезличенные ссылки на родителей (или NULL), на детей (или NULL), и для каждого поля: имя атрибута (или NULL), тип данных (точнее, тег: ссылка, фильтр, число, строка или NULL - голая строка по умолчанию)... Усе! Не так уж и сложно, оказывается. Таким образом, получается вообще универсальная структура для всех элементов - крррысота! А, сорри - методы ж еще... Ладно, доберемся - посмотрим, что с ними делать...

Шаблончики, стало быть, есть отдельная группа метаданных, на которую имеется (если она вообще имеется) ссылка из класса или даже из самого объекта. Нормально. Генерацию морды, конечно, придется переписать, но это быстро.

Так, с групповухой разобрались: пока два класса и 9 шаблонов, но это на всякий случай - думаю, шаблонов будет заметно меньше. Теперь перепишем генерацию страницы. Обработку ошибок делать не будем - мы же супер-пупер-программисты! Или как там dozen говорит?

Так, а чего это я дурью маюсь? Классы же у нас вполне себе объекты, и инициализировать их можно сразу по onLoad... Ха! Так ведь и элементы тоже "вполне себе объекты"! Стало быть, транспортируемые данные должны передаваться в подлежащий "расстрелу" кадр инициализации... прилепим пока к b.j - лень думать. Впрочем, чего уж там - ясный пень, отдельный поток данных... Говорил же раньше, что по нормальному надо данные на морду отправлять в динамике. Интересно, а крыша у JS от такой наглости не слетит? Парочка массивов разнородных объектов - это тебе не хухры-мухры! Впрочем... почему разнородных? Пущай на данном этапе однородными побудут. Да уж, четвертый тест СЕРЬЕЗНО от третьего отличается...

Оказалось, что двухпоточная технология часто неудобна: не в смысле двух потоков, а в том, что оба они одинаковые (очереди методов). Удобнее же иногда поток данных иметь чисто пассивным, без методов. И вызов локальных функций отсутствует (в смысле, из очереди). Но это как-нить на досуге - не весь же SINT сразу сюда совать...

Как же задолбал он своей тупой "универсальной" диагностикой Предполагается наличие объекта, строка 1, знак 1! Отладчик, панимашь! Уже все заглушил... Ах, вот оно что! Ох уж это Шарик! Помощничек...

Надо же! А вот инициализация на удивление легко прошла, с первого тыка - ни фига не видать исходных массивов. А вот массивы объектов появились, и в них... все путем! Интересно, эти друзья хотя бы инициализирующий софт затирают? Или так и висит? Вряд ли - наверняка бы похвастались. А может, его у них вообще нет? Не исключено... А, ну да - откуда ж ему взяться? У них же дыра в идеологии: они ж свою engine динамически ни пополнять, ни модифицировать даже и не планируют - что закачали, то и жуй. О пользователе хоть бы подумали - это ж ЕГО игрушка ("ручная" настройка текущего состава этого самого engine - это же кайф!). Если кто помнит, я ваще с разных сайтов предлагал его компоновать, а здесь даже ни звука. Эх, бедолаги! Видать, денег там платят много - вот и ломанулась всякая шушера. Впрочем, у меня сильные подозрения, что это все писали вообще не программисты, а манагеры (что, в общем-то, разумно).

Ну, что же - теперь "отложенная" процедура генерации страниц... работает, сучара! Правда, пока по "универсальному шаблону", но у меня и база пока лишь из групповухи состоит. Пополним... Токо вот по-прежнему ссылку от обычного текста не отличить. Эй, dozen, колись - чего ты там насчет CSS пальцы-то гнул? А я пока хоть "FONT COLOR=" под ссылкой заставлю писать...

Хм... Так просто не пополнишь - шутки кончились. Слишком уж все повязано. Следующий шаг, стало быть, вся база, все классы, все шаблоны + управление генерацией именно нужным шаблоном. И все это должно быть реализовано одновременно, поскольку одно без другого будет разве что глючить... Перекур, что ли? Не, уж очень лихо все идет - бросать жалко - просто законсервируем версию. Нет, все-таки перекур - тут ТАКОЕ начинается! Токо на свежую голову. Старость - не радость...

А мож, все-таки попробовать проинициализировать массивы РАЗНОРОДНЫХ объектов? Это все же попроще с программерской точки зрения (на первый взгляд). А с идеологической это выглядит так (в реляционной терминологии): объект - это кортеж, но из некоторых полей "растут" массивы (поле-столбец). Иногда и из тех элементов тоже чего-то выглядывает ("елочка" такая), но это экзотика. Вот, скажем, Company:
1-е поле - имя (ID) класса (Company)
2-е поле - ID родителя (Companies)
3-е поле - дети. Бр-р-р-р! Пущай-ка их пока не будет - я и сам еще не знаю, что там за детишки такие. В любом случае - массив ID (пусть и нулевой длины).
4-е поле - информационные полЯ - вот он, массивчик (или вложенный кортежик - кому как удобнее).
4.1 - Address - ссылка на объект класса Address.
4.2 - ContactName - ссылка на объект класса Person.
4.3 - CompanyName - строка: "Around the Horn".
4.4 - Phone - строка: "(171) 555-7788".
4.5 - Fax - строка: "(171) 555-6750".
Имена атрибутов, разумеется, лежат в аналогичном массиве в классе Company - это я для наглядности смешал все в кучу. Информационые поля тоже могут быть массивами (скажем, несколько телефонов). Вот такая вот "жуть". Ажно страшно программировать . Это, конечно, не SINT, и даже не Синдбад, но...

Я был тогда куда моложе,
И лучше, кажется, я был,
И я умел писать. И что же?
Все это я почти забыл.

Охренеть! Работает!!! Да почти сразу (выход из бесконечного цикла забыл поставить, и еще пару чего-то похожего - считай, с первого тыка)! Ну, робяты... даже теперь не ожидал от eval такой невероятной мощи... Смотрите сами - вот, например, оператор присвоения:
код:

m.e('u.d[i].'+z.charAt(j)+'['+k+']=m.s(x,0,y++);');

Поясняю (m.e - разумеется, eval): i-му элементу (динамически создаваемому в цикле по i) массива данных d(DATA), который (массив d) есть поле глобального (т.е. расположенного на морде, т.е. в index.htm) объекта u(USER_DATA), который (i-й элемент массива d объекта u) и сам объект, у которого в цикле по j создается j-е поле с односимвольным именем, которое в настоящий момент принимает значение либо s(SON_LINKS), либо b(BODY_FIELDS), которое (j-е поле i-го элемента массива d объекта u) и само массив, в котором вот прям ща, в этом операторе, создается k-й элемент, в который помещается строка данных, которая есть вырезка из оставшейся необработанной части строки i-го элемента данных исходного массива строк (x), полученных в кадр инициализации из БД, длиной y символов. Уф! Понятно? Как там у классиков? Вот два петуха, которые будят того пастуха, который... который построил Джек.

А это вывод: строка таблицы из одного элемента (заглушка), генерируемая в цикле по детям при генерации страницы объекта u.n - это евойный ID - поле n(currentNode) объекта u(USER_DATA).
код:

m.w('<TR><TD><A onClick = "_('+u.d[u.n].s[i]+');">' + u.d[u.d[u.n].s[i]].b[0] + '</A></TD></TR>');

Поясняю (m.w - разумеется, document.write, пробелы, разумеется, не нужны - добавил, чтобы не испортить ЭТУ страницу): i-й элемент массива детей s(SON_LINKS) у u.n-го элемента ("хозяина" страницы) массива данных d(DATA) объекта u(USER_DATA) имеет право на персональную страницу (генерится ссылка на функцию генерации страницы _(), где параметром выступает ID этого элемента. А выводимым значением (по чему кликать) выводится нулевое (заглушка, сил не хватило - надо, ессно, брать из шаблона) поле массива b(BODY_FIELDS) у объекта-ребенка (того самого, чей ID параметром передается) в том же массиве d объекта u.

Ну теперь уж точно перекур! Так хто там бочку катил на eval?! Кому там что-то "очевидно в пользу Haskell"?! Я поначалу подумал - пижонство (типа goto - много раз видел: программист-то от горшка два вершка, но увидит goto, и нос воротит), но теперь я иначе думаю. Не пижонство это, а идиотизм. Решение, получаемое с помощью eval (которая, как известно, "уже много лет не является приличной конструкцией" ) настолько простое, настолько красивое и элегантное, что... в любом Haskell, в любых других языках - и прошлых, и будущих - ТАКИЕ возможности можно лишь ПОВТОРИТЬ, но никак не РАСШИРИТЬ! Так-то, Ваня.

Продолжим...

Вначале подшлифуем инициализацию. Она зависит от формата исходных данных, который зависит... сервер тоже надо пожалеть... впрочем, его главная проблема - преобразование внутренних ID базы в локальные ID страницы, а от этого никуда не уйти. К тому же, мы неплохо умеем это делать. Так что жалеть особо нечего, все внимание удобству инициализации на клиенте. А это в первую очередь - универсальность формата для разнородных данных. Что означает... Хм, ничего особо не означает: первым элементом обязательно идет ID класса, и дальнейшим алгоритмом (в т.ч. и инициализации) управляет именно он. Так что и универсальность формата почти не имеет значения. Что же, посмотрим еще раз, чо у нас творится в БД...

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

Теперь - поля. Это, стало быть, типы данных. Их... всего-то два: строка и ссылка. Насчет фильтра я, конечно, погорячился - какое до этого дело элементу? Ну и признак: единичный элемент или массив. Никаких многомерных массивов, методов, уровней. Господи, как же все упрощается по сравнению с Синдбадом! Тогда "экспортный" формат есть массив строк, упорядоченный по их "будущим" локальным ID, а в строках в общем случае 2 типа разделителей (полей и субполей). Последовательность полей имеет некоторое значение (для повышения универсальности кода на клиенте). Скажем, "девочки - направо" (ссылки), а самые важные данные - налево (чем важнее - тем левее). Но это проблемы уже серверных шаблонов - вне темы, неинтересно.

Далее: отцы и дети. Вообще говоря, задача не из простых, ибо иерархий в общем случае может быть несколько (по разным измерениям). Не будем повторять ошибок раннего Синдбада - пусть будут обычными информационными полями (включены в общую кучу). Тогда это всего лишь частный случай (лишние 1-2 поля в элементе), и обрабатывается по общему алгоритму. Шаблон под это дело не подходит - слишком уж специальные метаданные. Нет, на фиг - уберем-ка шаблон в класс - чо нам, классов жалко, что ли? Тогда структура элемента упрощается до безобразия: класс + информационные поля (возможно, с субполями).

Или совсем уж обнаглеть? Никаких объектов, вся база - трехмерный массив (кортеж, поле, субполе), а нулевым элементом кортежа - ID класса. Данные только в субполях (код даже проще получается), адресация к любому субполю тривиальна. Как и к полю, кортежу, и даже всей базе (которых на странице теоретически может быть несколько штук одновременно, но это явная экзотика). В отличие от всяких там многомерных кубов размеры массивов переменные, так что места особо занимать не должны... работает! Ну, проще уж просто некуда. Смотрим выдачу...

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

С форматом все ясно (да и с инициализацией почти все). Осталось определится с полями окружения (какие ссылки давать, как группировать), но об этом я просто понятия не имею - чего там на клиенте понадобится. Так что дадим пока, что под руку подвернется, а дальше как при коммунизме - по потребности.

Ага, и потребность уже налицо: узлам групповухи детей не хватает. А детям родителей? Ну, а как же - детям плохо ведь без родителей... Получите! Ну и хватит, пожалуй, на первый раз: дети уже расплодились всех мастей и размеров, а инициализация - универсальная. Посмотрим на нее повнимательнее - дело явно к финишу. Теперь она уж совсем простая стала - даже классы не нужны: вначале всегда ID класса, затем - поля до упора (не кортеж, чай - массив!), субполя - аналогично разворачиваем в массив 2-го уровня. Более сложных конструкций нет, и в этом тесте уж точно не будет. Ха! Даже eval не понадобился - зря выпендривался. Впрочем, не зря - не всегда же так просто будет. Да и здесь пригодится - инициализацию классов и объектов объединить...

Я просто дурею от возможностей. А eval прям полюбил всей душой. А через нее - и весь JS (поначалу морщился - ни указателей, ни goto - противно)! А теперя... как вам нравится такая конструкция?
код:

for(i=1;i<m.e(z.charAt(y)+'.length');i++)

Где y определяет имя инициализируемой базы данных (т.е. можно инициализировать сразу несколько баз данных и/или метаданных в одном цикле). ФАНТАСТИЧЕСКАЯ мощь! Даже C так не умеет (по-моему). Гляньте, шнурки, которые охаивали здесь JS вообще, и JS/IE3 в частности.


О! Дождался - расплакался мой комп: "сценарий замедляет работу компьютера". Что-то он вообще утух, не выдав и тысячи кортежей. Правда, я его на страницу заставил вывести весь протокол инициализации, а это... Пхи! Всего-то 9000 строк! И в чем дело?! Чего, не отформатировать никак?! Ладно, вырубим - умаялся, сердешный! Ах, это я "утух" - даванул на "прервать сценарий". Нормально работает. И чего скулил?

Разберемся-ка до конца и с классами. Во-первых, они описывают структуру элементов, во вторых - имена атрибутов для выдачи юзеру, для организации поиска и прочей дребедени. В-третьих, они ссылаются на шаблоны выдачи, которые уже выделены в отдельную группу метаданных, что пока еще спорно. В-четвертых, они пока что не содержат, но могут содержать методы - как системные (типа контроля целостности данных), так и юзеровские. Что-то меня опять в Синдбада понесло - какие, в задницу, системные - на клиенте-то, да еще в тесте! Таким образом, функциональная нагрузка элементов класса различна, и частенько пересекается... По-видимому, нужно все-таки воспользоваться упрощенной технологией Синдбада: классы (методы, шаблоны, структуры, атрибуты, ...) суть элементы единой базы метаданных, и перевязаны между собой нужным образом. Класс же есть обычный узел этой базы (точка входа в метаданные для объектов этого класса). Следовательно, структура хранения... см. выше для данных - ничем не отличается (как и инициализация). Так и было задумано.

Теперь - какое-то подобие языка описания. Нам нужно: уметь ссылаться на кортеж, поле и субполе, на данные и метаданные, прямо, косвенно (по содержимому какого-нить параметра), и по траектории (цепочка косвенных адресаций). При этом связываться с ветвлениями, циклами, скобками и т.д. ну очень не хочется - по крайней мере, в этом тесте. Ой, мама! Так ведь если использовать разделители субполей (а что же еще?), цепочка при инициализации автоматически развернется в массив (как и косвенная адресация), и реальные данные всегда лежат в конце этого массива (для прямой адресации - в нулевом элементе). И ваще по барабану, ссылочное это поле или нет (в крайнем, случае, броузер ругнется). Что-то не верится - какая-то заоблачная универсальность... Обязательно во что-нить вляпаемся: этого не может быть потому, что не может быть никогда. А ну-ка, попробуем... во, для детей группы "города" страну вторым столбцом и прилепим.

Во зараза! Забыл, что шаблоны начинают работать сразу для всех классов... но это же для нас, моряков, пыль... радиоактивная, блин... Итак, функция получения краткой информации о ресурсе (если надо - со ссылкой) - это инструмент, между прочим!(с) Куды ее - в строку, али сразу в поток? Сразу, конечно, пока по морде не получим... Полная инфа - подождет... Нет, стоп! А как ее вообще сделать - функцией или очередью? Ладно, пока - функцией... Передается ей... Антон с Олегом в свое время порезвились - там какие-то совершенно жуткие возможности для выдачи, включая обращение к серверу с запросом на выполнение каких-то расчетов, плюс почти непрорубаемый нынче синтаксис. А, ладно - передаем ей пока что просто ID элемента - и пусть выкручивается, как знает... И ведь как выкручивается, гнида!

Ффффуууу, заработало! Рубикон пройден - по опыту знаю. Теперь информационная насыщенность страниц всех видов будет стремительно нарастать - токо успевай подсовывать классы, шаблоны, ссылки... Надо бы учет посещенных страниц наладить (для VLINK), историю посещений завести, поскольку этот идиот броузер... dozen, не ты писал? Только, боюсь, нагородил я чего-нить в этой адресации. Нужно большой перекур сделать, денька на три минимум - надоел мне и JS, и даже eval. И ваще устал.

Ну чо, комментарии будут? Или опять воды в рот наберете? Не молчите только - мне ОЧЕНЬ нужна обратная связь (хотя бы на уровне пользователей). Хоть глупости, но говорите - тема же НЕ МОЖЕТ не быть интересной! Ладно, хрен с ними, с "программистами" (которые сами ничего не умеют, кроме как надувать щеки - их "ответы" я и заранее знаю, они никогда не меняются), но хоть пользователи Интернет здесь имеются? В качестве провокации на ответы: Быть глупым или невежественным - это абсолютно нормально, господа. Вот трусом быть - это и в самом деле позорно.

57. Hedin, 17.08.2009 10:06
Vladimir Rybinkin
Ну чо, комментарии будут?

А какой смысл разговаривать с радиоприёмником?
Всё равно ведь - один хрен - ни отвечать, ни даже читать сил нет

58. dima.yegorov, 17.08.2009 10:15
Похоже на программирование ради программирования...

В Firefox 3.5 наблюдаю только надпись Loading...

В Internet Explorer 8 (XP) наблюдаю сначала предупреждение системы безопасности. Если согласиться запустить вашу поделку, наблюдаю "<script language=" и всё. Да-да - именно текстом угу.

P.S. Это Вам на уровне пользователя обратная связь. В программировании конкретно на JS я не особо силён.

59. Chippy2003, 17.08.2009 10:25
dozen
Про "нельзя использовать" -- это ты загнул, лицензия обратной силы не имеет
Именно обратная сила, и я тут не при чем.
К сожалению, логов удаленных и правленных постов Джека (автор Ext JS) у меня, конечно, нет, но лулзы были знатные

Тут в кратце, но увы чрезмерно политкорректно, без ярких цитат Джека http://www.jroller.com/sjivan/entry/my_response_to_jack_slocum

http://www.gwtsite.com/ext-gwt-gwt-ext-what-now/ здесь же показательная ссылка на ответ Джека
Им (SpringSource) нужно именно лицензировать Spring. Включив в Enterprise версию определенные важные фичи, которых не будет в Community version.
Это абсолютно нормальная схема. Схема Ext - так юзеров набрали, теперь либо пусть платят, а кто не платит идет лесом, с LGPL правда вышел облом.

60. SERGEY_BIG, 17.08.2009 10:54
Читаю я эту тему и "... таблицы и картинки пропускаю, а в пролетарскую суть вникаю..."
Конечно, разгрузка сервера БД - дело благородное, только вот то, от чего пытается разгрузить его топик-стартер, серверу - как слону дробина. Ему, бедному, нужно ведь индексацией заниматься, транзакциями там, репликацией, обработкой запросов, штатным обслуживанием данных, причём всё это одновременно и для многих пользователей.
От этого, конечно, чтение панегириков конструкции eval (ИМО, вреднейшая конструкция) не становится менее занимательным

61. moderator-Kid, 17.08.2009 15:29
[Модератор внимательно приглядывается к данной теме и надеется на вежливое и разумное поведение участников. Иначе - ой.]

62. arsa, 17.08.2009 18:30
Chippy2003
я думаю всё логично и я лично не против такой лицензии. LGPL не может нормально существовать в вебе, imho. по этой же причине был придуман AGPL.
единственное что меня смущало это реакция авторов addon-ов, но вроде они тоже успокоились

63. dozen, 17.08.2009 18:59
Chippy2003
но лулзы были знатные

Wow! Каким-то образом этот знатный скриптосрач прошел мимо меня совершенно незамеченным! Теперь понял твоё отношение, и даже его разделяю

Добавление от 17.08.2009 19:04:

arsa
я думаю всё логично

Не, не логично. Если я строю своё приложение на базе ExtJS, и расчитываю на многолетние апдейты в рамках LGPL (то есть без необходимости раскрывать свой код), то внезапная смена лицензии (которой НЕ БЫЛО в roadmap) -- это знатный удар по яйцам. Не зря там кто-то высказался -- "they fu***d us and our users".

Для меня, как коммерческого разработчика, ExtJS умер. Я не смогу советовать его заказчику, зная о возможности таких подъ%бок.

Добавление от 17.08.2009 19:09:

moderator-Kid
надеется на вежливое и разумное поведение участников. Иначе - ой.

Да ВР всё равно все игнорируют. Кто ж будет простыни читать? У нас тут сопутствующие темы пошли...

64. Chippy2003, 17.08.2009 19:57
arsa
LGPL не может нормально существовать в вебе
GPL тоже.

единственное что меня смущало это реакция авторов addon-ов, но вроде они тоже успокоились
а какие теперь могут быть аддоны ?

допустим кто-то написал компоненту под Ext, и пытается ее распространить под GPL
кому ?
Обладатели GPL версии Ext вряд ли массово существуют в природе, так как разработчики ext требуют открытия серверного(!) кода под GPL.
Обладатели же коммерческой версии Ext не смогут использовать эту компоненту, так как она под GPL.

Ext теперь вещь в себе

65. ivanhoe, 17.08.2009 20:26
Vladimir Rybinkin

Владимир, я рад что Вы открыли для себя конструкцию eval, но для приведенных примеров достаточно по-моему обычных ассоциативных массивов, которые бывают даже в C. Eval, кстати, в C/C++ тоже бывает, называется, CINT (http://en.wikipedia.org/wiki/CINT) (почти СИНТ)

цитата:
пользователи Интернет здесь имеются?

Ну пользователю надо уже что-то законченное и работающее. Тесты 1-3 по-моему, ни у кого их присутствующих не заработали.

dozen

цитата:
Хрен знает, только для типового энтерпрайза они не подойдут IMHO.
Вопрос даже не в том, подойдет или не подойдет, а в том насколько это, так сказать, технико-экономически обосновано. На мой взгляд, если хватает большого железа и Оракла (а для энтерпрайза и даже для carrier-grade их хватает в 99.99% случаев), то надо использовать большое железо и Оракл, будет лучше (и дешевле) и разрабатывать и эксплуатировать.

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

цитата:
Кто ж будет простыни читать? У нас тут сопутствующие темы пошли...
Я читал, прям-таки с упоением. Всегда считал программирование web-морд скучнейшим занятием, а тут столько эмоций, экспрессии... :>

66. arsa, 17.08.2009 20:42
Chippy2003
гм. странный аргумент насчёт серверного кода. и да, конечно, определённый серверный код нужно открывать по причине GPL. в своё время я довольно много об этом читал, и в общем то да, это проблема. но проблема только в том случае если вы генерируете динамический javascript код (который потом использует extjs) на сервере. это весьма узкая ниша, которую конечно занимают все GWT и всякие WYSIWYG решения, но честно говоря большинства людей которые просто делают на ExtJS сайт это не касается - они могут спокойно GPL-ить свой javascript (и держать его отдельно), а серверную часть оставить закрытой.
http://extjs.com/forum/showthread.php?p=156236#post156236

кстати аддоны вполне нормально пережили переход, даже Livegrid за который я так волновался. они спокойно перешли на ту же dual модель.

dozen
да, конечно доверие подорвано. вопрос что дальше, есть ли альтернатива. вот например bittorrent, точно так же человек лично за свои деньги писал чуть ли не два года его, и теперь хочет что то получить за это. (и кстати используется похожий аргумент - многие adware просто переделывали oss клиенты, как некоторые компании брали extjs и перепродавали)

67. Chippy2003, 17.08.2009 21:04
arsa
прямо по ссылке: Suppose you have an index.php that includes Ext JS. According to the FSF, in that case index.php would be also under GPL since it is using ext. Since it must be GPL, it's source must be distributed. Since it is GPL, the "viral" effect of GPL is now in effect and any thing that uses index.php (if anything) on the serverside would also fall under the GPL.

Возьмем строгую server-side MVC.
index.jsp includes ext js, она заражена, на нее в свою очередь завязаны view resolvers, они теперь тоже заражены, resolverы выводят на конфигурацию всего web-app... gg

68. arsa, 17.08.2009 21:42
Chippy2003
я же говорю - js отдельно, я думаю это можно технически реализовать (выделив страницу-загрузчик ext в отдельную страницу или вообще проект - дабы не "заражаться"). к примеру, собственно то приложение которое я писал год назад и из-за которого я знаком с Ext - там вообще не было никакого общения с сервером кроме заргузки javascript и потом json.

понимаю что это совсем другая модель разработки (может быть не приятная и не удобная - более похожа на client/server). но мне кажется что намного сложнее уговорить себя выпустить весь свой javascript под GPL, особенно в случае когда в общем то никакой привязки к серверу кроме (обычно достаточно статичного по структуре) json не остаётся. об этом надо думать, а не о технических аспектах "заражения" GPL.

Лично на меня всё это производит впечатление хорошее, и не позволяет вендорам закрыть всякую возможность модификации кода, для чего собственно GPL и существует (в том числе). Максимум что они могут сделать это усложнить/запатентовать свой json протокол, я думаю к этому всё и прийдёт (см. ActiveSync). С другой стороны RMS как всегда против

69. Chippy2003, 17.08.2009 23:11
arsa
я же говорю - js отдельно, я думаю это можно технически реализовать
А, так да, согласен. Хотя тоже подрезает сферы использования до фактически "ext application".
Максимум что они могут сделать это усложнить/запатентовать свой json протокол
уже
не помню, кто именно, формы или гриды, не понимают маппинг вложенных объектов,
код:

{id:32, name:"Red Square", city:{id:123, name:"Moscow"}}

зато понимают в извращенном виде:
код:

{id:32, name:"Red Square", "city.id":123, "city.name":"Moscow"}

уговорить javовский gson выдать по хорошему такой ужас не получилось, пришлось "изнасиловать" через reflection.

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

Добавление от 17.08.2009 23:28:

arsa
как некоторые компании брали extjs и перепродавали
В это бы я поверил, если бы было как у mysql. Грубо - на хостинге используйте, распространять с дистрибутивом - ни ни.
У java тоже какая-то хитрая лицензия, которая с одной стороны блюдет интересы sun, но позволяет пользоваться свободно разработчикам (не вникал).

Тут же прямое ополчение на 99% своих пользователей, залинковали ext-all.js на своей страничке => GPL или кошелек.

Если я сейчас попробую обосновать покупку ext лицензий - 90%, что получу ответ: мы, это, шантажистам не платим

70. dozen, 18.08.2009 07:46
ivanhoe

Я читал, прям-таки с упоением. Всегда считал программирование web-морд скучнейшим занятием, а тут столько эмоций, экспрессии... :>

У меня ребенок, когда смотрит какие-нибудь старые фильмы (которые я смотрел раз 50 уже, конечно) тоже очень экспрессивно делится своими наблюдениями и догадками. Забавно наблюдать ход мысли и сравнивать в голове с "как на самом деле". Вот такое у меня чувство и при чтении опусов ВР. Молод он душою, молод... ну, или наоборот, в маразм впадает.

71. Vladimir Rybinkin, 18.08.2009 10:22
Беглый просмотр показывает... Ладно, посмотрим подробнее. Сейчас - ответы на посты до моего вчерашнего.

Chippy2003
цитата:
но сервер принимающий опт ведь уже готов и успешно протестирован на сотне concurrent клиентов, правда же ?
Естественно! Чем, собссно, опт от розницы отличается?

evilbloodydemon
цитата:
а можно про вашу концепцию прорыва в будущее почитать, скажем, в десяти словах, а не в десяти томах?
А ветку почитать слабо? Я формулировал с использованием РАЗНОГО количества слов - на любой вкус: Konstantin Mironovich, например, аж в ДВУХ словах: Ajax Processing. Ох, простите - я на ник поначалу внимания не обратил. Чего изволите?

Konstantin Mironovich
цитата:
не помогло..
Еще как помогло! Спасибо!
цитата:
автор, как всегда, извернулся, "уточнив проблематику".
Я раз объяснил - не поняли, два объяснил - не поняли, три объяснил - как я надеялся, уже в привычной публике терминологии. Опять непонятно?! Ну, это уже переходит всякие границы... Я не изворачиваюсь "как всегда"... - "проблематика" не изменилась ни на миллиметр - я просто слова подоходчивее ищу, чтобы и собеседники это поняли. И даже не теряю надежду, что найду-таки.

dozen
цитата:
реляция не справится (зато JS -- конечно!)
А мозги включать не пробовал? JS - это КЛИЕНТСКОЕ ПО, и ему до задач, с которыми "реляция не справится", глубоко...
цитата:
я самый крутой, я начальник цеха...
О-хо-хо... Чего ж тебя так корежит-то? Или мучает, что я программист, а ты всего лишь эксперт? Ладно, объясняю подробнее (специально для экспертов ): весь AJAX, с потрохами, есть всего лишь технологический прием, чтобы заняться ДЕЛОМ - AJAX processing (а не фигней с "мапами" - для авторов "engine" это когда-либо должно дойти - в крайнем случае, юзеры подскажут). Для меня же все это, вместе взятое (весь клиент) есть всего лишь технологический прием, чтобы заняться НАСТОЯЩИМ ДЕЛОМ (Синдбадом - НОРМАЛЬНОЙ СУБД, а не этим реляционным убожеством, все заполонившем, и ни хрена не умеющим). А сам Синдбад есть всего лишь повод, чтобы заняться СОВСЕМ УЖ НАСТОЯЩИМ ДЕЛОМ (SINT, на котором все и написано, ибо вещи там РЕАЛЬНО сложные). Судя по тому, как местная публика относится к указателям - далеко за границами вашего понимания. Я лично до настоящего времени клиентом практически не занимался (не царское это дело ). Я гвоздики выковывал, которыми блоху подковали - там уж никакой мелкоскоп не поможет.
цитата:
... сказал ВР, у которого каталогизатор ставил (и до сих пор ставит) вместе "катер" и "Екатеринбург"
Умница! Надо же, какой давний пример помнишь - видать, эффектный был. Насчет SUBSTRING ты, конечно, ляпнул не подумавши, но в остальном ты прав на 100%. Именно так: компьютер не имеет ни малейшего понятия (и не должен, кстати), какая моча ударила в голову юзера. Мож, он именно и хочет узнать слова, в которых встречается "катер". Скажу больше: как раз этот софт и показал в дорожке рубрикации на РОМИП... 2004, что ли... самый лучший результат (правда, лишь по точности). Или бушь говорить, что там всякая шваль собиралась (вроде Ильи Сегаловича)? Там, кстати, я еще один пример одновременно приводил - про Сан-Франциско и Францию. Но, по-видимому, нечеткое сравнение строк для тебя пока трудновато, и второй пример ты не запомнил.
цитата:
А ругается на то, что eval() неправильно зовешь
Что, Билл решил крылышки пообрубать, инструментарий подрезать, чтобы только евойным дерьмом пользовались? Ну нельзя же быть НАСТОЛЬКО жадным! Отчего же неправильно? С какого хрена function eval must be called непременно directly?!
цитата:
Для тебя же не новость, что сейчас следует поддерживать как минимум IE, Firefox, Opera, Safari и Chrome?
Новость! Я стараюсь пользоваться МИНИМАЛЬНО возможным набором средств JS. И что, все равно для каждого из них персональный JS-код требуется? А для каждой версии не просят еще? Программеры, блин! Броузер-то детектить не проблема. Но просто СТЫДНО! Да и вообще - читал бы ты уж лучше свою "подшивку журнала Хакер", что ли - все равно пользы с тебя в этой ветке, как с козла молока. Не, я не гоню - боже упаси - с тобой забавнее. Но... неловко иногда за тебя бывает - ты же явно ИСКРЕННЕ считаешь, что я не знаю, как нужно "правильно" eval вызывать. Кстати, огромная просьба: замени контекстной заменой в том примере, который тебе понравился, "m.e" на "eval". Ежу понятно, что тем более работать не будет, но мне жутко интересно, какими словами он НА ЭТОТ РАЗ будет ругаться. Уважь, а?

Chippy2003
цитата:
при этом это лучшее - весьма знатный глюкодром, ну и авторы жадные, как дети
Умница! Золотые слова!

ivanhoe
цитата:
Надо сказать, темы (и сообщения) Владимира здорово оживляют данную конференцию.
Государь, здесь собрались одни куры. Как же я могу снести яйцо, если я среди них единственный петух? (c)Бирбал.
цитата:
Потому что уже много лет существует, например, метапрограммирование.
Отмазка! Чем не устраивает eval? Конкретно, и не прячась за умные слова (тем более - за ссылки). Это трусость, мой дорогой!
цитата:
Соответственно, требующее очень большой аккуратности при использовании
Естественно! Любой мощный инструмент требует аккуратности - это же ОРУЖИЕ!
цитата:
сравнимом с аккуратностью с работой с указателями
Умница! Я когда-то глянул на JS - а там указателей и нет. Я сразу плюнул - "дерьмо, без вариантов". Потом присмотрелся - ба, eval! Ну я же все уже описывал...
цитата:
Как и указатели, eval не дает никаких преимуществ по сравнению с более прогрессивными конструкциями
Опять бум C vs C++? Повторюсь: указатель на структуру покрывает все "классовые" потуги Страуструпа (а также все иные "более прогрессивные конструкции"), как бык овцу. Точка.
цитата:
но требует, повторюсь, нечеловеческой аккуратности, которой не обладает никто
Опять же, лучше ndemia не скажешь: визуальное программирование (а я добавлял - и объектное) создает у чайника иллюзию, что он тоже программист. Чего там может быть "нечеловеческого"?! Указатель - та же переменная, НУ НИЧЕМ не отличается. Или работа с переменными тоже требует "нечеловеческой аккуратности"? Аккуратность, между прочим, в программировании показана даже самым последним прикладникам.
цитата:
и код получается плохой, ненадежный, дырявый, ... неприличный в общем.
См. выше. И вообще, если программист по доброй воле(!) отказывается от использования указателей, тем более, из-за сложности (!!!), дальше его можно просто не слушать. Это - чайник по определению, и чем бы он "в новых, комфортных условиях" ни занимался, этим занятиям есть единственное определение: онанизм. Вариант - выполнение простеньких задач в качестве подмастерья.
цитата:
Думаю что server-side javascript явление не такое уж и экзотическое (т.к. входит в значительную часть серверов приложений для Java) и апологеты Java (например, dozen) могут привести массу примеров где оно используется.
Ну... допустим. Я и на сервере буду использовать лишь то, что есть везде и всегда, и отлажено тыщу лет. Таковым я считал и JS, но у dozen, например, даже с динамическим вызовом eval, оказывается, проблемы. Причем - безнадежные: эта возможность была, но ее специально нашли, и вырезали на фиг - во позорище-то! Как же далеко шагнула техника...
цитата:
"Очевидная причина" такая: если дать пользователю возможность исполнять собственный код на сервере...
Ну дык не давайте - eval-то здесь при чем?! Все математика - одно большое решето, но версия про злобных хакеров... Скажите, Вас самого развели, как лоха, или Вы лишь со мной хотите эту операцию проделать?
цитата:
Думаю любому, кто хотя бы видел примеры интерпретаторов...
Ну, а Вы, лично Вы, к "любым" относитесь? Тогда почитайте мой ПРЕДЫДУЩИЙ пост.
цитата:
По компактности кода haskell...
Ok, я примеры на JS выложил в трех экземплярах. "Компактный" аналог на haskell - в студию! Вот, скажем, для 3-го теста. Там у меня... 619 виртуальных страниц. Компактность... 19223/619=31.054927 байт на страницу (не считая фильтров - иначе наверняка меньше байта на страницу получится). При этом самая большая из виртуальных... Если "сохранить как веб-страницу" - 364 байта. Если сохранить ее HTML-текст - 28093 байта - больше, чем все исходники, вместе взятые. Работать, естественно, не будет, но... прилагаю в аттач - мож, ХОТЬ ЭТО способно отобразиться в современных броузерах? Ну и поменьше страничку - для общего развития - чтобы представление было, что там вообще происходит. Ну как - слабо, нет?
цитата:
при этом код на APL-подобных языках совершенно нечитаемый, в отличии от...
...JS - там же C-синтаксис.
цитата:
А ТАМ ничего не принято, кто как хочет, тот так и пишет.
Лучшую анитирекламу придумать невозможно!
цитата:
Могу свою показать, писал много лет назад в учебных целях.
Не, лучше реализуйте хотя бы один из моих тестов. В учебных целях.
цитата:
Владимир, Вы, однако, проспали и все уже обо всем договорились
Ха-ха-ха! Про объекты мне точно такими же словами говорили. Вы не оттуда фразу списали, случайно? А копнул чуть - как заспорили! Уже не со мной - друг с другом!
цитата:
Во-первых в JS типизация динамическая, причем образца 70-х готов 20-го века.
Вот и хорошо. Тогда водились еще программисты, которые не шарахались от указателей, как черт от ладана...
цитата:
Если учить ребенка современным веяниям...
Ну хоть детей-то пожалейте - свои, небось? Впрочем, я очень прошу проявить милосердие даже в том случае, если это дети Вашего злейшего врага.
цитата:
Во-вторых основное развитие по части типизации сейчас происходит в типизации статической, когда максимум возможного контроля делается в период компиляции, а не во время исполнения, как в динамических языках.
Это просто чудо! Это, стало быть, развитие по спирали? Теперь это называется "новое веяние", не правда ли? А что будете делать, если на этапе компиляции ПРИНЦИПИАЛЬНО НЕВОЗМОЖНО знать что-либо о типах, о количестве параметров, о вызываемых функциях? Уж скоко раз я об этом вопрошал в разных ветках? Но современным программистам нужно непременно в статику лезть - "развиваться"... Давайте, давайте, ребятки - без развития оно плохо - оно, говорят, застой.
цитата:
И учить этим вещам на примере динамических языков можно только одним способом:
У кого-то из нас, извините, уже крыша поехала. Напомню: JS - это ИНТЕРПРЕТАТОР. Какой, в задницу, "период компиляции"?! Пардон, а сами-то Вы знаете, "что такое типизация, настоящая и развивающаяся"? Или "зачем вообще нужен JavaScript"?
цитата:
Кроме концептов (которые, кстати, очень похожи на классы типов из Haskell) все упомянутое в моем постинге уже устаканилось.
См выше про объекты. И, кстати, что же все-таки за зверь "классы типов"?
цитата:
Ну как-то странно вот так ставить такой вопрос не имея представления о предмете.
Ничуть! Именно не имея представления вопросы и ставятся. Более того, у меня очень сильные подозрения, что и Вы сами этого представления не имеете (в противном случае дешевле просто ответить).
цитата:
Ссылки для вхождения "в тему":
Это чтобы узнать "какие проблемы"?! Нет, спасибо - кушайте сами.
цитата:
Неужели Вы теперь используете СУБД?!?
Ни хрена не понял. Где? Почему "теперь"? На хрена?
цитата:
Не советую экспериментировать с гуглом.
А каким образом он может вообще узнать о моих экспериментах? Я, кстати, уже экспериментировал. И даже публиковал результаты экспериментов. И ничего...

dozen
цитата:
Точный вопрос -- ".... RDBMS?".
Умница! Отвечаю: ЭТО - не использовал, не использую, и использовать не собираюсь.
цитата:
Его сетевые монстрики
Почему "монстрики"?! Уж по компактности-то Синдбад дерет кого угодно на порядок.
цитата:
тоже СУБД ведь
К сожалению, нет. Силенок маловато.
цитата:
кому надо нафиг мучаться с сетевой моделью?
Тому, кто понимает, что мучения-то как раз с реляционной. Судя по публикациям последних лет - довольно многие.

ivanhoe
цитата:
Скорее просто БД (без СУ)
Угу. А вот "СУ" как раз абсолютно плевать на "конкретно-написанную БД".
цитата:
В этой вселенной есть Майнфреймы, Сетевые DBMS...
Нет, это обычное заблуждение: отождествлять "сетевую модель" с "сетевой моделью CODASYL". Еще худшее заблуждение (и куда более распространенное - о CODASYL вообще мало кто слышал) отождествлять DBMS и RDBMS.
цитата:
Прям ностальгия накатила, я ведь "Бореем" тоже вдохновлялся
А на что? Меня как раз вдохновила потрясающая уродливость схемы, дикая избыточность, куча ошибок (в т.ч. благодаря этой избыточности), практически нулевые функциональные возможности... А Вас?

dozen
цитата:
Так происходит с любой (ЛЮБОЙ) широкоиспользуемой либой. Ожидать обратного -- несколько простовато, не?
В смысле, либа сразу такая классная, что незачем ей ничем "обрастать"? Кому это нужно? Нужно: наставить возможно больше дыр, и впаривать доверчивым дуракам версий по 20 этой самой либы. Так что... либо либа, либо не либа (с)Юра Шпеер. А бабки...

К сообщению приложены файлы: 1.rar, 5Кb

72. zzf, 18.08.2009 14:04
Vladimir Rybinkin
К сообщению приложены файлы: 1.rar

Что нам должна была продеМОНСТРировать сия поделка? Изменение состояний контролов не производит никаких видимых эффектов. Или это пример того, как не надо?

73. rGlory, 18.08.2009 19:21
Vladimir Rybinkin
цитата:
Для меня же все это, вместе взятое (весь клиент) есть всего лишь технологический прием, чтобы заняться НАСТОЯЩИМ ДЕЛОМ (Синдбадом - НОРМАЛЬНОЙ СУБД, а не этим реляционным убожеством, все заполонившем, и ни хрена не умеющим). А сам Синдбад есть всего лишь повод, чтобы заняться СОВСЕМ УЖ НАСТОЯЩИМ ДЕЛОМ (SINT, на котором все и написано, ибо вещи там РЕАЛЬНО сложные)
Я знал, я знал...
zzf
цитата:
Что нам должна была продеМОНСТРировать сия поделка?
Не обращайте внимания, это фирменный стиль ВР - повыкладывать невнятные примеры, почмокать над ними "тут уже почти круто все работает, осталось только допилить чутка", а чуть позже на это ссылаться как "помните, как я вам всем там нос утер своим супер примером, который работал просто на ура".
Наслаждайтесь процессом

74. dozen, 18.08.2009 20:25
Vladimir Rybinkin:

Я не изворачиваюсь "как всегда"...

Именно изворачиваешься, и именно как всегда. Твои темы шаблоном генерить можно.

А мозги включать не пробовал? JS - это КЛИЕНТСКОЕ ПО, и ему до задач, с которыми "реляция не справится", глубоко...

Ты же Борей на JS реализуешь, не я. Про сервер-сайд ты пока не заикался (впрочем, с ним у тебя традиционно проблемы -- сколько лет в твою гостевую безвозбранно постили спамеры, пока ты не нашел радикальное решение -- HTTP 404 (http://www.2bit.ru/cgi-bin/gbb.cgi) ? Программаст, блин, статфильтр настроить не может...)

Для меня же все это, вместе взятое (весь клиент) есть всего лишь технологический прием, чтобы заняться НАСТОЯЩИМ ДЕЛОМ

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

(Синдбадом - НОРМАЛЬНОЙ СУБД, а не этим реляционным убожеством, все заполонившем, и ни хрена не умеющим).

1. Синдбада никто не видел
2. Синдбад ничего не умеет
3. Синдбад никому не нужен

Dixi.

А сам Синдбад есть всего лишь повод, чтобы заняться СОВСЕМ УЖ НАСТОЯЩИМ ДЕЛОМ (SINT

СИНТ -- убогое непортируемое ...
СИНТ нечитаем
СИНТ никому не нужен

ибо вещи там РЕАЛЬНО сложные

Да-да, такие сложные, что почти догнал 10% от TurboVision.

Я гвоздики выковывал, которыми блоху подковали - там уж никакой мелкоскоп не поможет.

Походу, выходил повсеместно железнодорожный пучинный костыль. Оружие массового поражения блох!

Мож, он именно и хочет узнать слова, в которых встречается "катер"

Да-да! Я ищу "катер", чтобы найти Екатеринбург! Это, что-ли, и есть твое "настоящее дело"? Придется огорчить -- за такой поиск денег не заплатят (и не заплатили, собственно -- поржали на конференции, да и забыли). А гугль со своим поиском миллиардики делает. Но у него не настоящее дело, конечно, так, детсткие игрушки и карманные деньжата. Это у ВР -- настоящее, и бабло в размере 15 рублей в бумажный стаканчик.

Что, Билл решил крылышки пообрубать, инструментарий подрезать, чтобы только евойным дерьмом пользовались?

Это, вообще-то, Firefox был. Знаешь такой?

И что, все равно для каждого из них персональный JS-код требуется? А для каждой версии не просят еще?

(До него начинает доходить, вау!)

Броузер-то детектить не проблема. Но просто СТЫДНО!

Действительно, стыдно выкладывать свои поделки, когда они ни у кого не работают.

ты же явно ИСКРЕННЕ считаешь, что я не знаю, как нужно "правильно" eval вызывать

О, что ты! Ни в коем разе! Я считаю, что ты практически ничего не знаешь!

Кстати, огромная просьба: замени контекстной заменой в том примере, который тебе понравился, "m.e" на "eval". Ежу понятно, что тем более работать не будет, но мне жутко интересно, какими словами он НА ЭТОТ РАЗ будет ругаться. Уважь, а?

Кстати, огромная просьба -- стащи себе сам Firefox, и тестируй свою поделку и на нём тоже. И на Opera. И на Safari. На Chrome можешь пока забить, в качестве подарка от меня

Чем не устраивает eval?

XSS, например.

Напомню: JS - это ИНТЕРПРЕТАТОР. Какой, в задницу, "период компиляции"?!

Что, интернет (http://ajaxian.com/archives/javascript-jit-the-dream-gets-closer-in-firefox) за неуплату отключали?

А каким образом он может вообще узнать о моих экспериментах?

Расслабься, ты ему нафиг не сдался. Единственное что, твой каталогизатор у них в комнате смеха висит, вместо кривого зеркала.

Почему "монстрики"?! Уж по компактности-то Синдбад дерет кого угодно на порядок.

Монстрик -- он маленький, но уроооооодливый!

Так что... либо либа, либо не либа (с)Юра Шпеер.

Бедный Йорик... в смысле, Юрик. Наверное, икается каждый раз, когда ВР его в свою защиту притаскивает. (Напомню, что именно имя Шпеера стоит в титрах шахматной программы, которую ВР выдает за свою).

75. lvqcl, 18.08.2009 21:25
dozen
Кстати, огромная просьба -- стащи себе сам Firefox, и тестируй свою поделку и на нём тоже. И на Opera. И на Safari. На Chrome можешь пока забить, в качестве подарка от меня

(задумчиво) А под Win98 они работают? А то у ВР, кажется, именно она.

76. dozen, 18.08.2009 21:54
lvqcl
А под Win98 они работают? А то у ВР, кажется, именно она

А почему пользователей должны волновать проблемы Мастера Недоделкина?

77. ivanhoe, 18.08.2009 22:54
Vladimir Rybinkin

цитата:
Отмазка! Чем не устраивает eval? Конкретно, и не прячась за умные слова (тем более - за ссылки). Это трусость, мой дорогой!
eval не устраивает тем что сложнее, неудобнее и небезопаснее в использовании.

цитата:

Опять бум C vs C++? Повторюсь: указатель на структуру покрывает все "классовые" потуги Страуструпа (а также все иные "более прогрессивные конструкции"), как бык овцу. Точка.
Ну это Ваше личное мнение, с которым согласны не все. А чтобы подводить "точку" одним своим высказыванием, надо быть каким-то вселенским авторитетом. В программировании таких авторитетов нет, точнее есть, но в каждом течении они свои. :)

цитата:

НУ НИЧЕМ не отличается.
Указатель отличается от переменной тем что может указывать в никуда или куда совсем не надо указывать, следовательно, за значениями указателя надо тщательно следить. У переменных этого недостатка нет. Однако есть другой - надо следить за значениями, что они присваиваются какие надо, где надо и когда надо. Поэтому я предпочитаю работать с константами. :)

цитата:
Или работа с переменными тоже требует "нечеловеческой аккуратности"? Аккуратность, между прочим, в программировании показана даже самым последним прикладникам.
Но употреблять ее можно по-разному. Одни употребляют на задачу, другие - еще и на борьбу с указателями. Соответственно, первые, при прочих равных, уделяют задаче больше времени и результат, при прочих равных, получается лучше.

цитата:

См. выше. И вообще, если программист по доброй воле(!) отказывается от использования указателей, тем более, из-за сложности (!!!), дальше его можно просто не слушать. Это - чайник по определению, и чем бы он "в новых, комфортных условиях" ни занимался, этим занятиям есть единственное определение: онанизм. Вариант - выполнение простеньких задач в качестве подмастерья.
А мне казалось наоборот, выполнение сложных и интересных задач в качестве техлида. :)

цитата:
Ну дык не давайте - eval-то здесь при чем?! Все математика - одно большое решето, но версия про злобных хакеров... Скажите, Вас самого развели, как лоха, или Вы лишь со мной хотите эту операцию проделать?
Хакеры и спамеры это, так сказать, "объективная реальность, данная мне в ощущениях". Напомню, речь шла про калькулятор написанный mike_teplitsky. Я указал на его недостаток, что из него нельзя сделать серверное приложение по причине использования eval, т.к. кто угодно сможет выполнить на сервере что угодно.

цитата:
Ok, я примеры на JS выложил в трех экземплярах. "Компактный" аналог на haskell - в студию! Вот, скажем, для 3-го теста.
Пожалуйста:
код:

-- именно так у меня выглядит третий тест. Никаких страниц, ни реальных, ни виртуальных там не видно
main = putStrLn $ "<html><body>Loading...</body></html>


цитата:
Не, лучше реализуйте хотя бы один из моих тестов. В учебных целях.
Хоть что-то осмысленное показывает только четвертый тест (из последнего сообщения) и поэтому только он представляет интерес. Бегло посмотрев, обнаружил, что JavaScript используется для упаковки HTML. Не очень понял в чем смысл этих тестов. Варианты пришли в голову следующие:
1) минимизировать передаваемые пользователю HTML файлы
2) минимизировать размер генератора HTML
Какую из этих задач надо решить или какую-то еще?

цитата:
Это просто чудо! Это, стало быть, развитие по спирали?
Вы мои ссылки не прочитали, но убеждение уже имеете, как это прекрасно. :)

цитата:
Теперь это называется "новое веяние", не правда ли? А что будете делать, если на этапе компиляции ПРИНЦИПИАЛЬНО НЕВОЗМОЖНО знать что-либо о типах, о количестве параметров, о вызываемых функциях?
Так не бывает. :)

цитата:
У кого-то из нас, извините, уже крыша поехала. Напомню: JS - это ИНТЕРПРЕТАТОР. Какой, в задницу, "период компиляции"?! Пардон, а сами-то Вы знаете, "что такое типизация, настоящая и развивающаяся"? Или "зачем вообще нужен JavaScript"?
Напомню ход обсуждения. Я сообщил, что сейчас одним из самых интересных в программировании является типизация и все что с ней связано. Поскольку типизация сейчас развивается в основном статическая, поэтому я порекомендовал изучать языки со статической типизацией, а не JS. И, конечно же, я в курсе и что такое типизация и пр. А также в курсе, что разница между интерпретаторами и компиляторами в настоящий момент весьма условная. До недавнего времени, например, отличие между интерпретатором и компилятором заключалось в том, что компилятор компилирует в машинный код, а интерпретатор - в байт-код виртуальной машины-интерпретатора. Однако сейчас появились и JIT, генерирующие из байткода код близкий к нативному и языки Perl, Python и пр. компилируют в машинный код посредством LLVM.

цитата:

И, кстати, что же все-таки за зверь "классы типов"?
Класс типов - это по простому "тип типов". Например, в Haskell есть стандартные классы: Ord (типы, для которых определены операции больше-меньше-равно), Num (типы, для которых опредены операции сложения-вычитания-умножения) и пр. Например, тип String является экземпляром класса Ord, но не является экземпляром класса Num. А вот тип Complex (комплексные числа), наоборот, является экземпляром класса Num, а классу Ord не принадлежит. Вокруг классов типов есть много всего интересного, они в частности используются при выводе типов, позволяют писать обобщенный и вместе с тем безопасный код, но изложить это в двух словах я не в силах, почитайте, plz, хотя бы википедию.

цитата:

А каким образом он может вообще узнать о моих экспериментах? Я, кстати, уже экспериментировал. И даже публиковал результаты экспериментов. И ничего...
Узнать может разными способами. Самый простой - если превышен некий порог кол-ва запросов в еденицу времени. Видимо от Вас запросов было немного.

цитата:
А на что? Меня как раз вдохновила потрясающая уродливость схемы, дикая избыточность, куча ошибок (в т.ч. благодаря этой избыточности), практически нулевые функциональные возможности... А Вас?
Меня исключительно как пример использования MS Access, подробностей не помню (дело было более десяти лет назад). Поставленная задача (формирование отчетов на основании данных из БД и их печать на принтере) была решена успешно, на чем мой опыт работы с MS Access и закончился.

78. dozen, 19.08.2009 00:21
ivanhoe
Видимо от Вас запросов было немного.

Последний в стране модем на 2400, однако...

Добавление от 19.08.2009 00:41:

zzf
Что нам должна была продеМОНСТРировать сия поделка?

Он туда собственно JS-файл i.j забыл(?) положить. Ну, нам не впервой сталкиваться с подобной рассеяностью Мастера. Вечно какие-то мелочи мешают предоставить работающее решение...

79. zzf, 19.08.2009 02:46
dozen
Он туда собственно JS-файл i.j забыл(?) положить.

Да копировал я его. Из предыдущих поделок. Не помогат. Так хотел посмотреть как цвет фона меняется. Это же прорыв! Скачок во времени. Гугл со своей перерисовкой маршрута на лету на мохнатой карте дорог Европы во время перетаскивания конечного пункта мышкой — просто смех по сравнению с.

80. ivanhoe, 19.08.2009 02:53
Vladimir Rybinkin

Кстати, да (к предыдущему постингу). Не очень понятно, почему бы Вам не выкладывать свои тесты сразу на Web, у Вас же есть свой сайт? И никакие файлы никуда не пропадут.

81. dozen, 19.08.2009 05:26
ivanhoe
Не очень понятно, почему бы Вам не выкладывать свои тесты сразу на Web, у Вас же есть свой сайт?

Дык тогда не получиться сослаться, что "забыл файлик положить, а сейчас уже весь код изменил, да и некогда мне, некогда"

Добавление от 19.08.2009 05:48:

ivanhoe
Бегло посмотрев, обнаружил, что JavaScript используется для упаковки HTML.

Кстати, ВР не обращал внимания на то, как выглядит вот эта самая страница (форум) в голом HTML, и для чего там используется JS? Может, какие подозрения зародятся...

82. Vladimir Rybinkin, 19.08.2009 10:03
Хм. Думал, сейчас-то отвечу сразу, а здеся... Впрочем, это радует...


Hedin
цитата:
А какой смысл разговаривать с радиоприёмником?
Вы, простите, о ком? Это, батенька, МНЕ не отвечают (в частности, лично Вы - на мой вопрос насчет RPC). Но если у меня даже и нет сил, не стоит делать далеко идущих выводов. Отдохну - отвечу. Ищите другие отмазки.

dima.yegorov
цитата:
Похоже на программирование ради программирования...
Возможно - не знаю, что это такое.
цитата:
В Firefox 3.5 наблюдаю только надпись Loading...
Это уже немало! Кто там у меня плакался... ага, Sioln - у того были проблемы еще с загрузкой b.j, а эта фраза идет уже ПОСЛЕ того. По крайней мере, у меня в текстах. Но ведь не может быть, чтобы так уж прям молча? Ведь должен же еще и диагностику какую-никакую сказать? А, пардон - не заметил "на уровне пользователя обратная связь". Спасибо огромное. Там где-то (у меня - внизу, типа в статусной строке) появляется такой противный желтенький значочек "Ошибка на странице". Если по нему кликнуть - должон бы и еще чего порассказать...
цитата:
В Internet Explorer 8 (XP) наблюдаю сначала предупреждение системы безопасности.
О! Это интересно - чем же этот друг озаботился? Как перед Богом: ни один из трех тестов, никуда не лезет, ничего не не делает, кроме как перезаписывает сам себя (document.write). Чего это он так обо... испужался-то? Ну, не веришь - так ведь даже тексты у тебя, ведь ты же САМ их интерпретируешь! Страшно - так почитай предварительно, убедись - чего сразу в панику ударяться, чего перекладывать ответственность на юзера? Можно подумать, он больше тебя знает...

Я понимаю еще на заре программированя (для меня это были "монстры" типа БЭСМ-6 или ЕС-1020, "небольшие" компьютеры вроде СМ, и понемногу появлялись первые ПК - ДВК, ХТ и советская пародия на них "Искра" со своей "Альфа-ДОС" - до сих пор в дрожь бросает). Это я еще могу понять: математика толком не отлажена, железо и при безошибочной работе на ладан дышит, а уж если что случится... Чих влево - BIOS накрылся, чих вправо - микросхему спалил (мы с Юрой знали, например, как программно головку дисковода отломать к чертовой матери). Но и программисты росли здоровыми, крепкими, зубастыми. А сейчас... опасность вроде еще меньше, но программистов перепеленали так, что они ни ручкой, ни ножкой дрыгнуть не могут, и кормят с ложечки: Наш мальчик умный, наш мальчик ловкий, наш мальчик все умеет... А ну их, указатели - нехорошие они, противные, они хотят, чтобы наш мальчик нечеловеческие усилия прикладывал... Не будет этого - кыш от нашего мальчика! У нас здесь хорошие конструкции есть, прогрессивные... Агу!

Ну и закономерный результат: не только сами программисты, но даже их софт стал беспомощным и трусливым до неприличия.

SERGEY_BIG
цитата:
Конечно, разгрузка сервера БД - дело благородное, только вот то, от чего пытается разгрузить его топик-стартер, серверу - как слону дробина.
Да неужто?! Ну что же, постараюсь помочь "вникнуть в пролетарскую суть"... Итак:
1. Объем передаваемых страниц при такой технологии, очевидно, уменьшается в разы. Облегчение, нет?
2. Пользователь, получая "на руки" уже не страницу, а целый виртуальный сайт, будет ковыряться в нем тоже в разы дольше и, соответственно, беспокоить сервер куда реже. Облегчение, нет?
3. Посылать ему при дальнейших запросах можно уже лишь недостающую информацию, а комбинировать страницы из нового и старого будет уже сам клиент. Облегчение, нет?
4. Немалую часть запросов юзера тоже можно выполнить на клиенте, по имеющимуся ТАМ данным. По моим оценкам, таких "внутренних" запросов должно быть не менее половины. Облегчение, нет?
5. "Одновременности" не бывает, это только видимость. Есть такое понятие "квантование".
6. До "многих пользователей" еще дожить нужно. А если это радостное событие все же случиться - можно воспользоваться хотя бы технологией того же Google: натравить на них здорове-е-е-енный кластер со сворой ощерившихся компов.
7. "Внутренние" проблемы сервера клиентов не волнуют по определению - пущай занимается на здоровье, чем ему там нужно. Это не есть тема ветки. Хотя индексацией заниматься лично я своему серверу не позволю - этой глупостью пущай чужие серверы занимаются.
цитата:
От этого, конечно, чтение панегириков конструкции eval (ИМО, вреднейшая конструкция) не становится менее занимательным
Я рад, что Вам это занимательно. И по поводу "вреднейшей конструкции" согласен. В самом деле: использовать мощный, гибкий, компактный, эффективный код, да еще безо всяких библиотек?! Да разве ж такое возможно?

ivanhoe
цитата:
Владимир, я рад что Вы открыли для себя конструкцию eval, но для приведенных примеров достаточно по-моему обычных ассоциативных массивов, которые бывают даже в C.
Это песня! Во-первых, какое кому дело до того, что "бывает даже в C", даже если там и "бывает" что-то очень хорошее, нужное, важное? Во-вторых, что это за зверь такой "обычные ассоциативные массивы", и чем они "обычнее" eval? И каким боком Вы их собираетесь прилепить "для приведенных примеров" (особенно для первых двух)? В-третьих ЗАЧЕМ?! Вы упростите код, уменьшите объем, увеличите функциональность, еще что-то?
цитата:
Eval, кстати, в C/C++ тоже бывает, называется, CINT (почти СИНТ)
Серьезно?! А на хрена она там-то нужна - там же, вроде, и "нормальные" указатели имеются? Господи, НЕУЖТО ОТМЕНИЛИ???!!!
цитата:
Ну пользователю надо уже что-то законченное и работающее.
Вот именно такое я и посылал.
цитата:
Тесты 1-3 по-моему, ни у кого их присутствующих не заработали.
И У ВАС?! Откуда же тогда откровения про то, что для них "достаточно"?
цитата:
Я читал, прям-таки с упоением. Всегда считал программирование web-морд скучнейшим занятием, а тут столько эмоций, экспрессии...
Да?! ЭТО Вы считаете "программированием web-морд"? Ну... в принципе, Вы правы, хотя я бы так назвать не решился. И что, Вы умудряетесь скучать при программировании морды, которая FRAMESET?! Или Вы знаете кого-то другого, кто при этом "скучает"? Или Вы вообще никого и ничего не знаете, а просто так "считаете"? Последний случай неинтересен, а об остальном нижайше прошу возможно более развернутых подробностей.

Chippy2003
цитата:
не помню, кто именно, формы или гриды, не понимают маппинг вложенных объектов
Ну какие еще нужны доказательства? Из-за подобной смехотворной осечки приходится кого-то "безуспешно уговаривать", кого-то "насиловать"... Вот, например, у меня в 3-м тесте (фрагмент):

"Монтевидео125 3 551","Москва125 3 467","Мраморное525 7 54 223 502",

И никого не уговаривал, никого не насиловал, сам придумал, сам реализовал, временные затраты - смехотворные. Погано? Да, погано (хотя этому тесту лучше и не нужно). Для четвертого не годится (пухнет софт, растут тормоза), хотя и ему я уже туеву хучу различных способов организации данных протестировал за какие-то несколько дней - и попробовал бы он у меня хоть один "не понять"! Тем более, что сам я при этом как раз ни хрена и не понимаю. Пример: один из элементов входного (расстрельного) массива БД (после инициализации вообще уже ничего понять невозможно):
"1265187 Suffolk Ln.83720",
Вот что это? Ну, ясный пень, адрес с индексом, но чей? В какой стране, в каком городе, какой компании, и компании ли вообще - мож, "человечий"? А прога (КЛИЕНТ!) прекрасно знает: компания, из тех, которые Customers, в каком-то задрипанном Штатовском городишке (я, по крайней мере, про такой не слыхал). При этом массив третьего теста рабочий (используется в том же виде, в котором получен), а массив четвертого каждый новый инициализатор имел, как хотел - всеми способами. Но "понимание" от этого только увеличивалось. А Вы маетесь с каким-то несчастным city.name:Moscow... Тихий ужас!
цитата:
Если я сейчас попробую обосновать покупку ext лицензий - 90%, что получу ответ: мы, это, шантажистам не платим
Платите! Только шантажисты те похитрее, а вы замечаете лишь сверхнаглых, и при этом еще свертупых. Вона, dozen (а может, даже и всех вас, здесь присутствующих - кто знает?) ограбили средь бела дня (обрезали возможность динамического вызова eval), а он даже после явной диагностики не врубился. Так что будет платить за эту возможность, когда понадобится. Как миленький!

dozen
цитата:
Молод он душою, молод... ну, или наоборот, в маразм впадает.
Эка тебя штормит! Ладно, порезвись - что тебе еще здесь делать?

All
Начнем потихоньку - уже не так противно глядеть на код. Впрочем, программировать пока не будем - еще пару дней нужно "отстояться", а в плане идеологии... хотя бы язык описания классов.

Во-первых, с "универсальностью" я явно перестарался, там чуть ли не все массивы "лишние" - чего мучить клиента зазря? Поэкспериментировали - и хватит. Один массив бесспорен - "кортежи", остальные - пусть у класса голова болит. Впрочем, нет: второй тоже очевиден - поля. Третьи же (субполя) - по типу поля в классе. Чо там Ваня-то гутарил про "классы типов"?

Во-вторых, наследование. Я не уверен, что его нужно здесь вообще давать. А раз не уверен, так и не будем, пока не припрет. Но команды какие-то ввести надо, на всякий пожарный. Хотя бы call.

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

[робко] Мож, все-таки прокомментируете?

83. SERGEY_BIG, 19.08.2009 10:56
Vladimir Rybinkin
Что ж не прокомментировать
1. Объем передаваемых страниц при такой технологии, очевидно, уменьшается в разы. Облегчение, нет?
Это уже "украдено до нас" и вполне нормально себе существует. Мало того, сам язык JS был создан именно для этой цели. Однако во всём нужно знать меру. Создание "суперклиента" приведёт к увеличению трафика за счёт кода самого клиента и передачи избыточных данных, они не три копейки весит.
2. Пользователь, получая "на руки" уже не страницу, а целый виртуальный сайт, будет ковыряться в нем тоже в разы дольше и, соответственно, беспокоить сервер куда реже. Облегчение, нет?
См. выше.
3. Посылать ему при дальнейших запросах можно уже лишь недостающую информацию, а комбинировать страницы из нового и старого будет уже сам клиент. Облегчение, нет?
Как проверить, что имеющиеся на клиенте данные не потеряли своей актуальности? Или будет, как на "Титанике", где радист беспокоился об обеде, когда корабль шёл ко дну? Или же речь идёт, по своей сути, о работе с библиотекой? Про Амазонку, что ли читать?
4. Немалую часть запросов юзера тоже можно выполнить на клиенте, по имеющимуся ТАМ данным. По моим оценкам, таких "внутренних" запросов должно быть не менее половины. Облегчение, нет?
Cм. выше.
5. "Одновременности" не бывает, это только видимость. Есть такое понятие "квантование".
Про квантование лучше говорить не будем, изучал в своё время на профессиональном уровне. Замечу только, что серьёзное серверное ПО должно обеспечить функциональность работы. Что такое приоритет и очереди задач, время ожидания и т.п. известно?
6. До "многих пользователей" еще дожить нужно. А если это радостное событие все же случиться - можно воспользоваться хотя бы технологией того же Google: натравить на них здорове-е-е-енный кластер со сворой ощерившихся компов.
Без комментариев. Если идёт речь о поддержке библиотеки (а судя по всему, только такой вариант хоть как то проходит), она по определению многопользовательская.
7. "Внутренние" проблемы сервера клиентов не волнуют по определению - пущай занимается на здоровье, чем ему там нужно. Это не есть тема ветки. Хотя индексацией заниматься лично я своему серверу не позволю - этой глупостью пущай чужие серверы занимаются.
См. выше. Статические хранилища неконфиденциальных (раз они по чужим серверам валяются) данных никому не интересны. Большие деньги, лавры и почёт достаются за обработку динамических данных в режиме реального времени.

P.S. На сём дискуссию со своей стороны закрываю

84. Chippy2003, 19.08.2009 10:57
Vladimir Rybinkin
Мож, все-таки прокомментируете?
No

85. zzf, 19.08.2009 11:45
Vladimir Rybinkin
цитата:

ivanhoe
цитата:
Ну пользователю надо уже что-то законченное и работающее.
Вот именно такое я и посылал.
Ложь.

Добавление от 19.08.2009 12:11:

Vladimir Rybinkin
... Один массив бесспорен - "кортежи", остальные - пусть у класса голова болит.
... Но команды какие-то ввести надо, на всякий пожарный. Хотя бы call.
... Обязательная вещь - описание структуры.
... Так что выкинем-ка мы снова шаблоны из классов - гибкости в данном случае не прибавится, а софт усложнять незачем.
... чо-то перемудрили, кажется, Антон с Олегом - оставим-ка в шаблоне только способ доступа к полю

К чему эта словесная мастурбация с игрой терминами и затуманиванием, господин хороший. Осмелюсь процитировать из стартового поста:

цитата:
Vladimir Rybinkin Суть: хочется обсудить некоторые нюансы идеологии программирования софта для работы на компьютере клиента (именно идеологии, а не собственно программирования, с самым общим кодом принципиальных моментов).

86. Vladimir Rybinkin, 19.08.2009 15:45

zzf
цитата:
Что нам должна была продеМОНСТРировать сия поделка? Изменение состояний контролов не производит никаких видимых эффектов. Или это пример того, как не надо?
Нет, я же предупреждал, что это НЕ работает. Но хоть "контролы" увидели, наконец! Не совсем еще опустились современные броузеры...

rGlory
цитата:
Я знал, я знал...
Я тоже - почти никто иной даже и не упоминал про SINT.

dozen
цитата:
Именно изворачиваешься, и именно как всегда. Твои темы шаблоном генерить можно.
Дык уперед! Посещаемость твово сайта на порядок сразу вырастет.
цитата:
Ты же Борей на JS реализуешь, не я.
Боже ты мой! Еще раз: А мозги включать не пробовал? Я даю на клиента ВЫБОРКУ из БД. В ней - ДАННЫЕ из Борея. Борей же (в худшем случае) - НА СЕРВЕРЕ. Но я его еще и подправил малек, чтобы у юзера совсем глаза на лоб не повылазили. Синдбадом поправил, не JS.
цитата:
Про сервер-сайд ты пока не заикался
А ты... так, понятно. Ну хоть НАЗВАНИЕ ветки-то прочел?
цитата:
сколько лет в твою гостевую безвозбранно постили спамеры
А я никогда и не писал гостевую, я ее с какого-то Питерского сайта поставил. Антон, правда, позже написал свою, но ему тоже глубоко по барабану все эти спамеры, хакеры. Он - Программист, и на тех, кому ручонки почесать нечем, всегда плевал с высокой колокольни.
цитата:
Настоящее дело -- это то, за что сегодня или в перспективе платят настоящие деньги.
Дурак ты - прости, Господи! Только на деньги и смотришь. Вспомни хотя бы Кавендиша - у него этих самых денег куры не клевали. Но он все-таки занимался ДЕЛОМ. С твоей точки зрения, "бездарно потерял годы жизни на бесполезные трепыхания".
цитата:
1. Синдбада никто не видел
2. Синдбад ничего не умеет
3. Синдбад никому не нужен
Первая строчка - ошибка из-за отсутствия информации. Две другие - ошибки в логике. Ну... дальше не буду комментировать - ты и сам все знаешь.
цитата:
Это, вообще-то, Firefox был. Знаешь такой?
Не-а. А теперь - и знать не хочу.
цитата:
До него начинает доходить, вау!
Что именно? Безумная жадность никчемных девелоперов?
цитата:
Кстати, огромная просьба -- стащи себе сам Firefox, и тестируй свою поделку и на нём тоже.
Ясненько, не уважил... Ну и ладно, не очень-то и хотелось.
цитата:
XSS, например.
Чего "XSS", чего "например"?
цитата:
Что, интернет за неуплату отключали?
Что, ты мне рекомендуешь прочесть этот талмуд, ибо там сказано, что JS есть компилятор? Не поверю, и даже читать не буду. По крайней мере, пока ты САМ это не начнешь утверждать.
цитата:
Расслабься, ты ему нафиг не сдался.
А это ты Ване скажи - он что-то беспокоится...
цитата:
Бедный Йорик... в смысле, Юрик.
Юрик - это Программист. И не просто Программист, а СУПЕР-Программист. Кстати, помнишь - я рассказывал, как опрашивал программистов насчет малой модели? Так вот, вторым опрошенным был именно он. А по поводу "защиты"... ты просто не понял. Он это говорил очень давно, и совсем по другому поводу: в чешской (кажется) хоккейной сборной были два игрока: Либа и Нелиба. Он этот факт и прокомментировал.
цитата:
Напомню, что именно имя Шпеера стоит в титрах шахматной программы, которую ВР выдает за свою
О! Раньше на Миража набрасывались. Это что же, признание того факта, что он все-таки хорошая программа? И не надо врать - и я, и Юра считаем программу НАШЕЙ. Там "в титрах" и мое имя просматривается, кстати. Так что она и МОЯ тоже.

ivanhoe
цитата:
eval не устраивает тем что сложнее, неудобнее и небезопаснее в использовании.
Ну я же привел пример. И даже утверждал, что проще и элегантнее сделать ВООБЩЕ НЕВОЗМОЖНО! И что, мне этот лепет нужно воспринимать как возражение?
цитата:
Ну это Ваше личное мнение, с которым согласны не все.
Из нынешних?! Да ваще никто! Никто ж и не знает, что это такое. Хотя даже в ассемблере есть: mov ax,[bx+si].
цитата:
А чтобы подводить "точку" одним своим высказыванием, надо быть каким-то вселенским авторитетом.
С какой радости? Я просто НЕ ХОЧУ обсуждать этот вопрос, тем более - в этой ветке. Точка.
цитата:
Указатель отличается от переменной тем что может указывать в никуда или куда совсем не надо указывать, следовательно, за значениями указателя надо тщательно следить.
Господи, Ваня! Ну нельзя же так, ну нельзя! Переменная - тот же указатель (на участок ОЗУ). Разве что компилятор о ней малек побольше знает, и может нерадивого программера за руку схватить. Да и то лишь в самых примитивных случаях (в сложных он скорее под ногами путаться будет). Да и в примитивных...

for (i = 0; j < 10; i++)

Проще ведь некуда, не правда ли? Хорошо, если j не описана, а если она тоже используется? Получаем случайный цикл, от нуля до бесконечности, да еще, возможно, нестабильно работающий. На ровном месте. И никакой компилятор не поможет. И не дай Бог, вздумает помогать.
цитата:
Поэтому я предпочитаю работать с константами.
Умница! Так и я обожаю константы, и у меня в SINT константы всех мастей и размеров, с условной трансляцией, с использованием самих же констант для определения других...
код:

enum mainconst // определение базовых констант
{ // используемых в любой программе
...
// Определение кодов ошибок
...
// Определение кодов кодов клавиатуры
...
// Мнемоника индексов аргументов командной строки
...
// Кодировка битов байта тега объекта
...
// Кодировка команд обработчика стека очередей методов
...
// Кодировка команд прикладного уровня
...
SIZEFB = 1024 * 4, // размер файлового буфера (рекомендуется 4К)
...
c_TYPEFSTR = HI_ADDR | HO_DEVICE | D_SCREEN | HF_ADDR,
...
SIZEI16S // размер I16 в стеке в байтах
#if OSWIN // для ОС Windows
= 4, // даже для I16 в стек прячется 4 байта
#else // OSWIN
= 2, // DOS - как и положено, 2 байта
#endif // OSWIN
...
STACKMETHODSIZE = 64, // размер стека очередей методов
...

Но противопоставлять-то одно другому зачем?!
цитата:
Но употреблять ее можно по-разному. Одни употребляют на задачу, другие - еще и на борьбу с указателями.
Золотые слова! Я бы так здорово не сформулировал. Лично я предпочитаю "употреблять" только на задачу, то есть именно я и есть "из первых". А вот те, кто с указателями борется... см. где-то выше по ветке.
цитата:
А мне казалось наоборот
Обман зрения, дорогой!
цитата:
Напомню, речь шла про калькулятор
А, понял - извиняюсь.
цитата:
именно так у меня выглядит третий тест
Ага, все-таки и у Вас ни фига не видать! Ну, а как он ДОЛЖЕН работать, как он РАБОТАЕТ у меня под 98 с IE 5.00?
цитата:
Хоть что-то осмысленное показывает только четвертый тест
ЧЕГО?! Я ж его еще не постил. Ах, ЭТО? Не, это не четвертый, это пара сохраненных виртуальных страниц ТРЕТЬЕГО (через view as HTML). Они НЕ РАБОТАЮТ, они приведены лишь для того, чтобы публика смогла хоть что-то увидеть. И НЕ ДОЛЖНЫ работать, ибо они есть виртуальные, сгенеренные прямо на клиенте страницы. А все данные лежат НА МОРДЕ (которая index.htm, которая FRAMESET). Их туда забросил инициализирующий фрейм a.h, который тыщу лет как умер (на евойном месте они-то и генерятся).
цитата:
Бегло посмотрев, обнаружил, что JavaScript используется для упаковки HTML.
Упс! Вроде, сам писал, но об этом даже не догадывался...
цитата:
Не очень понял в чем смысл этих тестов
Естественно! Вы ж ни одного и не видели.
цитата:
Вы мои ссылки не прочитали, но убеждение уже имеете
Дык.. слова-то Ваши я все же прочел...
цитата:
Так не бывает.
Ха-ха-ха! Я уж не говорю про монитор SINT, но даже в ЗДЕШНИХ моих тестах есть функция __() - единственная двухсимвольная - из уважения, поскольку тоже какой-никакой монитор.
цитата:
Напомню ход обсуждения.
Ага, спасибо. Попозже я и сам въехал.
цитата:
А также в курсе, что разница между интерпретаторами и компиляторами в настоящий момент весьма условная.
Серьезно?! Наконец-то! Надеюсь, движение идет не только в сторону компилятора? Что-то не похоже по Вашему постингу...
цитата:
Класс типов - это по простому "тип типов".
Здорово! Хоть на стенку вешай. Да я, впрочем, догадываюсь - давно уже ругаются всякими "надклассами", "суперклассами". Каша в голове - не понимают, что данные - это и есть метаданные (и наоборот), что класс - это и есть объект, и т.д. В Синдбаде сейчас штук пять уровней всяких там классов, и полностью открытая система - хоть сотню уровней лепи.
цитата:
Например, в Haskell...
... тоже придут к пониманию, что в сложных случаях никаких Ord, Num и прочих названий не хватит. Не, в вики не полезу - на мой взгляд, мое представление обо всем этом вполне терпимое.
цитата:
Видимо от Вас запросов было немного.
Ну я же нормальный экспериментатор. Мне нужно было лишь качество запроса, а не их количество. Когда-то давно - я был сисадмином у Инет-провайдера - я запустил прогу для проверки существования ресурсов моей базы ресурсов (тыщ 200 их у меня было). Так позвонил мне верхний провайдер, и говорит: у тебя кто-то что-то непотребное вытворяет - у нас DNS с ума сходит. Да это мы тут... плюшками балуемся...
цитата:
Меня исключительно как пример использования MS Access
Ну, это скушно. Откуда ж этому Access знать, что "Alfreds Futterkiste" и "Alfred's Futterkiste" - это одна и та же компания, что компания, перевозившая несколько лет грузы другой, имеет с ней общий телефон (хоть бы налоговую предупредил ), что парочка компаний ваще неизвестно чем занимаются - ни потребляют, ни производят, ни перевозят, что...

dozen
цитата:
Он туда собственно JS-файл i.j забыл(?) положить.
Не знаю, о чем Вы, сэр, но i.j лежит во всех трех тестах. А, понял!

zzf
цитата:
Так хотел посмотреть как цвет фона меняется.
О-хо-хо... И этот знакомое слово увидел... Там тесты СОВСЕМ не об этом. Ну, если уж так уж прям уж интересно...
код:

var a=new Array("d.p.w","d.p.b","d.p.l");
function P(s){m.e=eval;b.p=m.e(a[s-1]);m._(d.g);}

Вызов из select, надеюсь, не нужно приводить? Кстати, вариант - глаз что-то резануло:
код:

var a="wbl";
function P(s){m.e=eval;b.p=m.e('d.p.'+a.charAt(s-1));m._(d.g);}

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

ivanhoe
цитата:
Не очень понятно, почему бы Вам не выкладывать свои тесты сразу на Web, у Вас же есть свой сайт? И никакие файлы никуда не пропадут.
1. А на кой? Это же тест.
2. А толку? Броузеру dozen все равно не поможет.
3. Нигде ничего не пропало.

dozen
цитата:
Кстати, ВР не обращал внимания на то, как выглядит вот эта самая страница (форум) в голом HTML, и для чего там используется JS? Может, какие подозрения зародятся...
Не-а, не обращал. Зачем мне какие-то подозрения?

SERGEY_BIG
цитата:
Что ж не прокомментировать
Вот спасибо. Ну и я того... єтого...
1. Укарадено так украдено - какая разница? А насчет "обїема суперклиента"... взгляните на обїем тестов. Там действительно "не три копейки", там и на полушку не наберется.
3. Ха-ха-ха! А как проверить, что токо что полученніе (вот прям ща) с сервера данніе "не потеряли своей актуальности"?
5. Ну дік... если "изучали на профессиональном уровне" - что ж глупости-то говорить? "Что такое приоритет и очереди задач, время ожидания и т.п." - известно. Известно также, что клиенту на все єто начхать (и правильно).
6. Какая "поддержка библиотеки", о чем Ві?! Блин, комп какой-то с ивритом попался...
7. Ежу понятно, что "Статические хранилища данных никому не интересны". Єто же не повод заниматься онанизмом (индексацией)?
цитата:
На сём дискуссию со своей стороны закрываю
Ох, сомневаюсь!

zzf
цитата:
Ложь.
Ну Вам-то откуда знать?! У Вас же ничего не работает. Или полагаете, что я єти виртуальніе страниці ручками писал?
цитата:
К чему эта словесная мастурбация...
Похоже, єто НЕ ВАША ветка, родной. Это и есть "некоторые нюансы идеологии программирования софта для работы на компьютере клиента (именно идеологии, а не собственно программирования, с самым общим кодом принципиальных моментов)" .

87. Chippy2003, 19.08.2009 16:06
var a="wbl";
function P(s){m.e=eval;b.p=m.e('d.p.'+a.charAt(s-1));m._(d.g);}

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

88. Tasman, 19.08.2009 16:14
Vladimir Rybinkin
В целом тема (перетаскивание функциональности на клиента) интересная и в последнее время стала модной (сейчас браузеростроители любят меряться у кого быстре JS).

Я честно пытался скачать ваши примеры, но видимо по неопытности я запутался чего где не хватает. Не могли бы вы хотя бы выложить screencast с тем как это должно выглядить и что именно в этом не под силу существующим фреймворкам. Пока абсолютно непонятно.

Ещё просматривая приводинмые в ветке примеры из вашего JS, у меня возник вопрос - это какой-то кодогенератор? Код явно сильно подогнан под текущие данные, но вы же не расчитываете на то, что такой код будут писать руками с нуля для каждой новой задачи (а что еще хуже при малейшем изменении существующей). Другими словами говорите ли вообще о каком-то возможном фреймворке или о том как переписав всё руками под конкретную задачу получить некий идеальный результат? Возможность последнего не вызывает сомнений, но на практике это неприменимо из-за высокой цены поддержки и сопровождения этого кода.

89. evilbloodydemon, 19.08.2009 16:26
Tasman
говорите ли вообще о каком-то возможном фреймворке

SINT.js, ага

90. SERGEY_BIG, 19.08.2009 17:07
Chippy2003
Это - в перлы, однозначно!

91. dozen, 19.08.2009 17:31
Vladimir Rybinkin
А я никогда и не писал гостевую, я ее с какого-то Питерского сайта поставил

А-а-а, так ты просто script-kiddie?

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

Фэнтази-вселенная ВР: выдумываются всё новые персонажи с новыми, чудесными способностями. Ждем драконов (которые тоже были у ВР в подчинении и Программисты с большой буквы).

92. ErmIg, 19.08.2009 18:30
Vladimir Rybinkin
Вспомни хотя бы Кавендиша - у него этих самых денег куры не клевали. Но он все-таки занимался ДЕЛОМ.
Кавендиш практически не публиковал своих открытий - потому его выдающиеся изыскания во многом оказались бесполезными. Они интересны только с исторической точки зрения.

93. dozen, 19.08.2009 18:47
ErmIg
Кавендиш практически не публиковал своих открытий

Да и хрен по нём. У него бабла изначально было на любые дела и делишки. ВР скромностью не обижен, с кем себя сравнивает...

94. ivanhoe, 19.08.2009 19:56
Vladimir Rybinkin

цитата:

Это песня! Во-первых, какое кому дело до того, что "бывает даже в C", даже если там и "бывает" что-то очень хорошее, нужное, важное? Во-вторых, что это за зверь такой "обычные ассоциативные массивы", и чем они "обычнее" eval? И каким боком Вы их собираетесь прилепить "для приведенных примеров" (особенно для первых двух)?
Ассоциативные массивы: http://en.wikipedia.org/wiki/Associative_array

Как использовать вместо eval - правильно выбрать структуры данных и менять не код, а только данные.

цитата:

В-третьих ЗАЧЕМ?! Вы упростите код, уменьшите объем, увеличите функциональность, еще что-то?
Упрощу код, сделаю его более надежным. Краткость сама по себе никому не нужна, самые короткие программы, как правило, плохо читаются, модифицируются и дольше пишутся. Вот, например из личной практики:
удаление слова из текста, #9 (http://forum.ixbt.com/topic.cgi?id=26:37845:9#9) Вариант 2' короче, но плохо читается и писал я его дольше.

цитата:

Eval, кстати, в C/C++ тоже бывает, называется, CINT (почти СИНТ)
Серьезно?! А на хрена она там-то нужна - там же, вроде, и "нормальные" указатели имеются? Господи, НЕУЖТО ОТМЕНИЛИ???!!!
Указатели, конечно же, не отметили. А CINT разрабатывался для двух целей:
1) как скриптовый язык некоего церновского проекта. выбор в качестве языка именно C (а не, например, lua или tcl) был как раз обусловлен возможностью миграции кода из интерпретируемого в компилируемый (у них проект счетный и скороть критична)
2) быстрая разработка и отладка C'шного кода. eval бывает полезен для отладки

цитата:

Тесты 1-3 по-моему, ни у кого их присутствующих не заработали.
И У ВАС?! Откуда же тогда откровения про то, что для них "достаточно"?
Да, и у меня, а что так удивляет. У меня, как обычно, наименее традиционные ОС :) На работе - FreeBSD/x86, личный нотебук - Linux/x64

цитата:

Да?! ЭТО Вы считаете "программированием web-морд"? Ну... в принципе, Вы правы, хотя я бы так назвать не решился. И что, Вы умудряетесь скучать при программировании морды, которая FRAMESET?!
Я web-морды пишу крайне редко, в последнее время исключительно тестовые. Фреймов я в них не использую и JS крайне редко. И, таки да, деятельность это довольно рутинная. Поэтому, чтобы не сильно скучать, пробую разные средства разработки. Последние три писал на: 1) Java (Servlets/JSP) 2) Python/Django 3) Perl/Catalyst. Собирался при случае попробовать Ruby-on-Rails, но, прочитав dozen, решил что попробую-таки GWT :)

цитата:

Или Вы знаете кого-то другого, кто при этом "скучает"? Или Вы вообще никого и ничего не знаете, а просто так "считаете"? Последний случай неинтересен, а об остальном нижайше прошу возможно более развернутых подробностей.
Я скучаю, поэтому занимаюсь, в основном, системно-сетевыми вещами, а интерфейс с пользователями делают web-разработчики. И у них там как-то поскучнее обстановка на мой взгляд.

цитата:

Ну я же привел пример. И даже утверждал, что проще и элегантнее сделать ВООБЩЕ НЕВОЗМОЖНО! И что, мне этот лепет нужно воспринимать как возражение?
Проще и элегантнее сделано, например, на этом форуме, см. исходники любой страницы, например, этой.

цитата:

Господи, Ваня! Ну нельзя же так, ну нельзя! Переменная - тот же указатель (на участок ОЗУ). Разве что компилятор о ней малек побольше знает, и может нерадивого программера за руку схватить. Да и то лишь в самых примитивных случаях (в сложных он скорее под ногами путаться будет). Да и в примитивных...
Переменная это не указатель и измененяя переменную i в большинстве случаев можно быть уверенным, что переменная j при этом не изменится (измениться она может в случае когда эти переменные глобальные, а программа использует паралеллизм). Что же касается реализации переменных, то совсем не обязательно они будут находиться в ОЗУ, т.к.
1) все компиляторы давным-давно умеют использовать для временных переменных регистры
2) все компиляторы (современные, а не Borland С версии 3.1) используют оптимизации удаления лишних переменных, т.е. довольно часты случаи когда в тексте программы переменная будет, а в исполняемом коде ее не будет

цитата:
Ага, все-таки и у Вас ни фига не видать! Ну, а как он ДОЛЖЕН работать, как он РАБОТАЕТ у меня под 98 с IE 5.00?
А у меня под FreeBSD (x86) с Firefox 3.0.x он не работает. Кстати тестирование Web'а это довольно трудоемкий ароцесс. У нас в отделе тестирования видел девочку, у которой на компьютере запущено девять разных браузеров и она последовательно пробует страницы под всеми ими.

цитата:
Серьезно?! Наконец-то! Надеюсь, движение идет не только в сторону компилятора? Что-то не похоже по Вашему постингу...
Движение идет в том направлении, что понятия "интерпретатор" и "компилятор" сейчас уже практически бессмысленны, особенно применительно к языкам. Одна и та же программа на C (или на JavaScript) может выполняться и в интерпретаторе (на этапе отладки) и в виде скомпилированного кода (в production deployment - не знаю как это по-русски).

цитата:
тоже придут к пониманию, что в сложных случаях никаких Ord, Num и прочих названий не хватит.
Надо SPJ об этом сообщить, вдруг он не знает. :) Но, подозреваю, что справится, так как есть пространства имен.

цитата:

Ну, это скушно. Откуда ж этому Access знать, что "Alfreds Futterkiste" и "Alfred's Futterkiste" - это одна и та же компания, что компания, перевозившая несколько лет грузы другой, имеет с ней общий телефон (хоть бы налоговую предупредил ), что парочка компаний ваще неизвестно чем занимаются - ни потребляют, ни производят, ни перевозят, что...
Об этом должен знать программист, а не Access. Нормализацию названий можно делать довольно по-разному и встречается она довольно нечасто, в основном, в задачах data mining и поиска (для которых MS Access не применяется). Встраивать все возможные виды нормализации в универсальную БД:
1) невозможно
2) ненужно, т.к. нарушает принцип "separation of concerns"
Но, также, MS Access никак не препятствует делать нормализацию хоть чего угодно, и даже (субъективно) на реляционках это делать удобнее, если требования позволяют.

95. Chippy2003, 20.08.2009 00:58
ivanhoe
У нас в отделе тестирования видел девочку, у которой на компьютере запущено девять разных браузеров и она последовательно пробует страницы под всеми ими.
Когда случайно наткнулся на http://www.lunascape.tv, был уверен, что там будет режим с одной адресной строкой и ie/gecko/webkit тремя столбцами одновременно. Но увы... Видимо таких девочек разработчики броузеров люто ненавидят

96. zzf, 20.08.2009 01:46
Vladimir Rybinkin
цитата:
Но хоть "контролы" увидели, наконец! Не совсем еще опустились современные броузеры...
Конечно, не совсем. Открыть файл с шумом и показать контролы — это уже что-то.

цитата:
И НЕ ДОЛЖНЫ работать, ибо они есть виртуальные, сгенеренные прямо на клиенте страницы.
То есть, ты нафигачил такой скрипт, который генерирует у клиента то, что НЕ ДОЛЖНО РАБОТАТЬ? Это как раз то, что надо. Это прорыв, чесслово.

цитата:
Там тесты СОВСЕМ не об этом.
Так о чём там тесты? Внятного ответа пока не было.

цитата:
Проверить, что ли... ежу понятно, что работает.
Ёж оказался немного туповат. По прежнему не работает.

цитата:
Ну Вам-то откуда знать?! У Вас же ничего не работает.
Как мило. Ну как же? Если поделие, выдающее на экран "Loading..." сопровождается высказыванием "я посылал работающее решение", то такое высказывание ничем, кроме ЛЖИ назвать нельзя. Не думаю, что "тест" был о том, чтобы вывести одно слово. Строго говоря, я даже и не "Loading..." вижу, а содержимое файла a.h, который это пытается вывести.

Добавление от 20.08.2009 01:52:

Господа знатоки, какой сакральный смысл в последовательности

код:
m.e=eval;b.p=m.e('d.p.'+a.charAt(s-1));

?

Разве
код:
b.p=eval('d.p.'+a.charAt(s-1));

не делает того же самого?

97. dozen, 20.08.2009 07:28
zzf
не делает того же самого?

Формальный ответ на этот вопрос -- "нет; в первом коде в объекте m появляется ссылка на eval".

Неформальный ответ на "накой хрен вводить alias?" -- если у него там eval через слово, то экономится некоторое количество байт. Правда, непонятно тогда, почему charAt не за-alias'ен... или как раз потому, что про метаклассы не знает?

Добавление от 20.08.2009 07:31:

То есть, ты нафигачил такой скрипт, который генерирует у клиента то, что НЕ ДОЛЖНО РАБОТАТЬ? ... Это прорыв, чесслово.

Ну, это еще по божески. Я ожидал увидеть (анимированные) скриншоты окна браузера, как у ВР принято.

98. ivanhoe, 20.08.2009 08:10
dozen

цитата:
Неформальный ответ на "накой хрен вводить alias?" -- если у него там eval через слово, то экономится некоторое количество байт.
Тогда уж логичнее было бы:
код:

var e = eval

Единственное осмысленное объяснение это то что объект m выполняет (или планирует выполнять) еще и некие действия, а объект m хранит необходимое им состояние. Метауровень типа :>

99. dozen, 20.08.2009 08:18
ivanhoe
Тогда уж логичнее было бы

Ну, логика разная бывает. Я считаю имя "e" -- нелогичным, потому что потом нечитабельно. Но у ВР особенная логика, как известно.

100. Vladimir Rybinkin, 20.08.2009 09:43
Ладно, отвечать пока не будем - не то настроение (слишком добрый). Даю последний отчет:

Начнем, пожалуй - с утречка оно сподручнее...

О! Как я и ожидал - скорость резко возросла: классы завели мгновенно. Интересно, скоко там ошибок?

Шаблоны доступа... глаза разбегаются... похоже, нужно давать траекторию по умолчанию - пущай сама рекурсивно в шаблонах вложенных классов ковыряется... Одуреть! Для Employees шаблон проще, чем для Persons. Так, завели... Надо же! Даже старая инициализация без ошибок сожрала! Ну ничего, это ненадолго - ща мы ей покажем, где раки зимуют!

Инициализатор объектов уже под управлением классов... Хм, а стоит ли вообще раскрывать шаблоны? А, пущай - вроде, чуть проще... Я просто балдю! Чо ни творишь - а ошибок все нет и нет. Этого ж быть не могет, он же тупее меня - я ж сапиенс, черт побери! И как он в этом кошмаре разбирается? Да и разбирается ли? Ладно, потерпим до выдачи...

Не, ну ее на фиг! Рановато начал, перекур маловат - не вынесла душа поэта. Шаблоны страниц видятся, как в тумане. Да и с инициализацией, небось, напортачил - как же без этого? Но ведь генерит чего-то, падла!

Запостить, что ли? Или рано еще? А какая, собссно, разница? Эти друзья один хрен ни черта не увидят... Господа! Ведь ваши компы ВНАГЛУЮ ОТКАЗЫВАЮТСЯ РАБОТАТЬ! И вы это ТЕРПИТЕ!!! Мало того - и меня хотите склонить к тому же. Как же - разбежался! Чтобы какой-нить сраный эксплорер и мне условия смел ставить?! Железяка х... фигова! Ладно, запостим - авось у кого-то завалялась старенькая математика, которая еще в состоянии что-то делать. А, впрочем, хренушки - пусть вначале хотя бы первые три теста увидят.

Чо это со мной сегодня творится? Ни хрена толком не сделал, а настроение... ну как у идиота! На классику потянуло:

Ко мне пришел водопроводчик
И отопление врубил
Я ненавижу его очень
За то, что взял с меня рубиль.

Собирайся, молодец!
Поведем тебя мы к шаху
На расправу во дворец.
Ну-ка, помолись Аллаху,
Чистую надень рубаху,
Через час тебе...

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

Добавление от 20.08.2009 09:57:

Не, все же чуть отвечу...

Tasman
Скриншот-то выложить можно, но он ничем не отличается от выложенных виртуальных страниц (и точно так же не работает ). Что там "не под силу существующим фреймворкам" - я понятия не имею. Мне нужно, чтобы под силу было мне - и только.

Да, это... ну, можно назвать "кодогенератор". Код и должен быть "сильно подогнан под текущие данные" - это ж клиент! Никакой код "писать руками с нуля" не требуется - объем базовых функций НИЧТОЖЕН! Руками писать.. да что я, негр? Цена, на мой взгляд, просто ничтожна - за время жизни этой ветке я один написал и системные вещи, и прикладные - куда уж проще?

ErmIg
Господи, да КАКАЯ РАЗНИЦА?!

dozen
Ни с кем я себя не сравниваю. Кавендиш - ВЕЛИКИЙ человек. А я всего лишь очень хороший алгоритмист.

ivanhoe
Извините, но для ответа на Ваш постинг я действительно сегодня слишком добрый. В любом случае, спасибо за ответ.

Ну и прочие... живите пока...

101. ivanhoe, 20.08.2009 10:20
Vladimir Rybinkin

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

Да отвечайте, чего уж себя сдерживать. Переживали и не такое.

102. ErmIg, 20.08.2009 10:20
Vladimir Rybinkin
Господи, да КАКАЯ РАЗНИЦА?!
Разница в том, что Кавендиш не публиковал свои великие открытия, а Рыбинкин свои "великие открытия" публикует...

103. zzf, 20.08.2009 13:17
Vladimir Rybinkin
цитата:
О! Как я и ожидал - скорость резко возросла
Скорость, пардон, чего? Вывода "Loading..."?

цитата:
похоже, нужно давать траекторию по умолчанию
Словоблудие.

цитата:
Одуреть! Для Employees шаблон проще, чем для Persons.
Насколько я помню, там были города и озёра. Какие ещё Employees и Persons?

цитата:
Инициализатор объектов уже под управлением классов.
Словесная мастурбация.

цитата:
Но ведь генерит чего-то, падла!
"Что-то", ага. То, что НЕ ДОЛЖНО РАБОТАТЬ?

цитата:
Ладно, запостим - авось у кого-то завалялась старенькая математика, которая еще в состоянии что-то делать. А, впрочем, хренушки - пусть вначале хотя бы первые три теста увидят.
С чего бы это первые три "теста" заработают вдруг? Ты полагаешь, что Майкрософт, Опера и Мозилла уже выпустили патчи, которые заставляют работать твои недоподелки?

цитата:
Усех замочим, господа (и даже не в сортире) - правильно?
Ага, себя уже замочил,. Я бы сказал обмочил. Ни концепции, ни работающих примеров, ни описаний предполагаемых результатов тестов. Пообсохнуть бы тебе сначала, великий ты наш концептуал...

Добавление от 20.08.2009 13:29:

dozen
Неформальный ответ на "накой хрен вводить alias?" -- если у него там eval через слово, то экономится некоторое количество байт.

ivanhoe
Единственное осмысленное объяснение это то что объект m выполняет (или планирует выполнять) еще и некие действия

Спасибо, господа, успокоили. А то я уже начал было переживать, что ВР ушёл вперед меня в познаниях JScript. Не то чтобы я тут какой-то крупный специалист (на самделе я его вообще не знаю), просто сам факт...

104. Chippy2003, 20.08.2009 13:30
zzf
Насколько я помню, там были города и озёра. Какие ещё Employees и Persons?
Города нанимают озера для поставки воды, что тут может быть непонятного

105. dozen, 20.08.2009 16:12
Vladimir Rybinkin
А я всего лишь очень хороший алгоритмист.

Да-да, ну просто очень хороший. Помницца, Кнута ниacилил.

Добавление от 20.08.2009 17:32:

Кстати, All, давайте обсудим проблему SEO для Rich Apps. Если на клиента грузится только скелет, а весь контент подгружается JS, то такую страницу отдавать поисковым роботам -- бесполезно (=вредно). С другой стороны, иметь два способа генерации страниц -- один для браузера, другой для ботов -- накладно.

Я пробовал искать решение для GWT. Набросал custom tags, которые в JSP вставляют JSON-объекты. Потом враппер над GWT RPC проверяет -- есть ли данный объект в странице (через Native JS function), если есть -- берет оттуда, если нет -- зовёт RPC. Немного громоздко, но прозрачно для остального GWT-кода. Но у меня еще не было шанса проверить, как гугль отнесется к такому контенту. Судя по forum.ixbt.com, данные в JS-вызовах вполне себе индексируются гугльботом.

У кого какие идеи?

106. ivanhoe, 20.08.2009 18:30
dozen

цитата:

Кстати, All, давайте обсудим проблему [censored] для Rich Apps.
Папрашу не выражаться :)

цитата:
Но у меня еще не было шанса проверить, как гугль отнесется к такому контенту.
Если специально с гуглом не договоришься, будет относиться как к мусору.

цитата:
Судя по forum.ixbt.com, данные в JS-вызовах вполне себе индексируются гугльботом.
Ну вообще-то можно заметить что гугл и другие заходят зарегестрированным гуглботом, а не гостем. А все потому, что зарегестрированный пользователь может поставить себе в настройках отдачу чистого HTML без всякого JS и я имею сильные основания предполагать, что у упомянутых ботов эта настройка включена. :>

цитата:
У кого какие идеи?
С краулингом JS и прочих видов активного контента довольно много проблем.
1) сейчас все поисковики общего назначения используют модель обхода по ссылкам. В rich app довольно сложно понять что такое ссылка, задача в общем случае алгоритмически неразрешима
2) помимо ссылок rich app имеют состояние, с которым
a) краулеры работать не умеют
b) которое может полностью задавать содержание страницы и быть очень большого размера. Представь себе этот форум сделанный как экстремальное rich app - одна страница со сплошным аяксом, у пользователя в зависимости от состояния то один форум то другой то настройки то результаты поиска. Страница, повторюсь, одна, состояние десять мегабайт. Как на это ссылаться?
3) разбор активного контента это очень ресурсоемкая задача, из личного, так сказать, опыта, даже если в случае частном его можно разобрать.

107. Dilon, 20.08.2009 18:44
ivanhoe
цитата:
цитата:Судя по forum.ixbt.com, данные в JS-вызовах вполне себе индексируются гугльботом.

Ну вообще-то можно заметить что гугл и другие заходят зарегестрированным гуглботом, а не гостем. А все потому, что зарегестрированный пользователь может поставить себе в настройках отдачу чистого HTML без всякого JS и я имею сильные основания предполагать, что у упомянутых ботов эта настройка включена. :>
Я вообще не разбираюсь в SEO, хотел бы уточнить в каком смысле зарегистрированным? Особые настройки в robots или ...?

108. dozen, 20.08.2009 18:47
ivanhoe

Если специально с гуглом не договоришься, будет относиться как к мусору

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


Ну вообще-то можно заметить что гугл и другие заходят зарегестрированным гуглботом, а не гостем. А все потому, что зарегестрированный пользователь может поставить себе в настройках отдачу чистого HTML без всякого JS и я имею сильные основания предполагать, что у упомянутых ботов эта настройка включена. :>


Э.... не очень понял про настройки. Гугльбот просто вытаскивает HTML, а внешние JS -- не тащит. В результате, где посетитель видит кучу (динамически загруженного) контента, гугльбот видит


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>MyTitle</title>
<script type="text/javascript" language="javascript" src="com.mypackage.MyModule.nocache.js"></script>
</head>

<body>
<div id='for.gwt'></div>
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
</body>
</html>

У меня (в пилотном проекте) подход такой:


<body>
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
<div id='for.gwt' style='width:100%'></div>

<t:userinfo/>
...

Вот этот тэг userinfo -- он генерит такой вот кусочек в странице:


<div style='display:none' id='userinfo.id'>12345</div>
<div style='display:none' id='userinfo.fullname'>John Doe</div>
...

и потом, в элементе LazyHTML:

код:

private void installHtml(String id) { // id = userinfo.fullname
Element el = DOM.getElementById(id);
if( el != null ) {
String html = el.getInnerHTML();
realSetHTML(html);
} else {
RPC.getDIV(onHTMLListener,id);
}
}


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

В результате Google как бы видит данные... но с другой стороны, у них display:none, что, как я слышал, гуглем не одобряется. Можно выставить им класс (CSS гугльбот, вроде, не подгружает). А можно сделать как тут (на форуме):


<script ...>
add_div('userinfo.id','12345');
add_div('userinfo.fullname','John Doe');
...

Тут гуглю уже будет неизвестно, что add_div() создает невидимый div.

Я лично планирую несколько упростить систему, а именно вместо коллекции DIV иметь один JS вида


<script ...>
var userinfo = { id:12345, fullname:"John Doe", ... };
</script>


b) которое может полностью задавать содержание страницы и быть очень большого размера. Представь себе этот форум сделанный как экстремальное rich app - одна страница со сплошным аяксом, у пользователя в зависимости от состояния то один форум то другой то настройки то результаты поиска. Страница, повторюсь, одна, состояние десять мегабайт. Как на это ссылаться?


Ну, это экстрим, такое делать не надо. Надо по странице на функциональность (то есть для форума -- страница на тему), и уже внутри неё вести JS-активность. Что, собственно, на forum.ixbt.com и сделано.

109. arsa, 20.08.2009 18:50
dozen
как раз сейчас этим занимаюсь. в общем со стороны google нет решения, и не предвидится, что вполне логично.
вот когда они у себя сделают достаточно много API что бы им можно было данные свои передавать (а не наоборот - как сейчас), тогда конечно это дело поднимется сильно.
например, у них есть http://www.google.com/local/add/ - пока что в зачаточном состоянии, а мне сильно надо. или google base + product search (бывший froogle), тоже очень ограниченный и не позволяет мне сделать локальный поиск по продуктам.
в общем для google индексация web 2.0 это гиблое дело, поэтому они так поддерживают всякие microformats и прочие протоколы обмена данными.

для себя я сделал следующее - все важные варианты отработки моей основной страницы так же представлены статичным html.
то есть, например, у меня есть поиск по производителям и моделям - я его вывел гуглу (через urlrewrite / ihttpmodule), и он с радостью полез ботом всё это дело индексировать.
сейчас закупил базу CBSA, и буду показывать ещё и по метро-районам отдельные страницы.
в идеале я собираюсь сделать статичную страницу по каждой комбинации данных что у меня есть


далее технически. конечно, человек заходящий на страницу получает тоже статику, я не хочу никого обманывать и перенаправлять на ajax версию автоматом (это не поощряется гуглом, хотя как они это найдут не понятно). зато у меня есть кнопка "buy now" которая уже в свою очередь перенаправляет на ajax страницу, причём с критериями:
http://site/script#criteria=blah
параметры после # можно довольно просто считать при загрузке страницы и показать что надо (gmail например это делает успешно)

110. ivanhoe, 20.08.2009 18:56
dozen

цитата:
Откуда такие сведения?
Общеизвестный, особенно в поисковых кругах, факт. Можешь проверить :)

dozen, Dilon

Объясняю про forum.ixbt.com. Залогиньтесь и зайдите в настройки своего профиля http://forum.ixbt.com/misc.cgi?id=setup. Там есть пункты:
1) Разрешить создание страниц списка тем с помощью Java Script
2) Разрешить создание страниц тем с помощью Java Script

Поставьте их в "Нет", как у меня. Посмотрите в исходники страниц после изменения, вместо JS будет HTML. Именно так и обрабатывают forum.ixbt.com и гугл и яндекс и рамблер и все другие поисковики, логинятся ботом (у которого вышеупомянутые настройки выставлены в "Нет"), краулят и индексируют чистый HTML.

111. dozen, 20.08.2009 19:14
arsa
в идеале я собираюсь сделать статичную страницу по каждой комбинации данных что у меня есть

Понимаю, это решение, конечно, но это именно дубликация усилий. Вот я и чешу репу, как можно этого избежать.

параметры после # можно довольно просто считать при загрузке страницы и показать что надо

В GWT есть встренный листенер, который этот параметр немедленно выдаёт очень удобно.

ivanhoe

Общеизвестный, особенно в поисковых кругах, факт. Можешь проверить

Допуская, что это так, всё-таки хочу увидеть ссылку. Ибо Google уже даже Flash-мувики индексирует. Чего бы это он так JS-константы дискриминировал?

А, вот:
http://www.google.com/support/customsearch/bin/answe…&answer=72366

Хмм... похоже, моя идея с <DIV> более SEO-friendly, чем с JSON... хоть и более verbose. Правда, есть еще решение: "Provide the textual contents of JavaScript in a noscript tag". То есть можно положить JSON в <script> и тут же тот же контект как plain text в <noscript>.

Именно так и обрабатывают forum.ixbt.com и гугл и яндекс и рамблер и все другие поисковики, логинятся ботом (у которого вышеупомянутые настройки выставлены в "Нет"), краулят и индексируют чистый HTML.

Иными словами, никакого логина у них нет, просто у fixbt по умолчанию для неизвестных юзеров страница отдается без JS? Щас проверю wget'ом... хмм... 503 Service Temporarely Unavailable... ok, IE без логина... выдал JS. Гугль бот никуда не логинится. Другое дело, что по имени user agent можно выдать плоский HTML...

112. ivanhoe, 20.08.2009 19:24
dozen

цитата:
Ибо Google уже даже Flash-мувики индексирует.
Flash-мовики индексирует не общий поиск, а специальный - по флеш-мувикам, заточенный под флешмувики специально. И он не индексирует, например, флеш-игрушки или флеш-демки - для них надо специальный поиск писать :>

цитата:
Другое дело, что по имени user agent можно выдать плоский HTML...
Да, по имени юзерагента похоже все и происходит. А в принципе я все-таки прав. :>

113. dozen, 20.08.2009 19:27
Вот тут чувак summarize Google policies: http://itezer.com/blog/ajax/6-Get-Google-and-AJAX-to-Play-Nice.html

Мне, если не отказываться от GWT, то нужно класть в <noscript> тот же контент, что в <script>. Походу, это универсальное правило.

114. ivanhoe, 20.08.2009 19:28
P.S. Кстати это имеет прямое отношение к теме Владимира.

Vladimir Rybinkin, как мы тут мимоходом выяснили, ваши генеренные страницы не будут индексироваться поисковиками, используйте чистый HTML и всем будет проще и вам и гуглу и клиентам! (и читателям этого форума)

115. lvqcl, 20.08.2009 19:28
dozen
Гугль бот никуда не логинится.

Зайди на http://forum.ixbt.com/ и увидишь:

За последние 5 минут конференцию посетило: 1726 (203 участников, 26 скрытых, 1497 гостей)
...
а также поисковые роботы: Googlebot, StackRambler, Yandex, msnbot

116. ivanhoe, 20.08.2009 19:32
lvqcl

Таки это фиктивные пользователи, которыми считаются клиенты, пришедшие с соответствующей записью в UserAgent

117. dozen, 20.08.2009 19:32
ivanhoe
А в принципе я все-таки прав. :>

Так вот, практика выдачи гугльботу не того же контента, что юзеру называется клоакинг, и является основанием попасть в black list. Другое дело, что этот лист, вроде, не автоматический, а human-managed. Как гугль может отдетектить cloaking? Да просто -- зайдя с другим user agent с IP не в домене google.*.

118. Dilon, 20.08.2009 19:32
lvqcl
Откуда у поисковых ботов логин на forum.ixbt.com? Бота по Agent можно опознать.

119. dozen, 20.08.2009 19:34
ivanhoe
Flash-мовики индексирует не общий поиск, а специальный - по флеш-мувикам, заточенный под флешмувики специально.

Я к тому, что "специальный поиск" может искать и по JS (http://www.seomoz.org/ugc/new-reality-google-follows-links-in-javascript-4930) .


"One of the main issues with Ajax sites is that while Googlebot is great at following and understanding the structure of HTML links, it can have a difficult time finding its way around sites which use JavaScript for navigation. While we are working to better understand JavaScript, your best bet for creating a site that's crawlable by Google and other search engines is to provide HTML links to your content."

...

"Googlebot does not execute some types of JavaScript."


Иными словами, Гугль исполняет JS -- точнее, пока часть его, где он (Гугль) видит генерацию URL.

120. lvqcl, 20.08.2009 19:44
ivanhoe
Таки это фиктивные пользователи, которыми считаются клиенты, пришедшие с соответствующей записью в UserAgent

Тогда можно зайти (хотя бы телнетом) на ixbt и представиться Гуглем. После чего будет ясно, есть cloaking или нет.


Vladimir Rybinkin
Господа! Ведь ваши компы ВНАГЛУЮ ОТКАЗЫВАЮТСЯ РАБОТАТЬ! И вы это ТЕРПИТЕ!!! Мало того - и меня хотите склонить к тому же. Как же - разбежался! Чтобы какой-нить сраный эксплорер и мне условия смел ставить?! Железяка х... фигова!

Vladimir Rybinkin героически бьёт морду светофору и переходит улицу на красный свет.

121. dozen, 20.08.2009 19:54
lvqcl
Vladimir Rybinkin героически бьёт морду светофору и переходит улицу на красный свет

Эпос...

Тогда можно зайти (хотя бы телнетом) на ixbt и представиться Гуглем. После чего будет ясно, есть cloaking или нет.

Щас wget попрощу представиться...


wget --user-agent=Googlebot/2.1 http://forum.ixbt.com/topic.cgi?id=26:39751-8
Получаем чистый HTML c JS только для actions:


<table border=0 cellpadding=3 cellspacing=1 width=95%><tr><td class=t1 valign=top width=18%>
<a class=l href="javascript:p1('Dilon')"><b>Dilon</b></a><br><span class=s>unregistered</span></td>
<td class=t1 width=82%><table width=100% border=0 cellspacing=0 cellpadding=0 style="TABLE-LAYOUT: fixed">
<tr><td class=date1> <a name="107"></a><a class=date4 href=#107>написано</a> 20.08.2009
<span class=date2>18:44</span></td><td class=small2 align=right>
<a class=small2 href=/post.cgi?id=edit:26:39751:107>Правка</a> •
<a class=small2 href=/post.cgi?id=post:26:39751:107>Ответить</a> •
<a href=/post.cgi?id=report:26:39751:107 class=small2 target=_blank>Известить модератора</a> •
<a class=small2 href=/post.cgi?id=ip:26:39751:107>IP</a></td></tr><tr>
<td colspan=2 class=n style="text-align: justify" onmousedown="selected_name=escape('Dilon')">
<hr size=1 color=#999999><b>ivanhoe</b><br><blockquote class=n2><span class=s>цитата:
</span><hr> цитата:Судя по forum.ixbt.com, данные в JS-вызовах вполне себе индексируются гугльботом.
<br><br>Ну вообще-то можно заметить что гугл и другие заходят зарегестрированным гуглботом, а не гостем.
А все потому, что зарегестрированный пользователь может поставить себе в настройках отдачу чистого HTML без
всякого JS и я имею сильные основания предполагать, что у упомянутых ботов эта настройка включена. :&gt;
<hr></blockquote>Я вообще не разбираюсь в SEO, хотел бы уточнить в каком смысле зарегистрированным?
Особые настройки в robots или ...?<p></td></tr></table></td></tr></table>

122. ivanhoe, 20.08.2009 20:59
dozen

Прочитал статью. Автор - явно не search guy. А я - да. :) И у него идея фикс с интерпретацией жабоскрипта, под которую он пытается подогнать все свои наблюдения. Выскажу свои соображения:
1) заставить поисковик понимать JS в некоем минимальном объеме конечно же можно. Особенно зная потроха своего JS-тулкита. Однако это не общее решение (оно невозможно алгоритмически) и пока оно не работает массово в большом поиске. Ни в одном большом поиске, не только гугловом.
2) объяснить как попала ссылка в гугловые индексы можно тысячей разных способов. Например, что парсер линков не особо смотрит JS там или нет и просто вытаскивает все теги "<a href>" безотносительно тому где они находится. Остальные 999 способов перечислять не буду (ибо лень) останется упражнением для читателя.
3) единственный способ честного разбора JS - это прикинуться на мгновение браузером и полностью исполнить код в виртуальной машине (хотя и этот способ не универсален). Я так делал (в своем поисковике), надо было разобрать махонькое поле, которое как раз генерилось махоньким JS-кодом. Запуск этого махонького кода в SpiderMonkey увеличил время индексации в двести (200) раз, для большого поиска такая цифра - смерть (а может быть и не 200, а 10^100 - как нефига делать)

цитата:
Получаем чистый HTML c JS только для actions:
Что и требовалось доказать.


123. rGlory, 20.08.2009 21:05
lvqcl
цитата:
Vladimir Rybinkin
Господа! Ведь ваши компы ВНАГЛУЮ ОТКАЗЫВАЮТСЯ РАБОТАТЬ! И вы это ТЕРПИТЕ!!! Мало того - и меня хотите склонить к тому же. Как же - разбежался! Чтобы какой-нить сраный эксплорер и мне условия смел ставить?! Железяка х... фигова!
Vladimir Rybinkin героически бьёт морду светофору и переходит улицу на красный свет.
Ну Владимир нам как бы намекает, что все мы должны немедленно даунгрейдить свои ОС до win98, иначе столь нужные нам страницы с его сайта у нас не будут показываться.
Ну что тут скажешь? Руки выворачивает изверг, пользуется тем, что без его контента большинство из нас не проживет сколько нибудь длительный промежуток времени. Вот они какие - монополисты

124. ivanhoe, 20.08.2009 21:29
rGlory

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

125. dozen, 20.08.2009 22:06
ivanhoe

И у него идея фикс с интерпретацией жабоскрипта

А как насчет слов от самого гугля, что "мы работаем над этим" и "гугльбот понимает некоторые конструкции JS"?

126. ivanhoe, 20.08.2009 22:13
dozen

Между "пониманием некоторых конструкций" (например, какой-нибудь метаинформации из GWT-тулкита) и пониманием полным лежит бесконечность. Например, еще товарищ Тьюринг показал алгоритмическую неразрешимость проблемы остановки. А это очень простая и далеко не единственная проблема. Надо, кстати, подкинуть ее Владимиру, вдруг разрешит :>

127. rGlory, 20.08.2009 22:15
ivanhoe
цитата:
И поиском индексироваться не будет.
Ну придется поисковикам напрячься, если они хотят клиентуру сохранить. Посадят толпу кумаров в крайнем случае, с win98 наперевес, которые будут вручную по линкам ходить и информацию с браузера копипейстить. А куда им деваться?

Про ту девочку с кучей разных браузеров - это ведь путь для не уважающих себя компаний, которые ведут себя как тряпки, и простилаются под любого клиента. Владимир - не такой. Поставит он в требованиях к клиенту win98, браузер ie 3.0 и никакая гайка. Либо будь добр соотвествуй, либо не видать тебе всех (а их трудно перечислить) прелестей Синбада и уж тем более СИНТа.
Вообще СИНТ в вебмордой - это очень сильно. Вот только представил себе, как задача коммивояжера решается в браузере, на стороне клиента, и по спине мурашки. Если бы у меня были акции MS и Гугля, я бы уже побежал их сливать, пока можно. Скоро за них не будут давать ломанного гроша!

128. Dilon, 20.08.2009 22:18
ivanhoe
Кстати, насчет девочки, Selenium разве не является ее заменителем?

129. dozen, 20.08.2009 22:19
ivanhoe

Между "пониманием некоторых конструкций" (например, какой-нибудь метаинформации из GWT-тулкита) и пониманием полным лежит бесконечность.

Так я полную-то и не требую. Мне всего лишь интересно -- индексирует ли гугль строковые константы в JS (JSON) коде, наподобие того, что мы имеем в forum.ixbt.com.

Это-то вообще не rocket science, более того -- чтобы гугль не индексировал, надо наоборот, специально запретить их индексирование ботом, потому что константы эти уже в HTML, как голый текст.

Добавление от 20.08.2009 22:22:

Dilon
насчет девочки, Selenium разве не является ее заменителем

Во-первых, есть случаи, когда девочку заменить трудно. И в личном плане, и для коллектива.
Во-вторых, тесты в Selenium кто писать будет, мальчик?
В-третьих, оно же только Firefox.... а нуно все основные.
В-четвертых, даже для автоматических тестов надо бы человеческий глаз. А то оно может результат правильный дает, но в процессе дергается как старая плёнка. Тест такое пропустит, а девочка заметит.

130. rGlory, 20.08.2009 22:23
ivanhoe
цитата:
Надо, кстати, подкинуть ее Владимиру, вдруг разрешит :>
Классная идея. Предлагаю скинуться и поставить на кон. Владимир, беретесь? Если да, открываем новую тему и погнали.

132. Dilon, 20.08.2009 22:25
dozen
цитата:
В-третьих, оно же только Firefox.... а нуно все основные.
у нас на фронтэнде вроде и сафари, не знаю точно. Для других браузеров разве нет тулкитов подобных?

133. ivanhoe, 20.08.2009 22:34
Dilon

Насколько я понял, нет, не является ибо это скорее функциональное тестирование. А девочка проверяет правильность верстки (в т.ч. JS), что она не поехала (при очередном усовершенствовании) ни в одном из браузеров и видна в них одинаково корректно и как задумано. Правильность верстки (на данном этапе развития науки и техники) может проверить только человек собственными глазами и никак не автомат.

dozen

цитата:
Мне всего лишь интересно -- индексирует ли гугль строковые константы в JS (JSON) коде, наподобие того, что мы имеем в forum.ixbt.com.
Так мы вроде выснили что на forum.ixbt.com гугл индексирует HTML, а не JS, ибо по заголовку юзерагента Google/x.y этому агенту и отдается HTML. А индексировать константы можно, не вопрос. Только вот никто не гарантирует что там что-то осмысленное - а вдруг СИНТ какой притаился? :spy: В качестве некоего приближения можно индексировать например константы некоей (достаточно большой) длины если в них содержится что-то похожее на HTML. Да, в такой постановке не вопрос. Но как-то нет уверенности, что это положительно скажется на качестве поиска. На мой взгляд, сейчас вообще стоит проблема большого поиска как осмысленного явления. Потому что Интернет ЗАСРАЛИ всякие идиоты, спамеры (в частности, SEO) и пр. К гуглу у меня претензия не к тому что он ищет мало, а что он ищет слишком много и очень часто выдает кучу SEO-говна, в котором приходится искать жемчужину. И это у них такая политика. :( Впрочем, как мне сообщили Знающие Люди, я не вписываюсь в поведенческие модели поиска гугла, а у большинства все хорошо. :>

134. zzf, 20.08.2009 22:38
rGlory
dozen

Господа, тут вроде как об JScript тема. Если вам симбады с пнп-вояжорами действительно так интересны, то открывайте соответствующую ветку, а то ВР, чего доброго, решит здесь эти темы развить.

135. dozen, 20.08.2009 22:45
ivanhoe
Так мы вроде выснили что на forum.ixbt.com гугл индексирует HTML, а не JS, ибо по заголовку юзерагента Google/x.y этому агенту и отдается HTML.

Мы выяснили, что так делает конкретно forum.ixbt.com. И этому есть основание -- до недавнего времени гугль утверждал, что JS он игнорирует напрочь.

В то же время, отдавать юзеру и боту разные страницы -- это cloaking, и игра с огнём.

Вот и интересно -- как изменились бы результаты, если бы forum.ixbt.com отдавал боту ту же страницу, что и юзеру (то есть с сообщениями как параметрами JS).

А индексировать константы можно, не вопрос. Только вот никто не гарантирует что там что-то осмысленное

Предполагается, что любой текст на странице несет некоторую информацию о ней. Если в <script> только b.p = m.e(), то игнорируем. А если show_header('Boats and Canoe') -- то есть некая инфа.

zzf
а то ВР, чего доброго, решит здесь эти темы развить

Да, блин, нестратегично вышло... пойду потру кой-чего....

136. ivanhoe, 20.08.2009 22:56
dozen

цитата:
В то же время, отдавать юзеру и боту разные страницы -- это cloaking, и игра с огнём.
Я так не считаю. Пример: Гугл-карты. Зайди на них с большого компа и с мобильного телефона и почуйствуй разницу (там кстати даже функционал разный - с телефона оно умеет показывать текущее местонахождение). На мой взгляд cloaking надо понимать как выдачу разного по смыслу контента в зависимости от. Выдачу же разных видов реализации одного и того же можно вполне объяснить заботой о клиенте - чаще всего это ей и является - чтобы поддержать маломощный/устаревший/глючный браузер и т.д. и т.п.

цитата:

А если show_header('Boats and Canoe') -- то есть некая инфа.
Это вполне возможен copy-n-paste из другого проекта, отладочная инфа и мн. др. В результате будет шуметь.

цитата:
Да, блин, нестратегично вышло... пойду потру кой-чего....
Не надо!

zzf

А мне темы Владимира этим и нравятся, разнообразием. И пиво с бабами можно обсудить и программирование и сетевые СУБД! И насладиться эйфорией автора от знакомства с конструкцией eval! А был бы один скучный JavaScript - век бы сюда не зашел!

137. rGlory, 20.08.2009 23:25
zzf
цитата:
Господа, тут вроде как об JScript тема. Если вам симбады с пнп-вояжорами действительно так интересны, то открывайте соответствующую ветку, а то ВР, чего доброго, решит здесь эти темы развить.
Это Вы так думаете, что об JScript, а на самом деле эту тему Владимир открыл, чтобы мягко и ненавязчиво в очередной раз показать крутость синбада и синта. Спросите меня, откуда я это знаю...

138. zzf, 20.08.2009 23:26
ivanhoe
Например, еще товарищ Тьюринг показал алгоритмическую неразрешимость проблемы остановки. А это очень простая и далеко не единственная проблема.

Есть ещё более простая в формулировке, но трудноразрешимая задача (NP-полная): Определить, можно ли разбить данное конечное множество натуральных чисел на два равных по сумме подмножества.

139. rGlory, 20.08.2009 23:30
ivanhoe
цитата:
А мне темы Владимира этим и нравятся, разнообразием.
+1. Я бы уточнил, в темах Владимира можно почерпнуть весьма интересную информацию (и не только о синбаде и синте), у него есть одно несомненное достоинство, он умеет/может раскрутить насчет высказаться знающих людей по разным вопросам. При этом качество информации от самого Владимира оставляет желать, но что тут поделаешь, за все приходится платить

140. ivanhoe, 21.08.2009 00:08
zzf

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

141. rGlory, 21.08.2009 00:18
ivanhoe
цитата:
Надо сразу переходить к настоящему - задачам неразрешимым, чего на месте то топтаться.
an+bn=cn
Только, боюсь, я знаю, как ее решит Владимир
Ответ: он ее решит точно, а не как те "дураки" в целых числах

142. dozen, 21.08.2009 04:12
ivanhoe
На мой взгляд cloaking надо понимать как выдачу разного по смыслу контента в зависимости от.

Разумеется. Но если Google не сканирует JS, то для него две страницы forum.ixbt.com выглядят разными по контенту -- одна содержит только рекламу, вторая -- контент. Человек, зайдя проверить сигнал -- поймет, конечно.

Это вполне возможен copy-n-paste из другого проекта, отладочная инфа и мн. др. В результате будет шуметь.

Ну так это проблема автора сайта. У него SEO будет плохая.

143. Vladimir Rybinkin, 21.08.2009 08:47
У меня тут "технологический перерыв" намечается на несколько дней - не только от теста, но и, возможно, от вас. Вы уж не разбегайтесь, плиз - постараюсь заглядывать. Впрочем, опасаться пока явно не приходится...

Tasman
цитата:
сейчас браузеростроители любят меряться у кого быстре JS
Померились бы лучше, у кого функциональнее. Совсем уж позорище!
цитата:
Другими словами говорите ли вообще о каком-то возможном фреймворке
Я не знаю, как ЭТО обозвать. Самое лучшее определение (на мой взгляд) я уже приводил: APS (Ajax Processing Software).

ivanhoe
цитата:
Ассоциативные массивы:
ГОСПОДИ, НУ НА ХРЕНА МНЕ ЭТО НАДО-ТО?! Большое спасибо за ссылку, обязательно прочту.
цитата:
Как использовать вместо eval - правильно выбрать структуры данных и менять не код, а только данные.
А я что делаю? Ровно то же самое. И eval мне при этом, мягко говоря, не мешает.
цитата:
Упрощу код, сделаю его более надежным.
Дык... ждем-с! Что касается "краткости"... ЭТО будет читать БРОУЗЕР, и только он. Для генератора SINT все эти функции JS (или там Perl) всего лишь объекты класса "одноязычная строка". Там хоть по странице текста на оператор давай, чтобы "читалось". А этому... хоть каждому клиенту новые имена функций и переменных выдывай. Изврат, конечно, но можно ведь! И без особых проблем. Насчет скорости написания и модификации... скажу только, что проще "строк" я в этом плане ничего не знаю. И не верю, что кто-либо знает.
цитата:
А CINT разрабатывался для двух целей:
Понятно. Ну... флаг им в руки.
цитата:
Да, и у меня, а что так удивляет.
Как это "что"?! Не зная ничего о тестах, давать рекомендации, что для них "достаточно ассоциативных массивов"... несколько странно выглядит - не находите? Ах - кажется, дошло: это Вы не тесты, а лишь те огрызки текста, которые я приводил, считаете "примерами"?
цитата:
Фреймов я в них не использую и JS крайне редко.
Ну дык... что ж Вы могете знать тогда о "скуке"? ТА "деятельность" - да, довольно рутинная - кто же спорит?
цитата:
Я скучаю, поэтому занимаюсь, в основном, системно-сетевыми вещами, а интерфейс с пользователями делают web-разработчики.
Во-во, и я так думал. А теперь иначе думаю - пижонство это. Я системщик, я крутой, а эти пущай интерфейсом занимаются... Во-первых, вломить надо хорошенько всей этой шобле - распустились совсем без присмотра "старших товарищей". Во-вторых, это, оказывается, еще и интересно до жути. Так же, как и в "системно-сетевых вещах". Ну... почти так же. В-третьих, для Вас лично это вообще святая обязанность. Ноблес... как его там... оближ. Внебрачному сыну отца Билла Гейтса...
цитата:
Проще и элегантнее сделано, например, на этом форуме
ЧТО ИМЕННО?! Инициализация массива разнородных объектов?! Или вообще хоть что-то из этого самого "APS"?
цитата:
измененяя переменную i в большинстве случаев можно быть уверенным, что переменная j при этом не изменится...
Дык... у Вас же явно нулевая практика работы с указателями. Уж поверьте моему ОГРОМНОМУ опыту (мне, к тому же, несколько раз доводилось наблюдать процесс, как молодежь в них врубается - не определение ихнее "штудирует", а именно начинает ЧУВСТВОВАТЬ, что это такое) - максимум через неделю скажете то же самое и об указателях. Это как... укрощение велосипеда, например: разбитые носы, содранные коленки... а уже через два дня разве скажет кто, что велосипед "опасен"? Токо вот не будет этой недели...
цитата:
Что же касается реализации переменных, то совсем не обязательно они будут находиться в ОЗУ
Естественно! И что? Я ж приводил код в "константах":

c_TYPEFSTR = HI_ADDR | HO_DEVICE | D_SCREEN | HF_ADDR

Поясняю мнемонику: H - Handle, IO - понятно, F - управляющая строка форматного преобразования, D - DEVICE (который SCREEN). По сути, printf (ну, возможностей чуть побольше типа 0 - объект - например, мультиязычная строка и т.п.).

А если, скажем, c_WRITEARRAYTOSTREAM = HI_ADDR | HO_NONE - ну и куды это пишется? А хрен его знает! Мож, в тот же SCREEN. Может, и в файл - чо там за текущий дескриптор?

А если c_HCOPY = HI_HANDLE | HO_HANDLE | HF_HANDLE - тогда как? Мож, это тоже printf? Вполне возможно. А может, чтение из файла? Не исключено. А может, это протокол мышиных движений (как их там - микки, что ли?) по RS-232 куда-то перегоняется? Мож, и так (если моча программеру в голову стукнула ). А форматное преобразование есть? А вот это еще бабушка надвое сказала. А если и есть - где оно? Может, во внешнем файле, управляющем процессом (template), или там в БД где-нить сидит...

Я думаю, пояснять не требуется, что все эти (и довольно много других, за 20 - точно) видов копирования проходят через одного исполнителя, что ему на вход подается разное и количество, и тип параметров. Ну, давайте, поработайте за "современный компилятор". Валяйте, контролируйте что хотите в момент компиляции - не тупее же Вы его! . А ведь это только copy - и только как она "выглядит". А параметры где (это, пожалуй, еще более интересный вопрос)? В стеке? Или в стеке, но аккумуляторов? Или в стеке, но далеко наверху, в виде локальных переменных? Или где-то в теле программы? Или еще где? Хотел я монитор привести в пример, но и сам не решился.

И про регистры лучше молчите - больная тема когда-то была. Знаю я прекрасно, что они там "давным-давно умеют" - умели бы лучше enum без глюков создавать - ndemia, помнится, даже не поверил поначалу.
цитата:
все компиляторы (современные, а не Borland С версии 3.1) используют оптимизации удаления лишних переменных
Именно так! И не только "современные". Оптимизацию от MSVC5/6 я видел, и не раз - за такое нужно просто яйца отрывать! Я когда-то описывал именно такой случай, когда "в тексте программы переменная была, а в исполняемом коде ее не было". Тупая скотина! Нет мозгов - так хоть не лезь своими грязными лапами в код программиста!
цитата:
Движение идет в том направлении, что понятия "интерпретатор" и "компилятор" сейчас уже практически бессмысленны, особенно применительно к языкам.
Ну, это, мягко говоря, спорный вопрос.
цитата:
Одна и та же программа на C (или на JavaScript) может выполняться и в интерпретаторе (на этапе отладки) и в виде скомпилированного кода
Ах, вот Вы о чем... Нет, это все ерунда - я не об этом. Здесь компилятор выступает в роли верификатора кода (ну и конечного "ускорителя"), а интерпретатор - тоже в роли верификатора кода, но "человечьего". Финал же один - скомпилированная программа. А вот если исполняемая программа "размазана" - скажем, между СУБД, методами, в ней хранимыми и... да хватит! При этом методы представляют собой... пускай лишь только тексты функций (пусть даже на одном языке), которые пишет чел, и "скомпилированные" (с точки зрения человека), но интерпретируемые (с точки зрения СУБД, т.е оптимизированные для выполнения - наиболее удобного восприятия уже не человеком, а компьютером) модули. Весь этот "конгломерат" дышит (модули переходят из одного состояния в другое), вызывает друг из друга (слоев интерпретации, "полукомпиляции" и полной компиляции) разные методы и данные. Таким образом, интерпретация есть ВСЕГДА (ее принципиально невозможно избежать), так что язык должен быть "комплексным", охватывающим все слои сразу. Я про такой вот подход...
цитата:
Надо SPJ об этом сообщить, вдруг он не знает. Но, подозреваю, что справится, так как есть пространства имен.
Сообщать бессмысленно: пока сами не допрут - не поверят. "Пространства имен" не помогут - хотя бы потому, что у чела башка не резиновая - выяснит пару раз, кто там "является экземпляром класса X, но не является экземпляром класса Y" - и в дурдом.
цитата:
Об этом должен знать программист, а не Access.
Как же! Какое вообще его собачье дело до ПОЛЬЗОВАТЕЛЬСКИХ ДАННЫХ?! "Нормализацию названий" делать вообще не нужно (да и действительно невозможно)... Ладно, не будем заводиться - не та ветка. Скажу только, что реляционка... Скажу только, что я ЛИЧНО видел десятки и сотни ТЫСЯЧ ошибок на одну РБД.

zzf
цитата:
То есть, ты нафигачил такой скрипт, который генерирует у клиента то, что НЕ ДОЛЖНО РАБОТАТЬ?
Ну если СВОИХ моз... Спокойно, Ипполит, спокойно... Читайте внимательно: там ВСЕ написано - что, как и почему.
цитата:
Так о чём там тесты? Внятного ответа пока не было.
"Внятность" - это понятие исключительно приемника - здесь я бессилен. Ответ же - был, и не раз.
цитата:
Ёж оказался немного туповат. По прежнему не работает.
"Ёж" ОТКАЗЫВАЕТСЯ работать, он наглый тунеядец. Впрочем, МОЙ-ТО как раз трудолюбивый работник.
цитата:
Если поделие, выдающее на экран "Loading..." сопровождается высказыванием "я посылал работающее решение", то такое высказывание ничем, кроме ЛЖИ назвать нельзя.
А если все же ГОЛОВОЙ подумать? Мож, другие какие версии появятся?
цитата:
Разве код

b.p=eval('d.p.'+a.charAt(s-1));

не делает того же самого?
Делает. И даже код

b.p=m.e('d.p.'+a.charAt(s-1));m.e=eval;

ТОЖЕ делает. А теперь - внимание, вопрос: лишь один из четырех показанных вариантов реализации данной функции НЕпригоден для использования. Угадайте с трех раз - какой именно. Если угадаете - второй вопрос, повышенной сложности (если не на сообразительность, то хотя бы на внимание): А почему, собссно?

dozen
цитата:
Формальный ответ на этот вопрос -- "нет; в первом коде в объекте m появляется ссылка на eval".
Все хуже: у него "припадки" начинаются - я же писал. Я чуть со смеху не помер: m.e - работает, а "настоящий" eval - нет. Причем, насколько я понял, нестабильно: работает, работает... и вдруг - сюрпрайз: "Неожиданный вызов функции". От одной только подобной диагностики кондратий хватит. А мож, и стабильно - мож это при вызове из строки методов - не помню. Да и не очень интересно - m.e меня вполне устраивает.

ivanhoe
цитата:
Тогда уж логичнее было бы:
Как же! Я ж все писал, и уж скоко раз, и даже код начальной инициализации откомментированный приводил... Доколе?! m - объект методов НА МОРДЕ, а не какой-то местный "var e". Там и eval, и new, и substring, и find, и прочая мутотень. И монитор - вторая приличная функция после eval - сам писал, гарантирую. А кроме m на морде еще объекты b, c, d, e и u имеются. В частности, u - это тот самый Борей (в 4-м тесте). С потрохами, в виде трехмерного "деревца" из нескольких сотен (мож, даже и не сотен) массивов. Да и не только он... Именно потому и не могут работать приведенные мною виртуальные страницы, что все методы, все данные уже там, на FRAMEST.
цитата:
Единственное осмысленное объяснение...
Ну, хотя бы так.

dozen
цитата:
Ну, логика разная бывает. Я считаю имя "e" -- нелогичным, потому что потом нечитабельно. Но у ВР особенная логика, как известно.
У "ВР" - генератор. А для броузера - сойдет: не менее "читабельно", чем любое другое. Вот интересно: сколько раз нужно повторить, чтобы перестать, наконец, об этом говорить? В смысле, конечное число раз или нет?

144. dozen, 21.08.2009 09:24
Vladimir Rybinkin

Весь этот "конгломерат" дышит (модули переходят из одного состояния в другое), вызывает друг из друга (слоев интерпретации, "полукомпиляции" и полной компиляции) разные методы и данные

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

Полуистлевшая, она, раскинув ноги,
Подобно девке площадной,
Бесстыдно, брюхом вверх лежала у дороги,
Зловонный выделяя гной.

И солнце эту гниль палило с небосвода,
Чтобы останки сжечь дотла,
Чтоб слитое в одном великая Природа
Разъединенным приняла.

На пиршество спеша,
Жужащей тучей мухи
Над мерзкой грудою вились.

А черви ползали
и копошились в брюхе
Как черная живая слизь.

Все это двигалось,
Вздыхало и вздымалось,
Как будто вновь оживлено.
... (С)

All

Извините. Ассоциация.

145. ivanhoe, 21.08.2009 18:53
dozen
цитата:

Ну так это проблема автора сайта. У него SEO будет плохая.
У владельца сайта как раз проблем нет - у него будет больше посещений и трафика. Проблемы будут у пользователей, что у них в выдаче увелится количество мусора с 90% до 99% (условно говоря).

Vladimir Rybinkin

цитата:

Во-во, и я так думал. А теперь иначе думаю - пижонство это. Я системщик, я крутой, а эти пущай интерфейсом занимаются... Во-первых, вломить надо хорошенько всей этой шобле - распустились совсем без присмотра "старших товарищей". Во-вторых, это, оказывается, еще и интересно до жути.
Не так. Я системщик и разбираюсь в системном. А эта "шобла" разбирается в том что такое юзабилити, как спроектировать сайт, организовать его структуру, навигацию, умеет делать верстку чтобы JavaScript и CSS работали везде (а не только на Internet Explorer 3.0) и многое другое, чего я делать на таком же профессиональном уровне не умею. Это называется разделение труда.

цитата:
ЧТО ИМЕННО?! Инициализация массива разнородных объектов?! Или вообще хоть что-то из этого самого "APS"?
Генерация HTML посредством JavaScript на мой взгляд сделана лучше на этом форуме, т.к код:
- лучше структурирован
- более понятен
- работает и на моем броузере тоже (в отличии от Вашего)

цитата:

Дык... у Вас же явно нулевая практика работы с указателями.
Гм. Ну вообще-то ненулевая. Даже на этом форуме я писал код с указателями.

цитата:

Уж поверьте моему ОГРОМНОМУ опыту
Не поверю. Потому что и свой и чужой опыт тоже имеется.

цитата:

Естественно! И что? Я ж приводил код в "константах":
Ну я предпочитаю более как-то абстрактно думать. Насколько я понял, Вы говорите о некоем "копировании", когда на входе имеем источник, данные из источника обрабатываются и передаются в другой поток-приемник. При этом потоками (как входными так и выходными) могут быть:
- файлы
- консоль
- последовательные порты RS/232
- многое другое
Поэтому для разных комбинаций применяется двадцать различных видов копирования. Не берусь утверждать точно, но обычно подобное является примером неправильного проектирования. И в любом случае это уже идет решение, а не постановка задачи.

цитата:

И про регистры лучше молчите - больная тема когда-то была. Знаю я прекрасно, что они там "давным-давно умеют" - умели бы лучше enum без глюков создавать - ndemia, помнится, даже не поверил поначалу.
И какие глюки с enum у современных компиляторов?

цитата:

Именно так! И не только "современные". Оптимизацию от MSVC5/6 я видел, и не раз - за такое нужно просто яйца отрывать! Я когда-то описывал именно такой случай, когда "в тексте программы переменная была, а в исполняемом коде ее не было". Тупая скотина! Нет мозгов - так хоть не лезь своими грязными лапами в код программиста!
Почему-то эта функциональность никому не мешает и только Вам мешает. "Весь мир идет не в ногу и только один Владимир Рыбинкин в ногу" - так что-ли? MSVC5/6 к современным компиляторам, кстати говоря, не относятся.

цитата:

Ах, вот Вы о чем... Нет, это все ерунда - я не об этом. Здесь компилятор выступает в роли верификатора кода (ну и конечного "ускорителя"), а интерпретатор - тоже в роли верификатора кода, но "человечьего". А вот если исполняемая программа "размазана" - скажем, между СУБД, методами, в ней хранимыми и... да хватит! При этом методы представляют собой... пускай лишь только тексты функций (пусть даже на одном языке), которые пишет чел, и "скомпилированные" (с точки зрения человека), но интерпретируемые (с точки зрения СУБД, т.е оптимизированные для выполнения - наиболее удобного восприятия уже не человеком, а компьютером) модули. Весь этот "конгломерат" дышит (модули переходят из одного состояния в другое), вызывает друг из друга (слоев интерпретации, "полукомпиляции" и полной компиляции) разные методы и данные. Таким образом, интерпретация есть ВСЕГДА (ее принципиально невозможно избежать), так что язык должен быть "комплексным", охватывающим все слои сразу. Я про такой вот подход...
Не очень понял что Вы хотите сказать и как это опровергает тезис о стирании различия между интерпретаторами и компиляторами. Предыдущее мое предложение было примером, опровергающим тезис, что одни языки можно отнести к интерпретируемым, а другие к компилируемым. Нельзя. А если Вы имеете в виду что существуют гибридные подходы между интерпретаторами и компиляторами, где все "живет, дышит" и переходит из интерпретируемого кода в компилируемый, так я с этим и не спорю, т.к. примеры перед глазами в виде JVM и .NET. Но думать о происходящем в недрах JVM и .NET на мой взгляд непродуктивно и совершенно бесполезно, есть же семантика, которая гораздо проще, вот о ней и надо думать.

цитата:

Дык... ждем-с!
Я уже приводил код генератора для третьей задачи:
код:

main = putStrLn $ "<html><body>Loading...</body></html>"

В десятки раз короче, а генерит то же самое.

Если постановка задачи какая-то другая, то эту задачу надо сначала сформулировать. Для начала в крайне общем виде, например, так: "сделать редактор базы данных Борей через Web-интерфейс".

код:

Насчет скорости написания и модификации... скажу только, что проще "строк" я в этом плане ничего не знаю. И не верю, что кто-либо знает.

Ну Вы формируете страницу уже полтора месяца и результата законченного пока нет. По-моему это очень долго, даже на этапе изучения HTML/JS. А ведь общественность еще не ознакомилась с серверным кодом, на его разработку сколько времени ушло?

146. dozen, 22.08.2009 00:20
ivanhoe
У владельца сайта как раз проблем нет - у него будет больше посещений и трафика.

Нецеловой трафик (который не конвертируется в sale) -- он только вред приносит. Хорошо еще, если прямо с поиска кликают, а если с AdWords?

147. arsa, 22.08.2009 02:28
dozen
по adwords есть специалисты, мы например не сами придумываем ключевые слова для оного.
но должен заметить что у нас с organic трафика конверсия намного больше чем с рекламного (хотя конечно пока данных маловато для честного анализа)

148. ivanhoe, 22.08.2009 02:37
dozen

цитата:
Нецеловой трафик (который не конвертируется в sale) -- он только вред приносит.
С чего это вдруг? У меня как-то совсем противоположная информация, из первых так сказать рук. С нецелевым трафиков возможно только два варианта:
- он пофигу
- он приносит пользу
Вреда уж точно что никакого. :>

цитата:
Хорошо еще, если прямо с поиска кликают, а если с AdWords?
Мы вроде про поиск, а не про AdWords, при чем тут оно? Или ты решил рассмотреть вообще нецелевой трафик, Тому кому он приносит вред, в AdWords не регистрируются. :>

149. dozen, 22.08.2009 03:23
ivanhoe

С чего это вдруг? У меня как-то совсем противоположная информация, из первых так сказать рук. С нецелевым трафиков возможно только два варианта:
- он пофигу
- он приносит пользу
Вреда уж точно что никакого. :>

Мы вроде про поиск, а не про AdWords, при чем тут оно? Или ты решил рассмотреть вообще нецелевой трафик, Тому кому он приносит вред, в AdWords не регистрируются. :>


Пользу он не приносит по определению -- иначе он бы конвертировался в продажи, то есть был бы targeted.

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

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

Добавление от 22.08.2009 03:28:

arsa
но должен заметить что у нас с organic трафика конверсия намного больше чем с рекламного (хотя конечно пока данных маловато для честного анализа)

Ну так и молодцы. Получаете целевой трафик, не платя за него. А уменьшите релевантность -- и в поиске по вашим словам опуститесь на второе (третье, ...) место. Подниметесь в "не ваших". В результате целевого трафика станет меньше, нецелевого -- больше, конверсия упадет. Вам, понятно, это не надо. Следовательно, не допускать мусора на своих страницах -- в ваших интересах, а не только Гугля. Что и требовалось доказать.

Добавление от 22.08.2009 03:35:

dozen
Тому кому он приносит вред, в AdWords не регистрируются. :>

Вот это вообще не понял. Он приносит вред всем, даже владельцам parked domains c AdSense. Если человек пришел по запросу "loan", а на parked domain AdSense на "viagra", то пустая потеря ресурсов.

150. ivanhoe, 22.08.2009 04:16
dozen

цитата:
Пользу он не приносит по определению
Где можно ознакомиться с определением?

цитата:
-- иначе он бы конвертировался в продажи, то есть был бы targeted.
А он и конвертируется. Например, если сайтовладелец зарабатывает на показах банеров (а это не единственная схема), он получает деньги за клик со своего сайта. Чем больше трафика, тем больше кликают по баннерам, просто статистически. А баннеров интересных им покажут, не сомневайся. :>

цитата:

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

цитата:
затратами на собственно трафик (если вышли за пределы плана)...
У вас в Канаде дорогой трафик? В РФ его цена близка к нулю.

цитата:
Из каких-таких первых рук у тебя инфа? Что эти первые руки продают/публикуют, что им все равно на бесполезный трафик? Как они его используют?
От тех, кто зарабатывает деньги на создании и поддержке популярных интернет-ресурсов. Фамилий и мест работы называть не буду, извини. :> Как используют - см. пример выше.

цитата:
Вот это вообще не понял.
Вот есть у меня сайт, http://uzhe.nichego.net Сколько я потеряю на AdWords (а вдруг уже теряю? :-O) и каким образом если вдруг кто-то случайно ко мне зайдет. В AdWords я не зарегистрирован.

цитата:
Он приносит вред всем, даже владельцам parked domains c AdSense. Если человек пришел по запросу "loan", а на parked domain AdSense на "viagra"
Получит деньги за клик со своего сайта, где тут вред? Или ты думаешь что весь интернет загадили всякими дорвеями, поисковым спамом и пр. сплошные альтруисты, которые этим ради "любви к искусству" занимаются, неся убытки и тратя все последнюю копейку?

цитата:
то пустая потеря ресурсов.
Чьих ресурсов?

151. dozen, 22.08.2009 05:03
ivanhoe

цитата:
Где можно ознакомиться с определением?
Наверху. "Трафик, который не конвертируется в sale ну никак = нецелевой".

цитата:

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

Предположим, что сайт продает ёжиков.
Предположим, что у него идеальный SEO, так что он в 1-й строчке по каждому запросу, относящемуся к ёжикам.
Теперь авторы сайта, по твоему совету добавили в него какое-то количество мусора.
SEO, очевидно, стало неидеальным.
В результате сайт потерял первую строчку по некоторым запросам.
Вместо 100% потенциальных покупателей ёжиков они получают 95% ёжиков и 5% морских свинок.
Их конверсия упала соответственно. Как и доходы.
Никакими баннерами это компенсировать нельзя, потому что потеряли 5% ценного трафика (скажем, по $20 за конверсию), а получили 5% дерьмового трафика (центы за клик на баннер в лучшем случае).

Где я неправ?

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

цитата:
Чем больше трафика, тем больше кликают по баннерам, просто статистически.
А почему ты думаешь, что добавив в страницу мусора, трафика получишь больше?

цитата:
От тех, кто зарабатывает деньги на создании и поддержке популярных интернет-ресурсов. Фамилий и мест работы называть не буду, извини.
Ну, а я приведу мои источники -- я долго отслеживаю упорную борьбу за улучшение SEO нескольких небольших продавцов софта. Один (http://www.kalzumeus.com/start-here-if-youre-new/) , практически на моих глазах, вырос с нуля до тысяч (http://www.bingocardcreator.com/stats/sales-by-month) месячного дохода. Добился он этого -- повышением релевантности, а не наоборот.

цитата:
Сколько я потеряю на AdWords (а вдруг уже теряю? :-O) и каким образом если вдруг кто-то случайно ко мне зайдет. В AdWords я не зарегистрирован.
Твой сайт -- некоммерческий, и к нему это всё неприменимо.

152. arsa, 22.08.2009 05:34
dozen
Следовательно, не допускать мусора на своих страницах -- в ваших интересах, а не только Гугля.
вот это ключевой момент. напихать на страницу всего чего угодно не сложно. но, это не поднимет гугл рейтинг ни разу. единственное, что я вывел из разговоров с моими SEO подрядчиками, так это то, что на странице нужно иметь только реальный контент, нужный. и в мета тагах, тоже не все подряд а очень ограниченный контент. уж как они там анализируют гугл каждый день я не знаю, но исходная точка такая - гугл оптимизирует свой поиск что бы найти именно то, что нужно ищущему. бороться с этим - что об стенку горох... проще все делать честно.

153. ivanhoe, 22.08.2009 06:28
dozen

цитата:
Наверху. "Трафик, который не конвертируется в sale ну никак = нецелевой".
Однако в этом определении никак не сказано, что нецелевой трафик вреден. Я вообще первый раз сталкиваюсь с такой точкой зрения. Из моего круга абсолютно любой скажет, что "больше трафика - больше денег". И из общих соображений понятно:
1) часть нецелевого трафика конвертируется в целевой, особенно при больших объемах
2) кем бы ты ни был, лишний трафик это лишняя реклама себя любимого, которая не вредит никому

цитата:
Я более серьезных людей в голове держал, тех, что продает что-то.
Гм. У совсем серьезных людей поддержка сайта занимает нано- или пико- часть бюджета и заниматься глупостями вроде SEO-оптимизации нет нужды, само в самый верх вылезет. :> Пример см. ниже

цитата:
Теперь авторы сайта, по твоему совету добавили в него какое-то количество мусора.
Вообще-то это твой совет - индексировать мусор в виде javascript. :> Я как раз против.

Поскипал. Поинт понятен. Ты считаешь, что если мусор "морские свинки" добавляется, то автоматически снижается релевантность по запросу "ежики". Это не так, релевантность не такая простая штука и не ограничена константой для всего содержания сайта. :>

цитата:

Вместо 100% потенциальных покупателей ёжиков они получают 95% ёжиков и 5% морских свинок.
Гм. Ну то что доля кликов с "ежиков" упадет - это очевидно. Но упадет ли релевантность по "ежикам" и общее количество целевого трафика? Неочевидно. Думаю, сценарий будет скорее другой - 100% потенциальных покупателей ежиков будут приходить как и раньше. К ним добавится 5% покупателей покупателей морских свинок. Из них 5% подумают, а что, может ежика лучше взять, тоже ведь хороший зверь, какой красивый и колючий! И возьмут пожалуй. Результат: в принципе пофиг, но стало чуток лучше. :>

А вообще конечно все не совсем так. На самом деле, у гугла еще большую роль играет не лексический вес (вычисляющийся из содержания страницы), а кликабельность и ссылочный вес (а всего при рассчете релевантности учитывается более сотни параметров). Вот тебе пример: http://www.google.com/search?q=%D1%82%D1%80%D0%B0%D0…D0%BA%D0%BE%D0%BC ("транстелеком", если браузер не скушает ссылку), на первом месте стоит страница, в которой слова "транстелеком" вообще нет :) Но самая релевантная, правда. :)

цитата:
Добился он этого -- повышением релевантности, а не наоборот.
Возможно, но сводить релевантность (особенно гугловую) к лексическому весу никак нельзя. Мои источники получают несколько больше даже в день. Впрочем, поскольку я их не разглашаю, имеешь полное право не верить. :>

цитата:
А почему ты думаешь, что добавив в страницу мусора, трафика получишь больше?
Меньше не получу, а больше - как повезет. Хотя, конечно, смотря какого мусора и сколько, можно замусорить до такой степени что лексический вес нормального текста упадет до нуля. Я такой клинический случай, конечно, не рассматриваю.

Добавление от 22.08.2009 06:40:

arsa

цитата:
уж как они там анализируют гугл каждый день я не знаю, но исходная точка такая - гугл оптимизирует свой поиск что бы найти именно то, что нужно ищущему.
У гугла есть она единственная уникальная черта и уникальное же преимущество по сравнению со всеми прочими поисковиками и контентами - самая большая юзер-база. И они, к их чести, этим успешно пользуются, в частности фидбеком от пользователей - human computations. На популярных запросах это работает хорошо, на непопулярных - не всегда. Например, по запросу "шандор каллош дискография" выдается полное [censored]. Видимо потому, что творчеством этого замечательного композитора интересуется 2-3 человека в мире включая меня. :(

И гугл тоже обманывается. Схемы рассказывать не буду (если кто не верит, мне абсолютно пофиг, и даже если меня назовут "пиздоболом"), их и так знают и те кому надо и те кому не надо.

154. Vladimir Rybinkin, 22.08.2009 09:58
Печальной будет эта песня... Редко бывает, чтобы высокая активность меня огорчала... Отвечал по ходу, но, поскольку много "мелкой" болтовни, сгруппировал ответы по авторам (сохранив "хронологию" для каждого). Так что отвечаю "по алфавиту" .

arsa
цитата:
в общем со стороны google нет решения, и не предвидится, что вполне логично.
АБСОЛЮТНО логично!
цитата:
тогда конечно это дело поднимется сильно.
А это - наоборот.

dozen
цитата:
У кого какие идеи?
У меня. Ветку заведи. Я понимаю: в твою не пойдет никто, но надо ж хоть какое-то подобие приличий изображать...
цитата:
Понимаю, это решение, конечно, но это именно дубликация усилий.
Детский сад! Не "репу" надо чесать, дорогой.
цитата:
Правда, есть еще решение: "Provide the textual contents of JavaScript in a noscript tag".
Хотя бы так... Аж справку уровня экспертов завели...

ErmIg
цитата:
Разница в том, что Кавендиш не публиковал свои великие открытия, а Рыбинкин свои "великие открытия" публикует...
Серьезно?! Сэр что-то читал о моих "великих открытиях"?! Или "великое открытие" в том, что я рассказал вам, олухам, что вас всех ограбили? Ободрали, как липку? Да для меня самого это "великое открытие"!

ivanhoe
цитата:
Да отвечайте, чего уж себя сдерживать. Переживали и не такое.
Дык я потому и ответ притормозил. А то подумают еще, что кто другой под моим ником влез...
цитата:
как мы тут мимоходом выяснили, ваши генеренные страницы не будут индексироваться поисковиками
Спасибо, дорогой! Это, надо думать, иллюстрация способностей местной публики? Но тогда вопрос на засыпку: страница генерится на клиенте. Повторяю: НЕ на сервере, а на КЛИЕНТЕ. Чо, поисковики рази уже и там свирепствуют?
цитата:
используйте чистый HTML и...
...получИте объем для 3-го теста мегов в ...дцать, не говоря уже о 4-м. Очень правильное решение. Применял уже (Гугля тогда ваще еще не было): AltaVista, AOL, и какой-то японец (из замеченных) месяца три паслись у меня на сервере. А там у меня было тыщ 30 страниц (чистого HTML ), и обновлялись они чуть не каждый день. А все страницы были подписанные. Набираешь, помнится, где-нить в AOL "Владимир Рыбинкин", и получаешь тыщи полторы страниц, все на мой сайт, и все уже недели две как мертвые - красота! Потом эти придурки опомнились, и... зафильтровали, небось. Так что... "читателям этого форума" - да, будет проще: 99.9% ваще же ни слова не понимают - даже в какую сторону щеки надувать. Клиенты (если им траффик по барабану, и канал толстый) просто ниче не заметят. А вот у Гугля могут быть проблемы...
цитата:
Однако это не общее решение
Мало того - ИДИОТСКОЕ решение.
цитата:
единственный способ честного разбора JS - это прикинуться на мгновение браузером
Это шедевр! Единственный(!) способ честного(!) разбора - это прикинуться(!!!)... Спасибо за доставленное удовольствие!
цитата:
код Владимира и человек то не всякий разберет, не то что тупой робот.
Какой там код! Мой "робот", кстати - ниче, понимает - даже скулить что-то перестал. Я вообще затрудняюсь назвать хоть одну концепцию, которую, наконец, поняли. Хотя я здесь и так, и эдак, и польку-бабочку...
цитата:
Надо, кстати, подкинуть ее Владимиру, вдруг разрешит
Нет уж, спасибо! Во-первых, "товарища Тьюринга" я уважаю (хотя тест у него - идиотский). Во-вторых, даже если предположить, что я ее вдруг разрешу, меня просто в дрожь бросает мысль о том, что это придется вдалбливать таким вот... которые даже в простейших рассуждениях про несчастного клиента НУ ХОТЬ ЧТО-НИБУДЬ понять не способны. Б-р-р-р-р!
цитата:
Только вот никто не гарантирует что там что-то осмысленное - а вдруг СИНТ какой притаился?
Не боись! Кому тут выкладывать, если даже про клиента прорубить не могут? Да чего там - AJAX поганый скоко лет уж мурыжат - никак не допереть, чо натворили! Какой, в задницу, SINT?! Чтобы он стал "осмысленным", скоко еще уровней "осмысления" предварительно нужно пройтить...

У меня, правда, в SINT тоже 4 уровня. Так сказать, "отличающихся различными требованиями к квалификации программиста". Как я когда-то по дурости писал:

Объекты ядра рассчитаны на программиста высокой квалификации ("защита от дурака" отсутствует), и неправильное использование инструментария ядра...

Инструментальный уровень: объекты общего назначения, предназначенные для использования квалифицированными программистами...

Прикладной уровень: объекты, функционально эквивалентные объектам инструментального уровня, но защищенные от возможности их неквалифицированного использования...

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

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

И т.д., и т.п. Вы уж простите меня, пердуна старого - я ж это писал, рассчитывая на программистов еще прошлого века (куда там - ТЫСЯЧЕЛЕТИЯ!) - откуда ж мне знать было, как оно все обернется? Нешто я Нострадамус? Я, бестолковый, думал: все будет развиваться потихоньку, в том же направлении. А тут ТАКАЯ КРУТИЗНА! Да еще как полезла изо всех щелей, как поперла с дикой скоростью! Рази революцию в программировании предугадаешь?..
цитата:
И это у них такая политика.
Именно, дорогой, именно!
цитата:
Я так не считаю.
IMHO, как и никто из нормальных людей.
цитата:
чтобы поддержать маломощный/устаревший/глючный браузер и т.д.
Гхм!
цитата:
А был бы один скучный JavaScript - век бы сюда не зашел!
А он-то как раз оказался вовсе не скучный. А вот ветка, прям на глазах...
цитата:
см. темы про задачи коммивояжера, сжатие последовательности
О! Сжатие ж еще! Валялось где-то - замочить, что ли? Я ж ее все-таки подрезал чуток, токо в размер разархиватора не влез... Впрочем - зачем? Надо ж вам хоть какой повод оставить (тем более, что сам quest уже сказал, что массив сжимаем).
цитата:
Надо сразу переходить к настоящему - задачам неразрешимым
Похоже, я уже и перешел. Добиться, чтобы народ хоть что-то понял про программирование клиента - вполне себе неразрешимая задача. Звезда в шоке! (с)Зверев, что ли...

lvqcl
цитата:
Vladimir Rybinkin героически бьёт морду светофору и переходит улицу на красный свет.
1. До меня никто из вас ваще не подозревал, что там когда-то горел зеленый.

2. У меня совсем другая ассоциация: сидит толпа наркоманов, и покорно глотает все, что им впаривают наркобароны. И кайф уж не тот, и ломки все чаще, но это уже зомби - на разговоры типа "Не платите вы этой мрази ни гроша" или "Не покупайтесь вы на халяву - это ж вас на иглу сажают!" реагируют агрессивно и одинаково - видать, наркобароны даже тексты речей им написали. dozen, например, может теперь какие угодно песни петь, скажем, сколь шикарные у него библиотеки - да про что угодно! ДОКАЗАНО: броузер евойный не в состоянии даже eval динамически вызвать - способен лишь материться по этому поводу. Все: это - труп! А сам dozen не то, что не программист - даже и не пользователь, раз такое уе..ще использует. Приговор окончательный, обжалованию не подлежит.

rGlory
цитата:
Ну Владимир нам как бы намекает, что все мы должны немедленно даунгрейдить свои ОС до win98, иначе столь нужные нам страницы с его сайта у нас не будут показываться.
Не, я как бы намекаю, что если уж даже моя дохленькая ОС + столь же дохленький броузер УМЕЮТ это делать, то уж ваш хваленый софт ТЕМ БОЛЕЕ все это умеет! И массу чего другого, чего моему даже в кошмарном сне не приснится. А уж про совместимость снизу просто и заикаться стыдно. Ведь правильно? Ведь верно?
цитата:
Вот только представил себе, как задача коммивояжера решается в браузере, на стороне клиента, и по спине мурашки.
Неучи неизлечимы! Вроде, заткнулись после выявления ПОЛНОГО идиотизма их ранних поучений. Но проходит время, и... Работает у меня комми, работает - успокойтесь. Прям ща и работает. Это - НЕЧТО!!! Как раз подгадал: считает tsp_all - вся TSPLIB, вся VLSI, все National TSPs и сам World TSP в придачу (по-моему, еще около десятка малоизвестных задач) - 4391541 узел altogether. Вот он, во всей красе - в аттаче. Тон задает, естественно, TSPLIB: свыше 80% тура приходится на usa13509 и три файла серии pla, и у меня сильное подозрение, что и за 90% перевалит. Всякая там VLSI, World TSP и прочая дребедень болтаются где-то в левом нижнем углу - даже не видать. Ах, да - кто-то там чего-то вякал про анимацию... Пожалуйста: еще текущее состояние World TSP - на плоскости (кто не знает - обычно он решается на шаре, и я даже читал недавно, что есть надежда его решить - лет через 30 - если техника и дальше будет развиваться с той же скоростью). В очереди также мои r2345678, r3456789, r12345678, r23456789 и r123456789. Струячит себе потихоньку, каши не просит... Рядом - параллельно - броузер очередной тест отображает, и уже без припадков, без скулежа (раньше были - пятый все же IE, не третий ). А от ваших броузеров, которые от одной только попытки eval вызвать срочно начинают штаны сушить... Конечно, не только мурашки побегут - восхищаюсь вашим мужеством, господа! Интересно, а хоть один из экспертов на этом форуме способен на что-нить, кроме ВОТ ЭТОГО? Ах, да - Мироныч же, кажись, эксперт. Начинающий, видать...
цитата:
Владимир, беретесь?
См. мой ответ автору.
цитата:
Спросите меня, откуда я это знаю...
Не стОит. Как я Вас когда-то назвал... не помню уже. Но Вы - НАВЕРНЯКА помните. IMHO, основная причина.
цитата:
он умеет/может раскрутить насчет высказаться знающих людей по разным вопросам.
ДА???!!! Где, когда - ссылку мне, ссылку скорее!
цитата:
Только, боюсь, я знаю, как ее решит Владимир
Не бойтесь, сэр - он и сам уже не помнит - в школе еще решал. Да и... маловато места, чтобы его привести. Финистом, что ли, еще подразнить? Впрочем, на фиг! И так распоясались уже до предела - того и гляди, ветку закроют.

zzf
Уважаемый "Member"! Ваш уровень мне давно ясен до мельчайших подробностей. Обращайтесь к другим - мож, кому-то еще и полезно будет узнать.
цитата:
А то я уже начал было переживать, что ВР ушёл вперед меня в познаниях JScript.
Успокойтесь, родной! ВАШ уровень можно разве что повторить (и то лишь избранным, конечно - не мне, убогому). Превзойти же - не дано никому.
цитата:
на самделе я его вообще не знаю
Вашу скромность - тоже.
цитата:
Господа, тут вроде как об JScript тема. Если вам симбады с пнп-вояжорами действительно так интересны, то открывайте соответствующую ветку, а то ВР, чего доброго, решит здесь эти темы развить.
Вот уж откуда не ожидал поддержки... Спасибо, милый!
цитата:
Есть ещё более простая в формулировке, но трудноразрешимая...
Господи! Неужто и это NP? Видимо, и там революция...

К сообщению приложены файлы: 1.rar, 32Кb

155. ivanhoe, 22.08.2009 12:19
Vladimir Rybinkin

цитата:
Спасибо, дорогой! Это, надо думать, иллюстрация способностей местной публики? Но тогда вопрос на засыпку: страница генерится на клиенте. Повторяю: НЕ на сервере, а на КЛИЕНТЕ. Чо, поисковики рази уже и там свирепствуют?
Они не свирепствуют. Поисковик он в данном случае и есть клиент клиент. Но клиент, ограниченный многими факторами, в частности, временем, выделенным на обработку отдельно взятой страницы. Генерировать все Ваши тридцать тысяч виртуальных страниц он не будет (даже до первой не дойдет), и дело не в свирепости, а в присущих ему by design ограничениях.

цитата:

...получИте объем для 3-го теста мегов в ...дцать, не говоря уже о 4-м. Очень правильное решение.
Да, правильное. Места для документов у Гугла завались.

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

цитата:
И т.д., и т.п. Вы уж простите меня, пердуна старого - я ж это писал, рассчитывая на программистов еще прошлого века (куда там - ТЫСЯЧЕЛЕТИЯ!) - откуда ж мне знать было, как оно все обернется? Нешто я Нострадамус? Я, бестолковый, думал: все будет развиваться потихоньку, в том же направлении.
Зато каждый программист 21-го века знает что такое "денотационная семантика", например, и умеет ее читать. Надо перестроиться и идти в ногу со временем. :>

цитата:
Не, я как бы намекаю, что если уж даже моя дохленькая ОС + столь же дохленький броузер УМЕЮТ это делать, то уж ваш хваленый софт ТЕМ БОЛЕЕ все это умеет!
Как говорил товарищ Сталин, "других браузеров у меня нет". И, в общем-то, кроме ваших тестов все остальное, что я пробовал, он показывает.

156. zzf, 22.08.2009 12:39
Vladimir Rybinkin
Не, я как бы намекаю, что если уж даже моя дохленькая ОС + столь же дохленький броузер УМЕЮТ это делать, то уж ваш хваленый софт ТЕМ БОЛЕЕ все это умеет! И массу чего другого, чего моему даже в кошмарном сне не приснится. А уж про совместимость снизу просто и заикаться стыдно. Ведь правильно? Ведь верно?

Неверно! Если твой IE3 может выполнять кривенький нестандартный javascript, то это не значит, что браузеры более поздних версий или других производителей, придерживающиеся стандартов более строго, должны делать то же самое.
Кстати, что у тебя? Win 95? Это же как надо себя не уважать!

Добавление от 22.08.2009 14:18:

Vladimir Rybinkin

цитата:
Я не знаю, как ЭТО обозвать. Самое лучшее определение (на мой взгляд) я уже приводил: APS (Ajax Processing Software).
AGS? (Ajax Generating Script)

цитата:
Именно так! И не только "современные". Оптимизацию от MSVC5/6 я видел, и не раз - за такое нужно просто яйца отрывать! Я когда-то описывал именно такой случай, когда "в тексте программы переменная была, а в исполняемом коде ее не было". Тупая скотина! Нет мозгов - так хоть не лезь своими грязными лапами в код программиста!

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

цитата:
Ответ же - был, и не раз.
Это чтоли?
цитата:
хочу инструментарий на JS/IE3, позволяющий с максимальными удобствами реализовывать все, что нужно конечному пользователю (в идеале - пользователю СУБД). Ну и первый тест подоспел - можно посмотреть...
Ну если это тест инструментария, то судя по отсутствующей доке он не проходит ещё до запуска чего бы там ни было.

цитата:
Ну если СВОИХ моз... Спокойно, Ипполит, спокойно... Читайте внимательно: там ВСЕ написано - что, как и почему.
Ну зачем же так унижаться и переходить на личности? Что я должен читать и что там написано? То, что "не работает"? Ну так я то же самое и говорю. Есть какая-то недоподелка, которая генерирует нечто. В этом нечто есть пара чекбоксов, как бы с намёком на то, что при игре с ними список там чего-то слева должен вроде бы как изменяться. Ещё есть выпадающий список с выбором цвета — тоже с намёком. Тут вариантов два: либо эти свистоперделки нужны для красоты (типа узоры), либо оно не работает. А если не работает конечный код, который уже видит пользователь и который генерируется твоими "тестами", то твои эти генераторы полное... как бы это корректно сказать, но не выругаться... ну ты понял.

цитата:
А если все же ГОЛОВОЙ подумать? Мож, другие какие версии появятся?
Мне становится страшно за тебя. Ты умеешь думать не только головой? А! Ну теперь понятно, почему ни один "тест" не заработал.
Я на всякий случай подумал ещё раз, но твой ответ не разубедил меня в том, что сказанная тобой фраза "я посылал работающее решение" является ЛОЖЬЮ.

цитата:
Все хуже: у него "припадки" начинаются - я же писал. Я чуть со смеху не помер: m.e - работает, а "настоящий" eval - нет. Причем, насколько я понял, нестабильно: работает, работает... и вдруг - сюрпрайз: "Неожиданный вызов функции".
Ага, "неожиданный вызов". Но только не eval, а того, что ты ему подсовываешь в качестве аргумента. Ну ты понял.

Кстати, а что там насчёт Employees и Persons? Ответа не видать. Или он опять "выше"? Уж очень интересно как Employees поможет Ajax'у.

цитата:
Или "великое открытие" в том, что я рассказал вам, олухам, что вас всех ограбили? Ободрали, как липку?
Сердечный, ты о чём? О том, что тебя могут ограбить на 500 баксов, дав взамен нормальное железо, на которое ты сможешь поставить современную ОС и современную среду разработки? Уж да, открыл глаза. Лучше Win95 и Turbo C 2.0. Пиши ещё. Давно так не смеялся.

Да, кстати: Скупой платит дважды, тупой платит трижды, лох платит постоянно. Кстати, платить можно не только деньгами, но и временем разработки и выполнения "тестов". Ну ты понял.

цитата:
Но тогда вопрос на засыпку: страница генерится на клиенте. Повторяю: НЕ на сервере, а на КЛИЕНТЕ.
Ты генерирующие скрипты будешь через e-mail рассылать?

цитата:
Набираешь, помнится, где-нить в AOL "Владимир Рыбинкин", и получаешь тыщи полторы страниц, все на мой сайт, и все уже недели две как мертвые - красота!
А я, помнится, на куликовском поле в одних трусах против армады танков... Давай лучше без описаний снов.

цитата:
Я вообще затрудняюсь назвать хоть одну концепцию, которую, наконец, поняли. Хотя я здесь и так, и эдак, и польку-бабочку...
Польки и бабочки были — не спорю — а вот определений и чётких описаний — ни одного.

цитата:
ДА???!!! Где, когда - ссылку мне, ссылку скорее!
Какую тебе ссылку?!! Было выше много раз — раскрой глаза, чудик!

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

цитата:
Господи! Неужто и это NP?
Ага NP. А какая простая формулировка! Доказываешь полиномность алгоритма для её решения — автомачически доказываешь его полиномность для всех NP. Алгоритмист ты наш нодоалгоритмизированный. Но если, то не в этой ветке, Ок? Впрочем, куда тебе? Зубки сломаешь. Эт тебе не вояжер, в котором ты только одной неверной формулировкой уже тонны пыли напускаешь.

157. dozen, 22.08.2009 17:26
ivanhoe
абсолютно любой скажет, что "больше трафика - больше денег"

Больше трафика в абсолютных цифрах -- конечно, лучше. Но начали-то мы с того, что добавив мусор в script (по-моему мнению) ухудшит релевантность, то есть УМЕНЬШИТ трафик.

Но упадет ли релевантность по "ежикам" и общее количество целевого трафика? Неочевидно. Думаю, сценарий будет скорее другой - 100% потенциальных покупателей ежиков будут приходить как и раньше.

Давай доведем до предела -- будем добавлять всё больше и больше мусора, пока мусора не станет в 100 раз больше контента. Очевидно, в какой-то момент гугль скажет "WTF?" и релевантность таки упадет. Вопрос только в соотношении объема мусора и контента, когда это произойдет. Точных сведений нет. Безопаснее, IMHO (исходя из "желания" гугля доставлять релевантные результаты) предполагать, что это начнет происходить сразу.

Вообще-то это твой совет - индексировать мусор в виде javascript. :> Я как раз против.

Мой совет -- не держать мусора. Нигде. В том числе -- в JS.


"транстелеком", если браузер не скушает ссылку), на первом месте стоит страница, в которой слова "транстелеком" вообще нет
у меня вся первая страница содержит транстелеком или "транс телеком".
шандор каллош дискография
выдал кучу ссылок на этого калоша и игру на лютне. ты точно гуглем пользуешься?


И гугл тоже обманывается.

Ну, а кто спорит? Мы-то обсуждаем с позиций разработки честных веб-приложений, а не doorways и прочего г?

Добавление от 22.08.2009 17:45:

Vladimir Rybinkin

Вот ты накатал сообщение на страницу, и ни одной практической мысли, только сопли пузырями.

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

158. sip, 23.08.2009 04:27
Раз уж речь пошла о расчётах на клиенте, то и я слегка поучаствую Есть какие-либо общепринятые правила насчёт объёма кэшируемых на клиенте данных и сложности вычислений ? Если на клиенте большой кэш, то встаёт вопрос его поддержания в актуальном состоянии, особенно учитывая конкурентную активность пользователей. Расчёты на клиенте - это ещё заковыристей. Например, по сложному сценарию(правилам) считаем цены на различные сущности. Для расчёта нужно доставить на клиента большой объём дополнительных данных, плюс сам расчёт не тривиален. Если клиент запущен на убогом компе, то считать он будет очень долго. Не будет ли разумнее всё считать на сервере, а на клиенте только визуализировать конечный результат ?

159. zzf, 23.08.2009 15:00
sip
Не будет ли разумнее всё считать на сервере, а на клиенте только визуализировать конечный результат ?

Именно так и будет разумнее. Именно так и делает google. Живой пример тут (http://maps.google.com/maps?f=d&hl=ru&geocode=&saddr=berlin&daddr=paris) . Хватаем за середину маршрута мышкой и тянем. Гугл считает новый маршрут прям на лету, а клиент только отрисовывает меняющийся результат.

160. sip, 23.08.2009 15:36
zzf
Ну тут вообще-то не всё так очевидно. С google всё понятно, у них серверная мощность громадная. А вот работа с базой данных в конкретно взятой фирме с распределённой инфраструктурой - по идее "жирные" клиенты могут сильно разгрузить требования к серверам. Или это тупиковый путь и проще наращивать серверную мощность ?

161. ivanhoe, 23.08.2009 16:19
dozen

цитата:
Давай доведем до предела -- будем добавлять всё больше и больше мусора, пока мусора не станет в 100 раз больше контента. Очевидно, в какой-то момент гугль скажет "WTF?" и релевантность таки упадет. Вопрос только в соотношении объема мусора и контента, когда это произойдет. Точных сведений нет. Безопаснее, IMHO (исходя из "желания" гугля доставлять релевантные результаты) предполагать, что это начнет происходить сразу.
Зависимость лексического веса от количества мусора будет скорее логарифмическая, а не линейная или еще какая скачкообразная. Но опять таки, ты сводишь релевантность к лексическому весу. Иногда у страницы действительно бывает только он. Но далеко не всегда это так, посмотри пример с транстелекомом внимательнее (на что обращать внимание - см. ниже).

Кстати, к firefox есть плагин, который умеет показывать в цифирках какие-то из гугловых весов для результатов поиска. Если интересно, могу найти ссылку.

цитата:
у меня вся первая страница содержит транстелеком или "транс телеком".
У меня первой ссылкой в поисковой выдаче стоит "http://www.transtk.ru". У тебя по-другому? Кликни на нее, посмотри в исходник. Увидишь что слова "транстелеком" в исходнике нет. Лексический вес в любом поисковике у этой ссылки нулевой (для запроса "транстелеком"), но она тем не менее, самая первая. Пример приведен к тому что лексический вес это не единственный (и не всегда главный) параметр в формуле релевантности.

цитата:
выдал кучу ссылок на этого калоша и игру на лютне. ты точно гуглем пользуешься?
Точно. Меня совершенно не интересует что мне выдал гугл (хотя "шандор каллош" в тексте встречается, да).

162. jooher, 23.08.2009 18:56
ivanhoe
Лексический вес в любом поисковике у этой ссылки нулевой (для запроса "транстелеком"), но она тем не менее, самая первая. Пример приведен к тому что лексический вес это не единственный (и не всегда главный) параметр в формуле релевантности.

Ну гугл то как раз на том вроде и выехал, что считает релевантность не столько по содержимому документа, сколько по кличеству ссылок на него с других страниц по теме.

Добавление от 23.08.2009 19:20:

извиняюсь если что то дублирую, предыдущие 11 страниц н......л, понял тока что автор жжот. Кстати можно какиенибудь ссылочки о чем речь вообще?

163. arsa, 23.08.2009 20:35
jooher
цитата:
сколько по кличеству ссылок на него с других страниц по теме
это их классический запатентованый алгоритм 1999-го года, основан на системе ссылок в научных публикациях (там то же самое).
с тех пор они добавили ещё сотню алгоритмов, каждый из которых имеет свой (секретный) вес.
я щас скажу каромолу, но вот например человек пытается каталогизировать их (это как гадание почти... ничего не известно, сплошные догадки)
http://www.vaughns-1-pagers.com/internet/google-ranking-factors.htm
а вот последнее интервью с гуру поиска
http://www.webmonkey.com/blog/Let_Google_s_Matt_Cutts_Up_Your_SEO_Mojo

ivanhoe
цитата:
плагин, который умеет показывать в цифирках какие-то из гугловых весов для результатов поиска
сам гугл мало о чем колется. к сожалению. вот например такой плагин можно использовать
http://www.seoquake.com/
но там кроме pagerank, страниц на сайте и входящих ссылок ничего нет. зато работает еще и с другими поисковиками, и умеет на других страницах показывать вес ссылок (не только на гугле)

164. ivanhoe, 23.08.2009 21:20
jooher

цитата:

Ну гугл то как раз на том вроде и выехал, что считает релевантность не столько по содержимому документа, сколько по кличеству ссылок на него с других страниц по теме.
Спасибо за информацию, но я как бы не совершенно не удивлен результатом. :> Также я в курсе, что ссылочный вес давным-давно уже считается не просто как количество ссылок с других страниц, т.к. все поисковики борятся по мере сил с накруткой этого веса. Простые способы накрутки ссылочного веса (сгенерировать 10^N сайтов со ссылками на ресурс) уже давно не работают.

цитата:

извиняюсь если что то дублирую, предыдущие 11 страниц н......л, понял тока что автор жжот. Кстати можно какиенибудь ссылочки о чем речь вообще?
Прочитай все темы Владимира от начала до конца. :>

165. jooher, 23.08.2009 21:26

dozen
Очевидно, в какой-то момент гугль скажет "WTF?" и релевантность таки упадет.

Недавно столкнулся с удивительной ситуацией. Клиент (заказчик всмысле) не взирая на предупреждения умных людей навалил в сайт кучу откровенного раскрутошного палева типа списков самых популярных слов. Причем не просто список слов, а список слов, повторенный много раз (Ctrl+V) практически без изменений. То есть со стороны робота не требовалось глубоких знаний русского языка, чтобы эту затею выкупить. Что и было совершенно предсказуемо сделано Яндексом. А вот Гугл, к моему удивлению, не выкупил, и сайт спокойно висел в первых строчках. Но, надо признать, в остальном контент проиндексировал хорошо.

но все оффтопик вроде как. а что таки было тут интересного по сабжу? Кроме открытия автором функции eval() Резюмировать кто-нибудь сможет? Читать 11 страниц гонева сил нет, а тема интересная...

166. arsa, 23.08.2009 22:31
jooher
да мы тут как бы не это уже обсуждаем из интересного было обсуждение extjs, gpl, индексации. ну это примерно на 1-3 страницу, остальное поток сознания thread starter-а, и ответы на него.

167. Vladimir Rybinkin, 24.08.2009 10:27

ivanhoe
цитата:
А эта "шобла" разбирается в том что такое юзабилити...
Вот и я так думал - точь в точь! Ни хрена она ни в чем не разбирается.
цитата:
Генерация HTML посредством JavaScript на мой взгляд сделана лучше на этом форуме, т.к код:
- лучше структурирован
- более понятен
- работает и на моем броузере тоже (в отличии от Вашего)
Серьезно?! А ну-ка, посмотрим... Но вначале - в глаз: нельзя же так раскрываться!

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

1. На мой взгляд, нельзя применять ОТНОСИТЕЛЬНЫЕ операции сравнения чего-либо (лучше-хуже, более-менее) при АБСОЛЮТНОЙ невозможности нанести на шкалу значение хотя бы одной из сравниваемых величин. Допускаю, что Вы неплохо разобрались в коде страниц форума, но уровень понимания моего кода по-прежнему абсолютен.

2. Вы физически не можете знать структуру моего кода (по крайней мере, без прокрутки алгоритма), поскольку она формируется динамически, в процессе инициализации. Но я Вам помогу - вот, навскидку - ажно многоуровневый список возражений получится:
- системные функции ядра (отправляются на морду сразу при загрузке - a.j)
- системные методы, или очереди, или псевдо-функции на данных, или... (отправляются на морду при инициализации, могут динамически обновляться)
- специализированные функции (лежат в переменных на морде после инициализации, при генерации страницы выплевываются в тело). Переменная толщина клиента (могут обновляться, ессно). В приведенных тестах еще не использовалась.
- локальные функции страницы (i.j)
- эту повесть про структуру можно дальше продолжать, но похожее от Вас бы мне хотелось увидать

3. Я уж тыщу раз говорил: этот код предназначен ДЛЯ БРО-У-ЗЕ-РА!, и Вам совершенно необязательно его понимать. Поймите хотя бы идеологию, черт побери!

4. Даже гениальному педагогу могут попадаться совершенно деревянные ученики, и любой его "код" у них работать не будет. Это я не о своем коде, естественно, а о ваших броузерах.

5. После того, как dozen "прокололся", и привел диагностику, я ЗНАЮ причину, по которой ваши броузеры не могут справиться с моим кодом. Никакой иной причины ни один из вас назвать не в состоянии. Тем более, что У МЕНЯ все прекрасно работает. Можете проверить - поройтесь на свалках, поищите старенький комп - он вам покажет, как НУЖНО работать вашему дерь... ой... замечательному современному софту.

Теперь - попробую Вам все-таки поверить. Где-то у меня завалялись сохраненные не как TXT странички... Ага! Ну, возьмем махонькую, на 29647 байт. Полезной информации в ней... ну никак не больше 10094 (это все равно "брутто", но надоело чистить). Бум считать - третья часть. И Вы хотите сказать, что все это дерьмо типа
код:
<table border=0 width=95% cellpadding=3 cellspacing=1><tr><td class=t2 width=18% valign=top><a class=l href="javascript:paste...

он "по каналам связи" не передает, а "на минЕ" генерит? Чо-то не похоже, а ковыряться в этом "лучше структурированном и более понятном" ну НИ МАЛЕЙШЕГО желания. Так что.. позвольте Вам НЕ поверить. Впрочем, рад буду ошибиться. Как посмотреть на то, что мне с сервера поступает "на входе"?
цитата:
Гм. Ну вообще-то ненулевая. Даже на этом форуме я писал код с указателями.
Значит, Вы очень удачно маскируетесь.
цитата:
Не поверю. Потому что и свой и чужой опыт тоже имеется.
Дык... я потому и говорю, что он НУЛЕВОЙ. Если опыт есть - что ж Вы так их боитесь-то? Нечеловеческих усилий, в смысле? Или это просто страшилки на публику? Так хоть предупредили бы - я ж тупой, я ж сразу в драку. Но мне такое поведение ТЕМ БОЛЕЕ не нравится. Так что внесу-ка я ясность в этот вопрос...

Господа! Вас НАГЛО ОБМАНЫВАЮТ! Работа с указателями НИЧУТЬ не сложнее, чем с обычными переменными - это вас просто пугают, как пугали в детстве разными Чудами-Юдами и Бабами-Ягами. Встречали когда-нить такое понятие "Key-Value"? Так вот: это ТО ЖЕ САМОЕ! Указатель - это обычная переменная, в которой лежит адрес другой обычной переменной (которая тоже может быть указателем). Вот и все! На первый взгляд (новичку) может показаться, что работа с указателем в два раза сложнее - ведь следить нужно и за тем, и за этим - т.е. указатель - это как бы две переменные в одной. Но попробуйте сказать - да, да, тому, кто вас пугает - что работа с двумя переменными вдвое сложнее, чем с одной, и посмотрите на его реакцию. Не бойтесь указателей, господа - это ваши друзья! При некотором навыке (а он приобретается за считанные дни) вы их просто перестанете отличать от других переменных - многократно проверено. А через месяц-другой вы их так полюбите, что и слышать не захотите ни о какой "альтернативе". Вот примеры некоторых операторов (довольно мощных, кстати) с использованием указателей (последний - на функцию):
код:

if (CompareSymbols (*((UI8MD)AStr + uj), *((UI8MD)AS + uj), IGNORECASE))

Addr = *(DMD)(_MultiLangStrings[SINT.Lang] + ((LR - o_MultiLangString - 1) * sizeof (TDP)));

(TDP)SINT.AMQ = (*SINT.AMSQ).iStack * sizeof (TEQS) + (*SINT.AMSQ).AStack;

(*SINT.AMQ).Addr = (*SINT.AMQ).Addr + __GetStackSizeFStr ((*SINT.AFIO).AF);

*(UI32MD)(TDP)&SINT.ACC = (*(UI32MF)_FT[(UI16)___].Addr) ();

Скобок, кстати, тоже не бойтесь - это тоже друзья! Не боялись же вы их (надеюсь!) в школьных задачках? Помните, у Выгодского: записать наибольшее число тремя цифрами и знаками действий? Вот он как раз скобочки недолюбливал, и потому сам привел неправильное решение: 9^9^9. Потом пояснял: это 9^(9^9). А любил бы скобочки - понял бы, что решение - вообще бесконечность: (...(9!^((9!^9!)!)!)...)!

К сожалению, указатели оказались "изгоями" даже для разработчиков компиляторов. Если, например, я поставлю в предпоследнем операторе += мой компилятор перестает его понимать. А казалось бы - обычная конструкция языка... Свободу попугаям! (с)
цитата:
Ну я предпочитаю более как-то абстрактно думать.
Вы... эта... народ-то лучше не пугайте. А то сразу пойдут разговоры о сферических конях в вакууме.
цитата:
Насколько я понял, Вы говорите о некоем "копировании", когда на входе имеем источник, данные из источника обрабатываются и передаются в другой поток-приемник.
Ну, мой милый - Вы меня просто убили наповал. А что, бывает какое-то иное копирование? Без источника и приемника? Без обработки - да, бывает, но я ж об этом тоже писал... Ладно - проехали.
цитата:
При этом потоками (как входными так и выходными) могут быть...
Совершенно верно: "многое другое". И функции копирования до этого НУ НИКАКОГО дела нет.
цитата:
Не берусь утверждать точно, но обычно подобное является примером неправильного проектирования.
Я Вас внимательно слушаю: а ПРАВИЛЬНОЕ - это как? printf, sprintf, fprintf, vsprintf... хто там еще... movmem, memmov, read, write, _read, _write - так, что ли?
цитата:
И в любом случае это уже идет решение, а не постановка задачи.
Разве?! А мне казалось - именно постановка задачи (исполнителю). Или, точнее, только ЧАСТЬ этой "постановки". Или... как Вы там - "предпочитаете более как-то абстрактно думать"? Ну, попробуем...

Одной из базовых системных операций является копирование данных (COPY). Она используется чаще, чем все остальные инструменты, вместе взятые (как и команда MOV в языках ассемблера, выполняющая, по сути, ту же функцию). Рассмотрим ее более подробно.

Тип устройства источника и приемника копируемых данных принципиально может задаваться двумя способами: дескриптором (handle) устройства или адресом ОЗУ компьютера (возможно, разумеется, обращение к ОЗУ и через дескриптор для объектов класса "блок ОЗУ").
...

Потянет?
цитата:
И какие глюки с enum у современных компиляторов?
Да я почем знаю, чо там у "современных"? У VC6 (ndemia подтвердил, что и у BC5) - были. Лень искать - мы с ним об этом лет эдак... давно, в общем, разговаривали.
цитата:
Почему-то эта функциональность никому не мешает и только Вам мешает.
Почему "только мне"?! Всем, кто занимается боль-мень серьезными вещами. На этот пример я всю лабораторию водил, как в цирк - забавно было наблюдать, как происходит переход от "состояния покоя" к "состоянию вытаращенных глаз" (показываешь код, прямо на глазах транслируешь, запускаешь, с растерянным видом просишь совета), а затем к хохоту и подколкам (показываешь, чо эта сволочь натранслировала).
цитата:
MSVC5/6 к современным компиляторам, кстати говоря, не относятся.
Я, вроде, в том ключе и говорил...
цитата:
Не очень понял что Вы хотите сказать...
Приятно слышать. Не то, что "не поняли", естественно - просто устал от постов тех, кто якобы "понял".
цитата:
и как это опровергает тезис о стирании различия между интерпретаторами и компиляторами.
А кто его здесь опровергал?! Наскоко я помню, я вообще сказал: "Наконец-то!"
цитата:
Предыдущее мое предложение было примером, опровергающим тезис, что одни языки можно отнести к интерпретируемым, а другие к компилируемым.
А мое - опровергающее Ваше опровергающее.
цитата:
А если Вы имеете в виду что существуют гибридные подходы между интерпретаторами и компиляторами, где все "живет, дышит" и переходит из интерпретируемого кода в компилируемый, так я с этим и не спорю
Но я-то - спорю!
цитата:
т.к. примеры перед глазами в виде JVM и .NET.
Про NET ничего не скажу - показали как-то, меня всего передернуло, и больше я о нем ничего не знаю. Про JVM для меня авторитетом был когда-то "существовавший" здесь Maxim Kizub, и до сих пор Вы рядом с ним не стоите (уж не взыщите). Тем более, что он как раз "думал о происходящем в недрах", что на Ваш взгляд "непродуктивно и совершенно бесполезно".
цитата:
Я уже приводил код генератора для третьей задачи:
Ха-ха-ха! Нет, он генерит отнюдь не "то же самое", а лишь то, что думает о ней Ваш крутейший броузер. А я просил написать то, что выводит МОЙ, "маломощный/устаревший/глючный". А это... число сочетаний "контролов"... ага - 1024, базовых страниц - 619, итого 1024 * 619 = 633856 виртуальных страниц. Парочку из них я уже приводил, но это же капля в море! Вот как выглядит первая из приведенных страниц, если ей "позволено" генерить лишь заливы и озера (a.htm), вот вторая - если "отрезать" этой Амазонке ее притоки (b), вот Средиземное море в двух вариантах (c и d), вот Южный океан (e), вот Африка с "харакири" для ее стран - вот что такое третий тест! ВОТ ТАКОЙ генератор я просил нарисовать, чтобы и остальной народ, наконец, увидел что-нибудь (да и Вы сами).
цитата:
Если постановка задачи какая-то другая, то эту задачу надо сначала сформулировать.
РРРРААААУУУ!!!! Да я минимум ТРИЖДЫ ее здесь уже формулировал! И именно "для начала в крайне общем виде". Какой, в задницу, Борей? На каждую сраную БД свою математику делать? Новую ветку заводить? И это пример того, как надо "В КРАЙНЕ ОБЩЕМ ВИДЕ"?! Ну, Ваня...
цитата:
Ну Вы формируете страницу уже полтора месяца и результата законченного пока нет. По-моему это очень долго, даже на этапе изучения HTML/JS.
Неужто? А то, что НИКТО из присутствующих за те же полтора месяца так и не понял, что я вовсе не "страницу формирую" - это как, не очень долго, нет? А то, что AJAX, по слухам, уже 6 лет не может сделать и половины того, что сделано здесь за полтора месяца - это нормально? Они ведь даже еще не въехали, ЗАЧЕМ это нужно - лишь чувствуют мощь (каким местом - непонятно, но и неважно - чувствуют правильно). Молодцы, хоть честно признаются - даже не ожидал.
цитата:
А ведь общественность еще не ознакомилась с серверным кодом, на его разработку сколько времени ушло?
Тьфу, зараза! Чай прихлебывал - аж подавился. "Серверный код", конечно, еще не Синдбад - это только шаблоны, им управляющие, но... не поплохеет "общественности", случайно? Уж больно хлипкая она какая-то на вид. Я и сам-то боюсь к ним прикасаться, пока не узнаю толком, что нужно клиенту на вход подавать. А если все это одновременно делается... был такой прецедент, по нему я и работаю сейчас. Ну, хорошо: если Вы считаете, что Вы ВПОЛНЕ здоровы (точнее, если Вы ПОКА здоровы ) - смотрите аттач. Настоятельно рекомендую предварительно прочесть ReadMe.txt - токо что составил - какая-никакая подготовка. А мож, лучше не надо, а? Я вот ща сунулся, напоролся на "значение параметра ERES=" - и бегом обратно. По дороге, правда, вспомнил, что это все-таки EditRESult.
цитата:
Вреда уж точно что никакого.
Грамотно!

dozen
цитата:
Пользу он не приносит по определению -- иначе он бы конвертировался в продажи
Дубина ты стоеросовая! Вот представь на минутку: сделал ты свою супер-пупер... чем ты там занимаешься - ясно, что "настоящим делом, за что сегодня или в перспективе платят настоящие деньги". "Конвертировал в продажи" все, что можно и нельзя, стоит к тебе километровая очередь со скомканными доллариями в потных кулаках. Свалилась на тебя эта самая "польза". Весом, скажем, в миллиард (или 5, 10, скоко там - один хрен, ты и десяти миллионов никогда не удержишь). Ну и дальше-то что, человек, ДАЛЬШЕ-ТО ЧТО?! Жизнь прожита, заняться больше нечем? Или еще каким делом займешься - мало тебе будет "настоящих денег"? Все, дорогой - с такой философией ты уже ТРУП! Самое ужасное в любой мечте - это то, что рано или поздно она исполняется. Жалкий ты какой-то...
цитата:
затратами времени на анализ этого трафика (только для того, чтобы его данные выбросить)
Господи! Ну даже если ты и настолько жадный - зачем же выбрасывать? Это ж информация для срочного принятия мер! Бегом к мусоропроводу!
цитата:
затратами на собственно трафик (если вышли за пределы плана)
Потряс! И экономия буквально на всем... Ну и дела у вас в конторе творятся...
цитата:
Следовательно, не допускать мусора на своих страницах -- в ваших интересах, а не только Гугля. Что и требовалось доказать.
А я вот (и ТОЧНО знаю, что и многие другие товарищи это мнение разделяют) считаю, что мусор не только не "вреден", но и НЕОБХОДИМ! Что "идеальная SEO" (знать бы еще, что это такое) как раз неидеальная. И наоборот. Как тебе мыслишка? Сам придумал! Не сам, конечно - вру я - не то в том предложении, не то в этом.
цитата:
Где я неправ?
Спросил бы лучше, где ты ПРАВ!

ivanhoe
цитата:
Где можно ознакомиться с определением?
цитата:
Это копейки, а не затраты.
Ни то, ни другое. Это - философия. Плюшкин, Гобсек, ...
цитата:
У вас в Канаде дорогой трафик?
Ах, да - это мне даже в голову не пришло. Браво!

arsa
цитата:
гугл оптимизирует свой поиск что бы найти именно то, что нужно ищущему.
Серьезно?! Забота о ближнем, стало быть? Тем более, что "ищущий" в 99% случаев и сам не знает, чего ему нужно (дабы избежать всплеска эмоций: инфа из приватного разговора не то с Сегаловичем, не то с Масловым). Чо-то у нас по этому поводу лежало... Как ща помню: Philip попал в запрос, а Morris - "рылом не вышел"... Эх, черт - грохнул я наши "эксперименты". А зря - ведь дня два по полу валялись от хохота. Ладно, дам кое-что из оставшихся ошметков. Хотите - сами поиграйте в "угадайку", хотите - скормите Гуглю. Не хотите - не надо.

ballet dance beginning professional instruction modern creative academy

space astronomy universe earth solar system planets exploration

greek mythology myths heroes ancient temple goddesses creatures

health fashion advice women beauty message fitness write

nutrition recipes healthy explains quizzes fruit foods eating pyramid health citrus types puzzles fruits vitamins virtual

drugs effects alcohol abuse national friend substances signs quizzes problem legal getting explains advice

smoking tobacco smokers smoke health familydoctor cigarette newhome cigarettes market cancer advertising camel brand younger brands

ivanhoe
цитата:
Я вообще первый раз сталкиваюсь с такой точкой зрения.
Приветствую, "коллега"! Когда мы еще сайтами занимались, я так наоборот заказчикам мозги пудрил: "Да не жалейте вы сил на побочные страницы! Пусть клиент просто погуляет по сайту - посмотрит, как вы эти товары производите, что с ними разные потребители делают, инструкции по применению всякие, какие у вас проблемы, как вы их решаете, как вы на пикник ездили - это же фон! Вы же ЖИВЫМИ будете выглядеть!"
цитата:
У совсем серьезных людей поддержка сайта занимает нано- или пико- часть бюджета
Это - РАСХОДНАЯ часть. Если же взглянуть на ОБЕ - станет ясно: пико-нано-микро-милли-пофиг.
цитата:
Это не так, релевантность не такая простая штука...
Бесполезно, Ваня!
цитата:
Я такой клинический случай, конечно, не рассматриваю.
Еще лет тридцать назад читал какую-то статейку насчет "полезного мусора". Точно уже не помню, но рекомендуется не то 5%, не то 10%.
цитата:
У гугла есть она единственная уникальная черта...
Нет. Он буквально ворвался в поиск, буквально РАЗДАВИЛ тогдашнюю (не нынешнюю!) AltaVista.
цитата:
И гугл тоже обманывается.
Как не фиг делать!

Поиздеваться, что ли над "Associative array" - обещал, вроде? Не, не обещал, но один хрен голова тяжелая - только на развлекуху...

Не, какая-то скучища и бредятина... other primitive types, or even(!) objects... telephone book as an example of an associative array ( )... hash table... self-balancing binary search tree... red-black tree... Skip lists... though relatively new and not as widely used(!)... B-trees... simple database... cryptographic(!) hash function... A simple but generally inefficient ( )... radix trees, Judy arrays, sparse arrays, routing tables - слова-то какие знают!.. Multimap - Вау! "hash_multimap" container... multi-dimensional associative arrays...

Не, не могу больше! Мож, в русской версии повеселее?

Та же хрень: Ассоциативный массив (словарь, хэш-таблица) - дальше можно не читать.

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

Ключом в данном случае является совокупность ФИО + адрес, а значением - номер телефона. Ага! А как быть с "ассоциацией", если я помню только имя, город и что телефон оканчивается на "57-13"?

EACH - "пробежаться" по всем хранимым парам ( )... Для ускорения операции поиска можно... Но это увеличит время... Наиболее популярны реализации, основанные на различных деревьях поиска...

Ну ПОЛНЫЙ бред! И полная каша - такое впечатление, что навалили всякого дерьма в кучу, палкой перемешали...

Отдохнул, называется... Развлекся... Пойду-ка лучше водочки приму.

К сообщению приложены файлы: 1.rar, 9Кb, 2.rar, 5Кb

168. moderator-Kid, 24.08.2009 13:31
Vladimir Rybinkin
Я искренне наслаждаюсь, читая Ваши сообщеня и порожденные ими отклики. Однако будьте добры, держитесь в рамках.

169. jooher, 24.08.2009 16:02
Vladimir Rybinkin
Свободу попугаям! (с)

Да уж куда свободней. 12-я страница

Добавление от 24.08.2009 16:13:

Vladimir Rybinkin
ВОТ ТАКОЙ генератор я просил нарисовать, чтобы и остальной народ, наконец, увидел что-нибудь (да и Вы сами)

Я сейчас наверно глупость скажу. Но мало ли.
Можно поросить Вас таки в одном архиве выложить все файлы требуемые для того, чтобы что-то работало? В самой свежей Вашей версии. Я готов попробовать поправить ваш код, чтобы он работал в современных реалиях. У меня есть некоторый опыт по этой теме. Это не подъ..ка, мне правда интересно.

Добавление от 24.08.2009 16:16:

Vladimir Rybinkin
Когда мы еще сайтами занимались, я так наоборот заказчикам мозги пудрил

в первое както не верится, второе было бы похоже на правду, если бы не первое

170. SERGEY_BIG, 24.08.2009 17:23
jooher
Готовое пока рано. Ещё, по всей видимости, не решена актуальная задача поиска и сортировки (http://www.2bit.ru/sortir.htm)

171. loyolla, 24.08.2009 18:04

Ну и дальше-то что, человек, ДАЛЬШЕ-ТО ЧТО?! Жизнь прожита, заняться больше нечем? Или еще каким делом займешься - мало тебе будет "настоящих денег"? Все, дорогой - с такой философией ты уже ТРУП! Самое ужасное в любой мечте - это то, что рано или поздно она исполняется. Жалкий ты какой-то...

Буквально вчера разговаривала с мальчиком. Мальчик лет 5-6 (если не все 10) ковырялся для собственного удовольствия с статистическим анализом и нейронными сетями в приложении к банковским/биржевым делам. И неожиданно в прошлом году все свои наработки очень выгодно продал. Очень сильно выгодно. Дом upstate New York, дом в горах в Филадельфии и все такое. Не работает больше. Типа на пенсию ушел Вот и говорит : "Знаешь, абсолютно нечего делать. И абсолютно ничего не надо делать. Безумно скучно. И мне это так нравится, что я даже встаю на 2 часа раньше..."

172. jooher, 24.08.2009 18:29
SERGEY_BIG
Готовое пока рано

ну htmlы то он какие то выкладывает. вручную штоли их рисует?

типа: ваши ФФ отстой, да и мой ИЕ3 тоже оказывается отстой. я свой скрипт сам лучше выполню, вообще без всякого железа

Добавление от 24.08.2009 18:35:

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

173. Chippy2003, 24.08.2009 18:47
loyolla
Ну вот, теперь VR забросит новую веху вебклиентостроения и набросится строгать форексного бота, который оплатит пенсию своему Папе Карло

174. Gipnoss, 24.08.2009 19:41
Chippy2003
VR забросит новую веху вебклиентостроения и набросится строгать форексного бота
Уже было...4 раза (http://forum.ixbt.com/?id=26&forumpage_days=10&name=forex&author=Vladimir%20Rybinkin)

175. dozen, 24.08.2009 20:51
loyolla

Мальчик лет 5-6 (если не все 10) ковырялся для собственного удовольствия с статистическим анализом и нейронными сетями

Я прочитал как "мальчик лет пяти-шести ковырялся для собственного удовольствия со статистическим анализом...". Был приступ комплекса неполноценности.

Добавление от 24.08.2009 20:56:


Vladimir Rybinkin
Свалилась на тебя эта самая "польза". Весом, скажем, в миллиард (или 5, 10, скоко там - один хрен, ты и десяти миллионов никогда не удержишь). Ну и дальше-то что, человек, ДАЛЬШЕ-ТО ЧТО?!

Некоторые живут, чтобы работать. А некоторые работают, чтобы жить. Я стараюсь -- второе. Работа необходима. Если она доставляет удовольствие -- еще лучше. Но она -- не самоцель в жизни.

176. rGlory, 24.08.2009 21:45
dozen
цитата:
Я прочитал как "мальчик лет пяти-шести ковырялся для собственного удовольствия со статистическим анализом...". Был приступ комплекса неполноценности.
+1

Добавление от 24.08.2009 21:57:

Vladimir Rybinkin

цитата:
(*SINT.AMQ).Addr = (*SINT.AMQ).Addr + __GetStackSizeFStr ((*SINT.AFIO).AF);
Обана, а чего это оператор -> не используется? Предан анафеме? Не кошерный? Или ВР об нем не догадывается?

177. Gipnoss, 24.08.2009 22:43
dozen
Я прочитал как "мальчик лет пяти-шести ковырялся для собственного удовольствия со статистическим анализом...". Был приступ комплекса неполноценности.
+1

178. loyolla, 24.08.2009 23:03
rGlory
Обана, а чего это оператор -> не используется
перегружен?

179. zzf, 24.08.2009 23:08
dozen
Я прочитал как "мальчик лет пяти-шести ковырялся для собственного удовольствия со статистическим анализом...".
+1

Был приступ комплекса неполноценности.
У меня обошлось без приступа.

rGlory
Обана, а чего это оператор -> не используется? Предан анафеме? Не кошерный? Или ВР об нем не догадывается?
Так же, как и не догадывается о существовании оператора +=
"Хорошие алгоритмисты" в отличии от "шоблы" мыслят более высокими категориями.

180. ivanhoe, 24.08.2009 23:12
Vladimir Rybinkin

цитата:

2. Вы физически не можете знать структуру моего кода (по крайней мере, без прокрутки алгоритма), поскольку она формируется динамически, в процессе инициализации. Но я Вам помогу - вот, навскидку - ажно многоуровневый список возражений получится:
Владимир, а зачем, если не секрет, все эти навороты? Вот большинство сайтописателей прекрасно обходится без ядра и системных функций (часто даже и без JS) и их страницы у всех показываются и индексируются поиском. Какая стоит цель, чтобы сделать сайт удобный и доступный для всех или, наоборот, удивить своей крутизной все браузеры и поисковые системы в мире, а потом восклицать типа "вот Гугл, не могут допетрить как мой сайт индексировать, ну что за идиоты! Мой робот индексирует все триста миллионов виртуальных страниц, а эти даже до первой не добрались!" И т.д.

цитата:

3. Я уж тыщу раз говорил: этот код предназначен ДЛЯ БРО-У-ЗЕ-РА!, и Вам совершенно необязательно его понимать. Поймите хотя бы идеологию, черт побери!
Если код пишется человеком (а не представляет собой выхлоп какого-то автогенератора), то он по определению пишется для человека, в частности чтения его человеком.

цитата:

5. После того, как dozen "прокололся", и привел диагностику, я ЗНАЮ причину, по которой ваши броузеры не могут справиться с моим кодом. Никакой иной причины ни один из вас назвать не в состоянии. Тем более, что У МЕНЯ все прекрасно работает. Можете проверить - поройтесь на свалках, поищите старенький комп - он вам покажет, как НУЖНО работать вашему дерь... ой... замечательному современному софту.
Дело в том, что худо-бедно у меня показываются все страницы, кроме Вашей. Это конечно для меня большая потеря, но рыскать по помойкам ради этой единственной страницы я не буду.

цитата:
И Вы хотите сказать, что все это дерьмо типа он "по каналам связи" не передает, а "на минЕ" генерит?
Это "дерьмо" он передает по каналам связи. Однако, является ли самоцелью экономия утилизации каналов связи? Уж с чем-чем, а с пропускной способностью сейчас проблем нет никаких. В большом телекоме (в котором я проработал много лет) проблема как раз обратная - магистральные каналы загружены едва ли процентов на 10 и есть возможность их расширить на два-три порядка.

цитата:
Впрочем, рад буду ошибиться. Как посмотреть на то, что мне с сервера поступает "на входе"?
Посмотреть что поступает на входе можно при помощи программы WireShark, http://www.wireshark.org/

цитата:
Дык... я потому и говорю, что он НУЛЕВОЙ. Если опыт есть - что ж Вы так их боитесь-то?
Я их несколько не боюсь, просто без указателей мне лично программируется быстрее и эффективнее. С указателями я тоже писать могу.

цитата:

код:
 
*(UI32MD)(TDP)&SINT.ACC = (*(UI32MF)_FT[(UI16)___].Addr) ();
...


Спасибо за примеры, но мощи особой (никакой) в подобных конструкциях не чуйствую.

цитата:

Я Вас внимательно слушаю: а ПРАВИЛЬНОЕ - это как? printf, sprintf, fprintf, vsprintf... хто там еще... movmem, memmov, read, write, _read, _write - так, что ли?
Правильное проектирование это когда программа расширяема. В вашем копировании самое интересное это обработка. Допустим, у Вас в эту функцию копирования встроено n обработчиков и она успешно выполняет свою задачу. В какой-то момент вам понадобилось добавить еще пару обработчиков - для потоковой архивации-разархивации (ну, например, при помощи алгоритма bzip2). Для этого вам понадобится править код вашей мегафункции копирования. Более правильный подход такой (на примере Haskell):
код:

В Haskell строка представляет собой бесконечный поток неизменямых символов. Копирование этого потока представляет собой тождественную функцию.

> copy_id :: String -> String
> copy_id str = str

Допустим, нам надо обрабатывать этот поток построчно. Имеем функцию обработки строки:

> process_line :: String -> String
> process_line str = -- что-то там такое хитрое делает

"Копирование" (не нравится мне это слово, но чтобы сохранить Вашу терминологию) с обработкой

> copy_with_line_processing :: String -> String
> copy_with_line_processing = unlines . map process_line . lines

Здесь имеем "конвейер из трех" компонент:
1) сначала lines разбивает поток символов на строки
2) map process_line построчно обрабатывает полученный поток строк
3) unlines склеивает полученные строки в одну строку

Теперь предположим, что входной поток заархивирован архиватором gzip. Делаем так:

> unzip_and_copy_with_line_processing :: String -> String
> unzip_and_copy_with_line_processing = unlines . map process_line . lines . ungzip

И так далее.

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

цитата:

Предыдущее мое предложение было примером, опровергающим тезис, что одни языки можно отнести к интерпретируемым, а другие к компилируемым.
А мое - опровергающее Ваше опровергающее.
Ну как-то слабоаргументированно. Если вы считаете, что к интерпретируемым относятся динамически типизированные языки то для них тоже уже давно есть методики эффективной компиляции, например у scheme компиляторы весьма эффективные и делают не какой-то полукомпилированный-полуинтерпретируемый код, а код нормальный и полноценный.

цитата:

Про JVM для меня авторитетом был когда-то "существовавший" здесь Maxim Kizub, и до сих пор Вы рядом с ним не стоите (уж не взыщите). Тем более, что он как раз "думал о происходящем в недрах", что на Ваш взгляд "непродуктивно и совершенно бесполезно".
Кизуб это, конечно, голова, только вот он думает о происходящем в недрах как разработчик JVM, им это положено по долгу службы. Нормальным людям об этом думать глубоко противопоказано. :>

цитата:
Нет. Он буквально ворвался в поиск, буквально РАЗДАВИЛ тогдашнюю (не нынешнюю!) AltaVista.
Можно подумать сложно было раздавить. Ей же DEC владел. DEC общеизвестна как компания с гениальными инженерами и идиотами менеджерами, которые умудрились просрать все полимерысамые блестящие инженерные наработки (самые быстрые процессоры в мире, кластерные технологии и многое другое).

dozen

цитата:
Некоторые живут, чтобы работать. А некоторые работают, чтобы жить. Я стараюсь -- второе. Работа необходима. Если она доставляет удовольствие -- еще лучше. Но она -- не самоцель в жизни.
У меня вот к работе отношение такое: работа нужна чтобы отдыхать от семейной жизни. Соответственно, семейная жизнь нужна чтобы отдыхать от работы. Таким образом, моя жизнь практически полностью состоит из разнообразного отдыха. :>

181. Dilon, 24.08.2009 23:19
loyolla
Это С.
dozen
цитата:
Я прочитал как "мальчик лет пяти-шести ковырялся для собственного удовольствия со статистическим анализом...".
+1

182. rGlory, 24.08.2009 23:54
zzf
цитата:
Так же, как и не догадывается о существовании оператора +=
"Хорошие алгоритмисты" в отличии от "шоблы" мыслят более высокими категориями.
Да кстати, пропустил.
Вообще интересно, сколько одна строчка кода может сказать о программисте. В данном случае по ней можно сказать, что писал питекантроп, привыкший игнорировать любой опыт, кроме своего, любимого.

183. Chippy2003, 25.08.2009 00:27
Gipnoss
Уже было... 4 раза
как я мог это пропустить

184. ivanhoe, 25.08.2009 00:35
rGlory

цитата:
Вообще интересно, сколько одна строчка кода может сказать о программисте. В данном случае по ней можно сказать, что писал питекантроп, привыкший игнорировать любой опыт, кроме своего, любимого.
Ну что так сразу, "питекантропом" то обзываться. :> На самом деле код Владимира очень сильно похож на то как раньше писали для бортовых ЭВМ (сам этих времен не застал, рассказывали старшие товарищи, которые программировали до сих пор ездящие танки, летающие самолеты и пр.) Другое дело, что времена поменялись и эти самые старшие товарищи перестроились под новые задачи и средства разработки, когда нужно чтобы программа была переносима-масштабируема-расширяема и пр., а не возможность ее засунуть в ЭВМ "Урал-4" с 1 килобайтом ОЗУ на ферритовых сердечниках. :>

185. SERGEY_BIG, 25.08.2009 01:00
loyolla
И неожиданно в прошлом году все свои наработки очень выгодно продал. Очень сильно выгодно
Вот она, первопричина кризиса )))

186. rGlory, 25.08.2009 01:02
ivanhoe
цитата:
Ну что так сразу, "питекантропом" то обзываться.
Я же любя...
А вообще одно из первых правил, которые даются начинающему программисту С/С++:
- используйте идентификаторы в верхнем регистре только для макросов препроцессора
- не начинайте имен функций с подчеркивания

Я, конечно, понимаю, что ВР никакие правила не писаны, а если писаны то не читаны и так далее. Но назвать этот стиль, да еще и с игнорированием операторов -> += кроме как "питекантропским" язык не поворачивается. Ну еще можно назвать "синтокантропским", а ВР соотвественно последний представитель вида синтокантроп. И вообще его нужно занести в красную книгу и охранять, а мы тут нападаем на него. Беречь его нужно, господа и товарищи, не ценим мы того, что имеем

187. arsa, 25.08.2009 02:00
SERGEY_BIG
цитата:
Вот она, первопричина кризиса
кстати в этом есть доля правды. большинство биржевых аналитиков последнее время использовали одну и ту же модель. но модель то не предполагала что так будет, она на хаос рассчитана не помню где прочитал, и что за модель.

188. ivanhoe, 25.08.2009 02:14
arsa

Модель Ли, по-русски можно почитать здесь: http://bobtenelli.livejournal.com/126476.html

189. femidav, 25.08.2009 02:53
dozen
Я прочитал как "мальчик лет пяти-шести ковырялся для собственного удовольствия со статистическим анализом...". Был приступ комплекса неполноценности.
+1 Пришлось перечитать пару раз

190. zzf, 25.08.2009 02:55
rGlory
И вообще его нужно занести в красную книгу и охранять

Ага, чтобы не забывали как НЕ НАДО.

191. arsa, 25.08.2009 03:03
ivanhoe
о, свежачок. да, очень понятно написано (точнее переведено)

192. rGlory, 25.08.2009 03:33
ivanhoe
цитата:
Модель Ли, по-русски можно почитать здесь
Имхо слишком поверхностно и помпезно. Похоже на стандартную страшилку желтой прессы. Мне на этот счет статья о том, что за всеми пузырями стоял голдман сакс понравилась гораздо больше. Прочитать можно здесь (http://zerohedge.blogspot.com/2009/06/goldman-sachs-engineering-every-major.html) , к сожалению, только на английском.

193. femidav, 25.08.2009 04:07
Кстати, может кто-нибудь объяснить, есть ли обществу какая-либо польза от всех этих вторичных финансовых продуктов? А то у меня складывается впечатление, что вред один...

194. zzf, 25.08.2009 04:11
femidav

Ты когда свои бабосы куда-нибудь вкладываешь, то сильно думаешь о пользе обществу?

195. dozen, 25.08.2009 07:33
rGlory
а ВР соотвественно последний представитель вида синтокантроп

То есть, ВР -- и не homo sapience вовсе, а просто люди, обезьяны и ВР имели общего предка?


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

Статья... мне попалась на глаза книга с подзаголовком "как жадность и (что-то) уолстрита погубили tribe мечтателей(!) из J.P.Morgan". Мечтатели, блин! Строители коммунизма, блин -- счастье всем, даром, и пусть последний ниггер не уйдет обиженным!

А, вот: Fool's Gold: How the Bold Dream of a Small Tribe at J.P. Morgan Was Corrupted by Wall Street Greed and Unleashed a Catastrophe (http://www.amazon.com/Fools-Gold-Corrupted-Unleashed-Catastrophe/dp/141659857X/ref=sr_1_1?ie=UTF8&s=books&qid=1251170805&sr=8-1)

femidav
Кстати, может кто-нибудь объяснить, есть ли обществу какая-либо польза от всех этих вторичных финансовых продуктов?

Есть, конечно. Есть же польза от масла? А оно -- дериватив молока. Но не заменитель. Применение разное. А они (банкиры), пользуясь дерегулированием, раунд за раундом добавляли в масло Г, но продолжали продавать его как "сливочное масло". Теперь никто не знает, у кого в холодильнике масло, а у кого -- полная морозилка Г.

196. Vladimir Rybinkin, 25.08.2009 09:34
Беглый просмотр показывает, что наруду прибавляется. Интересно, прибавилось ли чего-нить, кроме этого?

ivanhoe
цитата:
Поисковик он в данном случае и есть клиент.
Простите, Вы вообще слушаете, что Вам говорят? Мне абсолютно все равно, кто там поисковик, и чем он там "ограничен". Но ведь никаких моих "тридцати тысяч виртуальных страниц" на сервере нет. Понимаете - .NET.!!! И одной нет - они все НА КЛИ-ЕН-ТЕ генерятся! И командует этой генерацией ТОЖЕ сам клиент - сервер и знать ничего не знает: Данные я тебе дал? Дал. Математику дал? Дал. Пшел вон отсюда! Я русским языком спрашивал: что, поисковики теперь по КЛИЕНТСКИМ компам шарят (Y/N)?!
цитата:
Да, правильное. Места для документов у Гугла завались.
И что, если "места завались", его непременно нужно всяким дерьмом загадить? А экология как же?
цитата:
Кстати шансы есть.
Вдолбить?! НИ МАЛЕЙШИХ!
цитата:
Зато каждый программист 21-го века знает что такое "денотационная семантика", например, и умеет ее читать.
А, ну это канешна... Про указатели ни сном, ни духом - им таперича "денотационную семантику" подавай... Там же легче косить под профессионала - вызубрил десятка два умных слов - и ты уже король. Только вот еще Гераклит сказал: "Если дурака учить - он не станет умным, просто он будет больше знать". Так что спасибо - пущай молодые "идут в ногу со временем": им, как известно, "везде у нас дорога". А меня - увольте.
цитата:
Как говорил товарищ Сталин, "других браузеров у меня нет".
Дык и не нужно! Разве одного мало? Ведь если уж даже мой дохленький (он, представьте, тоже у меня один-одинешенек) код в состоянии разобрать, то уж Вашему-то это ваще как два пальца - пральна?
цитата:
И, в общем-то, кроме ваших тестов все остальное, что я пробовал, он показывает.
Естественно! Ведь не то что динамического - СТАТИЧЕСКОГО eval днем с огнем не сыщешь!

zzf
Ух ты, какой длинный пост... Как же удачно я врезал! Ладно, продолжим чуток - вдруг поможет?

1. Месье утверждает, что разработчики IE3 (на самом деле IE5) плевать хотели на стандарты (Y/N)?

2. А сам-то месье знает, что там за "стандарты"? Какие-нибудь "радиусы кривизны", которые определяют, дозволено ли броузеру данный скрипт выполнять, или его нужно обязательно обматерить, или скинуть ответственность за запуск на юзера (Y/N)?

3. Месье невнимателен: информация уже приводилась.

4. Нет, не "Ajax Generating Script", а именно "Ajax Processing Software".

5. Нет, я не только не "начинаю активно править его руками", но и генерю крайне редко. На остальное я уже отвечал - месье вновь невнимателен.

6. Да, и это в том числе.

7. Нет, я вовсе не "переходил на личности" - я хотел высказать правило для любого человека Вашего уровня на языке, понятном этому уровню. Но это не одобряется Правилами. Лично Вы мне безразличны, и вправе делать все, что Вам заблагорассудится.

8. Ваши домыслы насчет "вариантов" мне также неинтересны - я уже не раз рассказывал, что это, и для чего - месье опять невнимателен.

9. Я умею думать чем угодно - для Вас, месье, хватит любого места. В частности - спиной. Слышали историю про Менделеева - что ему таблица во сне приснилась? Со мной подобное происходило десятки раз.

10. Мне абсолютно до лампочки, убедил ли я Вас в чем-то, разубедил ли...

11. В качестве аргумента я ему "подсовываю" встроенные функции JS. Список я приводил (да и тексты лежат в трех экземплярах) - месье, как всегда, невнимателен.

12. Я полагаю, что знать "что там насчёт Employees и Persons" Вам лично еще рановато. И мне даже не интересно, прав ли я в этом предположении.

13. Мне также совершенно безразлично, смеетесь ли Вы, плачете ли...

14. Я все давно понял, и даже Вам об этом сообщал - месье нев... см. выше.

15. Нет, "генерирующие скрипты через e-mail рассылать" вовсе не нужно - месье... см. выше.

16. Вы также вправе считать "снами", "определениями", "чёткими описаниями" и т.д. все, что Вам угодно.

17. Даже если ссылки действительно "были выше много раз" - смиренно прошу повторить, указав специально для меня: "Вот она"!

18. Еще раз спасибо, папаша.

19. И список решенных/нерешенных задач типа TSPLIB, небось, имеется?

20. Я рад, что Вы усвоили, что если "Доказываешь полиномность алгоритма для её решения - автомачически доказываешь его полиномность для всех NP". Но, может быть, не стоит орать об этом на весь Инет? Как Вы полагаете?

21. А что, "вояжер" разве уже не NP? Или для месье его сложность смехотворно мала по сравнению с ЭТОЙ задачей?

P.S. Учитывая присущую месье невнимательность, осмелюсь заметить, что некоторые пункты содержат вопросы к месье. Соблаговолит ли месье ответить хотя бы на часть из них? Или Вы мадам? В таком случае, приношу искренние извинения. Надеюсь все же, что недюжинный ум ме... ма... сможет уловить смысл сказанного даже в столь искаженной формулировке.

dozen
цитата:
Точных сведений нет.
Зато приближенных навалом. Появились еще до твоего рождения.
цитата:
Вот ты накатал сообщение на страницу, и ни одной практической мысли, только сопли пузырями.
Да кто бы сомневался? Я тыщу лет знаю, что тебе и сотня страниц не поможет. Да и в этой ветке уже не раз говорил.
цитата:
Поэтому тебя лично имеет смысл только игнорировать
Дык ИГНОРИРУЙ, лапочка! А "проблемы обсуждать" вали В СВОЮ ветку. А то, глядишь, и я ненароком встряну в обсуждение...

sip
Коротко:
1. Никаких "общепринятых правил" не существует.
2. "Поддержание в актуальном состоянии" - проблемы клиента: пущай хоть на F5 надавит. Серверу-то какое дело - мож, он спать пошел?
3. Не нужно делать фетиш ни из клиента, ни из сервера: где удобнее - там и считаем.
4. Покупать клиенту "современный" комп вместо "убогого" также не следует.
5. Нет, это не "тупиковый путь" - просто клиент поменьше будет "сачковать" - в чем же тупик? Сервер лишь спасибо скажет - ему, как правило, и без клиента есть, чем заняться.

P.S.
zzf
Простите великодушно, но я настолько был ошарашен красотой неизвестной мне NP-задачи, что рискнул-таки взглянуть на нее. Склепал быстренько на базе "комми" программку, взял тестовое "множество" на 1000 узлов. Глянул на него - и ужаснулся: да разве ж по моим мозгам такое чудовище? Разрезал его пополам, потом еще пополам, еще... Хотел и 125 элементов порезать, но стыдно стало - остановился. Образовалось у меня, таким образом, 15 тестовых задач. Запускаю (зажмурившись) самую маленькую, и... как заорет на меня программа!

Ты чо, чувак, офонарел?! Ну подумай своей дурной башкой - там же сумма НЕЧЕТНАЯ - не видишь, что ли?! И ты решил, что я считать тебе эту хрень буду?! Щаз! Ищи другую дуру!

Я, конечно, в диком расстройстве - 8 тестовых задач из 15 как корова языком слизнула. Да и программа послала - обидно. К тому же - заслуженно: вдвойне обидно. Но делать нечего: запускаю оставшееся, и...

Да что же ты, козел старый, издеваться надо мной вздумал?! Ты чо, не видишь - я КРУТАЯ, мне NP подавай! А ты чо подсунул?! На все про все 0 целых хрен десятых секунды, да еще на твоем гребаном доисторическом процессоре! Не успеешь даже толком на все элементы посмотреть! А НУ ГОНИ НАСТОЯЩИЕ ЗАДАЧИ!!!

Я перепужался до смерти - любушка, голубушка, потерпи чуток - ща я в Инет сбегаю, там специалисты, они там тебе таких задач надают - только держись!

Стыдно, конечно, но что делать - уже алгоритм первичного разбрасывания по кучам все и решил. И алгоритм-то позорный: буквально первое, что в голову пришло, как только задачу увидал - еще там, выше по ветке, где я изумлялся. Вываливаешь всю эту кучу на одну чашку весов, затем кидаешь по очереди самый тяжелый "камень" на другую, пока не перевесит - и начинаешь "вышибать" оттуда камни (начиная с самого легкого) камнями с другой чашки (начиная с самого тяжелого). А то и вышибать не приходится - "разновесы" перебросились - и стрелка весов стоит, как вкопанная. Так что... не могу я найти тестов для моей ненаглядной - не получается, хоть ты тресни! И вот я здесь - с протянутой рукой... В смысле, ихде там мой миллион?

197. штышпре, 25.08.2009 13:17
ivanhoe
У меня вот к работе отношение такое: работа нужна чтобы отдыхать от семейной жизни.
Соответственно, семейная жизнь нужна чтобы отдыхать от работы. Таким образом, моя жизнь практически
полностью состоит из разнообразного отдыха. :>

Воистину, ты познал Дао.


... кстати, в таком разрезе становится лучше понятен секрет успеха тем ВР. :]

198. jooher, 25.08.2009 14:34

штышпре
становится лучше понятен секрет успеха тем ВР

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

199. sip, 25.08.2009 14:40
Vladimir Rybinkin

2. "Поддержание в актуальном состоянии" - проблемы клиента: пущай хоть на F5 надавит.
Такой подход с F5 неплох для случая, когда данные клиенты только читают.
Если они их конкурентно модифицируют, то ситуация иная. Послали на K1(клиент#1) пакет посчитать, пока он пилил, данные на которых этот пакет базировался уже изменены другим клиентом. Теперь неактуальные данные на K1 это уже проблема сервера, принять назад результаты расчёта он уже не может. А теперь представь, что на клиенте не просто тупой расчёт, а ещё и пользователь на 50 вопросов ответил, а его радостно сервер посылает


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


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

200. штышпре, 25.08.2009 15:12
jooher
Ну, петросян-не петросян, по мне так более встречу рационального с иррациональным напоминает. Как тут уже отмечали, у Владимира есть свойство пренебрежительно относиться к чужому опыту, и это вполне понятно, т.к. по восприятию и, соответственно, собственной аргументации он тщательно дополняет множество мыслящих рационально людей до полного, оставаясь для недоумевающего большинства иррационален и непознаваем. Доказать ему что-либо нельзя, увы, он не в этом мире. Так что эти разборки в духе "--У южной стены! --Кто? --Тахойцы! --Где? --У южной стены! --Кто? ..." могут продолжаться бесконечно, правда с различным набором и детализацией муссируемых вопросов. Нет, если ВР не читать, и фильтровать ругань, вполне годные темы получаются.

А во флейме это не покатит, контингент не тот.

201. ivanhoe, 25.08.2009 15:31
Vladimir Rybinkin

цитата:

Простите, Вы вообще слушаете, что Вам говорят? Мне абсолютно все равно, кто там поисковик, и чем он там "ограничен". Но ведь никаких моих "тридцати тысяч виртуальных страниц" на сервере нет. Понимаете - .NET.!!! И одной нет - они все НА КЛИ-ЕН-ТЕ генерятся! И командует этой генерацией ТОЖЕ сам клиент - сервер и знать ничего не знает: Данные я тебе дал? Дал. Математику дал? Дал. Пшел вон отсюда! Я русским языком спрашивал: что, поисковики теперь по КЛИЕНТСКИМ компам шарят (Y/N)?!
Я очень внимательно читаю что мне пишут. Напоминаю, что речь шла о том, будут ли поисковики индексировать ваши тысячи и миллионы виртуальных страниц. Именнно потому что они генерятся на клиенте, а возможности любого поисковика как клиента крайне ограничены, он, поисковик, не будет их индексировать, т.е. проще, говоря, поисковые системы искать в ваших виртуальных страницах не будут.

цитата:
И что, если "места завались", его непременно нужно всяким дерьмом загадить? А экология как же?
Ну это уж Вам решать, хозяин, как говорится, барин. Если содержание представляет собой дерьмо и нет никакого желания, чтобы его индексировал гугл, то можно это содержание отдавать в виде нагромождения JS и виртуальных страниц. Если содержание дерьмом не является, но, напротив, содержит полезную информацию, то поисковикам надо отдавать его в виде обычного HTML.
цитата:

Естественно! Ведь не то что динамического - СТАТИЧЕСКОГО eval днем с огнем не сыщешь!
В упоминаемом dozen GWT eval используется. И, как это ни странно, но gwt (включая всякие там ext-gwt) мой браузер как раз кушает.

202. dinozaur, 25.08.2009 16:21
Vladimir Rybinkin
цитата:
1. На мой взгляд, нельзя применять ОТНОСИТЕЛЬНЫЕ операции сравнения чего-либо (лучше-хуже, более-менее) при АБСОЛЮТНОЙ невозможности нанести на шкалу значение хотя бы одной из сравниваемых величин.
За такие безответственные высказывания надо вешать на ближайшем суку.
И чтобы аудитория не пребывала во тьме - ключевые слова для поиска: "децибел", "непер".

203. dozen, 25.08.2009 16:27
sip
Такой подход с F5 неплох для случая, когда данные клиенты только читают.

Ты эта... делай скидку на то, что ВР о подобных проблемах впервые слышит (но уже полез консультировать).

Глобальных подходов как было, так и осталось два -- оптимистичные и пессимистичные локи. И то, и другое делается на веб, но пессимистичные -- сложнее. Выбор зависит от природы приложения -- где-то важнее предотвратить конкурентную модификацию еще до того, как она начилась, а где-то такое событие -- редкость, и оптимистичные локи вполне сойдут.

Ну, есть еще copy-on-write, где, начав с разделяемых данных, каждая модификация создает версию данных для данного юзера. В частности, такая система использовалась в одной из систем которую я делал, для личных настроек. Они грузились с общей таблицы как defaults, но если юзер что-то менял, то создавалась приватная запись.

Я не вижу простого пути, как создать динамически масштабируемое приложение. Т.е. есть свободные ресурсы на сервере, считаем на нём, нет - считаем на клиенте.

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

204. jooher, 25.08.2009 16:30

штышпре
Как тут уже отмечали, у Владимира есть свойство пренебрежительно относиться к чужому опыту

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

205. dozen, 25.08.2009 16:36
jooher
Удивляет наивная настойчивость людей, пытающихся что-то ему объяснить.

Ему лично уже ничего не объясняют, даже если это выглядит так. Просто его ... мгм... спорные утверждения должны быть опровергнуты хотя бы ради молодых, читающего ветку. Да и ресурс forum.ixbt.com превратился бы в рассадник мифов о программировании, если фантазии ВР оставлять без ответа.

206. ivanhoe, 25.08.2009 17:05
dozen, jooher

Справедливости ради, убедить Владимира все-таки можно. По крайней мере пару случаев припомнить могу :>. А мне как раз семейные обстоятельста позволяют невозбранно почесать языком, т.к. семейство находится далеко и на море. Еще неделю осталось такого счастья.

P.S. Сегодня кстати наткнулся на забавный проект http://yquem.inria.fr/pipermail/jocaml-list/2009-July/000115.html на OCaml, как раз на тему распределенных вычислений на клиенте.

207. jooher, 25.08.2009 17:52
ivanhoe
У меня к Вам персональная просьба. Вы один из избранных, чьи посты ВР читает и даже что-то отвечает. Не могли бы Вы попросить его выложить одним архивом весь его проект в том виде как он работает у него на ИЕ3 ?
Я хотел бы попробовать привести его к современным условиям и посмотреть что же там собсно происходит.
Вдруг за психической неадекватностью кроется сумасшедший гений вселенского масштаба? Мало ли.

208. dozen, 25.08.2009 18:39
jooher
Не могли бы Вы попросить его выложить одним архивом весь его проект в том виде как он работает у него на ИЕ3 ?

Во всех предыдущих ветках подобные попытки с презрением отвергались Мастером.

209. ivanhoe, 25.08.2009 20:34
jooher

Спасибо, конечно, за оказанное высокое доверие, но роль посредника не для меня.

210. sip, 26.08.2009 01:19
ivanhoe

Сегодня кстати наткнулся на забавный проект
Google Native Client меня очень порадовал, отличная и очевидная идея, надеюсь они действительно смогут сделать это безопасным

211. ivanhoe, 26.08.2009 02:35
sip
цитата:
Google Native Client меня очень порадовал, отличная и очевидная идея, надеюсь они действительно смогут сделать это безопасным
Безопасным сделать можно - с точностью до дыр в процессорах. Но выбор сендбоксинга x86 меня как-то удивил, странноватый такой велосипед... в эпоху JAVA/.NET/ActionScript/etc. Это, конечно, большое достоинство - заставить пользователей альтернативных архитектур почуйствовать себя недочеловеками, но достоинство, по-моему, единственное. Правда там еще можно будет запустить СИНТ, с всеми его меню и палитрами!

212. zzf, 26.08.2009 03:41
Vladimir Rybinkin:

цитата:
Месье утверждает, что разработчики IE3 (на самом деле IE5) плевать хотели на стандарты (Y/N)?
Нет, такого я не утверждал. И даже наоборот — я думаю они очень сильно старались. Но, видимо, всё равно "не шмагли". Про ACID слышал? Вот запусти у себя на своём пятом ИЕ хотя бы ACID2 и полюбуйся на кашу. Повторяю специально для тебя, дружок: Если твой древний IE может выполнять кривенький нестандартный javascript, то это не значит, что браузеры более поздних версий или других производителей, придерживающиеся стандартов более строго, должны делать то же самое. Так что, правь свои недоподелки. От производителей браузеров помощи не дождёмся.

цитата:
А сам-то месье знает, что там за "стандарты"?
Чего-то слышал. В отличии от одного крупного алгоритмиста.

цитата:
Нет, я не только не "начинаю активно править его руками", но и генерю крайне редко.
Ну а если нет, то к чему был следующий пустозвон:
цитата:
Оптимизацию от MSVC5/6 я видел, и не раз - за такое нужно просто яйца отрывать! Я когда-то описывал именно такой случай, когда "в тексте программы переменная была, а в исполняемом коде ее не было". Тупая скотина! Нет мозгов - так хоть не лезь своими грязными лапами в код программиста!

цитата:
Да, и это в том числе.
Как мило ты сливаешь, дружок. Отвечаешь, а вопрос не цитируешь. Ну я напомню:

цитата:
хочу инструментарий на JS/IE3, позволяющий с максимальными удобствами реализовывать все, что нужно конечному пользователю (в идеале - пользователю СУБД). Ну и первый тест подоспел - можно посмотреть...
Если то был ответ на вопрос "Так о чём там тесты?", то тесты с треском ПРОВАЛЕНЫ ещё до запуска, т.к. к инструментарию как бы положена документация (её нет). Также, отсутствуют примеры использования. Вернее, "пример" есть, а инструментарий отсутствует. То есть инструментарий — javascript. А! Так вот кто его придумал!

цитата:
я хотел высказать правило для любого человека Вашего уровня на языке, понятном этому уровню
Ну, знаешь ли! Такого себе не позволял даже Менделеев во сне!

цитата:
Ваши домыслы насчет "вариантов" мне также неинтересны - я уже не раз рассказывал, что это, и для чего
Опять ЛОЖЬ. Для чего чекбоксы и выпадающие списки в сгенерированных руками страницами ты не рассказывал.

цитата:
Слышали историю про Менделеева - что ему таблица во сне приснилась? Со мной подобное происходило десятки раз.
Ну тут ты тоже лоханулся. Менделееву эти таблицы приснились первому. Так что, ты снова в жо эээ... пардон, в хвосте.

цитата:
Мне абсолютно до лампочки, убедил ли я Вас в чем-то, разубедил ли...
Стало быть, аргументы против высказывания о том, что сказанная тобой фраза "я посылал работающее решение" является ЛОЖЬЮ закончились?
То есть, она (фраза), таки, является ЛОЖЬЮ?

цитата:
В качестве аргумента я ему "подсовываю" встроенные функции JS. Список я приводил
Приводил, аха: eval(y+"="+r+y) Только в качесте аргумента тут не "встроенные функции JS", а твои недоподелки. И кто знает, что там такое "r"? Потому eval и "валится". Ха-ха!

цитата:
Я полагаю, что знать "что там насчёт Employees и Persons" Вам лично еще рановато.
Дружок, ты опять подслил. А всё-таки, зачем Ajax'у Employees и Persons? Просто пословоблудил, признайся?

цитата:
Нет, "генерирующие скрипты через e-mail рассылать" вовсе не нужно
Как же они попадут к клиенту, чиорт побьери! Не через сервер и не е-мэйлом... Сдаюсь! Какой правильный ответ?
А! Я понял! Ты их руками прямо у клиента типать будешь? А чё, тоже вариант!

цитата:
Даже если ссылки действительно "были выше много раз" - смиренно прошу повторить, указав специально для меня: "Вот она"!
Баш на баш!

цитата:
Я рад, что Вы усвоили, что если "Доказываешь полиномность алгоритма для её решения - автомачически доказываешь его полиномность для всех NP". Но, может быть, не стоит орать об этом на весь Инет? Как Вы полагаете?
Дык я про это же! Собственно, поэтому и не пойму, зачем ты об этом орёшь на весь инет.

213. femidav, 26.08.2009 04:58
zzf
Так что, правь свои недоподелки
Править не надо, надо взять jQuery и не тратить время на ерунду. Хотя для ВР такой подход конечно абсурден...

214. sip, 26.08.2009 05:07
ivanhoe

Это, конечно, большое достоинство - заставить пользователей альтернативных архитектур почуйствовать себя недочеловеками, но достоинство, по-моему, единственное.
Не совсем. Во первых, они говорят о поддержке x86 и ARM. Во вторых, доступны SSEx и OpenGL. В третьих, не исключена поддержка LLVM. И если действительно что-то на клиенте активно "считать", то это очень даже вариант, хотя конечно и не замена для Java, Silverlight, ... А свобода выбора - это всегда очень хорошо Если у тебя миллионы строк качественного кода на C/C++ врядли ты кинешься его переписывать на Java, да и разговоры про одинаковую скорость managed и unmanaged кода - это только разговоры.

215. dozen, 26.08.2009 05:10
ivanhoe
Но выбор сендбоксинга x86 меня как-то удивил, странноватый такой велосипед...

Дык это (более) портабельный ActiveX. И делается с той же целью. И, надеюсь, судьба его будет примерно такой же -- маргинальное использование.

Добавление от 26.08.2009 05:17:

sip
Если у тебя миллионы строк качественного кода на C/C++ врядли ты кинешься его переписывать на Java, да и разговоры про одинаковую скорость managed и unmanaged кода - это только разговоры.

Осталось придумать ситуацию, в которой миллионы строк оптимизированного кода заливаются на клиентскую машину как веб-страница.

Напомню, ActiveX в основном использовался как способ быстро и не особо напрягаясь превратить нативный код в web-application. От всяких TestDirector AKA Quality Centre меня до сих пор мутит (и его инсталляция до сих пор, кстати, ломает FireFox). Спасибо, я лучше SilverLight загружу или там JavaFX какую...

P.S. У меня лично браузеры работают на железе трех архитектур. Ожидать, что какие-то Сандживы из Бангалора сумеют написать нативный "сайт", работающий на всех трех -- я не могу. Более того, я не уверен и за одну. И разрешу у себя исполнять этого гуглонативного клиента только за большие деньги. И под VirtualBox.

216. sip, 26.08.2009 05:54
dozen

Осталось придумать ситуацию, в которой миллионы строк оптимизированного кода заливаются на клиентскую машину как веб-страница.

Ну и в чём проблема ? Они же не текстом заливаются Например декодер видео потока, архивация, криптография, rule engine какая-нибудь, 3d engine. И будет клиент загружен по самое не хочу. Не нужно свой негативный опыт с ActiveX возводить в абсолют. Никто ведь не говорит о сайте на нативном x86. Если у тебя на сервере unmanaged код появляется возможность запустить его на клиенте без особого напряга, другой вопрос, что сейчас так не принято.

217. dozen, 26.08.2009 06:26
sip
Ну и в чём проблема ? Они же не текстом заливаются Например декодер видео потока, архивация, криптография, rule engine какая-нибудь, 3d engine. И будет клиент загружен по самое не хочу.

Проблема, разумеется, не в объеме, а в том, зачем, собственно делать приложение, требующее предельной оптимизации, веб-приложением?

Видео-поток? Рожать целую архитектуру дыр ради того, с чем прекрасно справляются плагины для браузера? Зачем? (Кстати, в маки стали ставить железячные декодеры H.264. Давно напрашивалось. Софт не нужен.)

Архивация? Как веб-приложение? Ну, допустим. Узкое место архиватора -- I/O, а не процессор.

Криптография? Чего именно криптуем? 100К потоков видео со спутниковых видеотелефонов? На машине каждого пользователя гугля?

Rule-engine? Вопрос тот же, что и к криптографии.

3D? Оно грузит видеокарту, а не CPU.

Не нужно свой негативный опыт с ActiveX возводить в абсолют.

Мой? Оно, какбэ, универсально признано опасной технологией. В частности потому, что простого способа создать sandbox, как планирует гугль, нет. Это ван не SecurityManager в Java Applet -- выйдет какая-нибудь модификация от китайцев Индел Кора Дуба по доллару за коробку, навыпускают с нею дешевых нетбуков, а потом всех сразу отымеют -- потому что у них там какая-то инструкция имела интересный side-effect, через который и пролезли.

Правильный путь -- это развитие JIT и исполнение в реальном sandbox. Но у гугля нет на это задела, а 20% времени и спермотоксикоза куда-то девать надо, вот и рожают уродцев. Как там, кстати, Google Wave уже перестали будущим коммуникаций обзывать?

218. arsa, 26.08.2009 06:45
dozen
по моему wave протокол очень даже ничего, наконец реальная замена smtp (плюс сворачивание IM и email в один протокол - по моему тоже хорошо).
только боюсь все таки может у них не получиться сделать его популярным. тогда будем продолжать бороться со спамом...

ну конечно насчет 20% времени правда, но по этому там важное значение придают анализу использования и прикрывают дохлые продукты своевременно. 20% решает с одной строны проблему скуки, с другой дает какие то уникальные разработки. в MS например другая стратегия по этому поводу - там такие вещи делают в ms research, в основном.

219. sip, 26.08.2009 07:19
dozen
Ты десктопным софтом вообще не пользуешься? Или у тебя весь десктопный софт managed? Просто появится возможность делать более мощные web приложения, не будет деления на web и desktop. А нативный x86 нужен как временная(а может и не совсем временная ) подпорка для тех же Silverlight апплетов. Netbook на ARM'e представить можешь? Как думаешь, скорость Mono на такой архитектуре будет сопоставима с оптимизированным C++ бинарным кодом?

Rule-engine? Вопрос тот же, что и к криптографии.
3D? Оно грузит видеокарту, а не CPU.

Ты когда-нибудь видел толстого клиента к корпоративной базе данных? Если видел, то к чему эти вопросы зачем то да это нужно на клиенте И потом 3d таки неслабо грузит CPU.

220. moderator-Kid, 26.08.2009 08:06
zzf
Вы, эта,... не реагируйте с таким пылом пожалуйста. ВР ведь только того и надо. Не нужно этого. Берите пример с ivanhoe.

221. arsa, 26.08.2009 08:12
sip
скорость Mono на такой архитектуре
ну например скорость python на N800 (который как раз ARM) вполне ничего. многие программы на нем и написаны.

вопрос тормозов на самом деле действительно в библиотеках графики (2D и 3D) - и это дело в вебе постоянно пытаются решить, начиная с java апплетов, activex и J++ с его WFC, и кончая нынешней итерацией flash/silverlight/dhtml. соглашусь с dozen, что любые lock-in пускай остаются нишевыми (хотя конечно с silverlight/moonlight неплохо получается, в отличие от единственной нормальной реализации flash-а), а mainstream должен использовать стандарты и поддерживать разные его реализации.

конечно нужно разделять типы приложений, например вполне было бы не плохо портировать Пикасу на этот Google Native Client - по моему идеально подошло бы. С другой строны, 99.9% бизнес приложений вполне обойдутся dhtml (это уже мой собственный опыт)

222. dozen, 26.08.2009 08:17
sip
Просто появится возможность делать более мощные web приложения, не будет деления на web и desktop.

Ответь на вопрос -- зачем нужны "более мощные веб-приложения"? Я бы еще понял, если бы минусов не было, а так -- дыра во весь комп, да еще и не портируемая. И потом, у нас уже есть ActiveX, зачем нам еще одно такое же г?

А нативный x86 нужен как временная(а может и не совсем временная ) подпорка для тех же Silverlight апплетов.

Так он уже и так есть. В виде плагина. Чем плохо?

Как думаешь, скорость Mono на такой архитектуре будет сопоставима с оптимизированным C++ бинарным кодом?

Думаю, да, а что? В смысле, кто ж на нетбуке числодробилки гонять будет? А офисные прилады -- от плюсовых не отличить по скорости. По памяти -- отличить, но память дешевая.

Ты когда-нибудь видел толстого клиента к корпоративной базе данных? Если видел, то к чему эти вопросы зачем то да это нужно на клиенте

Хакал буквально сегодня. Зачем нужен нативный код там -- не понимаю ни разу. Оно 90% времени ждет ответов от разных систем.

Основное преимущество веб-приложений -- автоматическое обновление, то есть снижение стоимости поддержки (ну, в теории; версии браузеров тут подкинули проблем, но ситуация исправляется). То есть вебом занимаются тогда, когда поддержка -- это большАя часть затрат. А когда нужна числодробилка, сдается мне (см. IMHO), структура затрат другая (железо -- дороже, затрат на оптимизацию -- в разы больше, вплоть до месяцов вылизывания одной функции). Соответсвенно, выкладывать такую числодробилку как веб-приложения смысла мало -- никто выигрыша и не заметит.

223. sip, 26.08.2009 08:25
arsa


С другой строны, 99.9% бизнес приложений вполне обойдутся dhtml (это уже мой собственный опыт)
Меня всегда удивляют утверждения с 99.9%, но не забывай - это твой персональный опыт. Если ты делаешь такие утверждения, неплохо бы сразу огласить вкратце свой послужной список, а то иначе звучит как "а вы поезжайте в Киев и спросите, кем был Паниковский до революции". Такое впечатление, что мы живём в идеальном мире и проблемы legacy кода не существует вовсе.

Добавление от 26.08.2009 08:57:

dozen


Ответь на вопрос -- зачем нужны "более мощные веб-приложения"?
Я же сказал, сотрётся разница между web и desktop. Ты же сам пишешь
Основное преимущество веб-приложений -- автоматическое обновление, то есть снижение стоимости поддержки
Плюс не нужно мудохаться с каждой конкретно взятой рабочей станцией. А то Citrix сервер умирает от нагрузки, а 30 радостных 2-х и более гигагерцевых клиентских компа с него только экраны показывают.

И потом, у нас уже есть ActiveX, зачем нам еще одно такое же г?
Не надо уподобляться отдельным личностям в этой ветке, ты не знаешь г... это или нет. Спроси google зачем они это затеяли, и наверное про недостатки ActiveX они в курсе, как думаешь? Насчёт дырявого и не настоящего sandbox'a - ты VMWare видел?


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


Хакал буквально сегодня. Зачем нужен нативный код там -- не понимаю ни разу. Оно 90% времени ждет ответов от разных систем.
Клёвый тебе софт достался У меня 90% не ждёт и к моему глубокому сожалению - он в основном unmanaged. Мне как, всё срочно бросить и переписать работающую систему с нуля А пользу от native client я вижу, мне это позволит съэкономить на развертывании системы и поддержке клиентских мест.

Соответсвенно, выкладывать такую числодробилку как веб-приложения смысла мало -- никто выигрыша и не заметит.
Я сам не фанат толстого клиента, потому и начал в эту ветку писать. Отлично понимаю преимущества тонкого клиента, но слегка обидно смотреть, как гора процессорного времени на клиентах пропадает зря вот и решил уточнить, может я что-то в новомодных течениях упустил.

224. Vladimir Rybinkin, 26.08.2009 09:01

jooher
цитата:
Можно поросить Вас таки в одном архиве выложить все файлы требуемые для того, чтобы что-то работало?
Все, что я выкладывал - это и есть "то самое". И в одном архиве. И самые свежие версии. Больше я к ним не возвращался - незачем.
цитата:
Я готов попробовать поправить ваш код, чтобы он работал в современных реалиях.
В чем проблемы-то? Весь код там и лежит.

SERGEY_BIG
"Актуальная задача поиска и сортировки" решена, и я прям в той ветке говорил, что решение меня ПОЛНОСТЬЮ устраивает. Месье тоже невнимателен. Впрочем... поройтесь, ребятки, поройтесь. Даже если и ничего не откопаете - все равно не повредит.

loyolla
цитата:
Не работает больше.
Ну и дурак! Впрочем, не всем же быть Кавендишами. Если он СОВСЕМ молодой - это печально. Сейчас-то ему еще ПРОСТО ЖИТЬ интересно, но если лет за пять не одумается - к тридцатнику повесится. Я не Нострадамус (или я уже говорил?), но здесь ошибиться сложно. Вон - Кен Томпсон - наскоко я знаю, тоже чуть не студентом себе зарплату на всю жизнь заработал. И... продолжал работать, как лошадь. Результат (через довольно много лет) мне довелось видеть - ПОТРЯСАЮЩИЙ... самец! Даже молодые бабы, глядя на него, явно в оргазм впадали. Джины потертые, рубаха навыпуск, бородища, взгляд... Вот он, счастливый человек! А этот мальчик (кстати, показателен сам термин!), подозреваю, вызывает скорее материнские слезы. Бабы, конечно, дуры, но чутье у них ФАНТАСТИЧЕСКОЕ!

jooher
цитата:
я почемуто сомневаюсь, что он знает как выцепить хтмл маркап из генеренной скриптом странички.
Умница! Понятия не имею! Не знаю даже, что это такое и, главное, за каким хреном это нужно.

dozen
цитата:
Некоторые живут, чтобы работать. А некоторые работают, чтобы жить. Я стараюсь -- второе. Работа необходима. Если она доставляет удовольствие -- еще лучше. Но она -- не самоцель в жизни.
И слова-то правильные гутаришь - правда? И даже не представляешь, какая это ЧУШЬ СВИНЯЧЬЯ! Но я просто не знаю, как тебе это можно объяснить (да и не верю, что вообще можно). Вот ща я поеду к родителям на дачу из земли чего-то выковыривать - я это дело с детства ненавижу! А для них - наоборот: это и есть отдых. А глядя на них...

rGlory
цитата:
Обана, а чего это оператор -> не используется?
А на кой, простите? На кой плодить новые сущности? Он прекрасно функционировал за тыщу лет до своего появления на свет. Синтаксис удобнее? Кому как. Большинству ваще по барабану.

ivanhoe
цитата:
Владимир, а зачем, если не секрет, все эти навороты?
Где Вы умудрились увидеть навороты?! Ни библиотек нет, ни даже 90% конструкций самого JS - ни хрена!
цитата:
Вот большинство сайтописателей...
...рисуют и поддерживают свои несчастные пару-тройку десятков-сотен-тысяч страниц - и только. У меня же - СУБД. Если я пожелаю, чтобы меня кто-то там индексировал - ЛЮБУЮ часть ее узлов могу выложить в статику - тыщу лет как проверено и отлажено. А не пожелаю - пущай попробуют саму БД "индексировать".
цитата:
Какая стоит цель...
... мне уже осточертело повторять.
цитата:
Если код пишется человеком (а не представляет собой выхлоп какого-то автогенератора), то он по определению пишется для человека, в частности чтения его человеком.
Умница! А если код пишется генератором, то не ЭТОТ код, а как раз код ГЕНЕРАТОРА "по определению пишется для человека, в частности чтения его человеком".
цитата:
Дело в том, что худо-бедно у меня показываются все страницы, кроме Вашей.
Правильно. Вот когда AJAX-овцы допрут, наконец, ЧТО они сделали... Вот тогда и кинетесь "рыскать по помойкам". Боюсь только, поздно уже будет.
цитата:
Это "дерьмо" он передает по каналам связи.
Дык об чем тогда разговор? До "каналов связи" мне, ессно, дела нет - мне нужна математика, способная САМОСТОЯТЕЛЬНО сгенерить и это дерьмо, и другое, а не бегать к мамке клянчить каждую копейку.
цитата:
Посмотреть что поступает на входе можно при помощи программы WireShark
Тьфу ты, Господи! Ну что мне теперь - ставить ее, изучать... Если Вы все умеете - скиньте любую из страниц этой ветки в аттач - и дело с концом! Нешто так трудно? Вона скоко я вам виртуальных страниц 3-го теста выложил - и не сосчитать!
цитата:
Я их несколько не боюсь, просто без указателей мне лично программируется быстрее и эффективнее.
Я об чем и говорю.
цитата:
Спасибо за примеры, но мощи особой (никакой) в подобных конструкциях не чуйствую.
Я об чем и говорю. Надо же так обосрать один из мощнейших операторов, да еще из самого сердца SINT...
цитата:
Правильное проектирование это когда программа расширяема.
Ай, молодца! Неужто это камень в огород SINT?!
цитата:
В вашем копировании самое интересное это обработка.
Да?! Я сроду там ничего интересного не видел. И чо же такого "интересного" Вы там умудрились найти? А вот пример с указателем на функцию интереса как раз и не вызвал. А ведь это, батенька, вызов методов класса "функция" был - ваш Страуструп, наскоко я помню, вообще других и не знал (в SINT еще 3 класса методов).
цитата:
Допустим, у Вас в эту функцию копирования встроено n обработчиков
Нет, родной мой - НИ ОДНОГО там нет! Что занимательно - И НЕ БУДЕТ! Тем не менее - Вы правы: "она успешно выполняет свою задачу".
цитата:
Для этого вам понадобится править код вашей мегафункции копирования.
О-хо-хо, Ваня! Что тут скажешь? Детский сад... Я очень рад, что Вы участвуете в разговоре, но иногда... полное ощущение, что Вы просто самое большое и красивое во всем этом форест.
цитата:
В Haskell строка представляет собой бесконечный поток неизменямых символов.
Ну, и в SINT... стоп! Почему это непременно "неизменямых"?! Почему это непременно "символов"?!
цитата:
Копирование этого потока представляет собой тождественную функцию.
Откуда, куда, что, с каким преобразованием? Где ЭТО все лежит?
цитата:
Допустим, нам надо обрабатывать этот поток построчно.
Кому? Копированию?!
цитата:
process_line str = -- что-то там такое хитрое делает
Ну и на здоровье! Пущай себе делает - копированию-то до этого какое дело?
цитата:
Копирование" с обработкой...
Ха-ха-ха! Это же КОД, батенька! Ща... Кто-то мне тут давеча пургу гнал про "неизменяемый код и переменные данные"... КТО, ПРОСТИТЕ?! Так, хорошо... И что же случилось с тех пор?
цитата:
Здесь имеем "конвейер из трех" компонент:
Тихий ужас! У меня "реляционный" Синдбад тоже "кортежи" БД поэлементно (а не построчно, кстати ) обрабатывает. Так копирование об этом ваще не подозревает - копирует себе - то из файла в ОЗУ, то наоборот, то ОЗУ-ОЗУ, то обработку какую-то выполнит...
цитата:
Теперь предположим, что входной поток заархивирован архиватором gzip.
Еще раз: копированию-то какое собачье дело?! У нее есть HI - хто там под ним прячется, тот пусть и выкручивается, как знает! Пущай разбирается со своим .ZIP - может, кстати, ту же COPY на помощь звать - там где-нить, "во глубине сибирских руд", то бишь программного стека. А у ЭТОЙ COPY ты СЛУГА, хендл, смерд вонючий, и никого здесь НЕ ИНТЕРЕСУЕТ ни хто ты ваще такой, ни твой скулеж про твои поганые проблемы - марш отседова, и шоб входной поток был обеспечен! На блюдечке с голубой каемочкой!
цитата:
Короче говоря, при правильном проектировании дается возможность разбить алгоритм копирования на несвязанные блоки и дать возможность их комбинировать.
И в чем проблемы? Какой такой алгоритм бить собрались? Уж не COPY ли хотите разметелить? А с чем останетесь? Не-а, Ваня, это "Вот как-то СОВСЕМ НЕ так".
цитата:
Ну как-то слабоаргументированно.
А что здесь можно аргументировать, если ВООБЩЕ НИЧЕГО не понимаете? Перечитайте, вопросы позадавайте, что ли... Я же русским языком говорил: ПРИНЦИПИАЛЬНО невозможно избежать "неполноценного" кода! Что забавно - И НЕ НУЖНО!
цитата:
Кизуб это, конечно, голова, только вот он думает о происходящем в недрах как разработчик JVM
Вот и я - как разработчик СУБД.
цитата:
Можно подумать сложно было раздавить.
Это, батенька, СЕЙЧАС! А скажи Вы такое за годик до его появления... Ох, и поиздевались бы над Вами! DEC, кстати, вообще ни при чем: дело было вовсе не в менеджерах.
цитата:
работа нужна чтобы отдыхать от семейной жизни.
Умница! Смотри, dozen, как у Вани все легко и весело! Никаких жертв ни для чего не приносит: ни живет, чтобы работать, ни работает, чтобы жить. Он просто живет - и там, и там.

rGlory
цитата:
В данном случае по ней можно сказать, что писал питекантроп, привыкший игнорировать любой опыт, кроме своего, любимого.
Именно это, дорогой, именно это! И насчет "Да кстати, пропустил" тоже согласен. Целых два предложения перед "Свободу попугаям!" Аналогичными причинами вызвано появление "перевалочной" переменной Addr во втором операторе, которая сама по себе никому на фиг не нужна.

ivanhoe
цитата:
На самом деле код Владимира очень сильно похож на то как раньше писали для бортовых ЭВМ
Браво, Ваня! Меня как раз и включили в соавторы бортовой ОС - до сих пор чо-то капает...
цитата:
которые программировали до сих пор ездящие танки, летающие самолеты и пр.
Танков - не программировал, а "и пр." (летающее) - доводилось.
цитата:
и эти самые старшие товарищи перестроились под новые задачи и средства разработки, когда нужно чтобы программа была переносима-масштабируема-расширяема и пр.
Умница (частично): "товарищам", как правило, все равно, что там за "задачи и средства разработки", программы у них (если это возможно в принципе) всегда были "переносимы-масштабируемы-расширяемы и пр.", а все "переходы" занимают считанные дни. Юра Шпеер - яркий пример: свободно пишет для всего, что в принципе исполнять код может, и с некоторым усилием - для того, что в принципе исполнять код не может.

rGlory
цитата:
А вообще одно из первых правил, которые даются начинающему программисту С/С++:
Лапочка, дык то ж НАЧИНАЮЩЕМУ. Прикладной уровень SINT, проще говоря - изучайте, пользуйтесь - правила вполне себе хорошие. В инструментальном же имена модулей начинаются на "_", в системном - на "__". Очень удобно (если прикладник эти правила соблюдает, ессно). Шурупен зи? Впрочем, Вы вольны называть "этот стиль" как Вашей душе угодно - в этом вопросе мне даже интересно Ваше мнение.

225. SERGEY_BIG, 26.08.2009 10:23
Vladimir Rybinkin
"Актуальная задача поиска и сортировки" решена, и я прям в той ветке говорил, что решение меня ПОЛНОСТЬЮ устраивает. Месье тоже невнимателен. Впрочем... поройтесь, ребятки, поройтесь. Даже если и ничего не откопаете - все равно не повредит.
Как уже говорил выше, дискуссия с топикстартером закончена. Идёт прямая констатация фактов. На всякий случай зыкладываю ещё раз ссылку с релевантным названием страницы sortir.htm (http://www.2bit.ru/sortir.htm) и цитирую текст:
"Готовая программа сортировки будет лежать здесь (http://www.2bit.ru/sortir.zip) , свои замечания (пожелания, благодарности, восторженные отзывы ) можно писать сюда. "
По ссылке - файл с программой отсутствует, из чего мной был сделан вывод, что программа ещё не готова.
Так где же правда?

226. zzf, 26.08.2009 10:56
femidav
Править не надо, надо взять jQuery и не тратить время на ерунду.

Или Dojo.

Добавление от 26.08.2009 10:57:

Vladimir Rybinkin
Все, что я выкладывал - это и есть "то самое". И в одном архиве. И самые свежие версии.

Маэстро, все три самые свежие?

227. evilbloodydemon, 26.08.2009 12:02
Vladimir Rybinkin
Вот большинство сайтописателей...
...рисуют и поддерживают свои несчастные пару-тройку десятков-сотен-тысяч страниц - и только. У меня же - СУБД.


ну так у них как бы тоже не хвост собачий.

228. jooher, 26.08.2009 13:57
evilbloodydemon
ну так у них как бы тоже не хвост собачий

Слово "тоже" тут неуместно, потому как у ВР то как раз видимо этот хвост только и есть (http://www.2bit.ru)

229. Vladimir Rybinkin, 26.08.2009 14:36
jooher
цитата:
Вообще наверно темы ВР надо автоматом при создании в флейм перемещать.
А я ее не здесь и создавал. Это модератор ее сюда перекинул - думал, видать, что здесь программисты... Впрочем, это dozen виноват - это он вещал, что "там энтузиасты всё в подробностях дяде Вове объяснят".

sip
цитата:
Такой подход с F5 неплох для случая, когда данные клиенты только читают.
Что за бред?! Какое серверу дело, чо они там делают?
цитата:
Если они их конкурентно модифицируют, то ситуация иная.
АБСОЛЮТНО та же самая! Представьте хотя бы такой вариант: пока один из клиентов модифицированные данные ПОСЫЛАЛ, другой (по более толстому каналу) его опередил. Это НЕ "проблема сервера", он все спокойно принять МОЖЕТ. А уж "радостно посылать"... Кто ж на такой сервер ходить-то будет? Вы, бедолага?
цитата:
Это плохой ответ.
А мне - ндравится!(с) Нет, это не мой ответ "плохой", это Ваш глупый. Допустим, на сервере ответ получен за одну миллисекунду. А на клиенте - страшно сказать - в 1000(!!!) раз дольше считаться будет! Так вот: лично я - потерплю.
цитата:
Плюс ещё и дизайн приложения будет сложней, так как нужно закладывать возможность считать одни и те же вещи как на сервере, так и на клиенте.
Это... шедевр! Без комментариев.
цитата:
Я не вижу простого пути, как создать динамически масштабируемое приложение.
Ну дык ПОЧИТАЙТЕ ВЕТКУ-ТО!
цитата:
А если серверная и клиентская части вообще на разных языках/платформах реализованы ?
Меня просто умиляют все эти ужасы!
цитата:
Явно проще тупо нарастить серверную часть и вообще на клиенте ничего не считать, а только визуализировать результат.
Кому? Клиенту? Дык так все и делают. Ну, не ветку - так хотя бы ТЕМУ ветки читали?
цитата:
может есть красивый способ делить стадии расчётов между сервером и клиентом.
Таких "красивых способов" миллиен! 0 < x < 100%, y = 1000;

штышпре
цитата:
у Владимира есть свойство пренебрежительно относиться к чужому опыту, и это вполне понятно
Конечно, понятно! Рустам иногда пробегает, но сюда не заглядывает, зараза. Kizub, Kirpa, ndemia, berserk и прочие ваще исчезли - откуда ж "чужому опыту" взяться? Или там "множеству мыслящих рационально людей"? А для "недоумевающего большинства" - оно, конечно...
цитата:
если ВР не читать, и фильтровать ругань, вполне годные темы получаются.
Дык уперед! Что ж вы, как стадо, ПО МОИМ веткам шляетесь? Получайте себе свои "вполне годные темы" - я что, запрещаю?

ivanhoe
цитата:
Напоминаю, что речь шла о том, будут ли поисковики индексировать ваши тысячи и миллионы виртуальных страниц.
Вот именно! Я и был просто В УЖАСЕ от того, что об этом вообще может "идти речь"!
цитата:
проще, говоря, поисковые системы искать в ваших виртуальных страницах не будут.
Слава те! Консенсус?
цитата:
Ну это уж Вам решать, хозяин, как говорится, барин.
Вот я и решаю: сочту нужным - будут индексировать, нет - пошли на...
цитата:
Если содержание представляет собой дерьмо...
А при чем здесь вообще содержание? Если оно дерьмо - все претензии к юзерам ихних БД.
цитата:
то можно это содержание отдавать в виде нагромождения JS и виртуальных страниц.
А не проще будет ВАЩЕ НЕ ОТДАВАТЬ? Как мыслишка?
цитата:
то поисковикам надо отдавать его в виде обычного HTML.
Первая здравая мысль за весь пост (пока, во всяком случае).
цитата:
В упоминаемом dozen GWT eval используется.
Ну, после приведенной диагностики dozen может вообще больше ничего не "упоминать".
цитата:
И, как это ни странно, но gwt (включая всякие там ext-gwt) мой браузер как раз кушает.
Абсолютно ничего странного! Кушает он лишь то, что ему ПОЗВОЛЕНО кушать, чем его кормят с ложечки. А чтобы сам ненароком не скушал чего другого, ему все зубки-то и повыбивали.

dinozaur
цитата:
За такие безответственные высказывания надо вешать на ближайшем суку.
Серьезно? А почему, собссно? Самостоятельно "вывести аудиторию из пребывания во тьме" способны? Али "ключевыми словами" будете отмахиваться?

dozen
цитата:
но если юзер что-то менял, то создавалась приватная запись.
О! Лет ...дцать назад мы здесь это обсуждали. Начинает и до народа кое-что доходить...
цитата:
Я лично не знаю никого, кто так делает.
Именно! Потому-то я ветку и завел...
цитата:
Слишком много геморроя. Цена разработки...
Пральна! Зачем же "геморрой, цена разработки (и тестирования с поддержкой)"? Для тебя вопрос цены ваще, я вижу, жутко болезненный - блокировка на уровне подсознания, видать...

jooher
цитата:
Удивляет как раз не Владимир - у него-то позиция четкая и последовательная. Удивляет наивная настойчивость людей, пытающихся что-то ему объяснить.
Какая прелесть! Браво! Что ж сами-то не следуете столь чудным советам?

dozen
цитата:
Просто его ... мгм... спорные утверждения должны быть опровергнуты хотя бы ради молодых, читающего ветку.
КЕМ, лапочка?!

ivanhoe
цитата:
Справедливости ради, убедить Владимира все-таки можно. По крайней мере пару случаев припомнить могу.
Вау! Спасибо, дорогой!

jooher
цитата:
Вы один из избранных, чьи посты ВР читает и даже что-то отвечает.
Надо же! Не думал, что это так заметно... В любом случае, это правда.
цитата:
Не могли бы Вы попросить его выложить одним архивом весь его проект в том виде как он работает у него на ИЕ3 ?
Ну, хорошо: это было еще ДО моего предыдущего ответа. А сейчас какие отмазки пойдут?

dozen
цитата:
Во всех предыдущих ветках подобные попытки с презрением отвергались Мастером.
Точно! Как и в этой - прям не отличишь!

ivanhoe
цитата:
Правда там еще можно будет запустить СИНТ, с всеми его меню и палитрами!
Умница! У SINT все уровни (кроме аппаратного) и знать не знают, на чем они работают.

zzf
цитата:
Но, видимо, всё равно "не шмагли".
Понятно. Опускаем разработчиков, но другим способом. Очень правильно!
цитата:
Повторяю специально для тебя, дружок:
Не, для меня не надо - я ни памятью, ни вниманием пока что не обижен.
цитата:
Ну а если нет, то к чему был следующий пустозвон:
А вот как раз к тому редкому случаю, за который нужно яйца отрывать.
цитата:
Как мило ты сливаешь, дружок. Отвечаешь, а вопрос не цитируешь. Ну я напомню:
Нет, не нужно - я предполагал все же, что хоть СВОЙ СОБСТВЕННЫЙ вопрос чел в состоянии помнить? Нет, то был ответ на вопрос: "Это чтоли?"
цитата:
Опять ЛОЖЬ. Для чего чекбоксы и выпадающие списки в сгенерированных руками страницами ты не рассказывал.
Лапочка, наберите в поисковой строке: "В общем, понажимайте - думаю, там все прозрачно", и почитайте от слов "Некоторые пояснения" до этой фразы.
цитата:
Ну тут ты тоже лоханулся. Менделееву эти таблицы приснились первому.
Каюсь, лоханулся. То, что мне отнюдь не таблицы снились - это, видать... Так, ладно: вижу - не помогло. Вернее - не в ту сторону (чтобы заткнуться). Жаль. Ликбез же проводить на тему "Как же они попадут к клиенту, чиорт побьери" или "что там такое r" - много чести. Да и грамматические ошибки меня с детства раздражают, не говоря уже об остальном. Бай!

femidav
цитата:
Править не надо, надо взять jQuery...
Query-то здесь при чем?! Естественно, "подход абсурден" - как же иначе?

dozen
цитата:
У меня лично браузеры работают на железе трех архитектур.
Работают, г-ришь?
цитата:
а так -- дыра во весь комп
Дырой больше, дырой меньше - какая разница? Повторяю: вся математика - одно большое решето.
цитата:
Зачем нужен нативный код там -- не понимаю ни разу.
Хм. А ведь иногда и умные мысли говорить могешь... Или слышал от кого?

230. sip, 26.08.2009 15:06
Vladimir Rybinkin

он все спокойно принять МОЖЕТ.
И что он с кривой фигней будет делать? Ты если начал фразу, так заканчивай внятно, тут телепатов нет.

Так вот: лично я - потерплю.
Всяческих успехов тебе в этом нелегком деле Не забудь что-нибудь раритетное себе на клиент поставить, чтоб уж точно до пенсии хватило ждать

Кому? Клиенту? Дык так все и делают. Ну, не ветку - так хотя бы ТЕМУ ветки читали?
Ты что думаешь, одного тебя читать научили, гениальный ты наш

Таких "красивых способов" миллиен! 0 < x < 100%, y = 1000;
Вау! Сразу видно великого алгоритмиста в деле. Говоришь для чего-то летающего софт ваял

231. jooher, 26.08.2009 15:24

sip
Говоришь для чего-то летающего софт ваял

Вот помнится, когда-то мы с Сережей Королевым для "Востока" систему управления полетом програмили...
За это сообщение сказали спасибо: dinozaur

232. dozen, 26.08.2009 17:50
sip

Я же сказал, сотрётся разница между web и desktop. Ты же сам пишешь
Основное преимущество веб-приложений -- автоматическое обновление, то есть снижение стоимости поддержки... Плюс не нужно мудохаться с каждой конкретно взятой рабочей станцией. А то Citrix сервер умирает от нагрузки, а 30 радостных 2-х и более гигагерцевых клиентских компа с него только экраны показывают.


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

Ну так разве ActiveX -- это не оно самое? (Его я и имел в виду под "плагином к браузеру").

Что касается защиты процесса уровня VMWare -- звучит feasible, но VMWare защищает на уровне предоставления целой виртуально OS. А у гугля защита на уровне инструкций процессора, а все API выше этого -- открыты. Сколько в тех API багов, через которые можно вломиться? Более 9000.

Так что я пешком постою.

Ну, и я считаю ориентацию на нативный код -- шагом назад. Примерно как писать ассемблерные вставки в С++ коде.

233. jooher, 26.08.2009 18:54
dozen
А то Citrix сервер умирает от нагрузки, а 30 радостных 2-х и более гигагерцевых клиентских компа с него только экраны показывают

Этот naclgrid - какое он вообще отношение имеет к браузеру? Разве это не идеологический аналог bitTorrenta (с разницей, что тот объединяет дисковые и bandwidth ресурсы, а этот - вычислительные) ?

Какой смысл вот в этом? :
цитата:

upload your task on the server, ask your employees to browse a special webpage when they leave their desks and you're done
Почему бы просто не предлагать людям ставить себе службу - клиента, предоставляющего избытки процессорного времени в общий котел?

[upd]
... ааа, пон... не о нем речь....

234. rGlory, 26.08.2009 18:54
Vladimir Rybinkin
цитата:
А на кой, простите? На кой плодить новые сущности?
Ну так я об этом и говорю, на кой плодить скобочки и делать код нечитаемым, когда для этого есть соотвествующие операторы языка. И про оператор += Вы скромно умолчали, не так ли?

цитата:
Он прекрасно функционировал за тыщу лет до своего появления на свет.
В анналы, адназначна

цитата:
Синтаксис удобнее? Кому как. Большинству ваще по барабану.
Большинству Владимиров Рыбинкиных? Я бы не стал экстраполировать Ваши взгляди на кого либо другого, тем более на большинство, поскольку Вы уникум.

цитата:
Лапочка, дык то ж НАЧИНАЮЩЕМУ.
Ну да. А Вы кто в С/С++ простите?

цитата:
Прикладной уровень SINT, проще говоря - изучайте, пользуйтесь - правила вполне себе хорошие.
Изучать и использовать?!! Да не дай Бог! Чтобы и мне таблица Менделеева 10 раз снилась? Здоровье дороже.

235. lvqcl, 26.08.2009 19:19
rGlory
Чтобы и мне таблица Менделеева 10 раз снилась? Здоровье дороже.

цитата:
Оказывается, Леонардо да Винчи не только изобрел танк и вертолет, но и приснился Менделееву, переодетый таблицей.

236. dozen, 26.08.2009 19:43
jooher
Этот naclgrid - какое он вообще отношение имеет к браузеру? Разве это не идеологический аналог bitTorrenta (с разницей, что тот объединяет дисковые и bandwidth ресурсы, а этот - вычислительные) ?

Я про http://code.google.com/p/nativeclient/ размусоливал.

237. rGlory, 26.08.2009 19:48
lvqcl

Боюсь даже представить, во что переоделся Леонардо, когда приснился Владимиру, да еще и 10 раз.

238. jooher, 26.08.2009 20:54
про http://code.google.com/p/nativeclient/[/i]

sip
Спроси google зачем они это затеяли, и наверное про недостатки ActiveX они в курсе, как думаешь?

А зачем они затеяли Хром? Наличие Мозиллы (и всего остального) как и наличие АктивХ для гугла не повод что-то не делать, а повод прийти, надавить репутацией и прибрать себе развитый рынок. Nativeclient это вообще похоже на подготовку почвы к внедрению, например, собственной оси.

239. dozen, 26.08.2009 21:02
jooher
а повод прийти, надавить репутацией

c хромом, IMHO, они репутацию скорее потеряли...

240. Витька, 26.08.2009 21:47
jooher
Не могли бы Вы попросить его выложить одним архивом весь его проект в том виде как он работает у него на ИЕ3 ?

По ссылке
http://forum.ixbt.com/post.cgi?id=attach:26:39751:15:1
5 файлов:

a.j
b.j
i.j
index.htm
a.h

Это последний и единственный вариант, активный, и отягощённый данными.

Оно работает, как один проект, в IE 5.50 (проверил).
Только там надо догадаться, кликать по надписям, и буквам.
Тормозит жутко. Не исключено, что там есть какая-то своя логика.

241. Gipnoss, 27.08.2009 00:15
Витька
Тормозит жутко
Клиент заставлен, цель достигнута...

242. sip, 27.08.2009 00:54
dozen

Ну так разве ActiveX -- это не оно самое? (Его я и имел в виду под "плагином к браузеру").
Ну в общем да, только есть надежда, что будет более безопасным и с лучшей репутацией в целом.
Как-то так: Google contends that NaCl's advanced code validation features and sandboxing make it significantly more secure than similar technologies, such as ActiveX.
Плюс они соревнования устраивают на тему "поломать": http://code.google.com/contests/nativeclient-security/

243. dozen, 27.08.2009 04:05
sip
Плюс они соревнования устраивают на тему "поломать": http://code.google.com/contests/nativeclient-security/

Тип находимых (http://code.google.com/p/nativeclient/issues/detail?id=60) багов не вселяет в меня надежды на скорое достижение rock-solid security.

Ну, и соревнования -- это хорошо, но реальный взлом пойдет, когда оно будет в продакшене. Пока это "хорошие парни, знающие плохие слова" развлекаются...

244. sip, 27.08.2009 04:24
dozen
Поживём увидим, но всё-таки как-то ты очень негативно настроен

245. Vladimir Rybinkin, 27.08.2009 10:24
All
Попробую-ка я еще разок изложить проблему. Но вначале - небольшое вступление.

Я обращаюсь главным образом к молодежи - школьникам, студентам. К той самой молодежи, которую здесь так ревностно "оберегают" от моего нехорошего влияния. Не верьте! У меня нет ни малейшего желания на вас как-то "влиять" (как раз наоборот), да и оберегают они вовсе не вас, а свою собственную задницу. Свой статус якобы программистов, якобы профессионалов. Это неправда: они вовсе не программируют, они ДЕНЬГИ ЗАРАБАТЫВАЮТ. Статус у них измеряется лишь расстоянием от кормушки, а хрустальная мечта всей жизни - получить корыто в свое личное распоряжение, чтобы не приходилось каждый раз прорываться к похлебке сквозь толпу таких же зверенышей. Однако "корпоративные интересы" заставляют их объединяться в стаи: пуще огня они боятся любой свежей мысли - даже не из своей "профессиональной" зоны - ибо каждая такая мысль есть риск вскрытия факта полного отсутствия оных в их собственных головах. На такие мысли они дружно набрасываются всей толпой.

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

1. Для "подтверждения" своих... мыслей они тычут пальцем в мегатонные доки, которые они якобы изучили (или хотя бы читали). Например, в трехтомник Кнута. Однако в последнее время (видимо, нарвавшись пару раз на тех, кто этого самого Кнута все-таки читал) предпочитают ссылаться на некие абстрактные "учебники" или там "документацию". Профессионал же не позволяет себе подобного НИКОГДА - он просто не умеет этого делать.

2. Они трусливы: своего личного мнения они не имеют, и отождествляют себя с толпой, используя при этом "ключевые слова" типа "всех", "всегда" и т.п.

3. Они никогда не кусают "своих", даже за совсем уж неприличные глупости. Здесь есть, правда, два исключения: "паханам" это дозволено. Но быть паханом опасно: поверженного вожака с наслаждением разрывает на куски вся свора (второе исключение).

4. Основное внимание они обращают не на тему, а на автора (одно время мне было забавно наблюдать за всплесками интереса к нашему сайту). У автора выискиваются разные "козюлины" с тем, чтобы сказать: как может этот идиот, который даже [содержимое найденной козюлины] вообще что-то говорить о [название темы].

5. Они используют слэнг, который (в отличие от слэнга профессионала) чрезвычайно неустойчив, как и колебания любой моды вообще. Помнится, меня чрезвычайно раздражало, когда хлынувшая в программирование вся эта толпа дружно начала чего-то там "юзать". Теперь это уже неприлично (подумаешь, какой-то несчастный класс) - теперь модно скорее "либать".

6. Они мерно "разговаривают" между собой, тщательно изображая, что их круг интересов резко отличается от темы - спрашивается, чего они тогда тут делают? Время от времени какая-нить сопля имитирует демарш - дескать, ее трепетная душа не может более этого идиот[изм]а выносить. Не верьте - никуда она на фиг не денется. Правда, такой наглости, как у dozen, влепившего свою тему прямо посередине моей, я что-то не припомню.

И т.д. - вы сами легко пополните этот перечень. Вот от таких "нахлебников" мне всегда хотелось ветку очистить, но, к сожалению, побеждают именно они: ветка закрывается. После битвы поле боя всегда достается мародерам.

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

Тема этой ветки - осознать, что "комп тоже человек". Не в том идиотском смысле, когда сервер выясняет версию броузера, чтобы понять, на каком языке с ним разговаривать - это как раз позор: пусть не эсперанто, но я почти не встречал в "загранке" кого-либо, знающего английский хуже меня (в России ситуация диаметрально противоположная). Ведь никому в голову не приходит, чтобы клиент начал выяснять язык сервера, чтобы поговорить - явная дискриминация по "половому" признаку. Тема ветки иная: "клиентоцентрическая система мира", т.е. клиент - один, а серверов - много. Вот, скажем, этот форум - он кто: клиент или сервер? Он данные юзерам ПРЕДОСТАВЛЯЕТ или, наоборот, их ПОЛУЧАЕТ? Вот представьте, приходит клиент на сервер:
- Привет, чего приперся?
- Да вот, понимаешь, ищу функцию одну... У тебя нет, случайно?
- Есть, а как же! Держи. Мож, тебе еще и этих подкинуть - вон их у меня сколько?
- Не, спасибо - это я уже у твоего соседа взял.
- А данные тебе нужны какие?
- А что у тебя есть по ЭТОЙ тематике?
- Смотри...
- Так... это есть, это тоже... О! Вот это давай!
- С превеликим удовольствием!
- Кстати, а тебе ничего моего не надо?
- Не, это не совсем моя зона - к другим обращайся.
- Ну, спасибо, дорогой! Пока!
- Здрав буде, боярин!

Вот в таком вот разрезе...

246. Chippy2003, 27.08.2009 10:47
All требует контактную информацию Вашего дилера

247. Vladimir Rybinkin, 27.08.2009 15:04
sip
цитата:
И что он с кривой фигней будет делать? Ты если начал фразу, так заканчивай внятно, тут телепатов нет.
И в чем же "кривизна фигни"? Ты если начал фразу, так заканчивай внятно, тут телепатов нет.
цитата:
Всяческих успехов тебе в этом нелегком деле Не забудь что-нибудь раритетное себе на клиент поставить, чтоб уж точно до пенсии хватило ждать
Спасибо, родной. Дополнительно - за то, что усвоил, что одна миллисекунда, умноженная на 1000 - это еще недостаточно "до пенсии".
цитата:
Ты что думаешь, одного тебя читать научили, гениальный ты наш
Нет, я так не думаю, но посты ваши упорно наталкивают меня именно на эту мысль.
цитата:
Вау! Сразу видно великого алгоритмиста в деле.
Неужто я так и написал?! Там должно быть "y = 100 ПРОЦЕНТОВ МИНУС x". Так - доступно? Ваял, ваял...

jooher
цитата:
Вот помнится, когда-то мы с Сережей Королевым для "Востока" систему управления полетом програмили...
Нет, "Сережа Королев" программированием не занимался. Да и ракеты у нас разные были... Как там, кстати, насчет Я готов попробовать поправить ваш код, чтобы он работал в современных реалиях. У меня есть некоторый опыт по этой теме? Ась? Тише воды, ниже травы? То-то...

rGlory
цитата:
Ну так я об этом и говорю, на кой плодить скобочки и делать код нечитаемым, когда для этого есть соотвествующие операторы языка. И про оператор += Вы скромно умолчали, не так ли?
Да... Это не просто дерево - это ЖЕЛЕЗНОЕ дерево... Изучайте ветку, родной - авось с какого-нить раза...
цитата:
Большинству Владимиров Рыбинкиных?
Нет, окромя "глориеподобных". Я отнюдь не уникум - Я бы не стал экстраполировать Ваши взгляди на кого либо другого, тем более на большинство.
цитата:
А Вы кто в С/С++ простите?
Отсчитайте от Вашего уровня хотя бы пять ступенек вверх.
цитата:
Изучать и использовать?!! Да не дай Бог! Чтобы и мне таблица Менделеева 10 раз снилась? Здоровье дороже.
Господь с Вами, милый! Неужто я Вам SINT изучать предложу? Это я лишь про упомянутые Вами же правила говорил. Думал - безопасно, а тут сразу истерика...

jooher
цитата:
Nativeclient это вообще похоже на подготовку почвы к внедрению, например, собственной оси.
О! Вот о чем нынче мысли "программистов"! Самое печальное - ПРОГРЕССИВНЫХ программистов, которые еще способны что-либо осознавать...

Витька
цитата:
Это последний и единственный вариант, активный, и отягощённый данными.
Во-первых, здрассьте! Во-вторых, не первый раз уж мне приходится Витьку благодарить. В-третьих, "отягощённый данными" - да, пока единственный, но им бы хоть с ПЕРВЫМ, "не отягощенным" тестом вначале как-то разобраться! В-четвертых, чтобы особо не "догадываться" (я об этом уже говорил), достаточно в нужных местах добавить FONT COLOR="#'+b.p.l+'". dozen тут гнул пальцы по поводу CSS - гнул, гнул, да так и утух. Впрочем, кто бы сомневался? Ладно, ща сам сделаю. Вот он, тест третий, "модернизированный" (см. аттач) - теперь лучше? Палитру (уж очень визжит от восторга толпа при этом слове) при желании можно поправить в b.j или даже сделать редактируемой. В-пятых, третий тест (в отличие от четвертого) действительно кое-какой поиск по "базе" осуществляет при генерации страницы, но... у тебя что, еще хуже, чем мой (который у родителей) PII-266/192M RAM, да еще с работающим "комми"?! Однако! Вона как уже обрадовалась "тормозам" всякая шушера... А ведь какие мозги в молодости имела! Тьфу! Ну хоть перестанут вякать насчет сказанная тобой фраза "я посылал работающее решение" является ЛОЖЬЮ - и то хлеб. Спасибо еще раз! Кстати - а ну, изложи-ка последнюю диагностику первого теста! Для контроля - что-то я засомневался: а тот ли это Витька...

К сообщению приложены файлы: 1.rar, 7Кb

248. dozen, 27.08.2009 16:02
Vladimir Rybinkin
Тема ветки иная: "клиентоцентрическая система мира", т.е. клиент - один, а серверов - много.

О! ВР набрел на идею mushup (http://en.wikipedia.org/wiki/Mashup_%28web_application_hybrid%29) ! Разрыв сокращается!

А может даже -- страшно сказать -- UDDI (http://en.wikipedia.org/wiki/Universal_Description_Discovery_and_Integration) ?!

цитата:

А Вы кто в С/С++ простите?Отсчитайте от Вашего уровня хотя бы пять ступенек вверх.
Скромен и честен.

249. zzf, 27.08.2009 16:11
Vladimir Rybinkin

> rGlory
> А Вы кто в С/С++ простите?
Отсчитайте от Вашего уровня хотя бы пять ступенек вверх.


Смеяло. Молодец. Если чувство юмора есть, значит ещё не всё потеряно.

Вот он, тест третий, "модернизированный" (см. аттач) - теперь лучше?

Продукт по прежнему не запускается. Проверено в IE и Opera. Владимир, нам теперь каждый раз Витьку звать? Ты бы не экономил клавиатуру а? Дай файлам стандартные расширения, а то вместо того, чтобы интерпретировать 'a.h' kak веб-страницу, браузеры просто показывают его содержимое.

250. dozen, 27.08.2009 17:39

Chippy2003
All требует контактную информацию Вашего дилера
оно old school, оно водочкой, да без закусочки...

Страницы: 1 2 3 4 5 · далее / все сообщения темы на одной странице


URL: http://forum.ixbt.com/topic.cgi?id=26:39751