Блог

Халявный Xamarin

Microsoft выпустила халявный Xamarin, который позволяет писать код, который потом без проблем должен компилироваться на любой платформе. Сегодня я услышал мнение, что Майкрософт сделали это, чтобы больше программистов писали код с использованием технологий этой компании и таким образом им проще будет выпускать версии для Windows Phone. 

Логично, ведь если программист может скомпилировать в Xamarin приложение для Андроид, то почему бы не выпустить тут же вариант и для Windows Phone? Отсутствие хороших приложений называют как раз самой главной проблемой, почему платформа от последователей Билла Гейтса никак не выстрелит. 

Если к Майкрософт действительно думали так, то мне кажется это опять маркетинговый просчёт. Мне кажется, что большинство программистов все же будет продолжать писать код в своих средах разработки и приложения для iOS продолжат создавать в Xcode. Это лично моё мнение. 

Swift vs C#

Сейчас с семьёй едем в Орландо в Disney World, а пока жена сидит за рулём, я решил сравнить Swift и C#. 

Меня как-то уже спрашивали несколько раз об этом сравнении, последний раз, когда я сравнил Java и .NET. В случае с Java и .NET - это целые платформы с большим количеством возможностей. При сравнении Swift и C# мы сравниваем всего лишь языки и тут можно сравнить только синтаксис. Возможности в основном зависят от того, под какую платформу пишется код. 

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

Сервисы SOAP - без страха

Когда-то давным давно мне в журнале Хакер дали задание написать про SOAP. Я начал исследование и меня поразило, как же сложно все описывают эту тему. Большое количество заумных слов, особенно в статьях от IBM. Я попытался максимально упростить тогда свою статью про Web сервисы и SOAP, но сейчас я решил ещё раз вернуться к этой теме и ещё раз попробовать описать Web сервисы, так сказать много лет спустя. 

Что такое SOAP? Это сокращение расшифровывается как Simple Object Access Protocol, что на великий и могучий язык можно повести как Простой Протокол Доступа к Объектам. И он действительно простой. 

Если читать документацию IBM по сервисам, то там обязательно будут заумные вещи типа общей шины, какая-то ещё херня, но все это просто заумные слова, потому что на самом деле Web сервисы очень простые в использовании. 

Запрос к Web сервису в самом простом случае поставляет из себя банальный HTTP запрос, с таким же заголовком и с такими же параметрами, как и у любого другого запроса к любым другим страницам сайта. У Microsoft сервисы могут работать по TCP для увеличения скорости, но это отдельная история, потому что сейчас мы затрагиваем SOAP – классику, с которой кажется и начинались все эти веб сервисы. 

Перспективы Java и C#

В очередной раз получил вопрос о том, какой язык выбрать. Я из получаю регулярно, но тут автор письма спросил конкретно - C# или Java. 

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

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

Комментарии о баге а коде

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

#тикет 5677 пофиксил херню

Это же выглядит ужасно, противно и уже через год на большом проекте весь код превратится в сплошные комментарии. И это дерьмо я увидел в очень крупной компании. Очень, очень крупной. 

Блин, ну у вас же есть TFS и в нем можно посмотреть изменения. Неужели там нельзя узнать, кто изменил строку и для какого комита? Если этого нельзя сделать, то зачем вы вообще используете TFS? 

Использую ли я Dependency Injection?

Получил недавно письмо с вопросом, использую ли я в своих проектах Dependency Injection. Обратного адреса не было, но и не нужно, ответ на такой вопрос желательно наверно дать на блоге, думаю, что это будет интересно многим.

Да, конечно же я использую Dependency Injection. Без этого писать юнит тесты проблематично, особенно, если приходится работать с Web сервисами. Как раз из-за них я впервые много лет назад я познакомился с этим патерном. Так что достаточно много приходится использовать интерфейсы и инъекцию.

Использую ли я какие-то библиотеки? Нет. Для инициализации и инъекции пишу свой код. Во-первых, это не так уж и сложно, во-вторых я люблю все же все контролировать. На мой взгляд, автоматические библиотеки не так уж и много дают преимуществ и не так уж и сильно упрощают жизнь. 

У вас нет QA?

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

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

Как у тебя относятся к тестам? Забивают или делают юнит тестирование / ручное тестирование? 

Почему программист не должен использовать Денвер?

Есть такие установщики для WAMP (Windows Apache MySQL PHP) или MAMP (Mac Apache MySQL PHP), которые запустил, и они ставят что-то на локальную систему, что упрощает конфигурирование локального Web сервера, базы данных и PHP. Создание нового сайта для локальной разработки потом сводится к простому вводу домена для сайта, выбору директории и клику мышкой. Все остальное пакет берет на себя. 

Я когда-то пользовался такими вещами, сам использовал программу MAMP локально. Ну действительно, на много проще. 

Только вот рабочие сервера не будут работать на подобной программе, там уже точно будут ставить LAMP с репозитория и каждый по отдельности. Если программисты могут писать локально сайт на Маке, то на реальном сервере он скорей всего будет крутится на Linux виртуалке, так уж исторически повелось. Запускать PHP сайты на Windows сервера немного расточительно. Не вижу смысла тратить так деньги. 

Сделать свой собственный git репозиторий

Давно уже хотел купить себе git хранилище, и даже завёл себе аккаунт на Bitbucket, но почему-то я им так и не пользовался. Я залил туда один репозиторий с CyD Network Utilities, но так и не использовал его. Сегодня я решил этот репозиторий удалить. 

Судя по ценам, Bitbucket вполне приемлем. На нем бесплатно можно получить репозиторий, которым смогут пользоваться до 5 человек. Приятно. А ведь 5-ю аккаунтами может реально пользоваться 100 человек, так что ограничений почти нет :). 

На github цены на много выше, тут бесплатно можно получить только открытый репозиторий. За личные репозитории придётся хорошо платить, за пять личных хранилищ кода придётся отдавать 7 американских долларов в месяц. Дороговато. 

Удаленное программирование

Давно хотел попробовать парное программирование и сейчас у меня почти получилось. Я занимаюсь не парным, а удаленным программированием. 

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

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

О блоге

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

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

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

Пишите мне