Блог

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

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

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

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

Отладка lambda expressions

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Новые возможности C# 6

Не могу говорить со 100% уверенностью, но мне кажется, что Microsoft реально пыталась создать в лице .NET слишком максимально похожим на С, чтобы его проще было учить. Но при этом они сделали большую ошибку - создавали новый язык на старых шпалах. Попытка максимально взять из C++ привела к тому, что в язык было введено много устаревших конструкций. 

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

Короче, в Swift можно писать имена переменных прямо в строке "Это значение переменной \(param)". Вот в такие круглые скобки, где перед первой скобкой стоит слэш, можно писать переменные. Это удобнее, чем указывать номера в фигурных скобках, как это делается в C или C#. Как я понял, начиная с C# 6 в фигурных скобках можно будет писать имена переменных. Больше не нужно высчитывать номера и расставлять переменные в нужно порядке, просто пишем их прямо в строке.

Оптимизация с помощью final

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

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

Смотрим на следующий пример:

О блоге

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

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

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

Пишите мне