Search
Write a publication
Pull to refresh
0
0
Сергей Сидоренко @elbik

User

Send message

Entity Framework и производительность, попытка вторая

Reading time3 min
Views15K
В первой своей попытке закрыть дыру в производительности Entity Framework'а я рассматривал только материализацию. Но дальше в процессе работы, как того и следовало ожидать, я наткнулся и на другое, более весомое ограничение. Операции вставки, модификации и удаления записей происходят тоже медленно. На 100 вставок EF посылает в базу 100 запросов на вставку, никак не пытаясь их сгруппировать.

Кроме этого, в одном из проектов была обнаружена одна неприятная ошибка: EF версии 5.0.0, при работе с Oracle, в Clob/Xml поля не позволяет вставлять строки более 2000 символов.
Решение

Как Валера взял в команду стажера и начал учить его проектированию

Reading time7 min
Views70K

Начало


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

На следующее утро в зале для совещаний собрались ключевые сотрудники направления. Технический директор (для тех, кто с ним еще не знаком, — его зовут Иван) сразу перешел к сути вопроса: «Приветствую всех! Как вы знаете, некоторое время назад мы поставили перед собой цель расширить присутствие на рынке и для этого открыли новый офис продаж. Так вот, эта стратегия сработала. Через месяц мы подписываем договор на разработку и внедрение платформы дистанционного образования. Проект очень интересный, но пока не об этом. Чтобы его потянуть, нам нужно срочно формировать новую команду в направлении образовательных систем.»
Читать дальше →

Полезные плагины Wordpress. OptionTree — страница настроек сайта

Reading time5 min
Views33K


В силу того, что большинство разрабатываемых мною сайтов создается с использованием CMS Wordpress и приходится постоянно сталкиваться с нетривиальными задачами, решил делиться с вами опытом использования различных плагинов. Как бесплатных так и платных, причем попробую придерживаться такого формата: одна статья — один плагин. Постараюсь рассматривать только действительно заслуживающие внимания разработки, и вот в первом своем рассказе поведаю вам об OptionTree — прекрасное, на мой взгляд, решение для создания страницы с пользовательскими настройками сайта.
Изучить плагин

Модель ветвления и управления модулями git для большого проекта

Reading time9 min
Views37K
Без малого два года назад мы начали использовать в разработке нашего флагманского проекта СУБД ЛИНТЕР новую модель ветвления и управления подмодулями git-а. Десятки тысяч коммитов, сделанные за это время группой разработчиков, позволяют с определенной долей уверенности считать нововведения успешными. Эта статья — краткий обзор принципов организации хранилища исходных кодов в большом проекте на базе альтернативной реализации модулей git, сложившейся стратегии ветвления и инструментария linflow.


Читать дальше →

10 советов по нетворкингу для людей, которые его терпеть не могут

Reading time12 min
Views204K
Представьте себя в большом конференц-зале, набитом сотнями специалистов с бэйджиками на груди. Стаи тревожно выглядящих людей в перерыве слоняются мимо столов с закусками, уставленными печеньками и пирожками. Другие – вальсируют сквозь лабиринт тумб партнёров, рядом с которыми мужчины и женщины в деловых нарядах колдуют над аккуратно выложенными рекламными брошюрами и фирменными ручками. Третьи стоят, уставившись в свои телефоны…

Вы пришли на мероприятие лично, хотя могли потом посмотреть его в записи в любимых тапочках дома или в вагоне метро по пути на работу. Вы сделали это с какой-то целью, не правда ли? Пообщаться с какими-то важными специалистами; послушать, как решают аналогичные проблемы с анализом больших данных в Hadoop или уменьшают глюки отслеживания Google Analytics более опытные специалисты; познакомиться с новым потенциально интересным стартапом или журналистом, а может, вы сами – стартап и пришли искать полезные знакомства; окучить множество новых клиентов; найти и замотивировать будущих сотрудников. Ваша задача – в течение следующих нескольких часов оставить положительное неизгладимое впечатление на максимальное количество людей. Уже начинает посасывать под ложечкой?
Читать дальше →

Управляем зависимостями в iOS-приложениях правильно: Знакомство с Typhoon

Reading time8 min
Views36K
«Any magic, sufficiently analyzed is indistinguishable from technology.»

Артур Кларк
(эпиграф в официальной wiki проекта Typhoon Framework)




Цикл «Управляем зависимостями в iOS-приложениях правильно»



Введение


В рамках этого цикла статей я не буду углубляться в теорию, рассматривать Dependency Inversion Principle или паттерны Dependency Injection — примем за данность, что читатель уже достаточно подготовлен к тому, чтобы познать дзен, и перейдем сразу к практике (ссылки для знакомства с теорией даны в самом конце поста).

