The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Duktape - компактный встраиваемый JavaScript-движок"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Duktape - компактный встраиваемый JavaScript-движок"  +1 +/
Сообщение от opennews (ok) on 05-Дек-14, 16:43 
В рамках проекта Duktape (http://duktape.org/) развивается JavaScript-движок, ориентированный на встраивание в кодовую базу проектов на языке C/C++  и отличающийся компактным размером, высокой переносимостью и низким потреблением ресурсов. Исходные тексты движка написаны на языке Си и распространяются (https://github.com/svaarala/duktape) под лицензией MIT. Состояние проекты отмечено как стабильное и пригодное для промышленного применения.


Для интеграции Duktape в код на C/C++ достаточно (http://duktape.org/guide.html#gettingstarted) добавить в проект файлы duktape.c и duktape.h, и использовать Duktape API (http://duktape.org/api.html) для вызова функций на JavaScript  из кода  на C/C++ или наоборот. Код Duktape занимает около 200 Кб  и потребляет всего 46kB ОЗУ, а в режиме низкого потребления памяти  22kB ОЗУ. Подобная особенность позволяет использовать Duktape на встраиваемых системах, укомплектованных 256kB Flash и 96kB ОЗУ.


Движок является полностью совместимым со спецификациями Ecmascript E5/E5.1, а также поддерживает часть возможностей из находящегося в разработке стандарта  Ecmascript E6, в том числе поддерживается объект Proxy, который можно использовать для виртуализации свойств. Предоставляется также набор собственных расширений, таких как сопрограммы, встроенный фреймворк для журналирования, механизм загрузки модулей на основе CommonJS.


В состав входит встроенный движок для выполнения регулярных выражений и подсистема для поддержки Unicode. Для освобождения неиспользуемых объектов из памяти применяется сборщик мусора с финализатором, построенный на основе комбинации алгоритма (https://ru.wikipedia.org/wiki/%D0%A1%D0%...) подсчёта ссылок с алгоритмом пометок (Mark and Sweep).
  


URL: https://news.ycombinator.com/item?id=8701228
Новость: http://www.opennet.me/opennews/art.shtml?num=41194

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Duktape - компактный встраиваемый JavaScript-движок"  –2 +/
Сообщение от MPEG LA (ok) on 05-Дек-14, 16:43 
JIT?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Duktape - компактный встраиваемый JavaScript-движок"  +6 +/
Сообщение от анонимус (??) on 05-Дек-14, 21:15 
Как Вы предполагаете совместить JIT и низкое потребление ресурсов?
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

26. "Duktape - компактный встраиваемый JavaScript-движок"  +1 +/
Сообщение от Аноним (??) on 06-Дек-14, 13:19 
Ну LuaJIT же как-то совместил
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

43. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от cmp (ok) on 07-Дек-14, 18:32 
Все переменные глобальны,весь функционал в динамически линкуемых либах, действительно, как им удалось сделать его быстрым и легковесным?
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

46. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от arisu (ok) on 08-Дек-14, 03:40 
> Все переменные глобальны

это ж надо. а создание совершенно независимых контекстов исполнения, со своими наборами переменных, поддерживается.

> весь функционал в динамически линкуемых либах

только что попробовал: у тебя враньё какое-то.

if true then print("hello"); endif

работает. никаких «внешних либ» для if и print не надо. и строки работают. и массивы. и словари. и математика. и луа-регулярки. а-я-яй, как нехорошо врать-то.

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

48. "Duktape - компактный встраиваемый JavaScript-движок"  –2 +/
Сообщение от cmp (ok) on 08-Дек-14, 06:26 
> if true then print("hello"); endif

И в чем бы был смысл если бы и это не работало?

А вот реальная задача, забрать по SNMP и положить в БД, требует портянки предварительной подготовки контекста в котором будет реализована требуемая логика, и в догонку установка дополнений кой нужно еще найти, по итогу написание простого скрипта занимает примерно столько же сколько реализация на с.

> совершенно независимых контекстов исполнения

В большенстве случаев совершенно независимые контексты нафиг не нужны, нужно адекватное наследование, и адекватная работа с индексами в выражениях for(i=0;i<x;i++), а не for(loop_15_i=0;loop_15_i<x;loop_15_i++);

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

Ответить | Правка | ^ к родителю #46 | Наверх | Cообщить модератору

49. "Duktape - компактный встраиваемый JavaScript-движок"  –2 +/
Сообщение от arisu (ok) on 08-Дек-14, 06:32 
>> if true then print("hello"); endif
> И в чем бы был смысл если бы и это не работало?

не знаю, это же не я утверждал, что *всё* во внешних библиотеках.

> А вот реальная задача, забрать по SNMP и положить в БД, требует
> портянки предварительной подготовки контекста в котором будет реализована требуемая логика,
> и в догонку установка дополнений кой нужно еще найти, по итогу
> написание простого скрипта занимает примерно столько же сколько реализация на с.

гениальный пример. мне даже и сказать-то нечего.

>> совершенно независимых контекстов исполнения
> В большенстве случаев совершенно независимые контексты нафиг не нужны, нужно адекватное
> наследование, и адекватная работа с индексами в выражениях for(i=0;i<x;i++), а не
> for(loop_15_i=0;loop_15_i<x;loop_15_i++);

ты дурак, да? вопрос риторический.

> На полноту знаний в данном вопросе я не претендую, у меня нет
> задачи решить задачу на lua, у меня есть просто задача, и
> множество раз возникала необходимость в программируемой прослойке между чем-то и чем-то,
> и js для этого подошел бы просто идеально, но нету нормальной
> реализации : либо монстр, либо вендор лок, либо лицензия продай душу,
> либо мертвое поделие. Поэтому попробовал lua, не понравилось, потому что интеграция
> равнялась бы прибиванию гвоздями.

вопрос действительно риторический…

Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

52. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от cmp (ok) on 08-Дек-14, 14:07 
> ты дурак, да?

ну раз пытаюсь что-то до тебя донести, то видимо да.

> мне даже и сказать-то нечего.

Когда нечего сказать, принято молчать.


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

А вот js, обтертый тысячами глаз программистов, годен - и для соло применения, и для встраивания, и для переноса в клиент-серверных системах.


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

Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

53. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от arisu (ok) on 08-Дек-14, 14:12 
зрелищем твоего развороченого афедрона удовлетворён.
Ответить | Правка | ^ к родителю #52 | Наверх | Cообщить модератору

54. "Duktape - компактный встраиваемый JavaScript-движок"  –2 +/
Сообщение от cmp (ok) on 09-Дек-14, 13:12 
В ваших копрофильских фетишах совсем не силен, но троль ты такой же махровый.
Ответить | Правка | ^ к родителю #53 | Наверх | Cообщить модератору

55. "Duktape - компактный встраиваемый JavaScript-движок"  –1 +/
Сообщение от arisu (ok) on 09-Дек-14, 13:24 
когда я указываю тебе на твой идиотизм — это не троллинг, а печальная правда жизни.
Ответить | Правка | ^ к родителю #54 | Наверх | Cообщить модератору

56. "Duktape - компактный встраиваемый JavaScript-движок"  –2 +/
Сообщение от cmp (ok) on 10-Дек-14, 00:41 
аааа, да, я просто не заметил
Ответить | Правка | ^ к родителю #55 | Наверх | Cообщить модератору

50. "Duktape - компактный встраиваемый JavaScript-движок"  –1 +/
Сообщение от edwin3d email(ok) on 08-Дек-14, 10:12 
> совместить JIT и низкое потребление ресурсов?

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

17. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 06-Дек-14, 01:14 
JIT зло и оверхед большой
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

47. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от arisu (ok) on 08-Дек-14, 03:40 
> JIT зло и оверхед большой

хорошо, что Mike Pall не в курсе.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

51. "Duktape - компактный встраиваемый JavaScript-движок"  –1 +/
Сообщение от edwin3d email(ok) on 08-Дек-14, 10:14 
> JIT зло

Ждем Вашего рецепта решения проблемы низкой про-ти.

> и оверхед большой

JIT вообще-то добавляет "оверхед" только на первом этапе работы.
Скажем ф-я вызвалась Н раз (к примеру - 100), в 101-й уже выполнился найтивный код  

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

57. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Crazy Alex (ok) on 10-Дек-14, 19:31 
> Ждем Вашего рецепта решения проблемы низкой про-ти.

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

Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

58. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от edwin3d email(ok) on 11-Дек-14, 10:53 
Добрый день.

> Статическая типизация

Никаким боком к JIT. Вообще. Самый наглядный пример - Java.
Не надо сводить JIT только в JS и т.д.
JIT актуален (причем - прежде всего) и там, где генерируется байт-код

> и компиляция. Никакой принципиальной проблемы во вкрутке компилятора
> в приложение нет.

Т.е. Вы предлагаете тот путь, по которому пошли в Google с AOT в Android ?  
Путь интересный, но в некоторых случаях спорный, и вот почему:
К примеру - что делать в случае, если приложение должно исполнять другой, загружаемый кусок ? Типа AS серверов ?

> а излишние
> языковые возможности в скриптах - только во вред.

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

Ответить | Правка | ^ к родителю #57 | Наверх | Cообщить модератору

4. "Duktape - компактный встраиваемый JavaScript-движок"  –1 +/
Сообщение от Аноним (??) on 05-Дек-14, 17:14 
а есть js-интерпритатор для консоли? возможно на нём...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 05-Дек-14, 22:51 
>а есть js-интерпритатор для консоли? возможно на нём...

aptitude search spidermonkey

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

16. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 05-Дек-14, 23:21 
apt install nodejs
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "Duktape - компактный встраиваемый JavaScript-движок"  –2 +/
Сообщение от Аноним (??) on 05-Дек-14, 18:43 
"Состояние проекты "
Но при этом: "стабильное и пригодное для промышленного применения"
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Duktape - компактный встраиваемый JavaScript-движок"  +1 +/
Сообщение от Фокс Йовович on 05-Дек-14, 20:04 
Чем оно лучше LuaJIT?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Пользователь Debian on 05-Дек-14, 20:18 
Язык программирования менее эзотеричен (Таблицы и метатаблицы для всего и double для всех числовых данных? Спасибо, не нужно.)
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Фокс Йовович on 05-Дек-14, 20:26 
В чём проблема, если JIT это оптимизирует?
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

22. "Duktape - компактный встраиваемый JavaScript-движок"  +1 +/
Сообщение от Аноним (??) on 06-Дек-14, 03:19 
> В чём проблема, если JIT это оптимизирует?

Только в 22 кило RAM все это уже явно не уместится.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 05-Дек-14, 21:26 
в Lua 5.3 есть integer
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

19. "Duktape - компактный встраиваемый JavaScript-движок"  +7 +/
Сообщение от АнонуС on 06-Дек-14, 01:53 
> в Lua 5.3 есть integer

Это прорыв !!!

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

20. "Duktape - компактный встраиваемый JavaScript-движок"  +2 +/
Сообщение от Аноним (??) on 06-Дек-14, 02:06 
таблицы - это просто хэши
магия с прототипами вам больше нравится?
как по вашему в js представлены числа?
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

41. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 07-Дек-14, 03:14 
> магия с прототипами вам больше нравится?

Monkey patching FTW!!!

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

25. "Duktape - компактный встраиваемый JavaScript-движок"  +5 +/
Сообщение от arisu (ok) on 06-Дек-14, 08:07 
> Таблицы и метатаблицы для всего и double для
> всех числовых данных? Спасибо, не нужно.

ты только что описал javascript.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

15. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Crazy Alex (ok) on 05-Дек-14, 22:55 
Например, тем, что количество людей, умеющих писать на JS, больше тех, кто умеет Lua, раз в сто как минимум. Готового кода тоже в достатке.

Правда, непонятна скорость этой штуки.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

18. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Mihail Zenkov (ok) on 06-Дек-14, 01:38 
> Правда, непонятна скорость этой штуки.

Duktape (finally released in October 2014) lacks a lazy evaluation model.

http://wiki.netsurf-browser.org/Developer_Weekend_%28No...

Скорее бы к netsurf прикрутили - будет хотя бы один легкий браузер с js.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

29. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 06-Дек-14, 13:38 
Си-подобностью? Переносимостью (в браузер без всяких lua2js) и интероперабельностью с JS-кодом?
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

30. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 06-Дек-14, 13:47 
> Чем оно лучше Squirrel?

Отремонтировал для большей справедливости

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

21. "Duktape - компактный встраиваемый JavaScript-движок"  +2 +/
Сообщение от Аноним (??) on 06-Дек-14, 02:57 
Повод для еще одного форка nodejs
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от arisu (ok) on 06-Дек-14, 08:02 
больше жаваскрипов для бога жаваскрипов! see? njs? jx9? фатальные недостатки!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

24. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от arisu (ok) on 06-Дек-14, 08:06 
движок регулярных выражений, само собой, чисто бэктрекинговый. авторы малацца, жгут.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 06-Дек-14, 13:27 
> Для интеграции Duktape в код на C/C++ достаточно добавить в проект файлы duktape.c и duktape.h

Не думал, что в 2014 найдутся люди, не понимающие, почему по пути gnulib идти нельзя.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

28. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от arisu (ok) on 06-Дек-14, 13:29 
и что тебе не нравится? ты не в курсе термина «амальгамизация»?
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

32. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 06-Дек-14, 15:54 
Ты bundle'ишь в программу zlib. Или libpng. Или md5.c. Завтра там находят уязвимость. Твои действия?
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

36. "Duktape - компактный встраиваемый JavaScript-движок"  –1 +/
Сообщение от arisu (ok) on 06-Дек-14, 18:16 
> Ты bundle'ишь в программу zlib. Или libpng. Или md5.c. Завтра там находят
> уязвимость. Твои действия?

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

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

39. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Crazy Alex (ok) on 06-Дек-14, 19:45 
Ну, я бы сказал, что он прав... если бы сабж совершенно очевидно не был рассчитан на какой-то эмбед, где хоть шаред, хоть статическую либу будет (или не будет) фиксить один и тот же разработчик прошивки
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

42. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от arisu (ok) on 07-Дек-14, 03:59 
> Ну, я бы сказал, что он прав...

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

Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

38. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Crazy Alex (ok) on 06-Дек-14, 19:40 
Ты выкатываешь новую прошивку. Или забиваешь, так как устройство с уязвимостью тобой уже не поддерживается. Еще раз посмотри описание (в частности, акцент на малом потреблении памяти) и подумай, на какое применение эта штука рассчитана.
Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

31. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от ix.. on 06-Дек-14, 14:32 
Очень даже верный подход. То, что многие отказались от него и даже успели нагородить свехсложную интеграцию - не делает их правыми.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

33. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от hoopoe email(ok) on 06-Дек-14, 15:55 
Один из ярчайших примеров использования данной техники - это sqlite, весьма удачное решение
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

34. "Duktape - компактный встраиваемый JavaScript-движок"  –1 +/
Сообщение от Аноним (??) on 06-Дек-14, 16:20 
> Один из ярчайших примеров использования данной техники - это sqlite, весьма удачное
> решение

% locate libsqlite
/usr/lib64/libsqlite3.so
/usr/lib64/libsqlite3.so.0
/usr/lib64/libsqlite3.so.0.8.6

Вообще мимо кассы. Я говорил про подход gnulib.

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

40. "Duktape - компактный встраиваемый JavaScript-движок"  +2 +/
Сообщение от Mihail Zenkov (ok) on 06-Дек-14, 20:36 
> Вообще мимо кассы. Я говорил про подход gnulib.

https://sqlite.org/amalgamation.html

Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

35. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 06-Дек-14, 17:11 
Полезная вещь! Время от времени думал о том что неплохо бы найти нечто подобное, но лениво было.
А аналоги есть? (чтобы сравнить и выбрать лучшее)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

44. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 08-Дек-14, 00:50 
А кто пробовал, а то у меня почему-то require не работает. Что нужно - поделитесь опытом?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

45. "Duktape - компактный встраиваемый JavaScript-движок"  +/
Сообщение от Аноним (??) on 08-Дек-14, 02:43 
Нужно определить следующую конструкцию:

```
Duktape.modSearch = function (id) {
    var res;

    print('loading module:', id);

    // _source_code_from_module = read('...'); // Provide source code from name

    return _source_code_from_module;
}
```

Удачи.

Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру