Pull to refresh
-1
0
Send message

Основы работы с Wine для начинающих

Reading time7 min
Views631K

Введение


Статья посвящена Wine и всем аспектам его использования. В сети находится очень
много информации, есть различные руководства по настройке и многое другое. Я
постараюсь объединить все для того чтобы любой человек смог достичь
максимального успеха, в пределах своих способностей и конечно возможности
программы. Итак — начнем.

Wine — это отдельная реализация Windows API, а не эмулятор, как большинство
думают. Не единожды повторялось, но и здесь будет уместно. Это и делает проект
уникальным и интересным для пользователей различных систем, открывает различные
пути для реализации своих идей. Уникальность заключается в том, что с помощью
этой программы можно запускать Windows приложения в Ubuntu и в других
Linux системах, а также во FreeBSD и в Mac OS X. Правда и тут есть
свои «подводные камни». Некоторые думают что будет легко перейти с одной
системы на другую, в данном случае мы рассматриваем Windows и Linux.

Заблуждение заключается в том что люди думают что у них получиться запустить из
под Wine различный софт, к которому они привыкли и им удобно в нем работать.
Как не крути просто так ничего не бывает. Чтобы заработал наш любимый софт под
Wine нужно попотеть, перечитать кучу руководств и взвесить этот объём
информация. Конечно не совсем софтом придется «пыжиться», но готовым надо быть ко всему. Проект Wine развивается очень быстро, но до стабильной работы ему
очень далеко. Но думаю что в скором будущем весь основной софт, а также игры
будут работать на нем стабильно.

Читать дальше →

Linux pipes tips & tricks

Reading time8 min
Views198K

Pipe — что это?


Pipe (конвеер) – это однонаправленный канал межпроцессного взаимодействия. Термин был придуман Дугласом Макилроем для командной оболочки Unix и назван по аналогии с трубопроводом. Конвейеры чаще всего используются в shell-скриптах для связи нескольких команд путем перенаправления вывода одной команды (stdout) на вход (stdin) последующей, используя символ конвеера ‘|’:
cmd1 | cmd2 | .... | cmdN

Например:
$ grep -i “error” ./log | wc -l
43

grep выполняет регистронезависимый поиск строки “error” в файле log, но результат поиска не выводится на экран, а перенаправляется на вход (stdin) команды wc, которая в свою очередь выполняет подсчет количества строк.

Логика


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

Размер буфера начиная с ядра версии 2.6.11 составляет 65536 байт (64Кб) и равен странице памяти в более старых ядрах. При попытке чтения из пустого буфера процесс чтения блокируется до появления данных. Аналогично при попытке записи в заполненный буфер процесс записи будет заблокирован до освобождения необходимого места.
Важно, что несмотря на то, что конвейер оперирует файловыми дескрипторами потоков ввода/вывода, все операции выполняются в памяти, без нагрузки на диск.
Вся информация, приведенная ниже, касается оболочки bash-4.2 и ядра 3.10.10.

Простой дебаг


Утилита strace позволяет отследить системные вызовы в процессе выполнения программы:
$ strace -f bash -c ‘/bin/echo foo | grep bar’
....
getpid() = 13726                   <– PID основного процесса
...
pipe([3,  4])                       <– системный вызов для создания конвеера
....
clone(....) = 13727                <– подпроцесс для первой команды конвеера (echo)
...
[pid 13727] execve("/bin/echo",  ["/bin/echo",  "foo"],  [/* 61 vars */] 
.....
[pid 13726] clone(....) = 13728    <– подпроцесс для второй команды (grep) создается так же основным процессом
...
[pid 13728] stat("/home/aikikode/bin/grep",   
...
Видно, что для создания конвеера используется системный вызов pipe(), а также, что оба процесса выполняются параллельно в разных потоках.
Читать дальше →

Формирование документов на основе ODT шаблонов. ODT to PDF

Reading time4 min
Views11K
Здравствуйте, уважаемы хабровчане!

Не так давно мне пришлось столкнуться с типичной задачей – формировать документы с пользовательскими данными на основе шаблонов ODT средствами PHP. Звучит весьма тривиально, но намучиться пришлось сильно. Дело в том, что ни одно из доступных средств, так или иначе, не подошло. Одни библиотеки формировали документ криво, другие не поддерживали русские шрифты, третьи – двигали картинки в стиле Harlem Shake. Вот и пришлось «велосипедить».

Итак, задача вкратце:

  1. Обработать ODT шаблон. Заменить placeholder’ы на пользовательские значения
  2. Конвертировать в pdf. Показать пользователю

Читать дальше →

FQ_CoDel — планировщик пакетов, который сделает все за вас

Reading time3 min
Views28K
Качаете и раздаете торренты на высокой скорости, но из-за этого прыгает пинг в онлайн-играх, и играть становится невозможно? Сожитель совершает видеозвонок по скайпу, а вы не хотите ему мешать? Держите файлопомойку, которая занимает весь канал, а QoS настраивать лень? Заливаете видео на youtube с телефона, скорость ограничить не можете?

fq_codel — планировщик пакетов (qdisc) с активным управлением очередью, который решит все ваши проблемы!
Все еще не верите? Посмотрите видео!

На видео видно, что компьютер слева, подключенный через обычный домашний роутер с прошивкой cerowrt (измененный OpenWRT), открывает сайты значительно быстрее, чем правый компьютер с тем же роутером, но со стандартной прошивкой.
Читать дальше →

Пишем платформер на Python, используя pygame

Reading time11 min
Views364K
image
Сразу оговорюсь, что здесь написано для самых маленькихначинающих.

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

Что такое платформер?


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

Одними из моих любимых игр данного жанра являются «Super Mario Brothers» и «Super Meat Boy». Давайте попробуем создать нечто среднее между ними.
Читать дальше →

Способ извлечь данные из базы 1С

Reading time11 min
Views105K


Хочу поделиться способом выгрузки данных из 1С на основе COM-соединения. Этот вариант можно назвать альтернативным использованию стандартных и нестандартных обработок 1С. Для примера взят язык C#, а выгрузка выполняется в один большой XML-файл.
Читать дальше →

Проброс видеокарты в KVM из под ubuntu

Reading time4 min
Views78K

Предистория


Года два назад я решил перейти полностью на линукс, но необходимость в венде не упала, поэтому всегда держал у себя 2 операционные системы. Около месяца назад попробовал поставить VirtualBox и на нее установить Windows, в общем то работать с 2мя операционными системами мне понравилось, но была одна проблема, я программирую исключительно компьютерную графику и мне нужна была поддержка OpenGL 3.3 и выше, к сожалению VirtualBox не предоставлял мне такой возможности. Погуглив наткнулся на такую штуку как Xen, долго пытался что-то сделать на ней, в итоге ничего не вышло, скорее всего из-за основной видеокарты — nVidia GeForce 580 GTX, гипервизор попросту не хотел запускать даже убунту, не говоря уже об виндовсе. Начал искать другие гипервизоры, и наткнулся на KVM, с ним пришлось повозиться, но в конце концов все заработало.

Конфигурация


Итак, нам понадобится:
  • Процессор с поддержкой виртуализации (в Intel — это VT-d, в AMD — AMD-Vi). Важно: чипсет тоже дожен поддерживать эту технологию
  • Материнская плата с блоком управления памятью ввода/вывода(IOMMU)
  • Две видеокарты, для гостевой ОС желательно использовать AMD видеокарту, т.к. с ней проблем не должно быть. Видеокарты NVidia не работают.

Моя конфигурация:
  • Процессор AMD Phenom II x4
  • Материнская плата ASUS M5A99X EVO R2.0
  • Видеокарта для Ubuntu: NVidia GeForce 580 GTX
  • Видеокарта для гостевой ОС: AMD Radeon HD 5800

Читать дальше →

Intel/AMD Switchable graphics [Ubuntu 12.04 — 12.10]

Reading time2 min
Views32K
Доброго времени суток!

Наконец-то получилось добиться адекватно работающей т. н. «Гибридной графики» на Ubuntu 12.04 LTS (справедливо и для 12.10, также наверняка по этому «мануалу» будет работать и для других Debian-based систем)

В сети есть решения, но честно говоря ни одно из них мне не помогло, сколько я не пробовал.
Например, есть мануал годовой давности от Alexislavie на «Ubuntu Forums» — честно говоря этот способ «убивал» систему 3 раза подряд. Скорее всего проблема в обновлении xorg предложенное там. Да и драйвер там приведен на данный момент весьма старый. Хотя эта инструкция и наиболее близка к правде. Собственно описанный мною способ буквально немного отличается :-) Но работает.
Читать дальше →

Знакомство с GStreamer: Источники данных

Reading time10 min
Views79K
Здравствуй, хабраюзер, интересующийся фреймворком GStreamer! Сегодня мы поговорим о источниках медиа-данных (sources), и тем самым продолжим курс статей посвященный GStreamer.

Предыдущая статья: Знакомство с GStreamer: Введение.

Вступление



Источники данных — это класс плагинов GStreamer который позволяет читать медиаданные из различных источников, таких как файловая система или аудио-входы звуковой карты. Также, они позволяют получать медиапоток с различных серверов потокового вещания, такие как HTTP (ICECast, ShoutCast), RTSP, RTMP, TCP и UDP. А еще имеется возможность читать данные с DVB карт, CDDA-дисков (народе известных просто как «компакт-диски»), и еще много всего, при помощи различных плагинов, которых на данный момент около 30.
Примечание: как говорилось в прошлой статье, источники данных имеют только один pad с названием src, так как его можно подключить к другому элементу, но к нему подключить ничего нельзя.

В этой статье мы разберем некоторые (пожалуй, наиболее востребованные) источники данных, напишем немного кода на Python и узнаем много нового.
Поехали

Знакомство с GStreamer: Введение

Reading time3 min
Views87K

Дисклеймер

Данная статья ориентирована на начинающих программистов, которые не знакомы с GStreamer и хотят с ним познакомиться. Опытные разработчики навряд ли найдут для себя что-то новое в этой статье.

Преамбула


Многие наверное слышали, что есть такая вещь как GStreamer, или же видели как Ubuntu и ей подобные дистрибутивы предлагают установить различные пакеты, в названии которых содержится «gstreamer» при первой попытке воспроизвести mp3 или какой-нибудь иной файл с «не свободным» форматом медиаданных. Так вот, речь пойдет именно об этой библиотеке.

Введение


GStreamer — мощный фреймворк для построения мультимедийных приложений, который перенял идеи «video pipeline» от Oregon Graduate Institude, а так же что-то взял из DirectShow. Данный фреймворк позволяет создавать приложения различных уровней сложности, начиная от простого консольного плеера (можно воспроизвести какой-нибудь файл прям из терминала без написания какого-либо кода), заканчивая полноценными аудио/видео плеерами, мультимедийными редакторами и прочими приложениями.
Узнать подробности

Переносим функциональность bash в cmd.exe

Reading time2 min
Views115K
Мне, как и многим из вас, работать с bash и стандартными утилитами Linux гораздо удобнее и приятнее, чем с cmd.exe. Однако, к сожалению, порой обстоятельства складываются так, что операционную систему выбирать не приходится. Например, в моём случае корпоративным стандартом является Windows 7. К счастью есть способ сделать жизнь линуксоида в командной строке Windows комфортнее, о нём и пойдет речь ниже.

Читать дальше →

RPG для обучения детей программированию на Java

Reading time2 min
Views126K

Java считается мало подходящим для того, чтобы стать первым языком программирования, в отличие от того же Pascal или Python, тем более для детей. Однако, это обстоятельство не остановило специалистов университета Калифорния (Сан-Диего) от любопытного эксперимента, который, по их словам, показал вполне успешные результаты — ими была разработана игра CodeSpell для обучения детей Java в ходе игрового процесса.

Игра представляет собой нечто вроде RPG от первого лица с довольно скромной на сегодня графикой и весьма типичным сюжетом. Игрок — волшебник в стране, населённой гномами, которые по некоторой причине утратили свои магические способности. Задача игрока — помогать гномам при помощи своей магии, которая представляет из себя Java-код, выполнение которого приводит к модификации предметов и влиянию на окружающий мир: левитация, полёты, уничтожение огнём и тому подобное. Игра «помогает» игроку различными способами, начиная от подсказок и заканчивая чем-то на подобие дополнения кода, так что раздражения по поводу заклинания на Java «как разрушить это препятствие» у школьников не должно возникнуть.

Игровой процесс — правда, урывками и без особого смысла — можно посмотреть на видео
Узнать подробности

GamePlay 3D Framework — лёгкий старт в кроссплатформенную разработку 3D игр

Reading time13 min
Views32K
Доброе время суток, уважаемые хабражители!

Прослушав курс по компьютерной графике в университете и вдоволь наигравшись с OpenGL, я решил, что пора бы уже двинуться дальше и попробовать себя в разработке игр. Писать с нуля свой движок, прямо скажем, не очень-то хотелось. Главной целью было скорее посмотреть как это делается, вынести уроки и может быть создать что-то на базе выбранного движка. Беглый поиск показал, что с открытыми кроссплатформенными движками немного туго. У одного проблемы с Linux, Windows или Mac OS, у другого со свежими версиями мобильных ОС, третий почти заброшен… Но я-таки наткнулся на один очень привлекательный экземпляр, о котором и хочу поведать в этой статье.

gameplay

Имя этому фреймворку — GamePlay 3D. Информации о нём на просторах интернета не очень много, чего уж говорить про рунет. Это open source фреймворк написанный на C++ для программирования игр на C++ со всеми вытекающими из этого достоинствами и недостатками. Авторы проекта позиционируют его как универсальный инструмент, эдакий аналог cocos2d для 3D игр. Чтобы начать писать на GamePlay 3D не нужно обладать глубокими знаниями OpenGL, GLSL или математики 3D графики, однако все мы понимаем, что для достижения хорошего результата от этого никуда не деться. Подробности и небольшой пример для старта под катом.

Читать дальше →

Использование словарей в tcl

Reading time6 min
Views5.9K
Приветствую, Хабра! %username, ты наверняка слышал про такой язык как tcl и его графический тулкит tk. Язык отличается особой гибкостью (на мой скромный взгляд). Пока нет много времени написать об «облачной» разработке, решил написать мини-статью/мини-урок про одну из возможностей замечательного языка tcl — словарях ( причем, их я не могу вспомнить по книге «Практическое программирование на Tcl/TK», быть может просто читал старую версию). Наиболее полное описание данного типа данных, %username, ты можешь найти по ссылкe.
Читать дальше →

Adblock теперь работает независимо от Google Play

Reading time1 min
Views94K


Не так давно Google убрал блокировщик рекламы AdBlock из своего каталога приложений. В общем-то, эта новость расстроила многих пользователей приложения, поскольку оно реально полезно в некоторых ситуациях. Понятно, что стоило ожидать появления независимого дистрибутива данной программки, которая работала бы вне среды Google Play. Так и случилось — разработчики выпустили версию Adblock Plus 1.1 for Android, которая теперь работает автономно.

Читать дальше →

Использование zRam для увеличения количества доступной памяти под Linux

Reading time3 min
Views143K
image
Уже 2 месяца использую на своих компьютерах модуль zRam и хочу поделиться результатами. На практике он позволил мне не используя раздел подкачки, и не получая видимого замедления работы компьютера увеличить размер оперативной памяти в 2.5-3 раза. На сервере виртуалок тот же подход позволил очень ощутимо увеличить отзывчивость при нехватке памяти.
Заинтересовавшихся прошу под кат.
Читать дальше →

Умная зарядка Kweller X-1800. Заряжаем никель правильно

Reading time10 min
Views151K
Опять понедельник, и опять что-то интересное у нас на столе в Box Overview! На этот раз — интеллектуальное зарядное устройство для Ni-Mh аккумуляторов типоразмера AAA и AA.
Почему интеллектуальное?

image
В отличие от обычных зарядных устройств, которые продаются задешево китайцами или входят в комплекты типа «10 дешевых аккумуляторов и дешевая зарядка за 2000 рублей», и заряжают «капельным» способом, это зарядное устройство имеет в себе контроллер, в который заложены программы быстрой зарядки аккумуляторов, и некоторые другие фишки — вроде определения емкости и «тренировки» аккумуляторов для восстановления емкости.
Читать дальше →

19 команд ffmpeg для любых нужд

Reading time3 min
Views587K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →

Помощник моделирования БД: хорошо забытое старое

Reading time1 min
Views19K
Навеяно недавним постом.

Как то действительно мало затрагивается тема десктопных БД-конструкторов, хотя наверное ни один здравомыслящий человек не будет проектировать свой проект сразу в СУБД.

Хочу написать мини-обзор о совсем не новом, но верном помощнике — SQL Power Architect'е. Опенсорсном кроссплатформенном приложении написанном на java, с поддержкой различных БД.
Читать дальше →

Перевод SDL Game Framework Series. Часть 2 — SDL Coordinates and Bliting

Reading time8 min
Views21K
Взяв за основу первый урок, мы будем углубляться в мир поверхностей SDL. Как я уже говорил, SDL поверхности, в основном, это изображения, сохраненные в памяти. Представьте себе, что у нас есть пустое окно размером 320x240 пикселей. В системе координат SDL, окно представлено следующим образом:


Как это работает?

Information

Rating
Does not participate
Registered
Activity