Pull to refresh
117
0
Никита Цуканов @kekekeks

Гуру велосипедостроения

Send message

Прикручиваем Head Up Display к MonoDevelop или о том, как криво сделано глобальное меню в Ubuntu

Reading time3 min
Views2.2K


Проблема с неработоспособностью HUD в MonoDevelop уходит корнями в старый баг, вызванный переходом на глобальное меню и заключавшийся в том, что менюшки у MonoDevelop не показывалось вообще никакой. Его "починили", выключив использование глобального меню как такового. Это же так просто, не фиксить проблему в своей кривой либе, а сделать чёрный список приложений.
Тяга к экономии пикселей и желание таки прикрутить HUD взяли своё. Целых два часа моего драгоценного времени, несколько костылей и всё таки завелось.

Небольшой экскурс в работу глобального меню: оно экспортируется приложением через D-Bus, а чтобы разработчики не писали дополнительный код, в Canonical наклепали хитровывернутых библиотек, берущих нормальное, человеческое меню оконного тулкита и экспортирующие его за разработчика, причём, как выяснилось, весьма криво, но об этом потом. При этом возможности вручную экспортнуть это меню нет. Точнее, есть какая-то мутная библиотечка с названием libdbusmenu и полным отсутствием хоть какой-то документации, не говоря уже о биндингах к чему-либо. Этакая проприетарщина наоборот — код открыт, но использовать его толком нельзя ввиду невозможности быстро понять, как с этим вообще работать. Таким образом реализовать в GnomePlatform.cs метод SetGlobalMenu (предусмотренный специально для систем с глобальным меню и реализованный в MacPlatform.cs) не представляется возможным, что ж, придётся разбираться с тем, почему не работает костыль с экспортилкой и придумывать свои костыли, чтобы оно заработало. Я такими извращениями не занимался со времён, когда нужно было заставить работать Навител на разнокалиберных китайских железках с изувеченной до неузнаваемости WinCE 4.2.

Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments19

CXXI: Мост между мирами C# и C++

Reading time7 min
Views42K
В рантайме Mono есть немало средств для взаимодействия с кодом на не .NET языках, но никогда не было ничего вменяемого для взаимодействия с кодом на C++.

Но это вскоре изменится благодаря работе Алекса Коррадо, Андрэа Гайта и Зольтана Варга.

Вкратце, новая технология позволяет разработчикам C#/.NET:

  • Легко и прозрачно использовать классы C++ из C# или любого иного .NET языка
  • Создавать экземпляры классов C++ из C#
  • Вызывать методы классов C++ из кода на C#
  • Вызывать инлайн-методы C++ из кода на C# (при условии, что библиотека скомпилирована с флагом -fkeep-inline-functions или если вы скомпилируете дополнительную библиотеку с их реализациями)
  • Наследовать классы C++ из C#
  • Переопределять виртуальные методы классов C++ методами на C#
  • Использовать экземпляры таких смешанных C++/C# классов как в коде на C#, так и в коде на C++

Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments18

SkypeTab неделю спустя + негодования в адрес Unity пост

Reading time4 min
Views4.1K
Если вы не пользуетесь скайпом для линукса, можете сразу ткнуть сюда и посмотреть на батнегодование.
Для тех, кто не в курсе, что это за SkypeTab такой, поясняю: штука, упаковывающая то недоразумение, что нам подсунули вместо нормального интерфейса, в нечто удобоваримое. Подробнее см. видео и предыдущий пост.

За прошедшую неделю были произведены следующие изменения:
  1. Достигнута совместимость с Unity
  2. Достигнута совместимость с kwin и, похоже, со всеми остальными оконными менеджерами (этот ваш awesome почему-то не хочет разворачивать окно во весь экран, но, думаю, его можно донастроить как надо).
  3. Потеряна и вновь возвращена (спасибо тов. Restorer за то, что нашёл корень проблемы и предоставил фикс) совместимость с Gentoo
  4. Решён ряд проблем, связанных с фокусом ввода
  5. Добавлено переключение табов по Ctrl+Tab/PgDown/PgUp
  6. Добавлена возможность выбрать, какие типы окон встраивать во вкладки
  7. Устранено «мерцание» при открытии новой вкладки
  8. Исправлена тянущаяся ещё с прошлогодних версий проблема производительности, связанная с тем, что статус наличия новых сообщений проверялся опросом X-сервера на предмет _WM_NET_NAME и проверкой наличия * в начале (на третий день Зоркий Глаз увидел, что у сарая нет стены QWidget есть isWindowModified)
Скачать бесплатно без регистрации и без СМС
Total votes 87: ↑79 and ↓8+71
Comments64

Вкладки для линуксового скайпа. А вдруг я ещё не всем с ними надоел?

Reading time2 min
Views5.9K
Если вы не пользуетесь скайпом для линукса, можете смело листать хабр дальше.

Для тех, кто не знаком с эпопеей переписываний с нуля данной утилиты, небольшое видео того, как это работает:

Для остальных же сообщаю, что оно переписано уже в четвёртый раз, теперь на C++ и Qt.
О том, что поменялось, и где всё это счастье взять, можно узнать под катом.
Читать дальше →
Total votes 94: ↑84 and ↓10+74
Comments104

Вышел MonoDevelop 2.8.2

Reading time1 min
Views1.9K
Вышло второе обновление к релизу 2.8 среды разработки для платформ .Net, Mono, MonoTouch и MonoDroid. Все нововведения связаны с разработкой под Android и iOS. Так же немного оптимизировали дебаггер.
Помимо этого, похоже, доведён до ума редактор кода. После получасовых издевательств мне не удалось заставить его сыпать ошибками (неделю назад подобная процедура выявила невозможность сохранить файл без кода, но с комментариями).

Полный список изменений можно почитать здесь. Обзор релиза 2.8 на хабре, если кто ещё не читал, можно увидеть тут.
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments16

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Reading time5 min
Views173K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

Читать дальше →
Total votes 385: ↑339 and ↓46+293
Comments186

Выпуск MonoDevelop 2.8.1

Reading time1 min
Views1.2K
Вышло первое обновление к релизу 2.8 среды разработки для платформ .Net, Mono, MonoTouch и MonoDroid. Никаких нововведений не было, зато исправлено несколько весьма критичных багов, один из которых приводил к полной невозможности редактирования исходника из-за постоянно выскакивающих сообщений об ошибке. Так же исправлен набор проблем с автодополнением, подсветкой синтаксиса и ещё несколько незначительных, но неприятных вещей.

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

Последнюю версию для Windows и MacOS X можно скачать с официального сайта, но пакетов для большинства дистрибутивов Linux всё ещё нет, равно как и для 2.8. Впрочем, как заметили в комментариях, относительно openSuSE и NLE надпись на сайте об отсутствии пакетов нагло обманывает.

Пользователи же Debian (потребуется поставить mono из experimental репозитория) и Ubuntu при желании могут воспользоваться моим ppa, в котором можно найти как сей релиз, так и пакет, пересобираемый с каждым коммитом в github-репозитории.
Total votes 15: ↑14 and ↓1+13
Comments7

SkypeTab. Вкладки для линуксового скайпа. Теперь без костылей

Reading time1 min
Views2.7K
Поскольку прошлый пост уже пару дней как пропал из выдачи, и апдейт в нём наврятли прочитают, пишу новый и короткий.

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


Протестировано на убунте и федоре с compiz, metacity и kwin. Тем не менее нуждается в тестировании.
Ссылки
Исходники.
Архив для самостоятельной сборки и установки.
PPA для Ubuntu.
Прямая ссылка на deb-пакет (должно нормально встать на lenny/squeeze и производные).
RPM-ки для федоры и суси, говорим спасибо Ignotus

Читать дальше →
Total votes 113: ↑105 and ↓8+97
Comments84

SkypeTab — вкладки для линуксового скайпа. Теперь под любые оконный менеджер и панель

Reading time2 min
Views1.4K
Устарело, см. свежую версию тут.

  • Если Вы не пользуетесь Linux или Skype, то этот пост не для Вас.
  • Если Вы настроили себе мост в Pidgin и теперь все 3.5 скайпоконтакта у Вас в этом списке, то этот пост не для Вас.
  • Если Вас устраивает то, как скайпоокна группирует KWin, и не смущает тот факт, что они как в таскбаре место все дружно занимали, так и занимают, то этот пост тоже не для Вас.
А вот если Вы активно пользуетесь скайпом, активно переключаетесь между несколькими конфами и хотите удобного нативного интерфейса, то рекомендую всё же ознакомиться.



Когда я разрабатывал предыдущую версию, я упёрся лбом в стену. Все попытки поправить косяки упирались в «умные» оконные менеджеры, лучше меня знающие, где должны находиться окна, и в кривые утилиты таскбара (да-да, gnome-panel в их числе), игнорирующие SKIP_TASKBAR_HINT, если он не был установлен до появления окна на экране. Знаете, я тогда сдался.

Но на прошлой неделе на переходе в метро меня кто-то толкнул и я полетел вниз с лестницы. В нижней точке полёта, в момент удара лбом в стену, в тот чудесный миг, я осознал, что никакой стены на самом деле нет. Нет, мне потом в больнице рассказали, что стена на самом деле была, причём даже бетонная. Но я сейчас про ту метафорическую стену из предыдущего абзаца.
Читать дальше →
Total votes 119: ↑111 and ↓8+103
Comments87

Mono 2.10.1 и MonoDevelop 2.6 с работающим дизайнером форм в extras-testing репозиториях для N900

Reading time2 min
Views2.3K
А вдруг я ещё не всех задолбал?
В общем, с помощью чёрной магии, лома и какой-то матери мне таки удалось заставить Mono собираться под скрэтчбоксом, а MonoDevelop довести до вменяемого состояния, так что теперь нормально работает редактор GUI.



Чтобы поставить это чудо себе на железку, надо подключить extras-testing (этого ещё кто-то не сделал?) и выбрать его в менеджере программ. Если была установлена версия из прошлого поста, то её лучше зачистить, ибо может криво обновиться.

Узнать про нестандартные технические решения
Total votes 51: ↑46 and ↓5+41
Comments11

Упаковка .NET приложений для N900 на примере Bless

Reading time3 min
Views1.2K
Рантайм и библиотеки Mono у нас уже есть. Но они наврятли попадут в репозитории Nokia по причине достаточно «весёлой» процедуры их сборки. Я попробую, конечно, пропихнуть в раздел non-free, но никаких гарантий нет. Ссылаться на внешний репозиторий некошерно, а держать несколько клонов этих пакетов проблематично. Как быть? Да достаточно просто. Упаковать рантайм и библиотеки в автономный исполняемый файл при помощи утилиты mkbundle. Кстати, вопреки опасениям я не заметил разницы во времени запуска и потреблении памяти до и после упаковки.



Читать дальше →
Total votes 42: ↑32 and ↓10+22
Comments12

Альтернативная среда сборки для N900