Typhoon Framework — это самая известная и популярная реализация DI-контейнера для Objective-C и Swift приложений. Проект достаточно молодой — первый коммит был сделан в самом конце 2012 года, но уже обзавелся большим количеством поклонников. Отдельного упоминания заслуживает активная поддержка проекта его создателями (один из которых, между прочим, живет и работает в Омске) — на большинство создаваемых Issue отвечают в течение десяти минут, а уже через несколько часов к обсуждению присоединяется вся команда.
Читать дальше →

Разработка архитектуры системы через сервисно-ресурсную модель

Reading time5 min
Views16K
Хочу предложить немного обсудить тему сервисно-ресурсной модели и спросить о необходимости разработки инструмента для использования сервисно-ресурсной модели в проектировании, разработке и дальнейшей эксплуатации систем.

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

Что хочу получить?

Хочу получить более прозрачную систему для охвата всей картины подшефного хозяйства, чтобы видеть узкие места, видеть зависимости одних частей системы от других, знать, что ssh на одном сервере крайне важен для «вон того маленького обработчика», который работает по ночам на другом сервере.
Читать дальше →

5 инструментов в помощь аналитику

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



Содержание
  1. MS Excel Power Query
  2. MS Power BI
  3. Pyramid Analytics
  4. Компоненты аналитики MS SQL server (MDS, SSIS, SSAS)
  5. Главный инструмент аналитика

Читать дальше →

О переводе проекта с Objective-C на Swift

Reading time9 min
Views19K
Здравствуйте, уважаемые читатели.

Среди самых животрепещущих тем, которые поднимались на наших издательских советах в последние полгода, особое место занимает язык программирования Swift. При огромном интересе к нему со стороны западных разработчиков и при подлинном изобилии книг на эту тему язык пока кажется довольно сырым. Поэтому, прощупывая почву насчет востребованности нового языка, предлагаем познакомиться с постом великолепного Мэтта Нейбурга, автора книги «Programming iOS 8: Dive Deep into Views, View Controllers, and Frameworks». Автор подробно описывает перевод приложения на новый эппловский язык, убедительно доказывая: «глаза боятся — руки делают», а гибридная сборка Objective-C и Swift отнюдь не напоминает смесь французского с нижегородским.

Приятного прочтения и плодотворных экспериментов.
Читать дальше →

Дайджест интересных материалов для мобильного разработчика #103 (12-17 мая)

Reading time3 min
Views13K
Вспоминаем прошедшую неделю статьями о Framework7, о средней конверсии в App Store, о написании проектной документации и монетизации приложения для подкастов, о контроллерах Android и том, как пользователи находят и используют приложения. Хорошей вам недели и приложений!


Читать дальше →

Как использовать Twitter на технических конференциях?

Reading time4 min
Views8K
SQALab, организатор отраслевых конференций SQA Days, Analyst Days, SPMConf рассказала о том, как использовать во время технических конференций Twitter организаторам мероприятия и его посетителям.


Читать дальше →

Дайджест интересных материалов для мобильного разработчика #102 (5-11 мая)

Reading time3 min
Views9.9K
Поздравляю всех с прошедшими Праздниками и под занавес выходных — новый дайджест про разработку мобильных игр, про продвижение инди проектов, про Apple Watch и новую аналитику Apple, про первые уроки в онлайн школе Android-разработчиков, про мобильную рекламу и про много других интересных тем.

Читать дальше →

Архитектура приложения малой кровью

Reading time3 min
Views111K
Маленькая зарисовка на тему того, как разработать высокоуровневую архитектуру приложения.

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

Возьмите лист бумаги и карандаш. Если не сильно уверены в своих силах, то ещё и резинку, чтобы править схему. Более продвинутые читатели могут обратиться к профессиональным инструментам для проектирования архитектуры в электронном виде.

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

Теперь нарисуйте под каждым нарисованным сверху субъектом прямоугольник с названием UI или API — это интерфейсы, к которым будет обращаться пользователь или внешняя управляющая система. Иногда UI тоже может обращаться к API. Объедините все прямоугольники с UI одним контуром и обзовите слоем представления. Объедините все прямоугольники с API и обзовите слоем сервисов.

Для систем, нарисованных снизу, укажите компоненты, которые будут отвечать за доступ к этим системам. Объедините все эти компоненты одним контуром и обзовите слоем доступа к данным.

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

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

Вы получили логическую архитектуру приложения. Разбросайте слои по серверам — получите физическую архитектуру.

Теперь вам остаётся детально проработать каждый маленький квадратик.

Маленький практический пример запрячу под кат.
Читать дальше →

Как независимый разработчик прикоснулся к легенде. Часть первая

Reading time10 min
Views38K

1


