Блог

Парное программирование

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

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

Преимущество такого подхода:

Компиляция Objective-C в Visual Studio

Уже шли слухи о том, что Microsoft может добавить возможность запускать приложения iOS на Windows. Пока что слухи не оправдались, но не уверен, что реальность лучше. Теперь приложения на Objective-C можно компилировать под Windows. Как вам эта новость? 

Майкрософт добавила так же возможность максимально использовать Java и C++ код написанный для Андроида. Таким образом, компания просто убивает необходимость писать код на C++ или .NET специально для Windows, на много выгоднее писать для Андроида или iOS, а потом перекомпилировать код под MS. 

В принципе, можно было бы использовать Delphi или что-то подобное, но я сторонник использовать родные инструменты. А из-за того, что у Windows Phone пока популярность слишком никакая, то специально из-за такого низкого рынка писать код особо желания нет.

Задачки на собеседованиях от Parallels

Сейчас мне на глаза попался журнал Хакер, в котором были задачки с собеседований от Parallels, и я удивился, на сколько они оказались простыми. 

Первая задачка - человек побежал через тунель и на 1/4 пути услышал гудок поезда. Известно, что если он побежит обратно, то встретит поезд на входе, а если побежит вперед, то на выходе. Вопрос, во сколько быстрее едет поезд, если все движутся с постоянной скоростью. 

Неизвестно, на каком расстоянии от входа в тунель находится поезд, да и не нужно. Главное, что человек находится на 1/4 пути. Если побежит обратно, то за эту 1/4 пути поезд как раз дойдет до входа. А если побежит в другую сторону? То через 1/4 пути человек окажется уже посередине туннеля, а поезд на входе. Включаем сложнейшие математические расчеты и смекалку и приходим к выводу, что поезд движется в два раза быстрее, ведь с этого момента за одно и то же время он пройдет весь туннель, а человек только оставшуюся половину, чтобы встретиться на выходе.

.NET Native где же ты был раньше

С помощью компилятора .NET Native можно будет компилировать в машинный код под определенную платформу - x86 или x64 или ARM. И тут возникает вполне резонный вопрос - а где вы были раньше? 

До недавнего времени .NET хоть и был создан с возможностью поддерживать несколько платформ, но всё же официально работал только на x86 или x64 и только под Windows. Остальное поддерживалось только независимыми разработками. При таком раскладе я не понимаю, зачем Microsoft все это время компилировала .NET приложения в IL код, если никогда не планировали запускать его где-то, кроме Windows на Intel совместимых процессорах. Получается, они осознано и бессмысленно тормозили свои же программы на .NET и не получали от этого реальной выгоды.

Когда закончил компиляцию

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

У меня два монитора и пока идет компиляция я часто что-то делаю на втором из них. Когда оборачиваюсь обратно через короткий промежуток времени, а сборка закончена, то прям аж теряюсь, а запускал ли я сборку или просто отвернулся от монитора. 

Было бы удобно выводить в окно Output в конце компиляции время окончания. Я эту проблему для себя решил добавлением в пост билд команду PowerShell для вывода текущего времени.

Мир переворачивается с .NET Native

Еще лет 7 назад (я еще тогда жил в России) я говорил, что в будущем мир может перевернуться и .NET станет основой для Windows. Вот это день настает, потому что скоро C# код можно будет компилировать в родные команды процессора. Никаких промежуточных IL. C# уже основной язык даже у самой MS.

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

Да, для телефонов и планшетов возможность запускать приложения сразу же из машинных инструкций является практически критичной, потому что не нужно компилировать  код налету и это сохранит батарею и увеличит скорость запуска. Но ведь уже сейчас все приложения для AppStore компилируются в дополнительно промежуточный код. Я не помню как он точно называется, но что-то типа Machine Dependancy IL. Для конечного железа остается работы совсем чуть чуть, чтобы только навести связи. 

Отладка lambda expressions

Сколько времени уже существует LINQ? Уже наверно лет пять, но к сожалению до сих пор нельзя запускать эти выражения во время отладки в отношении массивов. 

Ты используешь Entity Framework и LINQ для доступа к базам данных? Дьявол тебе судья, Бог точно твое дело откажется рассматривать.

Сломал сайты на локальной машине

Все свои сайты на AMP (Apache, MySQL и PHP)  я разрабатываю на маке, поэтому я первую букву не указываю. Хотя, наверно будет правильно всё же указывать, потому что хостинг у меня всё же на Linux серверах. 

Короче, я работал на PHP настройках по умолчанию и даже не заморачивался, потому что их вполне достаточно. Но тут понадобилось изменить временную зону, поэтому я скопировал файл /etc/php.ini.default в /etc/php.ini, переключился в Brackets и спокойно продолжил работать. 

Наверно через пол часа я запустил новый сайт, а он не работает. Первое, на что я стал грешить - настройки в Apache конфигурационных файлов. Я создал новый сайт, на новом для меня Symfony, который я не использовал никогда.

Swift с открытым исходным кодом

Компания Apple пускает свой новый язык программирования Swift в мир сокрытых технологий - Open Source. И чем это теперь грозит нам, простым пользователям? 

Ну на платформах Apple особо сильных изменений я не ожидаю. Да, компания сказала, что ждет с распростертыми объятиями код народа и готова принимать его, но не думаю, что будет много вклада. Тут мне кажется яблочники просто хотят повторить то, что сделала Microsoft со своим .NET. 

Но вот что я жду с нетерпением, так это возможность работы со Swift в Linux и возможно даже хорошую IDE. Я в основном работаю с сервисами Linux систем, но уже давно вынашиваю планы все же приобрести дешевенький ноутбук и использовать его чисто под Linux. Раньше для этих целей я использовал RoverBook еще на процессоре Pentium M, но уже года 4 дистрибутивы не ставятся на него из-за проблем не совместимости железа. Пересобирать дистрибутивы под этот ноут что-то мне не улыбает.

Отладка приложений под IIS

Я использую урезанный IIS, только когда запускаю небольшие проекты или тесты. На работе чаще приходится работать с большим сайтами, которые я больше предпочитаю запускать из под полноценного IIS. Один раз сконфигурирован и можно использовать даже без запущенной Visual Studio. 

Я вообще не фанат запускать Web проекты из VS. Можно сконфигурировать его так, чтобы он использовал полноценный IIS при запуске, но опять же, я не люблю запускать. 

Как же тогда я отлаживаю проекты? Да очень просто, подключаюсь к процессу. В меню Debug выбираю Attach to Process, в появившемся окне процессов выбираю внизу галочку Показать процессы всех пользователей, и сортирую процессы в обратном порядке. Теперь наверху должны быть мена на w3… я точно даже не помню имя процесса, кажется w3wp. Выбираю его и все, Visual Studio уже готов к отладке. 

О блоге

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

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

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

Пишите мне