Reading time5 min
Views2.1K
На текущий момент существует единственный официальный способ компиляции под N900 — через Scratchbox. Чем он мне не угодил? Да вот чем. Во-первых, он есть только под i386, со всеми вытекающими из этого весёлостями в виде необходимости держать кучу 32-хбитных библиотек. Во-вторых, ставится оно вопреки всем канонам зачем-то в /scratchbox, попутно прописывая свои модули для binfmt и, вытворяя прочую похабщину, разрушает стройную структуру дистрибутива. В-третьих там достаточно древний qemu, что даёт отнюдь не рекордную скорость компиляции. Ну и в-четвёртых, ставится это чудо очень медленно (я не знаю, где они хостятся, но установщик качал полгига пакетов довольно-таки длительное время. Кстати говоря, весит оно в установленном виде тоже изрядно. А поверх него ещё идёт SDK.
Ну и самое важное. qemu-user не поддерживает весь набор системных вызовов ядра. А, значит, часть софта (в частности, mono), банально не сможет работать. Проблему можно было бы решить, chroot'ясь в окружение из arm-ной системы в режиме полной эмуляции, но см. пункт первый.
В общем, убогое поделие, вообще не представляю, у кого рука поднялась его использовать в серьёзном проекте.

По-идее ещё можно компилить непосредственно на устройстве. Но тут проблема в том, что там стоит busybox, c которым очень плохо дружит тот же dpkg-buildpackage. Соответственно, при переносе rootfs c устройства и попытках оную использовать, эти грабли никуда не исчезают. А заменить его на coreutils не так-то просто, ибо это сломает часть зависимостей и отвалится полсистемы.



И что делать? А мы пойдём другим путём. Изобразим из себя ярых последователей барона Мюнхгаузена и в лучших традициях процедуры bootstrap (поднятие самого себя за шнурки ботинок) установим систему с нуля из пакетов. Как именно, читайте под катом.
Читать дальше →
Total votes 34: ↑28 and ↓6+22
Comments14

MonoDevelop на Nokia N900. Where is your God now?

Reading time3 min
Views2.3K

Работает всё, что вообще может работать. Редактор, компиляция, отладчик, значение переменной по клику в отладчике. С диким скрипом и скрежетом даже дизайнер форм.

Пощупать сии ништяки у себя на мобилке можно добавив
deb http_://archive.kebrum.com/n900/ all main
В sources.list (надеюсь, я ничего не забыл при упаковке). Также понадобится подключить extras-testing и extras-devel. После чего набрать в консоле apt-get install monodevelop. Вся иерархия пакетов полностью соответствует таковой в Debian, за исключением 2 оптификационных, но они автоматом подтянутся по зависимостям.

Пока пакеты ставятся, забивая бесценное место в rootfs библиотеками из маэмовских репов (у меня-то всё в /opt, вы не подумайте!), предлагаю Вам почитать, как дошёл я до жизни такой.

Проникнуться красноглазием
Total votes 142: ↑131 and ↓11+120
Comments41

Mono и Windows Forms на Nokia N900? Да не вопрос!

Reading time5 min
Views3.9K
Я был несколько удивлён, не увидев mono в репозиториях для этого замечательного устройства. Но, поскольку оно было позарез нужно, решил всё-таки собрать. И тут же напоролся на весьма забавную особенность маэмовского SDK, которая этого сделать мне не позволила. Но обо всём по-порядку. А пока что небольшой скрин того, что получилось:
image

Вместо нормального эмулятора устройства и тулчейна для сборки, ребята из нокии приспособили под это дело scratchbox, который, эксплуатируя qemu-user, запускает arm-ные бинарники прямо на ядре текущей ОС. И всё бы замечательно, если бы оно работало как надо. На деле же во время сборки qemu выдаёт «unsupported syscall 242», после чего сборка стопорится. Обычным кросскомпилером тут что-либо сделать сложно, ибо mono в лучших традициях процедуры bootstrap (поднятие самого себя за шнурки ботинок) компилит сначала свой компилер и уже с его участием дособирает всё остальное. Как с этим бороться, не особо понятно, если только компилить на девайсе, но там это займёт годы. Для N800 mono какой-то герой таки смог собрать, но работать на n900 оно отказалось, вываливаясь с SIGSEGV. Если кому-то интересно, как сия проблема была решена, или же самостоятельно пощупать моно на устройстве (можно прямо в Visual Studio писать, если что) прошу под кат.
Читать дальше →
Total votes 64: ↑49 and ↓15+34
Comments25

Бета-тестирование Kebrum VPN, анонимность доступная каждому

Reading time3 min
Views3.2K
Интернет является молодой технологией, если считать возраст с момента создания службы WWW в 1989 году, то ему всего 21 год. Как и всякая технология, созданная человеком, глобальная сеть, помимо ее предназначения(официально это быстрый обмен информацией) может быть использована во вред. Речь идет вовсе не о вирусах, ломающих компьютер и не о предложениях увеличить МПХ. Интернет является настолько удобной вещью, что все больше и больше сливается с реальной жизнью и в общем-то уже нельзя сказать, что он является «виртуальностью». Это в фантастике погружаешься в виртуальную реальность, где свой независимый от реальности мир, а тут все иначе, Интернет это просто система по передаче информации. Но почему-то большинство людей так не считает и им кажется, что то, что происходит в Интернете никак не повлияет на их жизнь. А ведь за последние 20 лет мир стал другим, сегодня из России попасть в Америку можно за 27 часов, при этом цена билета не является чем-то недоступным. Хорошо об этом сказал Louis CK в этом видео.
И к чему всё это?
Total votes 61: ↑50 and ↓11+39
Comments145
2

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity