Pull to refresh
-1
0
Михаил @3om6ak

Знатель всего понемногу

Send message

Документация по Ubuntu и все-все-все

Reading time3 min
Views6.3K
imageБлизится Новый Год, к которому так хотелось многое реализовать и сделать, но увы, многим планам не суждено было сбыться.

И тем не менее кое-что всё-таки получилось и создалось, порой само собой, порой при чьём-то участии. И, подводя итоги уходящего года, хочется чуть-чуть коснуться того, что же удалось сделать в рамках весьма вялого, но всё же достаточно популярного проекта ubuntu.ru.

О том, что же всё-таки создалось
Total votes 79: ↑69 and ↓10+59
Comments43

Вызов функции с «неизвестным» именем на C++. Часть 1 — cdecl

Reading time4 min
Views15K

Постановка задачи


Что же я имел ввиду, когда написал «неизвестное» имя функции? А значит это то, что имя функции, её параметры и, в конце концов, соглашение вызова, становятся известными только во время выполнения программы. Займемся её вызовом! =)
подробности
Total votes 79: ↑62 and ↓17+45
Comments92

Потоковое видео средствами ffserver & ffmpeg

Reading time2 min
Views145K

Для организации трансляции нам потребуется:


  • Linux
  • FFmpeg (включает в себя ffserver)

Теория


FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. Он включает libavcodec, библиотеку кодирования и декодирования аудио и видео и libavformat, библиотеку мультиплексирования и демультиплексирования в медиаконтейнер. Название происходит от названия экспертной группы MPEG и «FF», означающего «fast forward».

© Wikipedia

ffserver идёт в комплекте с ffmpeg и выполняет роль медиа-сервера — получает видеопоток от ffmpeg, который может быть запущен на другой машине, и раздаёт его счастливым пользователям.
Каждый получаемый поток называется Feed’ом (далее будет просто фид). Таких потоков может быть несколько, так же как и отдаваемых (выходных).
FFmpeg у нас будет захватывать видео с веб-камеры или читать из файла.
Читать дальше →
Total votes 49: ↑41 and ↓8+33
Comments34

Skype и стандартные всплывающие сообщения в Ubuntu

Reading time2 min
Views7.7K
Пишу чтобы не забыть, а в дальнейшем использовать, надеюсь кому-нибудь тоже будет полезно. Озадачился заменить скайповские попапы на стандартные убунтовские нотификации, уж больно глаз режут. Есть задача, есть желание её решить. Как оказалось решение достаточно несложное. И так, решение.
Читать дальше →
Total votes 75: ↑69 and ↓6+63
Comments50

Разработка на Qt для Symbian S60 официально доступна

Reading time2 min
Views4.8K
Очень долго ждал официального релиза Qt 4.6.0, так как Тролли обещали поддержать официально разработку под S60 на Qt. Пока существовал Developer Preview — разработчик мог писать приложения для S60, но не существовало никаких механизмов для предоставления приложений конечному потребителю (то-есть пользователю).
image
image
На момент выхода релиза 4.6.0 обещали эту ситуацию поправить, и в форумах и в переписке тролли отвечали на вопросы касающиеся «deploy»'у (очень не нравится мне русский аналог этого слова: «развертывание» ) приложений на устройства так: «В пред релизе этого нет, ждите официального релиза. Там всё будет!».

Что же изменилось с выходом официального релиза?
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments28

Приватные слоты в паттерне Pimpl от Qt

Reading time10 min
Views7.4K

Вступление.


Недавно я писал по поводу реализации паттерна Pimpl в библиотеке Qt и призывал людей следовать такому подходу при разработке их собственных бибиотек. Теперь я хочу поговорить о таком понятии, как приватные слоты и тем самым продолжить эту тему. Заключительной статьей на эту тему будет реализация механизма Implicit Sharing и shared d-pointer.

Что это и зачем это нужно.


Приватные слоты — это механизм дополняющий функционал d-указателей. Он позволяет реализовать слоты для приватного класса, даже если он не является наследником от QObject (обычно он им и не является), но для этого публичный класс должен быть наследником от QObject. Тоесть по факту создается некий приватный слот в публичном классе и он непосредственно дергает нужный метод приватного класса.
Зачем это нужно? Ну рассмотрим на примере. Есть класс QAbstractScrollArea. Он просто отображает некий виджет (viewport) и обеспечивает прокрутку. Прокрутка обеспечивается с помощью двух экземпляров класса QScrollBar. Сами эти скролбары он хранит в приватном классе. Теперь проблемма: как подключить сигнал от скроллбара об изменение его позиции с классом QAbstractScrollAreaPrivate, ведь он не является QObject'ом? Сделать его наследником от QObject — лучше не делайте это :-). Можно сделать слот в публичном классе и повесить на него, то в таком случае это не очень красиво — так как наружу выходят слоты от внутренней реализации. Вот ту Qt-шниками был придуман достаточно разумный и элегантный подход — приватные слоты.

Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments17

