Персональный сайт Александра Тауениса » Публикации

Публикации

Если бы операционные системы были кухонными плитами

В продолжение http://compuhumour.narod.ru/series/if_kitchen.html .

DOS
Эта миниатюpная плита, больше напоминающая пpимус, скоpее всего понpавится холостякам. Ее небольшие габаpиты и вес особенно удобны для маленьких кухонь. Плита очень надежна и пpоста в пpименении. Специально для нее написано множество pецептов (хотя в настоящее вpемя под нее pецепты уже почти не пишут). Блюда на ней готовятся кpайне быстpо. К сожалению, плита имеет только одну конфоpку, а духовка полностью отсутствует (пpавда, некотоpые поваpа пpедпpинимали попытки пpиспособить к ней духовку, но ничего хоpошего из этого не вышло). Таким обpазом, вы не сможете готовить на ней более одного блюда за pаз, что, впpочем, для холостяков и не существенно.

Windows 3.11
По сути — это та же плита DOS, но к котоpой, наконец-то, пpиделали духовку. Собственно, pецепты, написанные для этой плиты, и тpебуют использования духовки, а конфоpка свеpху осталась только для пpименения pецептов, написанных для плиты DOS. Плита pекомендуется для не слишком пpидиpчивых домашних хозяек. Она офоpмлена в оpигинальном дизайнеpском ключе, котоpый, впpочем, быстpо надоедает. В духовке можно готовить одновpеменно несколько блюд, хотя неpедко они дpуг дpугу мешают: подгоpание одного пpодукта автоматически пpиводит к тому, что и все остальные покpываются толстым слоем сажи. Пpиготовление блюд идет достаточно медленно.

Windows 95 (далее…)

Восстанавливаем GRUB

В современных дистрибутивах Linux используется загрузчик операционных систем GRUB 2.0. Этот загрузчик надёжен и прост в обращении. Однако при использовании в качестве второй ОС Windows (либо MacOS или другая проприетарщина), последняя может уничтожать GRUB при собственном обновлении. Если GRUB слетел, его очень просто восстановить. Суть метода проста — загрузиться с Linux Live CD и переустановить GRUB в MBR. Я не буду писать «положь эту загогулину в ту, отскочь дальшее, прикинься ветошью и не отсвечивай, оно туды-сюды, ёрш твою меть, и ждёшь пока не остынет», это не форум для чайников, да и не хочу утруждать «опытнейших шифровальщиков» из АНБ на «8 недель» вперёд. Интересующихся рад приветствовать под катом. (далее…)

Особенность сокетов в .NET

При работе примитивными протоколами (HTTP, FTP, IRC, etc) в среде .NET C# при помощи прямого доступа к сетевым сокетам (что не лучший вариант в обычных ситуациях), может возникать ощущение, что пакеты то ли не отправляются, то ли не принимаются. Сетевая диагностика (wireshark и т.п.) показывает, что отправляться пакеты отправляются, а вот в обратную сторону почему-то не идут. Советую не ломать голову в таких ситуациях, искать буфера в сетевом стеке, беспредел сетевых экранов (хотя экранчики-то мигают в taskbar’e) и прочую дребедень. Проверьте, а добавили ли Вы перенос строки в конец посылаемых сообщений? Многие реализации серверов не смотрят на конец пакета, а смотрят на завершение строки — где-то это \0, где-то \n, а чаще всего это \r\n (Environment.NewLine). Удачи в работе с сокетами!

Если нет userChrome.css

Давно не приходилось залезать в файл userChrome.css, что в браузере Firefox отвечает за пользовательские модификации интерфейса. Когда-то он находился в подкаталоге chrome каталога профиля пользователя. Тут вдруг оказалось, что Firefox 29 вышел не современным, удобным браузером для продвинутых людей, а дерьмом для быдла. Самое обидное, что ранее переносимую в настройках панель вкладок закрепили жёстко между панелью меню и панелью URL (которую, в свою очередь, жёстко соединили с блоком кнопок «назад-вперёд», и между ними ничего не вставишь больше). Плагин Classic Theme Restorer (Customize Australis) ломал весь интерфейс, видимо, из-за Яндекс Бара Элементов и сильно заросшего с 2009 года профиля, поэтому наблюдать разъехавшийся интерфейс только ради смещения панели вкладок не хотелось. Впрочем, быстро нашёлся выход, но о нём чуть ниже. (далее…)

