|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Что-же делать простому юзеру? Держать несколько броузеров?
Меня два - Опера и ИЕ рядом напрягают... Один одно не может,
другой - другое...
Решился я их уволить. И поставить Гугель-Хром. А мне сказали -
" Ат винта! Фсё, что кроме Оперы - это не для вас!"
Отсюда мне совершенно непонятна всплывающая (даже мешающая)
релама некоторых сайтов:" У Вас устаревший броузер! Поставьте себе..."
Вот решился поставить... Обломили накорню.
|
13 Mar 2012 09:17 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
Lynx. Самый не глючный!
|
13 Mar 2012 09:39 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
Что есть "гаджеты"? В америгах все смарт устройства имеют в себе полноценные браузеры на основе WebKit (в iPhone/iPod, webOS и Android) либо Gecko (Mozilla FireFox) - так что опера никому нафиг не упала. См. статистику:
http://www.w3schools.com/browsers/browsers_stats.asp
February 2012:
IE 19.5% (половина из которых IE8, а четверть - IE9)
FireFox 36.6% (половина из которых FF10)
Chrome 36.3%
Safari 4.5%
Opera 2.3% (из которых опера-мини составляет только пятую часть)
Вот более разнообразная статистика по браузерам, но тенденция таже (IE постепенно сливает, а Opera никому ненужна):
http://en.wikipedia.org/wiki/Usage_shar ... b_browsers
К тому же Webitable-странички как read-only будут доступны во всех браузерах (даже текстовых lynx и links), а вот редактировать и динамически подгружать контент можно будет только в нормальных браузерах
|
13 Mar 2012 19:38 |
|
|
Different
Doomed
Joined: 18 Feb 2007 11:40 Posts: 408
|
... Linux и любую венду в виртуалке
А вообще, когда пишешь что-нибудь под веб, приходится учитывать весь зоопарк: IE 7-10, Chrome, Firefox, Opera... Так что от костылей никуда не уйти пока, Shaos. Браузеры еще подобны микроконтроллерам самой первой ревизии кристалла - сплошные Errata.
|
13 Mar 2012 21:14 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
вот собственно говоря функция, которая строит таблицу требуемого размера:
| | | | Code: $W.table = function(p,h,w,s) { var d = arguments[4]; var ts = s+"~"; if($(p)==null) return 0; $(p).innerHTML = ""; if($(s)!=null) return 0; if($(ts)!=null) return 0; if($$(s+'.*').lendth > 0) return 0; var r = this.create(p,"table",ts); var t = $(ts); t.setAttribute("cellpadding","0"); t.setAttribute("cellspacing","0"); t.setAttribute("border","0"); r += this.create(ts,"tbody",s); var i,j; for(j=0;j<h;j++) { var tr = s+"."+j; r += this.create(s,"tr",tr); for(i=0;i<w;i++) { var td = tr+"."+i; r += this.create(tr,"td",td); if(d!=null) $_(td,d); else $_(td," "); } } return r; }
| | | | |
для работы функции нужна функция create, создающая HTML-объект внутри существующего объекта, и до кучи функция remove, удаляющий объект по имени (идентификатору): пример вызова: где 'tut' является идентификатором тега, в который будет вставлена таблица, например:
|
14 Nov 2012 14:35 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
Поправил свою AJAX функцию чтобы не только в HTML-элемент удалённый контент вписывало, но и могла функцию вызывать, которая этот контект обрабатывала бы:
|
16 Nov 2012 15:52 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
Пришло время добавлять в Webitable виртуальную машину
Предположим, что мы хотим иметь несколько "тредов", которые необязательно эмулируют одну и туже систему команд. Запуск интерпретатора будет осуществляться через setInterval(function,0), а остановка - через clearInterval(id). Теперь непосредственно о "тредах" - каждый тред будет представлять из себя массив указателей на функции, перебираемые при интерпретации. Каждому треду можно дать "приоритет" - количество "циклов", которые тред должен "прошагать", до того как отдаст управление следующему треду (приоритет 0 означает, что тред остановлен).
$W.threads = []; // сначала список тредов пуст
Чтобы узнать количество тредов в любой момент времени, просто берём $W.threads.length
Каждый тред будет представлять из себя объект с четырьмя полями - неким абстрактным объектом эмуляции o, массивом эмулирующих функций f (которым передаётся объект эмуляции o), адресом следующей команды a и приоритетом треда p: {o:{},f:[],a:0,p:1}
P.S. Потом сделаю генерацию анонимной функции в $W.start() через eval - будет чуток быстрее...
P.P.S. Подкорректировал функцию start, чтобы подстраивалась под быстродействие компьютера, но не забирала более 80% времени работы - на своём рабочем ноуте получил около полумиллиона вызовов в секунду
P.P.P.S. На другом компьютере получилось более миллиона вызовов в секунду...
|
10 Dec 2012 16:09 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
Сделал, но через Function (eval не работал в IE8):
На линуксовых машинах FireFox делает 7 миллинов вызовов в секунду.
На виндовой машине - только 4 миллиона, а вот Chrome - все 14 (а через eval было аж 17 )
Opera - 7 миллионов
Safari - 3 миллиона
IE8 - только 200 тысяч...
P.S. На рабочем линуксовом компьютере около 8 миллионов FireFox делает, WebKit-браузер Epiphany делает 5 миллионов, а Konqueror только 750 тысяч
P.P.S. Предыдущий метод при больших приоритетах тоже даёт неплохие результаты, но трюковый метод всё-равно чуть быстрее...
P.P.P.S. Так как это у нас Threaded Code (шитый код), я решил переименовать новые функции Webitable:
$W.add -> $W.threaded_new
$W.del -> $W.threaded_delete
$W.fun -> $W.threaded_code
$W.pri -> $W.threaded_priority
$W.start -> $W.threaded_start
$W.stop -> $W.threaded_stop
|
10 Dec 2012 21:20 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
Вот думаю не добавить ли пятое поле - указатель на функцию, которая будет вызываться один раз за фрейм (50 раз в секунду)? Скажем назвать его f, а массив функций f переименовать в c (code).
|
11 Dec 2012 23:34 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
Добавил пятое необязательное поле, произвёл переименования и выложил на SourceForge CVS:
http://webitable.cvs.sourceforge.net/vi ... webitable/
|
12 Dec 2012 00:42 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
Чего-то я думаю, что простые функции (del,fun,pri) надо убрать совсем - проще обращаться напрямую к $W.threads - тогда и короткие имена start и stop можно сохранить (а add переименовать в thread):
$W.threaded_delete -> threads[t] = null;
$W.threaded_code -> threads[t].c[j] = function(){...};
$W.threaded_priority -> threads[t].p = N;
$W.threaded_frame -> threads[t].f = function(){...};
|
12 Dec 2012 22:43 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22606 Location: Silicon Valley
|
| | | | Shaos wrote: На линуксовых машинах FireFox делает 7 миллинов вызовов в секунду. На виндовой машине - только 4 миллиона, а вот Chrome - все 14 (а через eval было аж 17 ) Opera - 7 миллионов Safari - 3 миллиона IE8 - только 200 тысяч... | | | | |
У меня опечаточка закралась в код - массив кодов почему-то был объектом - исправил на массив, перемерял: Линуксовый FireFox - 12 миллионов Линуксовая Opera 12.11 - 17 миллионов Линуксовая Opera 11.52 - 16 миллионов Линуксовая Opera 10.63 - 16 миллионов Линуксовая Opera 9.64 - 0.8 миллиона Виндовый FireFox - 7 миллионов Виндовый Chrome - 24 миллиона Виндовый Safari - 7 миллионов Виндовая Opera 12.12 - 7 миллионов Internet Explorer 8 - 0.2 миллиона P.S. в 2018 году Webitable объединился с виртуальной машиной Robby и превратилось в Rgrid.js
|
18 Dec 2012 16:12 |
|
|
Who is online |
Users browsing this forum: No registered users and 75 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|