Что такое Pimpl по версии Qt, и с чем его едят!

Reading time12 min
Views39K

Вступление.



Часто в документации от Qt встречается термин Pimpl. Кроме того, те кто хоть немного копался в исходном коде Qt часто видел такие макросы как: Q_DECLARE_PRIVATE, Q_D. А также встречал так называемые приватные заголовочные файлы, название которых заканчивается на "_p.h".
В этой статье я попробую приоткрыть ширму за всей это структурой.

Pimpl, что это?


Pimpl — Pointer to private implementation. Это одно из названий паттерна программирования. Еще его называют чеширским котом — «Cheshire Cat» (это название мне больше нравится). В чем суть этого паттерна? Основная идея этого паттерна — это вынести все приватные члены класса и, в не которых случаях, функционала в приватный класс.
Отсюда название «чеширский кот» — видно только улыбку, а все остальное остается невидимым, но оно несомненно есть :-) Кто не помнит этого замечательного кота, может обратится к первоисточнику, к книге Льюиса Кэрролла «Алиса в стране чудес». Очень интересная книга, особенно если читать в оригинале.
Что это дает?
Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments70

Тонкости перегрузки методов по константности *this

Reading time4 min
Views3.9K
dress11.jpg - image uploaded to PicamaticОбнаружил, что есть аспект работы C++, о котором я раньше как-то не задумывался. А именно: если у вас есть две реализации одного метода (перегрузка), отличающихся константностью *this:
    int & v();
    const int & v() const;

когда и какой метод будет вызываться?
Ночью было время подумать.
Total votes 46: ↑39 and ↓7+32
Comments39

QML — новый подход к построению GUI

Reading time3 min
Views11K
Традиционно все десктопные приложения пишутся на императивных языках программирования, этот подход прост и понятен, куда проще описать последовательность действий для решения той или иной задачи, нежели поставить задачу в понятной для машины форме, но когда речь заходит о проектировании внешнего вида и поведения, возникают сложности.
Веб дизайнеры же привыкли описывать, как должно выглядеть веб приложение, то есть ставить задачу, а не по пунктам описывать её решение, такой подход называется декларативным, он удобен, но к сожалению в традиционных приложениях до сих пор господствует именно императивный подход. Есть конечно дизайнеры форм, но они лишь позволяют в общих чертах обрисовать внешний вид приложения, но совершенно не способны описать его поведение. Для решения это проблемы в Qt Software был предложен новый проект Declarative User Interface и в рамках него новый язык разметки:

Встречаем QML


Это новый язык разметки, позволяющий описывать не только внешний вид, но и поведение ваших приложений. Он очень прост и обладает json образным синтаксисом, немного сближающим его html5, что думаю очень придется по душе веб-дизайнерам, да и программистам тоже. А в перспективе это наконец позволит полностью разделить внутреннюю логику работы приложения и его внешнее поведение, в результате чего будет наконец решена извечная проблема, когда программист занимается ещё и внешним видом приложения, потому, как дизайнерам слишком сложно было вникнуть в программирование.
Хотите прикоснуться?
Total votes 45: ↑37 and ↓8+29
Comments64

Многопоточность, общие данные и мьютексы

Reading time5 min
Views58K

Введение


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

Для блокировки общих данных от одновременного доступа необходимо использовать объекты синхронизации.

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

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

Ниже рассматривается работа с мютексами в Windows и Unix, подобная идея может быть использована при работе с другими объектами синхронизации.

Эта идея является частным случаем методики «Выделение ресурса — есть инициализация (RAII)».

Далее
Total votes 50: ↑38 and ↓12+26
Comments50

От любви до ненависти один шаг, или Вся правда о «Премии Рунета»

Reading time2 min
Views1.5K
Насколько мне известно, из числа людей, имеющих доступ в Интернет, меня знают примерно 25 процентов.

image

Из них (берём это число за 100 процентов) 10 процентов меня активно ненавидят, 10 – не определились со своим отношением ко мне, и 80 процентов оценивают меня положительно.

Любопытно: те, кто активно не любит, не переносит меня, как говорится, на дух, выказывают не просто неприятие, а агрессивное неприятие.

Впрочем, это понятно. Ненависть всегда агрессивна.

Я это почувствовал после того, как наш проект «СОЛО на клавиатуре» стал участником голосования на «Премию Рунета».
Читать дальше →
Total votes 275: ↑138 and ↓137+1
Comments166

Делаем освещение в квартире по датчику движения

Reading time3 min
Views165K
датчик Наверняка все слышали про технологию «умный дом». Одно из самых популярных применений этой технологии в автоматическом освещении — например, включение и выключение света при появлении или уходе людей из помещения. В этой статье хотелось бы показать, что ничего сверхествественного в этом нету, и реализовать эту возможность может любой человек. Итак, попробуем подключить к обычной лампочке Ильича в коридоре датчик движения, и заставим освещение работать в зависимости от наличия людей в помещении.
Читать дальше →
Total votes 181: ↑163 and ↓18+145
Comments224

Готовим плагин для qutIM на дому

Reading time6 min
Views857
Cегодня мы будем заниматься приготовлением плагина для qutIM'а, но не для того, который совсем недавно зарелизился, а для будущего, активная разработка которого сейчас идёт.
Для начала хотел бы сказать немного общих слов:
  1. В sdk03 мы постарались учесть все «ошибки бурной молодости»
  2. Оно полностью несовместимо со старым skd02
  3. Скорее всего, больше таких резких переходов в API между версиями не будет

И именно поэтому я рекомендую всем, кто ещё ни разу не писал плагины для Кутима, ориентироваться на sdk03
Хочу отметить немаловажный факт, что сейчас разработка ведется с использованием Qt 4.6, она предоставляет огромные дополнительные возможности, от которых просто грех отказываться.
Если вы горите желанием реализовать что-то интересное, но не знаете куда направить свою энергию, то эта статья для вас!
Поехали
Total votes 30: ↑20 and ↓10+10
Comments18

15 советов по Ubuntu для опытных пользователей Linux (перевод)

Reading time7 min
Views40K
Оригинал статьи на английском. Перевод: Boten, Deniska, MaxElc

Несколько дней назад я (здесь и далее — автор оригинальной статьи — Прим. пер.) написал о книгах, которые могут скачать начинающие пользователи, и прочитать их, чтобы изучить Linux самостоятельно. Сегодня в секции о Linux у нас есть кое-что и для опытных пользователей. Перед вами несколько советов, которые вы должны попробовать, если вы опытный пользователь Ubuntu Linux
Читать дальше →
Total votes 143: ↑96 and ↓47+49
Comments90

Использование Skype API в С++

Reading time3 min
Views23K
Не так давно понадобилась написать приложение которое бы автоматически отправляло сообщение по Skype определенному пользователю, который есть в списке контактов. Задача была не много сложнее, но дело не в этом. Решил написать маленькую статейку по использованию Skype API.
Читать дальше →
Total votes 45: ↑41 and ↓4+37
Comments20

Qt + Kinetic = Eye-candy за полчаса

Reading time5 min
Views3.1K
В процессе разработки новой версии QutIMа возникла потребность переписать систему уведомлений, так как старая имела множество недостатков.

Не слишком давно на Хабре появился топик, посвящённый новым возможностям, которые появились в Qt. В частности, в нём описывается новый фреймворк, призванный облегчить создание анимированного пользовательского интерфейса. Если дорогой читатель ещё не в курсе дела, то советую для начала ознакомиться с данной статьей.

Небольшое видео с демонстрацией возможностей:



неплохо, правда?
Total votes 36: ↑33 and ↓3+30
Comments41

Создание смазывания фона под окном в Windows

Reading time2 min
Views3.9K
Буквально вчера в блогах разработчиков Qt был опубликован топик, в котором описывалось как можно создать эффект размытия фона под окном приложения в Windows Vista и Windows 7.

Под катом его перевод
Total votes 23: ↑22 and ↓1+21
Comments30

Разработка собственной Файловой модели (вместо QDirModel и QFileSystemModel)

Reading time8 min
Views8.5K
В этой статье я расскажу о создании собственной файл модели в Qt. Сразу скажу что модель создавалась под конкретную задачу и не планировалось для широкого использования, так что в ней может и не быть того что вам хочется. Еще хочется добавить что опыт программирования на С++/Qt у меня не столь велик, поэтому вполне готов к комментариям типа: «Ваш код г%вно».

Теперь о том, а зачем собственно...


Известно что в Qt 4 есть две встроенных модели работы с файлами:
QDirModel и
QFileSystemModel.

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

Поэтому было принято решение написать собственную файл модель с блекджеком и шлюхами избавленную от всего лишнего и максимально быстро работающую.
Желающим читать далее...
Total votes 17: ↑15 and ↓2+13
Comments8

Пробуем Qt 4.6: Qt Animations и State Machine

Reading time8 min
Views14K
image
На днях вышло так называемое «технологическое превью» (technological preview) Qt 4.6, которое позволяет уже сейчас попробовать новые фичи, которые войдут в релиз 4.6 этого замечательного фреймворка. Перечислять новшества я не буду — они были достаточно хорошо освещены в этом топике, а подробнее остановлюсь на двух из них: State Machine и Qt Animation Framevork.

Итак, что же они из себя представляют?
Я хочу прочитать длинный пост и посмотреть 4 коротеньких видео
Total votes 54: ↑52 and ↓2+50
Comments56

Information

Rating
Does not participate
Location
Мурманская обл., Россия
Date of birth
Registered
Activity