Блог

Web мышление

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

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

Преимущество знания SQL

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

Через минут 10 падает еще одно письмо с ошибкой SQL Management Studio. Программист явно пытался увеличить колонку с помощью SQL Management Studio, а я уже не раз замечал, что с модификацией колонок эта студия часто тупит и явно генерирует не очень хороший SQL для обновления. Я только видел это, сам давно не встречался, потому что сам всегда все делаю с помощью SQL. 

Поиск натуральных чисел на SQL

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

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

Интересно еще твое мнение, что ты думаешь о таком задании и что оно говорит о том программисте, которого тестируют.

Почему я не пишу логику на Transact-SQL

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

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

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

Решение задачи на алгоритм с помощью LINQ

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

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

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

Что ты думаешь по этому поводу? Правильно ли принимать решения задачи, если она решена с помощью LINQ? Может ли это показать профессионализм программиста?

Рефакторинг

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

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

Сейчас читаю статью: Главный вопрос программирования, рефакторинга и всего такого и (http://www.viva64.com/ru/b/0391/) по мере чтения решил поделиться своими мыслями. Автор на примерах различных реальных ситуаций показывает преимущества программы статического анализатора PVS-Studio и заодно показывает интересные вещи, которые будут полезны любому программисту. 

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

Архитекторы есть только в .NET или Java

Мне постоянно на почту приходят письма с новыми предложениями о работе и я для себя вчера отметил, что позиции архитекторов есть только у Java и .NET. Я не помню, чтобы мне хоть раз попадали в ящик позиции архитекторов в PHP сфере. 

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

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

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

.NET Core быстрый взгляд

Вчера я создал первый проект под .NET Core, потому что сейчас эта платформа уже более-менее стабилизировалось и можно начинать на нее смотреть. До это я как-то попробовал поставить Visual Studio Code и .NET Core на свой мак, но даже не было времени разобраться с этим.

Как подключится к SQL Server

Задача. Вы программист и умеете программировать на C# веб приложения, у вас есть RDP доступ любому серверу, включая сервер приложений и у вас стоит задача подключится к базе данных. Как найти имя сервера базы данных, имя пользователя и пароль для подключения?

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

Как отсортировать по возрасту

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

О блоге

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

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

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

Пишите мне