Блог

Оптимизация Linq к базе данных

Недавно увидел очень хороший способ уложить сайт с помощью LINQ. Программист на работе написал очень хорошую строку кода в которой прямо в методе Where написал C# функцию, которая должна была разбирать имя домена.

.NET не может оптимизировать такие вещи и выполнять из на сервере, поэтому вынужден будет вытащить все данные из базы, а потом для каждой строки выполнить C# функцию. 

Если любите LINQ для доступа к базе данных, то разбивайте свои Where методы на составляющие. 

Хочется попробовать JavaFX 2.0

Почитал сейчас про JavaFX 2.0 и что-то хочется попробовать его. Но жалко времени тратить на него, ведь реально на нем писать все равно не планирую. Сейчас все ухидит в Web и я ушел туда уже давно и десктопного давно ничего не разрабатываю. Те программы, которые можно писать на Java можно реализовать и в Web и будет более доступно. 

Из десктопного программирования сейчас спрос все еще есть на системные утилиты, фото/видео и аудио пакеты, офисы но все это уже есть на рынке в большом изобилии. Писать очередного конкурента смысла нет. А вот в Web потенциал больше на мой взгляд. 

Но соблазн хотя бы попробовать и посмотреть что такое JavaFX 2.0 есть. 

Термин ASP.NET

Если честно, то не совсем понимаю, почему до сих пор используется термин ASP.NET? Не уверен, что его правильно используют в отношении Web приложений на .NET, если честно, то я вообще мало чего знаю о термине  .NET. 

Лично я пишу сайты на C#. Каждый раз когда меня спрашивают, на каком языке я пишу сайты, то я говорю именно C# и почти всегда меня переспрашивают: "ASP.NET?". 

Лично я считаю, что я пишу именно на C# и использую только его в сочетании с JS и CSS. Я не использую среду разработки Visual Studio и не использую ничего из того, что входит в WebForms. У WebForms есть свои специфичные тэги для Web и может именно это подразумевалось под термином ASP.NET. 

Обожаю тестеров

У клиента человек, который занимается тестированием и подтверждением всех сайтов начинает меня сильно раздражать. Его клеймы постоянно одинаковы: 

Filters aren't working properly 

Бль. А можно более конкретно написать, что именно не работает? Каждый раз, когда я получаю подобный тикет, этот тикет становится клиентом для того, чтобы пинать его туда сюда с выяснением того, как что-то должно работать. 

Почему я бросил Delphi

Я кажется уже причины описывал, но не могу что-то найти. 

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

Вот и совпало, что платить за Delphi смысла нет - стабильная версия устарела, а современные не стабильны, да и цена заоблачна. Тогда я и выбрал Visual Studio Express, которого вполне достаточно для меня. 

Разработка под PlayStation Mobile

Общался сегодня с программистом в нашей компании о PlayStation и затронули тему разработки под эту платформу. Я пока не нашел, как Sony работает с компаниями и независимыми разработчиками, но увидел, что вполне реально стать разработчиком для мобильной платформы - Vita и телефонов. Подписка на год стоит всего $99, как и у Apple или Microsoft для мобильных платформ. 

Нет, я ничего реального писать не планирую, но просто сегодня узнал (раньше и не интересовался), что разрабатывать под PlayStation Vita можно на C#. Посмотрел одно видео на youtube и все оказалось очень даже просто. Просто для прикола можно написать что-то, если бы было время.

Кто-нибудь из вас уже писал для PlayStation какого либо размера?

Копирование против функций

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

Очень часто программисты занимаются Copy/Paste, а ведь так просто взять и сделать код более универсальным. Если есть какая-то сходная задача с небольшими отличиями, то ее почему-то пишут дважды. А ведь так просто сделать что-то более универсальное, что будет проще сопровождать.

Производительность временных таблиц у SQL Server

У меня на работе ETL скрипты - это просто SQL файлы, которые мы запускаем на сервере в определенном порядке. Все работало прекрасно, пока один скрипт не начал тормозить капитально. Общая скорость работы скрипта стала превышать лимит в 3 часа. 

Я запустил скрипт пошагово и он выглядел вполне нормально. Вначале создается таблица:

declare @promotions table (PromotionID int, Здесь есть еще колонки);

Потом таблица заполняется данными и если выполнить скрипт заполнения данными, то он работает несколько секунд. 

Индексы на таблицу

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

CREATE TABLE [dbo].[TxnData](
	[TxnDataID] [bigint] IDENTITY(1,1) primary key,
	[TxnID] [bigint] NOT NULL,
	[Name] [varchar](50) NOT NULL,
	[Value] [varchar](255) NOT NULL,
)

Обработка очередей

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

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

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

О блоге

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

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

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

Пишите мне