LINUX.ORG.RU

Сообщения fk0

 

javascript, макросы (cpp)

Форум — Web-development

Можно ли совместно с javascript использовать макросы, например CPP (C preprocessor)? Вопрос как. Понятно, что можно (в частности CPP). Может есть более цивилизованный способ это делать, возможно вместе с компрессором/обфускатором, но я этого не знаю?

fk0
()

Обфускатор и компрессор javascript, работающий под linux

Форум — Web-development

Подскажите какой обфускатор и компрессор javascript, работающий под linux.

fk0
()

javascript, forms и т.п.

Форум — Web-development

В javascript удобно сделано, что формы существуют как объекты внутри document, со своими полями-свойствами. Это для ввода. А для вывода ничего такого не предусмотрено. Было бы удобно иметь именованные (через name) поля вывода с доступом через document.form_name.field_name=значение. Можно, конечно, input типа text сделать readonly и через CSS неотличимым от просто текста и так пользоваться. А может есть более цивилизованный метод, хоть и в виде сторонних библиотек, которые бы его реализовали?

PS: я понимаю, то же самое можно сделать через какую-либо javascript template engine, да хоть через самодельную...

fk0
()

Графика в HTML5 и gimp.

Форум — Web-development

Допустим, я хочу сделать свой собственный нестандартный GUI на javascript. Там будут кнопки, фоновая картинка, текст и изменяемые картинки. Кнопки нажимаются. Фон, понятно, растягивается на всё окно браузера. А остальное поверх него рисуется отдельными мелкими картинками (спрайтами). Для каждого элемента изображения может быть более одного спрайта-фазы и рисуется только нужное (кнопка нажата/отжата). Вопрос, как их позиционировать. Какие варианты я вижу:

1) всё сделать с размер окна браузера (пока технические мелочи, мол у всех окна разные — опустим). в изображениях накладываемых поверх фона всё прозрачное, кроме того места, где кнопка нарисована, например. события привязываются через image map.

2) делается для фоновой картинки image map в котором определяются прямоугольные области, в которые вставляются более мелкие спрайты из отдельных картинок.

3) аналогично с п.2, кроме того спрайты не отдельными файлами, а упакованы плотно в один файл, для извлечения спрайта из которого используется ещё один image map.

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

Ещё вопрос удобства рисования картинок. Пункт 1 самый удобный (можно в gimp всё в разных слоях сделать и тут же смотреть — WYSWYG). Пункт 2 тоже WYSWIG, но в слоях с мелкими картинками размер слоя меньше размера изображения (при экспорте подгоняется под размер слоя), нужно нудно вручную image map делать, причём точно пиксель-в-пиксель всё равно не совпадёт и позиционирование «спрайтов» будет слегка не точное. Пункт 3 нифига не WYSWYG, зато грузится быстрей.

Как бы ещё автоматом от п.1 или п.2 перейти к п.3...

fk0
()

SIP сервис (вроде sipnet), но чтоб конференц-связь была.

Форум — General

Посоветуйте, какая контора предоставляет такие услуги, чтоб SIP и конференц-связь человек на 5 хотя бы, чтоб SIMPLE (чат) работало, чтоб звонки на городские были.

fk0
()

Делаю web-приложение. ЧЯДНТ?

Форум — Web-development

Делаю web-приложение. Должно кешироваться в мобильном телефоне (если нет сети). Браузер — iPhone, Android, Firefox. Возможно IE который в windows mobile-7. Ещё возможно другие, старые, телефоны, ну там как повезёт.

Общий принцип работы такой: вначале загружается index.html, в котором надпись мол «ваш браузер устарел blablabla». И внутри index.html имеется <script> с ссылкой на javascript код собственно, в котором программа. Программа отображает несколько окон/экранов пользователю, где элементы управления. Ну тут всё понятно. Загрузка экрана ведётся из отдельного HTML-файла — шаблона через XMLHttpRequest(). После загрузки отдельные поля в шаблоне (находятся через id) заменяются как нужно, либо, если это списки, размножаются с отрыванием id и заполнением данными. Ну а далее пользователь жмёт кнопки. Загрузка делается так, что когда загрузили, то делается просто document.documentElement.innerHTML=req.responseText.