Интересная особенность Xwt.Gtk

В составе кросс-платформенного тулкита XWT есть такой контрол, как Spinner. В нативном тулките GTK+ он присутствует, по идее он должен существовать и в производных фреймворках. Но в GTK# его почему-то нет. Поэтому, в ХШТ сделали извращения с прямыми вызовами GTK+ через P/Invokи. При внедрении Xwt.Spinner’a под Linux возможно вылетание ошибки TargetInvocationException с таким вот стеком вызовов:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.DllNotFoundException: libgtk-win32-2.0-0.dll
at (wrapper managed-to-native) Xwt.GtkBackend.Spinner:gtk_spinner_new ()
at Xwt.GtkBackend.Spinner..ctor () [0x00000] in :0
at Xwt.GtkBackend.SpinnerBackend..ctor () [0x00000] in :0

Я начал разбираться в исходниках Xwt и создал баг в трекере этого проекта. (далее…)

Вот что значит опыт!

Сегодня отнёс на радиокружок электронные вкусности из своих загашников, а именно трубку 42ЛК2Ц и полный набор плат от 3УСЦТ. Трубка после прострела вполне себе ожила, а вот с шасси пришлось повозиться. Не было цвета, яркость была никакая (хотя кинескоп только что показывал в среднем около 2,5кОм, что означает вполне себе хорошую эмиссию), и была половочленовая кадровая сихронизация, слегка прыгали кадры, ещё глючило гашение. Я уж думал пол-ящика перекопать, но тут вмешался руководитель… Яркость удалось восстановить штатной подстройкой напряжения 125В в БП (было занижено, но кто-бы мог подумать, ведь размер был нормальный). Гашение налажено путём подстройки резистора «время импульса гашения». Кадры прыгали по причине неверной установки частоты строк, после её коррекции картинка встала как вкопанная и появилось некое подобие цвета! А я-то думал, придётся пол-телевизора перекопать, многие электролиты менять. 🙂

Контейнеры Xwt VBox и HBox

В библиотеке абстракции от интерфейсов ОС XWT для размещения элементов управления на форме используются промежуточные классы — Box’ы, Canvas’ы и Paned’ы, возможно ещё есть какие-то другие. В данной статье рассматриваются контейнеры VBox и HBox. (далее…)

ElementHost & System.InvalidOperationException

Вообще, совмещение WPF и Windows Форм (как и любых двух фреймворков интерфейса) является полнейшим костылём. Но бывают случаи, когда приходится их совмещать. Для этого в WinForms 3.5+ имеется элемент управления ElementHost. Но вот ведь незадача, в одних проектах он работает замечательно, в других сразу после добавления в форму программа перестаёт работать с ошибкой в автоматически созданном VS файле xxx.Designer.cs. (далее…)

Панель Xwt.Canvas в Xwt

В фреймворке абстрагирования интерфейса пользователя «XWT» [вроде как] нет абсолютного позиционирования элементов. Это связано с его происхождением от GTK#, где форма может содержать только один элемент но неограниченное количество подэлементов, если этот единственный элемент — носитель элементов-холст. Также оно и в XWT. Итак, сегодня я расскажу про то, как создать холст и разместить на нём элементы. (далее…)

Дружим Xwt и Windows Forms через WPF

Вчера на Хабрахабре вышла статья про новый неизведанный фреймворк для абстракции .net-программ от системных реализаций интерфейса — XWT (Xamarin Window Toolkit). Документации на него ноль. Однако случайно наткнулся на одну интересную функцию иксвэтэ — Xwt.Application.InitializeAsGuest (Xwt.ToolkitType.*). Никакой документации на неё пока что нет. Но это ведь не помеха? Приступим к изучению!
Заранее предупреждаю, что необходима среда .Net 4.0 и выше (т.е. Visual Studio 2010+). Перекомпиляция XWT под .Net 3.5/2.0/1.1 весьма нетривиальная задача.
(далее…)