Блог

Количество мониторов для программиста

У нас на работе почему-то используют мониторы 19-го размера максимум, а большинство мониторов 17 дюймов. Не знаю почему так, но этого пространства капитально не хватает. На предыдущей работе использовались ноутбуки от Apple, но у каждого на столе стояли еще мониторы, размером с телевизор. Я как-то не смотрел, сколько там люймов, но 22 точно будет. Рабочего пространства становится немеренно, если объеденить экран ноутбука с экраном монитора.

После такой поляны, как-то неуютно себя чувствовал с одним монитором в 17-ть люймов. Задолбался переключаться между окнами и попросил второй монитор. Мне принесли моник чуть больше в 19 дюймов, но за счет того, что он старее, разрешение экрана такое же, как у семнашки. Да, теперь у меня два раза по 1280 точек, но все равно я задалбливаюсь переключаться между окнами. У меня постоянно запущено как минимум 12 окон, из которых я постоянно работаю с большинством из них, и хочется, чтобы эти окна были на виду, но тут даже и четырех мониторов не хватит.

Новая информация на Hackish Code

Вчера я залил свежак на английскую версию сайта Hackish code, а сегодня сразу три статьи на русской версии:

Статьи хоть и старые, но кому-то могут показаться интересными. В DirectX 11 все очень сильно изменилось, поэтому в современной версии инициализация идет по другому, но некоторые вещи еще актуальны.

Если ты программист и у тебя есть исходник или библиотека, с которыми ты хочешь поделиться с миром и прорекламировать, используй hackish code сайт. Внизу кажой страницы есть ссылка, чтобы отправить описание файла мне. Это же бесплатная возможность получить себе траффик на сайт и прорекламировать. Некоторые платят деньги, а ты можешь даже ради рекламы написать небольшой исходник и послать его мне через сайт.

P.S. Недавно приобрел Final Fantasy 13. Очень даже интересная игра. Хотя игрой я ее называю с натяжкой, потому что больше похоже на отличное интерактивное кино. Более подробно об игре читай: Обзор Final Fantasy 13.

Управлени исходным кодом будущего

Сегодня читал статью Джоила Спольски о том, что программы контроля версий класса git - это будущее. Я тоже впервый раз не понял, что это за фигня, и почему нельзя было просто использовать SubVersion или что-то подобное, но уже через месяц я написал на твитере, что git - это сила.

Если ты работал с классическими программами контроля версий, то при переходе на git будут проблемы потому, что у него совершенно другой подход к хранению изменений. А точнее, он хранит именно изменения в файле, а не создает версии, как это делают классические системы. Чтобы к этому привыкнуть и понять, нужно время. Это как переход с Windows XP на Vista - это не эволюция, а революция. Нужно сделать усилие и заставить себя разок по бренчить код и мерджить его.

Столько лет мы жили вневедении, как слепые кроты, и думали, что нужно хранить именно версии. Но это серьезное заблуждение, которое делает разработку и управление исходным кодом только дороже. Попробую объяснить силу git на примере. Допустим, что у вас есть основная ветка кода, которую вы компилируете в исполняемый файл версии 1.0. На определенном этапе вы создали новую ветку для работы над новой версией программй 2.0. Теперь нужно пофиксить один баг, который есть в обеих ветках. Вы создаете новую подветку для 2.0 и называем ее "branch2-0/fix1". Фиксим код в этой ветке и в ней будут храниться только изменения fix1, а не весь код. Теперь вы можете смёрджить (даже не знаю, какое тут лучше слово придумать английскому merge, может слить или объединить) фикс с веткой исходников версии 2.0 и веткой исходников версии 1.0, и одним разом зафиксить обе ветки.

Глобальные переменные в C#

Сегодня задали интересный вопрос - как и где хранить глобальные переменные. Человек привык создавать в Delphi отдельный модуль, в котором хранил глобальные переменные и методы. Это большая проблема Delphi, что он умеет создавать глобальные переменные. По правилам OOP не должно быть такой возможности, и в C# такой возможности нет!

Но как же тогда поступить, если хочется создать что-то глобальное? Сначала нужно подумать 10 раз, а действительно ли нужна эта глобальность. Забудьте Delphi как страшный сон и вообще забудьте, что может быть такая возможность, как глобальная переменная или метод. Просто подумайте и ответьте себе на следующие вопросы:

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

.NET компонент созданяи отчетов

Сегодня обновил сайт Heapar Software. Причем обновлен не только дизайн небольшой косметикой, но и обновлен компонент для создания отчетов Heapar Small Report . Изменения небольшие, но удобные. Сам их использую в своих утилитах под маркой CyD, которые так же недавно серьезно обновил. Но об этих утилитах чуть позже, потому что версия еще не стабильна. Изменений много, и я наверно поторопился выкладывать ее.

Но вернемся к компоненту Small Report. В нем исправлен глюк с отображением, если для скроллинга использовать колесико. Добавлена возможность скролла с клавиатуры клавишами стрелок и Page Up Page Down, а так же возможность скролла на определенную строку. Это будет удобно для создания закладок в тексте. Опять же, на эту идею меня подтолкнул собственный проект. Я сам использую то, что создаю, иначе нафига создавать?

Система контроля на основе тикетов

