Блог

Командная разработка кода

Отличный способ сделать код, который создается в команде более качественным – просмотр кода. Существует мнение, что код должен смотреть более старший по званию программер и давать свои советы и рекомендации по улучшению. Я где-то слышал, что программеры начинают комплексовать из-за боязни, что кто-то будет смотреть их код. Мне кажется, что комплексовать будут только батаны, которые пишут гениальный код и они никогда не ошибаются. Нормальному человеку нечего боятся. Есть просто еще стеснительные люди, которые не хотят, чтобы их обсуждали, но это просто нужно перебороть.

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

Но я категорически против того, чтобы код смотрел только один программер, который старший по званию. Это очень серьезное заблуждение, которое делает код хуже, а командную разработку более конфликтной. Код должна рассматривать команда из 3-4 человек. Чаще всего программеры работают небольшими командами, и они должны обсуждать код, который будет написан до того, как кто-то приступает к кодированию. Они должны обсуждать архитектуру и решение до кодирования.

Какой язык программирования выбрать?

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

Выбор языка – дело каждого и тут советовать очень сложно. Можно ошибаться и я могу дать неправильный совет. Я уже много раз объяснял, что выбрал я и почему я это сделать. В вашем выборе тоже должна быть причина, но ваша, а не моя.

Я рекомендую изучать сразу пару языков. Когда я начинал изучать программирование, то выбрал С++ и Delphi. Я их изучал одновременно и писал программы на обоих языках сразу, просто разные программы. Благо на работе моему начальству было пофиг, на каком языке я пишу программы, им нужно было, чтобы они работали. Я использовал поочередно оба языка и постепенно потребность в Delphi выросла и С++ сам собой отпал. Его я стал использовать очень редко и в основном для себя. Я и сейчас его использую редко и в основном для написания небольших DLL, функции которых потом вызываю из C#.

Выберите для себя пару языков. В любом случае, от этого хуже не будет. Широкие знания никому не мешали.

Обновление на Heapar Software

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

Вообще компонент Small Report Renderer вызвал неплохой интерес и только ради него один пользователь хочет купить его и ожидал функцию выделения. Его заинтересовали возможности компонента и он готов был заплатить 1000р (именно столько стоит Heapar Essential Library .NET) и он хочет посмотреть, как он реализован. Я так понял, что он хочет написать что-то собтственное в виде движка отчетности как у Fast Report. Правда Fast Report очень хороший двиг и с ним тягаться будет тяжеловато.

Помимо этого исправлено несколько недочетов и пару ошибок, оптимизирована работа графики в трех компонентах и улучшин внешний вид компонента TabManager.

Проблема PHP – обращение к системе

У PHP есть одна очень серьезная проблема. Возможности этого языка не безграничны. Когда возможностей не хватает, то PHP может обращаться к системе и использовать его функции. Это вообще является торговой маркой всего подхода Linux, где каждое приложение пишется так, чтобы оно выполняло одну небольшую функцию, но делало это очень хорошо. С одной стороны, эта функция выполняется отлично, с другой стороны, требования к безопасности повышается.

Каждый вызов системной функции из PHP – это переход из одной доверительной системы в другую со своими приколами и обломами. Получая параметры от пользователя, мы должны их проверить на безопасность. Любое обращение к системе является небезопасным и проверка параметров должна повторяться.

В случае с .NET и Windows вообще, то тут подход немного другой. Тут предпочитают строить все целыми платформами и переходы меж уровнями и доверительными зонами сводится к минимуму. Например, сама платформа .NET на столько мощная, что необходимость в обращении к системе минимальна. Если в PHP для выполнения операции ping нужно вызвать system, то в .NET можно использовать классы.

Как стать программистом

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

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

Timeout соединения у MySQL

Я постоянно выключаю компьютер и у никогда не обращал внимание на то, что у MySQL есть таймаут соедидинения. Вчера пришел на работу, открыл крыжку MacBook Pro, а в консоли осталась запущенной клиентская mysql. Мне как раз нужно было добавить в одну из таблиц строку, я вбил INSERT запрос и вижу:

No connection. Trying to reconnect...
Connection id:    3777
Current database: *** NONE ***

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Visual Studio 2010 не запускается на Windows 7

