Персональный сайт Александра Тауениса » Программирование & разметка

Программирование & разметка

Особенность сокетов в .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 и создал баг в трекере этого проекта. (далее…)

Контейнеры 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 весьма нетривиальная задача.
(далее…)

Аналог ByRef в C#

Я был удивлён, что по запросу «Аналог ByRef в C#» ничего ценного не нашлось. (далее…)

Mono Error CS0103 — неочевидное решение

Решил подтвердить знание толка в извращениях. 🙂 Создал проект в MonoDevelop (MD). Дабы помучаться, графический интерфейс решено сделать на Windows Forms, а не GTK#. 🙂 Скачал IDE для WinForms, присобачил к проекту этой самой формочной IDE файл xxx.Designer.cs и перезагрузил сам xxx.cs в MD. Думал, всё, сейчас запущу и увижу заветное серое окно… (далее…)

Первомайский баннер для сайта на CSS3

Ещё с советских времён идёт традиция ходить на первомайские демонстрации о защите прав трудящихся и поддержке КПСС. Просто погалдеть, никакой политики. Сейчас ходить уже не модно, зато можно вывесить такой плакат на…личном сайте. (далее…)