В момент загрузки шаблона показывается элемент (DOM node) с надписью «please wait, loaging...» Если загрузка неуспешна, то «load error: blablabla». Также есть window.onerror который тоже показывает текст ошибки пользователю. Всё это делается так: в index.html имеется три вставки <script id=«error_или_loading» language=«text»>ШАБЛОН В HTML</script>. Эти три вставки сразу после запуска JS извлекаются по id и копируются в переменные. Потом при загрузке, при ошибках они просто в document.documentElement.innerHTML=variable вставляются (тоже как шаблон, в них тоже по id заменяются надписи если надо). Принципиально, что эти вставки идут до <script> с javascript (иначе он их не найдёт, ибо запустится раньше). А когда javascript загрузился, то он проверяет наличие XMLHttpRequest(), если ок, то после onload загружает сам уже шаблон с заглавной страницей.

Для хранения постоянных данных используется localStorage. Видимо, следует использовать cookies для старых браузеров.

Во-первых имею проблему в андроиде (версии разные... не существенно, 4.1 например). Иногда загружается шаблон первой страницы (200), она отображается, потом onreadystatechange вызывается ещё раз с кодом status 0. Бывает сразу 0. Если сделать запрос синхронным, то NETWORK_ERR: XMLHttpRequest Exception 101. А иногда работает. Чертовщина. Причём не работает когда есть <html manifest=«cache.manifest» lang=«ru»>. Если cache.manifest убрать, то всё ок.

Во-вторых перезагрузить страницу после изменения тяжело. Особенно в андроиде. cache.manifest каждый раз меняю. Без толку. Непонятные пляски с бубном и после 10-го раза перезагружается. На десктопе в firefox всё ок. В chrome тоже. Вроде, помогает, открытие манифеста вручную в браузере (андроида), не понял.

Во-третьих в андроиде не работает такое: <audio autoplay=«autoplay»><source type=«audio/wav» src=«sounds/warn.wav» /></audio> И из javascript, без autoplay, тоже.

Что я могу делать принципиально неправильно? Ниже код загрузки:

function load(page, callback) {
        log("loading '"+page+"'");
        document.documentElement.innerHTML=Loading;

        var statechange=function() {
                log("req:", page, "state: ", req.readyState);
                switch(req.readyState) {
                case 1:
                        document.getElementById("loading1").style.display="inline";
                        break;
                case 2:
                        document.getElementById("loading2").style.display="inline";
                        break;
                case 3:
                        document.getElementById("loading3").style.display="inline";
                        break;
                case 4:
                        clearTimeout(timeout);
                        log("req status: ", req.status);
                        switch (req.status) {
                        case 200:
                                document.documentElement.innerHTML=req.responseText;
                                //log("calling: ", callback/*.toString().match(/function ([^\(]+)/)[1]*/);
                                callback();
                                break;
                        case 0:
                                document.documentElement.innerHTML=LoadFail;
                                document.getElementById("errcode").innerHTML="XMLHttpRequest() failed: "+req.responseText;
                                break;
                        default:
                                document.documentElement.innerHTML=LoadFail;
                                document.getElementById("errcode").innerHTML=req.status;
                        }
                        break;
                default:
                        document.getElementById("loading1").style.display="none";
                        document.getElementById("loading2").style.display="none";
                        document.getElementById("loading3").style.display="none";
                }
        };

        var timeout=setTimeout(function () {
                document.documentElement.innerHTML=LoadFail;
                document.getElementById("errcode").innerHTML="Timeout!";
        }, 8000);

        try {
                var req=new XMLHttpRequest();
                req.onreadystatechange=statechange;
                req.open("GET", page, true);
                req.send(null);
        }
        catch (err) {
                document.documentElement.innerHTML=LoadFail;
                document.getElementById("errcode").innerHTML=err;
                return;
        }
}

Используется так: load("pattern.html", function() { что сделать после загрузки.. });

fk0
()

javascript (как сделать web-приложение живущее в браузере)

Форум — Web-development

Хочется сделать приложение живущее в браузере. Оно должно отображать разные страницы (работа, настройка и т.п.) Но! Это именно приложение. Т.е. при переходе от настройки к работе, например, весьма нежелательно тупо перезагружать другую страницу с сервера — убьётся же состояние javascript интерпретатора. Т.е. нужно всё сохранить в webstorage например, загрузить новую страницу, загрузить заново те же самые скрипты, восстановить состояние. Бред! Разумнее было бы загрузить другой HTML для отображения, а всё остальное оставить. В пределах одного домена, естесственно. Например через XMLHttpRequest. И через DOM удалить рекурсивно все элементы старой страницы и вставить новую. Почему так никто не делает? А если кто делает, подскажите как?

Речь именно об web-application на javascript, а не отдельных страницах. Просто страницы удобно использовать ну как шаблоны для разных окон приложения.

Перемещено boombick из development

fk0
()

Libreoffice (openoffice) — нумерация секций (глав, разделов)

Форум — General

Как сделать автоматически нумерованные секции (из heading-1, heading-2 и т.п.) ?

Т.е. примерно так:

1. Heading1
  text...
1.1. Heading2
  text...
2. Heading1
  text...
2.1. Heading2
  text...
2.2.1. Heading3...
  text...

fk0
()

Мышь с высоким разрешением — как понизить?

Форум — Desktop

Приобрёл новую мышь. Проблема — 3200 dpi. Если старая, например, от края то края экрана за ~10см доезжала, то эта за ~3см. xset m x/y z знаю. Не помогает. :-( Никуда курсором не попасть. Что делать? Может кто-то поделится своими настройками, кто тоже не любит слишком реактивную мышь. PS: похоже в мыше своя акселерация, дурная и неотключаемая. :-((( Иначе xset m 4/3 0, например, вполне нормальная настройка, а xset 1 0 ничего не ускоряет. Но не для этой мыши. :-(

Кстати, сразу второй вопрос. У меня 2 мыши и один тачпад. Собственно настройки разные нужны... Хотя бы для одной мыши и одного тачпада.

fk0
()

Торможение курсора мыши в xorg.

Форум — General

Поставил 1920x1080. Мышь тормозит (курсор) на экране. Т.е. рисует всё как мышь двигалась, точно, но с задержкой в секунду может. Чем быстрей/больше двигал, тем больше задержка.

Ставил fglrx драйвер. То же самое. Вернулся на radeon. Пробовал разные настройки... Вообще пришёл к мнению, дело не в видео. Т.е. отрисовывает оно нормально, как умеет. Дело в разрешении. Если поставить по-горизонтали поменьше — работает быстрей. Ещё меньше — вообще никакой задержки. Не знаю в чём дело, google не особо помогает. Debian wheezy. Обновлён. Такое впечатление, что это у многих так, но не все признаются. Просто широкое разрешение виновато кажется. Видео — HD4350. Но пользоваться же тяжело, мышью никуда не попадаешь. Для очень терпеливых людей. :-(

fk0
()

perl, fastcgi, разработка веб-приложений на perl вообще.

Форум — Development

Написал fascgi perl программу. Ну всё по howto. Вопрос возник на счёт переменных имеющих отношение к конкретному запросу. Где их, спрашивается, хранить. Им быть our по отношению к модулю никак нельзя (он же разные запросы отрабатывает). Я их сразу после получения запроса local делаю (из-за чего no strict vars) и дальше до возврата из функции всё отрабатывается, генерируется ответ. Может как-то по-другому можно?

И с шаблонами тоже (HTML::Template). Шаблоны при загрузке программы все считываются в переменные. Потом через Storable делается dclone для переменной с шаблоном, шаблон модифицируется и отдаётся в ответ, потом уничтожается. Может я опять как-то нетрадиционно всё делаю? Но всяко лучше, чем шаблон подгружать и создавать заново во время запроса.

Вообще хотелось бы что-то типа «сессий». Постоянного набора переменных живущих в сеансе работы пользователя, между разными запросами. Как сделать? Только не надо mysql вспоминать как это делает на пыхэхэ... Во-первых без всяких SQL, да и даже без BerkeleyDB. Дурдом это. Да и пользователей там не over9000000, и данных не много. Можно в переменных. Если потом приспичит можно же через tie с БД на диске увязать? Как делают, нормально, без пыхэпэ и SQL?

Про шаблоны тоже вопрос. HTML::Template безобразен до ужаса. Вообще тут php (не)добрым словом вспоминается. Только не в таком как php виде. Скорей макросистемы из Tcl. Чтоб переменные автоподставлялись и ограниченный ряд функций можно было вызвать из шаблона, когда он раскрывается. Но код чтоб в шаблоне не писать как пхп-программисты. Есть какие-то библиотеки и т.п.? Вообще хотелось бы некого дуализма в подходе генерации веб-страниц. С одной стороны как шаблона, с другой как объекта меняемыми свойствами и методами получения HTML.

Ещё об организации веб-приложения в целом. Хотелось бы как-то упорядочить всё, нужна какая-то методика, как это делать. Не знаю. Хотя бы всё в ООП завернуть, чтоб были классы страниц например, которые уже на относительно высоком (не уровня полей шаблона) берут данные, пропускают их через шаблон, отдают HTML или что там. Хоть почитать как это делается. Чтоб не говнокодить как на пхп. Опять же не знаю. Но без тяжёлых фреймворков типа django и т.п. --> в них ногу сломишь, в них масса своих проблем, и они вобщем-то на другие задачи расчитаны. А мне высокореактивное и надёжное приложение на выходе нужно, пусть и без лишних свистелок и колокольчиков.

Ещё заметил, это жутко неудобно через CGI::Simple вручную cookies разбирать и потом ставить, вручную же парсить параметры запроса и т.п. Напрашивается опять же более высокоуровневая ООП-прослойка. С умением сериализовать объекты в куки и т.п. Кстати, CGI без Simple в fastcgi режиме нифига не работает, ерроры даёт, память куда-то девается. Опять же не знаю как это делается. Я вообще веб тольком никогда не программировал. Только GUI немного и системный уровень.

fk0
()

Посоветуйте видеокарту.

Форум — General

Посоветуйте видеокарту.

Нужно:

0) РАБОТА С XTERM!!! В частности fglrx при нажатии backspace в xterm вначале медленно и печально перекрашивает его в один цвет, потом в другой... Нет какого-то там ускорения после 8.x версии flgrx. И окна таскаются медленно. xterm должен работать также быстро как и 10 лет назад и это не обсуждается.

1) работа без торможения в 1960x1080 (ATI HD4350 с opensource драйверами — увы);

2) выход S-video (для подключения к ТВ, например);

3) два монитора (DVI, HDMI, один из них можно VGA);

4) отсутствие vendor lock на версию ядра (fglrx до недавнего времени хотел 2.6.32, у меня давно 3.2, например, и на ядро не только видео завязано).

fk0
()

1920x1080 и тормозная мышь

Форум — General

Поставил разрешение 1920x1080 (до этого было 1680x1050 или что-то вроде того). Ибо монитор шире купил. Мышь стала работать с задержкой в секунду где-то. Работать невозможно!!! Почему? :-( xfvwm-2, xorg, debian wheezy. Видео — opensource ATI драйвер. Без 3D. Но у меня 3D и нет и не нужно. Через touchpad — то же самое. Не в мыше дело. Такое впечатление, что картинка идёт с задержкой на несколько сотен мс. Поставил 1680 снова — задержка существенно меньше (может раньше и не замечал потому). Кто виноват и что делать? И окна супер-медленно ползают. Да, ATI HD4350. Драйвер «radeon».

Перемещено mono из development

fk0
()

Взаимодействие perl и C

Форум — Development

Некоторое ПО разрабатывается преимущественно на perl. Но есть необходимость некоторый код при этом написать на C (декодирование сжатых данных, работа с отдельными битами на perl не быстра). Как лучше организовать взаимодействие? Варианты:

1) perl модуль используя xs... столько я не скурю.

2) perl модуль через swig... несколько легче, но тоже...

3) ?

C-модуль может, например, получать массив бинарных данных и возвращать массив структур. Можно сделать отдельную программу на C, например, которая будет выдавать в stdout текстом, а perl парсить. Но как-то нехорошо это. Производительность тоже...

fk0
()

Посоветуйте надёжный XEN VPS хостинг.

Форум — Admin

Посоветуйте надёжный VPS хостинг на Xen. Ключевое слово — надёжный. Работающая поддержка. Отсутствие технических проблем. Минимальный downtime.

fk0
()

Санкт-Петербург, нужен программист.

Форум — Job

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

Требования к кандидату:

1) профессионально программировать на языке C (подразумевается опыт работы);

2) знакомство с другими ЯВУ, средствами разработки и отладки ПО, включая VCS, библиотеками, сетевыми протоколамии...

3) уметь пользоваться ПК на уровне программиста, программировать для ПК;

4) желательно знакомство с Unix (Linux);

5) базовые знания современной электроники, желательно знакомство с микроконтроллерами (PIC24, STM32);

6) английский язык на уровне достаточном для чтения документации и переписки электронной почтой.

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

В Санкт-Петербурге, в районе станции метро «Петроградская». Оплата от 50 т.р.

job@prosc.ru

fk0
()

Альтернатива BIOS?

Форум — Linux-hardware

Существуют ли материнские платы позволяющие вместо глючных BIOS прямо грузить linux или что-то в этом роде. Может opensource BIOS. Из доступных в россии?

fk0
()

Ядро перестало загруж

Форум — Linux-hardware

Работал домашний комп без обновлений (ядра и initrd, остальное пока не важно), без изменений в железе и т.п. пару лет. Потом при очередном выключении питания — не грузится. BIOS «зависает» на Verifying DMI pool... Шаманства с вытаскиванием батарейки CMOS'а и т.п. ничего не дают. Такое впечатление, что он что-то считывает с любого из винтов (рейд софтверный, а бут-раздел на каждом просто продублирован) и вешается (по крайней мере дело до надписи «Grub» не доходит). Помнится такое было когда компьютер собирал, но потом какие-то шаманские действия и всё заработало.

Загрузил grub с usb. Загружаю ядро с винта: root (hd1,1), linux /vmlinuz<TAB> root=/dev/mapper/root ro single, initrd /initrd<TAB>. Ядро запускается, пишет что-то про APIC и, вроде, про попытку включения второго CPU. Секунд 5 думает, потом быстро (не прочитать) бегут надписи и перезагрузка. :-( Долго мучался, опытным путём нашёл, что с nosmp всё загружается и работает. Только CPU один, что не радует.

Да, memtest ошибок не видит.

Что это может быть? Или как можно продиагностировать? Я допускаю, что за время аптайма (последний аптайм несколько месяцев) что-то тихонько могло подохнуть, например. Или же grub с флешки какой-то плохой и не умеет запускать smp ядра? (на диске он другой версии — точно). Существуют ли современные (мне только checkit на ум приходит) тесты для матьплаты и CPU?

Можно как-то остановить linux, когда он перезапускается без nosmp, чтоб написал в чём дело? panic=60 не помогает.

Пробовал в grub делать root (hd1), chainloader +1, boot — виснет. По-моему оно должно запускать grub с винта. Интересно, почему... hexedit показывает какие-то следы загрузчика на одном винте, на другом действительно в MBR только таблица разделов. Может в силу каких-то причин BIOS всегда (когда Verifying DMI pool) грузится только со второго (хотя порядок загрузки менял)? Или до сих пор есть глючные BIOS, зависающие от вида таблицы разделов без винды, от 500ГБайт винтов и т.п. ?

Где взять 100% работающий grub для записи на usb? Может дистрибутивный (debian testing) чем-то плох?

 

fk0
()

Ядро перестало загружаться без nosmp. BIOS виснет на Verifying DMI pool...

Форум — Desktop

Работал домашний комп без обновлений (ядра и initrd, остальное пока не важно), без изменений в железе и т.п. пару лет. Потом при очередном выключении питания — не грузится. BIOS «зависает» на Verifying DMI pool... Шаманства с вытаскиванием батарейки CMOS'а и т.п. ничего не дают. Такое впечатление, что он что-то считывает с любого из винтов (рейд софтверный, а бут-раздел на каждом просто продублирован) и вешается (по крайней мере дело до надписи «Grub» не доходит). Помнится такое было когда компьютер собирал, но потом какие-то шаманские действия и всё заработало.

Загрузил grub с usb. Загружаю ядро с винта: root (hd1,1), linux /vmlinuz<TAB> root=/dev/mapper/root ro single, initrd /initrd<TAB>. Ядро запускается, пишет что-то про APIC и, вроде, про попытку включения второго CPU. Секунд 5 думает, потом быстро (не прочитать) бегут надписи и перезагрузка. :-( Долго мучался, опытным путём нашёл, что с nosmp всё загружается и работает. Только CPU один, что не радует.

Да, memtest ошибок не видит.

Что это может быть? Или как можно продиагностировать? Я допускаю, что за время аптайма (последний аптайм несколько месяцев) что-то тихонько могло подохнуть, например. Или же grub с флешки какой-то плохой и не умеет запускать smp ядра? (на диске он другой версии — точно). Существуют ли современные (мне только checkit на ум приходит) тесты для матьплаты и CPU?

Можно как-то остановить linux, когда он перезапускается без nosmp, чтоб написал в чём дело? panic=60 не помогает.

Пробовал в grub делать root (hd1), chainloader +1, boot — виснет. По-моему оно должно запускать grub с винта. Интересно, почему... hexedit показывает какие-то следы загрузчика на одном винте, на другом действительно в MBR только таблица разделов. Может в силу каких-то причин BIOS всегда (когда Verifying DMI pool) грузится только со второго (хотя порядок загрузки менял)? Или до сих пор есть глючные BIOS, зависающие от вида таблицы разделов без винды, от 500ГБайт винтов и т.п. ?

Где взять 100% работающий grub для записи на usb? Может дистрибутивный (debian testing) чем-то плох?

 

fk0
()

OPOST в c_oflags, /dev/pty...

Форум — Development

А как действуют флаги OPOST и ONLCR в c_oflags для псевдотерминалов? Позорно конечно не знать, но нигде не пишется. Я правильно понимаю, что с обоих концов терминала их можно смотреть и менять, но фактически замена LF на CR/LF должна выполняться программой на противоположном конце терминала (или другим терминалом, к которому она подключена). Как работает ssh?

fk0
()

RSS подписка на новые темы