Для того, чтобы контролировать работу программиста, какой-то очень гениальный человек придумал тикеты и их учет. Один из ярых приверженцев этого подхода - знаменитый Джоел. Но если почитать его книгу, то он явно использует это изобретение правильно и для того, чтобы повысить производительность труда и избавиться от лишних загрузов друг-друга, а четко определять кто и что делает. Все остальные компании, где я работал, использую тикеты (если вообще используют) для того, чтобы заниматься ерундой и пинать себя в грудь, что у них поставлен учет. Когда я работал в Интерстепе, то там начальник просто кепяточком писал от этих тикетов. Я один раз написал тикет, о том как я писал тикет, для того, чтобы написать тикет. Жопа полная творилась. Благодаря этой системе планирования, я придумывал кучу причин, чтобы не работать. Можно было написать в систему любое фуфло, все равно высшее начальство туда не смотрит, а мой начальник пару раз увидел, что я туда пишу, поржал, и забыл.

К чему я это? У несколько дней назад на работе не работала тестовая база данных. ping идет с моей машины прерывистый и постоянно пропадает. На все остальные компьютеры и сервера я коннекчусь без проблем, а с этим какая-то лажа. А это основная база, которую я использую в разработке и моя работа на прочь встала. Хорошо, что у меня была не срочная работа и я мог переключиться на аналитический сервак и с него работать над другими тикетами. Я подошел к администратору и объяснил ситуацию. Она меня послала к администратору базы данных. Объяснил этому администратору. Тут меня послали создавать тикет. Создал тикет на администратора базы данных. Через пять минут его перекинули на администратора сети, потому что проблема явно не с БД, ведь даже пинг не проходит. Там тикет уснул на долго.

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

Параметры по умолчанию в C#

Чего я с нетерпением жду от C# 4 - так это параметров по умолчанию. Скорей бы уже эта спецификация набрала популярности. Лично я в своих проектах буду использовать 4-ю версию, но не уверен, что на работе она войдет в обиход так же быстро.

Сегодня просто намучался из-за того, что нет параметров по умолчанию и пришлось создавать кучу перегруженных методов. С расширением проекта и большим количеством перегрузов, код становится неуправляемым. Странно, что Microsoft не подумала о такой маленькой и удобной фишки заранее, а вспомнила только при создании 4-й версии. С другой стороны, если все продумать заранее, то что же делать потом?

А есть что-то, что не хватает тебе? Не обязательно в C#, это может быть другой язык программирования.

Исходники графической программы на C#

Постоянные посетители уже должны знать, что мне абсолютно паралельны все слова об OpenSource и о какой-то там мнимой и выдуманной свободе. Я открываю исходники не ради этого бреда. А я снова выкладываю исходник, на этот раз это достаточно большой исходник, это целый графической программы на C# и WPF. Для этого я даже создал русскоязычную версию сайта.

Это не OpenSource проект, поэтому никак с этим не связан. Если кто-то хочет помогать расширять проект, то милости прошу. Пока что я не успер рассписать правила разработки кода, чтобы код не превратился в срач, но в постепенно буду расширять правила. Так что если кто хочет принять участие или просто хочет посмотреть на исходники, милости прошу.

Исходники свободны и распросраняются под лицензией BSD со всеми вытекающими последствиями. Если и говорить о свободе, то BSD реально свободна, а GNU - это свобода только на словах. Исходники программы написаны на Visual Studio 2010, потому что он лучше себя ведет с Ribbon. Кто-то может попытаться использовать Visual Studio 2008, но не факт, что он убдет стабилен с WPF.

Межплатформенные приложения на .NET

У .NET много преимуществ, и одно из этих преимуществ – компиляция кода налету под ту платформу, на которой выполняется программа. Один раз компилируем код, и если запускаете его на 32-х битной машине, то платформа компилирует IL код в 32-х битный. Если же запустить программу на 64-х битной машине, то IL будет скомпилирован в 64-х битном виде. Никаких дополнительных телодвижений для .NET кода не нужен.

Единственное, что нужно учитывать – это нативный код. Если в вашем проекте используются какие-то библиотеки, написанные на нативном коде, то его нужно будет поддерживать для обеих платформ. В своих приложениях я стараюсь максимально использовать возможности .NET, чтобы использовать его преимущества по максимуму.

Нативный код я еще использую, но стараюсь делать это по минимуму. Главная причина, по которой мне пришлось создать два разных дистрибутива для обеих платформ – это база данных. Я использую SQL Server Compact Edition, а библиотеки доступа к данным написаны на нативном коде. Именно из-за них пришлось выпендриваться и поддерживать два файла установки.

Бесплатные компоненты

Пользователи твитера или просто те, кто следит за мной на твитере уже знают о том, что я сделал Heapar Essential Library .NET абсолютно бесплатной и абсолютно с открытым исходным кодом. Я планировал развивать библиотеку в что-то большое, но в ней получаются только простые компоненты и трудно прикидываться идиотом и пытаться продать то, что входит сейчас в нее. Они просто не стоят этих денег. Эту библиотеку никто не купил, в то время как другие продукты покупаются. Чтобы не повторятся, просто прочитай заметку Бесплатные .NET компоненты на блоге Heapar.

P.S. Канадская блондинка начала все больше писать и благодаря новому Photoshop подготовила и залила кучу фоток на свой блог, в том числе и в старые заметки. Из архива утро на рождество

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне