• Тестирование производительности баз данных при помощи tSQLt и SQLQueryStress

    • Tutorial


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

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

    В итоге работа с БД может стать узким местом в производительности нашего приложения.

    Чтобы избавить себя от подобного рода проблем, я предлагаю рассмотреть различные аспекты тестирования баз данных. К которым можно отнести нагрузочное тестирование и проверку производительности SQL Server в целом при помощи юнит-тестов.
    Подробнее
  • Семь книг для тех, кто хочет стать гейм-дизайнером

    • Перевод
    image

    В этой статье рассказывается о том, когда и как дизайн игр стал профессией, а также о том, как он сформировался в отдельную дисциплину. Также мы предложим 7 книг, которые нужно прочитать каждому гейм-дизайнеру. Мы объясним, что особо ценного в этих книгах и как они позволят вам стать профессиональным гейм-дизайнером. Существуют и другие статьи с рекомендациями книг по дизайну игр, но их авторы не указывают конкретный порядок их чтения. Мы перечислили книги в определённом порядке, позволяющем читателю плавно повышать свои навыки гейм-дизайна. Более того, в статье подробно описаны порядок и причины для изучения этих книг.

    Эта статья не является маркетингом описываемых материалов, а предоставляет информацию о том, где и чему учиться.
    Читать дальше →
  • Я десять лет страдал от ужасных архитектур в C# приложениях — и вот нашел, как их исправить


      Я второй десяток лет участвую в разработке приложений для бизнеса на .NET и каждый раз вижу одни и те же проблемы — быдлокод и беспорядок. Месиво из сервисов, UoW, DTO-шек, классов-хелперов. В иных местах и прямой доступ в базу данных руками, логика в статических классах, километровые портянки конфигурации IoC.


      Когда я был молодым и резвым мидлом — я тоже так писал. Потом бил кулаком в стену с криками: "Хватит! В следующий раз сделаю по-другому". Следующий раз действительно начинался "по-другому" — с холодной головой и строгим подходом к архитектуре — а на выходе все равно получалась та же субстанция, лучше на пару миллиметров.


      Однако, эволюция — беспощадная штука: моя последняя система показалась мне более-менее близкой к идеалу. Сложность не сильно росла, скорость разработки не падала довольно долго, в систему худо-бедно въезжают новые сотрудники. Эти результаты я взял за основу, улучшил и теперь анонсирую вам свою новую разработку: Reinforced.Tecture.

      Читать дальше →
    • [Перевод] Обработка ошибок и транзакций в SQL Server. Часть 1. Обработка ошибок – быстрый старт

      Привет, Хабр! Представляю вашему вниманию перевод статьи «Error and Transaction Handling in SQL Server. Part One – Jumpstart Error Handling» автора Erland Sommarskog.

      1. Введение


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

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

      Все статьи описывают обработку ошибок и транзакций в SQL Server для версии 2005 и более поздних версий.
      Читать дальше →
      • +23
      • 17,2k
      • 4
    • Мааааленькая PDF-сборка хардкорных статей про GameDev



        Привет!
        У издательств я узнал, что с 1 по 10 января люди читают больше, чем за год. Поэтому небольшой подарок от нас — мы договорились с Даниилом Куком (бывшим геймдизайнером Epic Megagames), взяли и перевели несколько его хардкорных материалов про разработку игр. И засунули их в PDF на сотню страниц.

        • Как игры формируются внешней средой: как рынок влияет на сюжет игры (например, из-за уменьшения среднего дохода на игру уменьшается роль открытого мира – слишком долго делать) и так далее. Очень хороший аналитический обзор от гуру с конкретными советами.
        • Организация игровых процессов в многопользовательской игре — как собирать игроков вместе, как делать асинхронные взаимодействия и много чего ещё с числами и примерами. Годный хардкор.
        • ТОП-5 споров о разработке 2014-го года — прошлогодний материал о том, что за тренды обсуждались. Всё актуально и сейчас.
        • Декларация независимости разработчика — американский крик души о том, что «уберите грязные лапы финансового директора от сюжета игры». Ну, примерно.
        • Критика критики игр — что делать, если обзоры пишут дилетанты, и как выделиться из балласта.
        • Создание эффективных причинно-следственных связей в играх — невероятно полезная вещь для всех тех, кто хочет понять, как работают когнитивные схемы игр. Полезна не только разработчикам, но и для UI/UX-спецов.
        • Таблицы трофеев – математика выковыривания лута из трупов врагов. Начинается с ликбеза и стремительно ускоряется до весьма крутых решений.

        Вот PDF и полные тексты. Ниже в посте – основные тезисы, если лень читать всё или хочется здесь и сейчас.
        Читать дальше →
        • +28
        • 42,5k
        • 8
      • В Германию разработчиком без в/о

          image

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

          В своё оправдание скажу, что случай необычный. Ваш покорный слуга в силу природной лени и прочих хорошо знакомых каждому причин зафейлил квест по получению полезной бумажки под названием диплом. Последствия моего юношеского легкомыслия ждут вас под катом.
          Читать дальше →
        • Аналитика девушек с низкой социальной ответственностью (Заряжено Power BI, Qlik Sense, Tableau)

          Кто мы такие и какие были предпосылки проекта?


          Добрый день, меня зовут Лазарев Владимир, я руководитель BI-интегратора Аналитикс Групп. Мы делаем для бизнеса наглядные отчёты по маркетингу, продажам, финансам, логистике на базе ведущих аналитических платформ Qlik Sense, Power BI, Tableau.

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

          И желательно, чтобы данные были интересными… :-)

          Откуда появилась идея сделать этот отчёт?


          Несколько лет назад Высшая школа экономики опубликовала статью о формировании цен на услуги девушек низкой социальной ответственности в Москве. Это были агрегированные данные анализа 1.800 анкет. Нам показались интересными данные, которые стоят за этими выводами социологов ВШЭ. И мы решили проработать эту тематику.
          Читать дальше →
        • События C# по-человечески


          Невозможно, просто взять и вникнуть в этот глубокий смысл, изучая События (event) в просторах базового и, на первый взгляд, бесконечного C#.

          Когда я изучал События (не в рамках .NET!), потратил много сил, чтобы, наконец-то, разобраться, как они устроены и должны конструироваться. Поэтому, я решил опубликовать свою методику понимания структуры пользовательского события, коим представляется ключевое слово event в С#.
          Не буду цитировать и без того замученную MSDN, а постараюсь объяснить понятно и доступно.
          Читать дальше →
        • Как стать «толковым джуниором». Личный опыт

          На Хабре есть уже довольно много статей от джуниоров и для джуниоров. Некоторые поражают степенью зажратости юных специалистов, которые в самом начале своего карьерного пути, уже готовы давать советы корпорациям. Некоторые наоборот удивляют несколько щенячим энтузиазмом: «Ой, меня взяли на фирму настоящим программистом, теперь я готова работать хоть и бесплатно. А еще вчера на меня тимлид посмотрел — уверена, мое будущее устроено». Такие статьи в основном в корпоративных блогах. Ну, и вот я решил рассказать о своем опыте начала работы джуниором в Москве, потому что а чем я хуже? Бабушка мне говорила, что ничем. Как вы, наверное, заметили, я люблю длинные отступления и растекаться мыслью по древу, но есть же любители такого стиля — так что наливайте большую чашку чая — и поехали.
          Читать дальше →
        • Инкапсуляция для настоящих самураев, или нюансы, связанные с ключевым словом internal в C#

          Пролог: internal is new public


          Каждый из нас мечтал о проекте, где всё будет сделано правильно. Это кажется вполне естественным. Как только ты узнаёшь о самой возможности писать хороший код, как только слышишь легенды о том самом коде, который можно легко читать и изменять, сразу загораешься тем самым «ну вот теперь я точно всё сделаю правильно, я ведь теперь умный и Макконнела читал».


          image

          Случился такой проект и в моей жизни. Очередной. Причём делаю я его под добровольным надзором, где за каждой моей строчкой следят. Соответственно, уже не только хотелось, но и надо было делать всё правильно. Одним из «правильно» было «чти инкапсуляцию и закрывайся по максимуму, потому что открыться всегда успеешь, а закрыться обратно потом будет поздно». И поэтому я везде, где только мог, стал использовать для классов модификатор доступа internal вместо public. И, естественно, когда ты начинаешь активно использовать новую для тебя фичу языка, возникают некоторые нюансы. О них по порядку и хочу рассказать.

          Читать дальше →
        • Оценка сроков на разработку и тестирование задачи (не нужна)

            Я в тестировании 12 лет, работал в Naumen и Яндексе. Сейчас руковожу отделом тестирования из 150 человек в Контуре и продолжаю работать тестировщиком в одной из команд.


            После полугодовых performance review менеджеры из разных команд рассказали, какие цели поставили своим тестировщикам. У каждого пятого была такая: «Научиться оценивать сроки на тестирование задач». Часто такой «оценки сроков» хотят не только от тестировщиков, но и от разработчиков.



            Оценка сроков в 95 % случаев. Спасибо, xkcd.


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

            Сейчас объясню, как это работает.

            Горькая правда
          • Беспощадная автоматизация. Director's Cut

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


              Начальные условия


              Наш эксперимент по ускорению работы программистов мы проводили в следующих условиях:


              • это было территориально распределенное производственное предприятие;
              • в эксперименте приняли участие 4 программиста 1С и я, их руководитель;
              • мы – штатные программисты по поддержке комплекса конфигураций;
              • нам стало скучно, и мы решили развиваться.

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

              Читать дальше →
            • Легальный вывод средств с Upwork в РФ

              • Tutorial
              На Хабре уже написано достаточно много статьей по теме, в частности:


              В ответ на повторяющиеся просьбы написать статью, в которой:

              • разбросанные по разным статьям крупицы будут собранны в единое целое
              • всевозможные противоречия будут устранены
              • все сведения будут иметь актуальный характер
              • будут учтены пожелания такие как «а можно с картинками? :)»

              родилось следующее руководство.
              Читать дальше →
            • Как стать Java разработчиком за 1,5 года

                Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Это моя первая работа в качестве разработчика. До этого я работал в сфере IT-поддержки и системной интеграции. Первого февраля 2019 г. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.



                Это мой рабочий стол. Пить пиво в рабочее время у нас разрешено, мы же в Германии.


                Моя первая статья: «IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там»

                Читать дальше →
              • Как специалисты Google Adwords помогли мне выбросить 150 000 грн (около $6000) за месяц или почему я больше не буду…

                  Это довольно забавная история о том, как я попал впросак сознательно, причём дважды и в результате «сжег» не мало не много, а где-то $15 000, всего лишь за месяц. Причём чувствовал, что так будет, но решил пойти по этому пути. Ради чего? Ради опыта? Нет, что Вы. Как говорится, только две вещи бесконечны — Вселенная и человеческая глупость, хотя насчёт Вселенной я не уверен. Тут скорее всего хотелось проверить насколько можно доверять своей интуиции. И она меня не подвела, but that's so silly…
                  Читать дальше →
                • Социнжиниринг в военной пропаганде



                    Во время Второй мировой англичане достали личные дела командиров немецких подлодок. Вроде бы не очень важная информация для военных целей – лодки-то уже вышли на задания, что им сделаешь. Но к делу подключились тёртые специалисты по пропаганде. У союзников были ежедневные радиопередачи, и вот пример:
                    — Мы обращаемся к вам, командир подводной лодки «U-507» капитан-лейтенант Блюм. С вашей стороны было очень опрометчиво оставить свою жену в Бремене, где в настоящее время проводит свой отпуск ваш друг капитан-лейтенант Гроссберг. Их уже, минимум, трижды видели вместе в ресторане, а ваша соседка фрау Моглер утверждает: ваши дети отправлены к матери в Мекленбург…
                    Цитата из «Операция «Гроза» — И. Бунич
                    Красота, правда? И, главное, в точности соответствует одному из базовых методов социнжинирингового проникновения внутрь инфраструктуры при направленной атаке.

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

                    Введение


                    Занимаюсь автоматизацией бухгалтерского учета 17 лет. После универа поработал как программист бухгалтерской программы. Выяснилось, что есть спрос на программистов этой программы. Поменял одну работу, вторую. Начал брать заказы на стороне. Выяснилось (или показалось), что выполнять заказы выгоднее, чем получать зарплату. Стал частным предпринимателем. Выяснилось (или опять показалось), что продавать программу выгоднее, чем программировать. Стал дилером. Оказалось, что выгоднее всего – подписка на обновления и обслуживание. Возможно, еще выгоднее сделать веб-сервис для онлайн-бухгалтерии…

                    В ходе работы приходилось нанимать программистов и обучать основам бухгалтерского учета. Когда обучал программистов бухучету, мне нравилось за час рассказать им всю базовую теорию. Приятно срывать покровы сложности и таинственности. Оказывается, курсы бухгалтеров никому не нужны. Нет такой науки. Разве что набор терминов, в которых путаются сами бухгалтера…
                    Читать дальше →
                  • Инопланетяне, постапокалипсис, Иисус и космические контрабандисты: самые интересные фантастические книги 2017


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

                      Читать дальше →
                    • Фантастика и фентези за два с половиной года, почти сто хороших книг

                      На этот пост меня подтолкнула публикация «Почему я ворую книги, бедные авторы, и как это исправить», а именно — скепсис и возражения на мой комментарий о том, что я не читаю плохие книги. Мне предложили рассказать, как я выбираю книги для чтения и что именно читаю. Ну я и повелся.
                      Оформить список было сравнительно просто, FBReader любезно хранил на GoogleDrive все скачанные книги с того момента, как там появилась эта услуга. Предлагаю вашему вниманию список прочитанного мной за 2,5 года из жанров фентези и фантастики.
                      Читать дальше →
                    • Как не банально сказать «спасибо» иностранному коллеге. Советует носитель

                      • Tutorial

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

                      Начнем с переписки


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

                      I am pleased to hear from you
                      Это можно перевести как “Спасибо, что написали” или “Благодарю за обращение”.

                      We greatly appreciate your feedback
                      В русском фраза звучит как “Огромное спасибо за обратную связь”.
                      Читать дальше →