После установки Windows 7 у меня до сих пор не работает Visual Studio 2010, поэтому разработка D Photo Workshop замерзла и окочанела в зародыше. Все попытки запустить или переустановить Visual Studio 2010 закончились неудачно, потому что программа категорически не видит .NET финальной версии и упорно ищет бету. Судя по отзывам в интернете, чтобы запустить среду разработки, мне нужно удалить .NET 4.0 и впаять вместо него бета версию. Мне этого делать не хочется, поэтому чижу, жужжу и жду когда же выйдет финальная версия Visual Studio 2010. Так как до нужного 10-го года осталось совсем чуть-чуть, а программы Microsoft в основном выходят до указанного в маркировке года, то надеюсь, что ждать придется не долго.

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

Быстрые и простые отчеты

Сегодня я выложил новую версию библиотеки компонентов Heapar Essential Library .NET. В нем появился новый компонент Small Report Renderer, с помощью которого можно создавать простые и удобные отчеты. Компонент будет удобен и полезен в тех случаях, когда пользователю нужно отобразить какие-то данные, которые содержат сразу и таблицы и текст.

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

Компонент разрабатыался для собственных нужд и уже в ближайшее время будет использоваться. Вот так будет выглядеть Утилита Ping в следующей версии CyD Network Utilities - Security tools. Благодаря компоненту Small Report Renderer результат пингования выглядит лучше. Хотя картинка на сайте есть, программа реально пока не содержит обновленного модуля. Я хочу еще немного улучить некоторые модули и к выходным закачаю.

DirectX 11 SDK за август

В Августе вышла очередная версия DirectX SDK, которая уже серьезно поддерживает DirectX 11. Я попытался с ней разобраться, но получил облом, потому что в Vista не работает большинство функций. Примеры, которые идут с SDK не запускаются, разве что абсолютно пустой проект. Я подождал месяц и позавчера скачал Windows 7 и обновил систему. Теперь DirectX11 работает, но тормозит, и это мягко сказано. После запуска примеров он стоит как вкопанный.

Самое интересное, что тормозят даже те примеры, что с использованием DirectX 10 работают прекрасно и летают на моем GForce 8400. А ведь у меня видеокарта достаточно мощная, специально брал такую с запасом, но драйвера до сих пор поддерживают только 10-ю версию. Я даже скачал обновленные драйвера специально для Windows 7, но и они скорости не прибавили. Самое интересное, что при запуске примеров появляется сообщение – "это устройство поддерживает DirectX 11, но работать будет медленно". Это как? Как можно поддерживать и работать медленно? Это уже не поддержка, это издевательство. В итоге уже месяц занимаюсь сексом с компьютером, но кроме введения для книги "Программирование DirectX на C++" ничего не написал.

На сколько я слышал, DirectX 11 не должен был изменится так сильно, как это произошло при выходе DirectX 10. Ведь 11-я версия даже способна работать на Vista, просто требует обновления кучи библиотек, а эти библиотеки ставятся только на версию Ultimate. Что такого умудрились сделать в MS, что так серьезно затормозили уже давно отлаженные функции? Мне интересно, почему эти же функции в DrectX 10 свистят? До официального выхода Windows 7 остались считанные дни, а основной интерфейс явно далек от идеала.

Лень писать однообразный код

Меня регулярно посещает лень, когда десять раз приходится писать один и тот же код. Чтобы не повторяться, я очень часто пишу классы или хелперы, которые помогают в жизни не решать по 10 раз одну и ту же задачу. Вот так у меня есть модуль, который помогает мне создавать RSS ленты для моих сайтов, созданных на PHP, поэтому все PHP сайты содержат ленту. А вот на ASP.NET небыло ничего подобного, а в очередной раз писать хелпер, пусть и на другом языке - лень и скучно, поэтому абсолютно все мои сайты, которые были созданы на ASP.NET не содержат RSS лент.

Вчера собрался с силами и написал RSS ленту для сайта своей жены - Блондинка в Канаде. Она пишет не так часто и поэтому лента уже давно была необходима, чтобы не приходилось постоянно туда заглядывать.

О блоге

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

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

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

Пишите мне