В новый офис бывших коллег я попал под аккомпанемент дождя. Вот-вот начался май, пора к такому привыкать. Отряхиваюсь от влаги, жму руку бывшему руководителю, через просторный холл поднимаюсь на второй этаж, дальше по коридору, затем направо или налево — уж и не вспомню — и вот она, цитадель геймдева. Знакомые лица, знакомые рукопожатия, всё как в старые добрые времена. За три месяца инди-плавания я уже успел подзабыть, что такое офисные кресла, кофемашина и фритуплей.
Читать дальше →

Разработка игры: 4 года и два новых человека

Reading time7 min
Views27K
“Работа оплачивается опытом, а он налогами не облагается” Хэнк Хилл

Здравствуй, Хабр! В данной статье мы хотели бы рассказать историю создания мобильной игры “Robot Alan”, мотивированной простым желанием “Сделать игру!”, которое вылилось в три с лишним года переделок, бросания и начинания заново. Мы постараемся показать весь наш путь и то как мы с моим товарищем развивались и менялись под влиянием этой небольшой игрушки. Осторожно! Много страшных картинок из прошлого, много трафика!

Читать дальше →

Десятка лучших движков для создания своих собственных игр

Reading time1 min
Views203K
Десять лучших, по мнению ресурса BytesWire, игровых движков для создания собственных игр.

Unity 5


image
Лучший выбор для разработчика, позволяет создавать игры как 2D, так и 3D.

Construct 2


image
Система для создания двумерных игр через простой интерфейс на базе HTML5. Программирования не требуется.

libGDX


image
Кросплатформенный фрейморк, написанный на Java и работающий с OpenGL (ES).
Читать дальше →

Миллион строк плохого кода

Reading time4 min
Views48K
«No pain, no gain», как гласит древняя восточная мудрость. И даже если мудрость не древняя и не восточная, лично для меня самый ценный жизненный опыт чаще всего был и самым болезненным. Недавний пост Дэвида Робинсона — аспиранта, занимающегося программированием в стенах Принстонского университета — посвященный код ревью, не только поднял важный вопрос повседневного быта каждого, кому волей (или неволей) приходится передавать свой опыт другим. Оригинальный текст был относительно «беззубым», однако, пост перестал быть томным после того, как в комментариях появился Джон Кармак.

Это история о плохом коде, который однажды написал ваш покорный слуга.

На одном из первых курсов университета я писал программу на Java, которая должна была читать файл весом в 6 MB в строку (этим файлом был геном бактерии в формате FASTA). Выглядел мой код следующим образом:

BufferedReader reader = new BufferedReader(new FileReader (file));
String line = null;
String text = "";

while( ( line = reader.readLine() ) != null ) {
    text = text + line;
}

Построение строки при помощи серии конкатенаций подобным образом крайне неэффективно — у меня, без преувеличения, уходило около 40 минут на чтение файла (с тех пор я узнал несколько способов получше). Самое главное — после чтения файла весь оставшийся алгоритм в программе отрабатывал секунд за 10. Два дня я так и работал: делал изменения в коде, запускал программу и успевал посмотреть целый эпизод LOST, прежде чем программа завершала выполнение. «Черт, на двенадцатой строчке ошибка! Опять все по-новой...»
Читать дальше →

Unity на русском

Reading time1 min
Views62K
Здравствуйте, уважаемые Хаброобитатели!

UPD
Могу всех порадовать. Мы приступаем к переводу Unity in Action: Multiplatform Game Development in C#. Постараемся все сделать как можно быстрее, но при этом качественно.



Пришла нам в голову безумная мысль, а не пора ли перевести на русский язык книгу по Unity? Тем более сейчас, когда доступна полноценная пятая версия (да еще и бесплатно).
Книг на английском языке вышло немало, но хочется выбрать не слишком старую и самую интересную.
Если мы упустили что-либо интересное, напишите в комментариях, будем рады.
Читать дальше →

Программист == творчество || программист != творчество

Reading time3 min
Views47K
Вот уже наверное полгода меня не покидает мысль написать именно эту статью. Каждый раз, видя в переходе метро играющих на различных музыкальных инструментах людей, я хотел прийти домой и со всей свойственной мне решительностью изложить свои мысли в статье.

image

Но приходя домой, я принимался за свое любимое занятие – создание игр.
Читать дальше →

Дайджест интересных материалов для мобильного разработчика #100 (20-26 апреля)

Reading time3 min
Views17K
Совсем незаметно мы как-то подобрались к сотому выпуску. Можно считать, что это без малого два года — за это время мобильная разработка радикально изменилась, не столько в инструментах и подходах, сколько в ощущениях. Это все больше «взрослый» бизнес, хотя и и по-прежнему доступный любому разработчику. С весной вас и вот — сотый выпуск дайджеста.

image
Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity