• Как я перестал бояться и переизобрел QML

      Что?


      Привет, Хабр! Прошло очень много лет, с тех пор как я писал сюда. Надеюсь, время тебя/меня не слишком/слишком потрепало.

      Я хотел бы написать о нашем опыте переосмысления идей QML. Qt — прекрасная (по совокупности заслуг) библиотека, и хотя её внутреннее устройство местами вызывает вопросы, но она дала миру не только кросс-платформенный UI тулкит, но и цельный профессиональный набор инструментов: Дизайнер, Креатор, Лингвист, и, конечно же, Qml. Результатом этого переосмысления стал наш скромный проект, который превращает qml в html5/javascript для разных платформ, и даже позволяет собирать простые android приложения используя Cordova.

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

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

      Исходные коды доступны на github, там же лежат исходные коды сайта, примеров и библиотека контролов, которые мы используем для всех своих проектов. Документацию и уроки можно посмотреть на нашем сайте, pureqml.com.
      Если вы чего-то не понимаете, можете присоединиться к группе поддержки в Telegram, мы постараемся ответить на все вопросы в реальном времени.

      Одно из бесплатных приложений, которые мы сделали, был порт игры Fontanero, она должна быть доступна в маркетах LG/Samsung.

      Ну а дальше можно не читать!

      Как мы дошли до жизни такой


      Всё началось в уже-далеком 2010-ом году, когда мы начали писать встраиваемое ПО (и интерфейс пользователя) в одной крупной корпорации для линейки разношерстных устройств на всевозможных платформах, доступных сейчас: arm, mips, x86, sh4, не хватало только sparc…
      Читать дальше →
    • Отложенное начисление счетов за международный роуминг, законно ли это?

        МТС наносит ответный удар.


        Сам я перестал пользоваться услугами жуликоватой большой тройки, но вот жена моя ни в какую не соглашается. Она уехала в Италию неделю назад(!), а сегодня МТС прислал ей смсочку, что нужно заплатить больше трёх тысяч, а иначе её отключат.
        Разумный человек во мне говорит, что это чистой воды мошенничество, поэтому я хочу поинтересоваться у хабрасообщества, какие бывали прецеденты борьбы с подобной практикой.
        Так как с деньгами я уже попрощался, то я хочу доставить МТС максимум трудностей, насколько это возможно.
        Я готов подать в суд, пускай сумма и не очень большая (не миллион, как в истории с мегафоном), просто для создания прецедента. Написать заявления в ФАС, или куда там принято их писать, на тему недобросовестного информирования.
        Как я понимаю, МТС будет жаловаться, что им не приходят данные о разговорах, но это вранье. Почему-то ТЕЛЕ2 за границей блокирует телефон сразу же, а эти нечистоплотные жулики ждут неделю.
        Лучи ненависти, горите в аду.

        Очень жду от вас дельных советов, хочу сделать нашу страну лучше. :)
      • Исходный код игры «Fontanero», победителя конкурса 10k apart

          Некоторое время назад, мы, с private_face участвовали в конкурсе 10k apart(и даже выиграли!), и наши статьи были довольно-таки тепло1 встречены2 на хабре. В комментариях, нас несколько раз просили открыть исходники, и, наконец-то, летучие обезьяны подняли мне веки к обеду, это случилось. Сегодня мы залили всё что было, включая импровизированный «тулчейн» на github. Сильно не ругайте, исхода так себе, а я на js до этого никогда не писал толком :)

          Исходники и все инструкции можно получить по ссылке: https://github.com/whoozle/fontanero.
        • Наш опыт участия в 10K Apart или как ужать 40 Кбайт кода в 10

            Не так давно на Хабре уже писали о контесте 10К Apart — соревновании на лучшее веб-приложение общим объемом до 10К, созданное с использованием только клиентских технологий: (HTML, CSS, Javascript, SVG и т.д).

            image

            Я хочу представить вашему внимаю нашу работу для этого контеста, которую мы с private_face делали по вечерам в течение двух недель: адвенчуру в стиле dungeon-crawler под названием «Fontanero» (исп. водопроводчик).
            Читать дальше →
          • Переезд на мастерхост

              Здравствуй, Хабр! Я очень хочу рассказать о том чем я занимался последние три дня, а именно — противостоянием поддержке мастерхоста. Я с 2006-ого года пользовался мастерхостом, в основном из-за того, что у них была вменяемая поддержка, вмешательство которой часто и не было нужно. Либо инжеренеры всё делали сами. Теперь, видимо ситуация изменилась.

              Три дня(!), уже целых три дня они не могут завести мой домен и прописать vhost :)

              upd: Ещё три(!) письма от хозяина домена и проблема решена, всё работает! И как мне кажется не без помощи хабра. :)
              upd2: Мастерхост прислал извинительное письмо, инцидент исчерпан.

              Ну а теперь по порядку:
              На утро этого воскресенья была назначен перенос нашего скромного проекта на домен второго уровня, на площадку, которая раньше использовался этим же проектом, но только как файлохранилище. Итог плачевен и из этой ситуации я вижу два выхода, один из которых — переезд к другому хостеру. Не рекламы ради, очень хочется узнать ваши предпочтения.
              Читать дальше →
            • Экспортные ограничения на криптографию в США

                Пока sourceforge бьётся в истерике, давайте почитаем законы США на тему экспортных ограничений. Например ECCN 5D002, про который все слышали, но никто не читал.

                США разрешает экспорт программного обеспечения без ограничений и ревью, если все следующие пункты выполнены:
                • Код регулируется экспортными ограничениями ECCN 5D002
                • Код публично доступен
                • Послано уведомление в U.S. Government's Bureau of Industry and Security (BIS)

                Опенсорсные программы автоматически попадают под второй пункт. Но что такое пункт номер один? Сейчас попробуем разобраться.
                Под его действие подпадает:
                • Программное обеспечение предназначенное для разработки, модификации или любого другого использования программного обеспечения из этого списка; или
                • Программное обеспечение с симметричным шифром длиной более 56 бит; или
                • Программное обеспечение с асиметричным шифром, использующее разложение целого числа на простые множители с длиной ключа более 512 бит (например, RSA); или программное обеспечение использующее вычисления дискретных логарифмов над конечным полем или другие операции над дискретными алгоритмами с длиной ключа более 112 бит (например, эллиптические кривые).
                • Программное обеспечение для криптоанализа.

                Специально оговорено, что упаковка и кодирование не подпадают под этот акт.
                3. «Cryptography» does not include «fixed» data compression or coding techniques.

                Хэш-функции не являются криптографическими алгоритмами с симметричными/асимметричными ключами вообще, поэтому даже не рассматриваются.

                Из общедоступного ПО, после такой фильтрации остаются американские браузеры, в которых эти ограничения всегда были и специальный софт типа TrueCrypt.
                Больше можно почитать на apache.org.
              • Я использую Brain Fuck Scheduler!



                  pic related

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

                  Обыгранная на картинке ситуация — беда многих опенсорсных программистов — они пишут фреймворки и общие-системы-всего и не желают исправлять очевидные недостатки, просто потому, что наличие этих недостатков объясняется стройностью их системы. Линус — не исключение.

                  Надеюсь, когда-нибудь BFS включат в ядро и его можно будет включить просто из menuconfig'a.

                  PS А полноэкранное видео на youtube действительно больше не тормозит! Посмотрел для теста несколько HQ трейлеров.

                  ck.kolivas.org/patches/bfs/bfs-faq.txt
                  ck.kolivas.org/patches/bfs
                • Тестируем свежеиспечёные SSE модификации FFT/MDCT

                    Написал для своего детища SSE-реализацию комплексного FFT и MDCT. Результаты поразили даже меня:
                    преобразование/вариант без SSE SSE-модификация
                    2000000 * FFT-128 16,7с 13,3с 5,1с 3,7с
                    1000000 * MDCT-512 17,4с 15,3с 10,4с


                    Вычислялось два миллиона 128-точечных комплексных FFT и один миллион 512-точечных MDCT. Процессор Intel® Core(TM)2 Duo CPU E8400 @ 3.00GHz

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

                      Заранее предупреждаю, для тех кто в теме, интересного будет не очень много. :)

                      У меня появилась актуальная задача реализовать базовые примитивы синхронизации(мьютекс, семафор и read/write lock), используя только синхронную очередь — единственный доступный примитив. Заодно по пути я расскажу как устроены спинлоки и мы даже соберём маленького франкенштейна.

                      Часть 1: Всё — очереди

                      Читать дальше →
                    • Небольшая демка моей библиотеки clunk.

                        Что такое кланк и про её(библиотеки) возможности можно почитать тут. Сразу предупреждаю что ничего супер-пупер в этой демке нет. Источник звука перемещается позади головы от положения 9 часов до положения 3 часа (против часовой стрелки).
                        Тут можно скачать ogg файл с записью. В ogg пожато потому что oggenc умеет жать из raw data. :)
                      • Случайные заметки. MDCT.

                          Насколько позволяет время, работаю над проектом бесплатной и свободной библиотеки рендеринга 3D звука, о которой писал в прошлом посте.
                          Работа продвигается медленнее чем хотелось бы, в основном потому что приходится жертвовать драгоценным временем сна. :)

                          Что сделано к следующему публичному релизу:
                          • Добавлено и оттестировано MDC преобразование (вместо преобразования Фурье). Если делать преобразование Фурье, пускай с перекрытием, даже в пол-окна (на границах окон результаты микшируются кросс-фейдом), то после преобразований Фурье появляется так называемый blocking-effect(аналогичный эффект можно наблюдать на плохом качестве jpeg'ах или видео — разноцветные квадраты), хорошо различимый на слух. Это биения на частоте <частота дискретизации>/<размер окна FFT>. MDCT специально разработан чтобы избавиться от таких эффектов. Почитать про него можно тут. Теперь на слух никаких артефактов не слышно, кроме небольшого клиппинга(связанного с увеличением энергии сигнала), но с этим мы ещё поборемся :-D
                          • Попутно оказалось, что до сих пор, даже на новом core2duo, считать sin/cos достаточно накладно. Тест из 51.200.000 вычислений синусов работает 4 секунды против 0,7 секунд для кэшированной таблицы.
                          • Встретился с необходимостью отсечения одинаковых звуков. Введёно ограничение на количество одновременно играющих одинаковых звуков.
                          • Выкинул kiss за ненадобностью, в пользу более чистого c++ кода. Пропала поддержка SSE, вернётся чуть-чуть попозже :-D
                          • Начата демка «ножниц»(виртуальный парикмахер), чтобы проверить правильность всего предприятия.
                        • Синтез 3D звука :: Clunk

                            Работая над проектом уютненькой аркады, я с сожалением обнаружил что OpenAL отбирает слишком много моего времени. Мало того, что для него пришлось написать менеджер звуков о полутора тысячах строк кода, так ещё и приходилось бороться с разного рода чёрной магией. (Например реализация от nvidia намертво вешала венду) Поэтому, я внезапно решил что потратил на него достаточно времени и написал свой собственный велосипед, который и был успешно обкатан в поле, и выпущен с открытыми исходниками на sourceforge.

                            Вообще, наше ухо не такое уж и хитрое устройство. Позицию источника ухо определяет двумя способами. В горизонтальной плоскости звук приходит в одно ухо чуть раньше чем в другое. Простая тригонометрия умноженная на диаметр головы и дело в шляпе! :)
                            Второй способ уже куда сложнее — голова имеет разную плотность и разные технологические отверстия, следовательно, спектр звука искажается по разному в зависимости от направления вхождения сигнала. Было много попыток сделать эталонную голову(ничего постыдного, даже Стив Джобс делал это), заполнить её желеобразным заменителем мозга и померить искажения эталонного звука, например проект KEMAR из MIT.

                            Мой проект называется Clunk, и умеет практически всё, что необходимо уметь звуковой библиотеке:
                            • Бесконечное количество всего: музыкальных потоков (SDL_Mix умеет только один, например), объектов и именованных источников звука прикреплённых к объектам или слушателю.
                            • Простое апи на c++. (В OpenAL вы вынуждены сами перестраивать сцену, для того чтобы перекинуть 16 источников поближе к слушателю, рестартуя источники (sic), ещё рекомендую посмотреть примерчик «как сделать фоновую музыку на OpenAL», ~полтыщи строк кода =-O ) )
                            • HRTF, HDT описанные выше(собственно 3d звук)
                            • Поддержка всех distance models (падение громкости в зависимости от расстояния) из OpenAL
                            • Опциональная оптимизация под процессоры с технологией SSE
                            • Эффект допплера
                            • Должно работать под всеми платформами где есть SDL, не содержит платформно-зависимого кода.
                            • Лицензия LGPL 2.1 — можно использовать в коммерческих продуктах.


                            Адрес проекта на sf.net: https://sourceforge.net/projects/clunk
                            Если вам интересно, можно смело писать мне в icq, я готов ответить на любые вопросы.