• Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть первая

    О чем данный учебник


    Данный учебник представляет собой что-то типа «штампа моей памяти» по языку SQL (DDL, DML), т.е. это информация, которая накопилась по ходу профессиональной деятельности и постоянно хранится в моей голове. Это для меня достаточный минимум, который применяется при работе с базами данных наиболее часто. Если встает необходимость применять более полные конструкции SQL, то я обычно обращаюсь за помощью в библиотеку MSDN расположенную в интернет. На мой взгляд, удержать все в голове очень сложно, да и нет особой необходимости в этом. Но знать основные конструкции очень полезно, т.к. они применимы практически в таком же виде во многих реляционных базах данных, таких как Oracle, MySQL, Firebird. Отличия в основном состоят в типах данных, которые могут отличаться в деталях. Основных конструкций языка SQL не так много, и при постоянной практике они быстро запоминаются. Например, для создания объектов (таблиц, ограничений, индексов и т.п.) достаточно иметь под рукой текстовый редактор среды (IDE) для работы с базой данных, и нет надобности изучать визуальный инструментарий заточенный для работы с конкретным типом баз данных (MS SQL, Oracle, MySQL, Firebird, …). Это удобно и тем, что весь текст находится перед глазами, и не нужно бегать по многочисленным вкладкам для того чтобы создать, например, индекс или ограничение. При постоянной работе с базой данных, создать, изменить, а особенно пересоздать объект при помощи скриптов получается в разы быстрее, чем если это делать в визуальном режиме. Так же в скриптовом режиме (соответственно, при должной аккуратности), проще задавать и контролировать правила наименования объектов (мое субъективное мнение). К тому же скрипты удобно использовать в случае, когда изменения, делаемые в одной базе данных (например, тестовой), необходимо перенести в таком же виде в другую базу (продуктивную).
    Читать дальше →
  • Google купил украинский стартап Viewdle за $30 млн

      image

      Совет директоров компании Viewdle одобрил поглощение стартапа корпорацией Google, сообщает Watcher со ссылкой на Forbes.ua.

      В результате сделки Google получает 100% украинской компании. Однако официально о сделке будет объявлено вечером 2 октября в присутствии представителей Google, которые уже прибыли в Киев.

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

      Данные о стоимости сделки официально не разглашаются, однако стало известно, что она составляет около $ 30 млн.
    • Почему реклама не работает или хватит выбрасывать деньги на ветер

      Рекламные кампании проваливаются.

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

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

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

      Давайте разбираться, что же идет «не так» и что нужно делать, чтобы все-таки желаемый результат был достигнут.
      Читать дальше →
    • Управленческие инструменты: 4-фазный алгоритм решения проблем с людьми или «А чего ты хочешь, если ты такой хреновый менеджер?»

        На одном из давних тренингов мы отрабатывали кейс “Сотрудник не присылает вовремя отчеты”. Кейс абсолютно не привязанный к реальной жизни — ведь такого же не бывает, чтобы люди не присылали вовремя отчеты, верно?

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

        Моим собеседником оказался молодой человек, назовем его Егор, технический директор небольшой компании.

        Цель кейса — донести до сотрудника обратную связь, что отчеты надо присылать вовремя. Егор начал сразу с места в карьер:

        — Александр, как же так, почему Вы не присылаете мне отчеты?

        Я стоял, думал-думал, чего сказать. И потом ляпнул первое, что пришло в голову:

        — Егор, а чего ты хочешь, если ты такой хреновый менеджер?!

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

        — Что значит “хреновый менеджер”?!!! Это недопустимо — так разговаривать с руководством…

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

        И сегодня мы как раз поговорим о том, как доносить до людей неприятную обратную связь, а также как ее правильно принимать. Как обычно— алгоритмы, схемы, примеры — все, что мы любим. :) И многобуков, что мы не любим, но зато с подробностями.
        Читать дальше →
      • Подборка полезного для Twitter Bootstrap 3

          Прошло уже много времени с момента релиза Bootstrap 3, большинство инструментов, сервисов и других полезностей для известного CSS-фреймворка обновились, кроме того, появилось много новых интересных штук для Twitter Bootstrap. Предлагаю вашему вниманию подборку на эту тему.

          Bootstrap 3 PSD — Отличный UI-кит элементов фреймворка, сделано очень качественно.

          image
          Читать дальше →
        • JavaScript F.A.Q: Часть 1

            image

            Несколько дней назад мы с TheShock создали топик в котором собирали ваши вопросы, касательно JavaScript (архитектура, фрэймворки, проблемы). Настало время ответить на них. Мы получили очень много вопросов, как в комментариях так и по email. Эта первая часть ответов — те вопросы, которые достались мне.
            Читать дальше →
            • +222
            • 67.4k
            • 50
          • Continuous Integration для самых маленьких

            • Tutorial

            Вы все еще публикуете проект вручную? Тогда мы идем к вам


            Под катом гайдлайн по внедрению CI для .NET проектов «с нуля», включающий:
            1. Автоматические ежедневные сборки
            2. Уведомления о проблемах
            3. Интеграцию с баг-трекером и системой контроля версий
            4. Версионирование продукта
            5. Версионирование базы данных
            6. Автоматизированные выкладки и бекапы

            Читать дальше →
          • Теория цвета в цифрах

            • Tutorial
            Разные люди могут по-разному представлять один и тот же цвет по его названию. Например голубой цвет может на самом деле быть цветом морской волны или небесным. Гораздо точнее цвет определяется шестнадцатеричным кодом, всего существует 16777216 комбинаций. Поэтому дизайнеру может быть полезно распознавать цвет, просто взглянув на его hex-код.

            Основы


            Начнем с простого: рассмотрим обычный hex-код, где каждая из трех пар цифр контролирует один из цветов RGB — красный, зеленый, синий. Числа могут принимать значения цифр от 0 до 9 и букв от A до F.

            Читать дальше →
          • Основы архитектуры IIS, или запросопровод для ASP.NET

            • Tutorial



            В прошлом году мне пришлось отсобеседовать около 10-15 кандидатов на должность веб-программиста на ASP.NET средней квалификации. В качестве вопросов «на засыпку», или «со звёздочкой», я просил рассказать, что происходит с HTTP-запросом от момента его поступления на 80-й порт сервера до передачи управления коду aspx-страницы. Статистика была удручающей: ни один из кандидатов не смог выдать хоть что-нибудь внятное. И этому есть своё объяснение: ни в MSDN с technet, ни на специализированном ресурсе iis.net, ни в книгах a-la «ASP.NET для профессионалов», ни в блогах данной теме не уделяется должного внимания – информацию приходится собирать чуть ли не по крупицам. Я даже знаю людей, которые решили написать свой собственный веб-сервер (Игорь, Георгий, привет!), чтобы не разбираться в работе IIS. Единственная толковая статья – «Introduction to IIS Architectures» Риган Темплин (Reagan Templin). Но и она остаётся на периферии интересов аспнетчиков.

            Хотя мне лично уже не так интересны чисто технические вопросы, я решил собрать в кучу свой накопленный опыт, раскопать на просторах Сети любопытные детали и передать сие сакральное знание массам, пока оно ещё не устарело. Сразу оговорюсь, что статья ориентирована в большей степени на IIS 7.x, иногда будут ответвления про 6-ку. С 8-й версией в работе не сталкивался, поэтому решил обойти её в этой статье стороной. Но, уверен, читатель без труда разберётся с восьмёркой, освоив изложенный ниже материал.
            Познать...
            • +47
            • 153k
            • 9
          • Договор на разработку сайта: так, а не иначе

              Присылает нам заказчик (Газпром) свою версию договора.
              Понимаем — нашу они не подпишут,
              вносим реквизиты и отправляем обратно.
              Пропадают на две недели… возвращают протокол разногласий к договору.


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

              • Translation
              Один из наиболее универсальных советов, которые мы даем в Y Combinator, это браться за сложную работу. Многие начинающие основатели верят, что стартапы или «взлетают» или нет. Вы создаете что-то, делаете это доступным, и, если вы придумали самую лучшую мышеловку, люди, как и было обещано, сами придут к вам. Или не придут, в таком случае у вас нет рынка. [1]

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

              Привлечение клиентов


              Самая распространенная сложная работа, за которую основатели должны браться на старте, это самостоятельное привлечение пользователей. Этим должны заниматься почти все стартапы. Нельзя ждать, когда пользователи к вам придут. Вы должны сами пойти и привести их.
              Читать дальше →
            • 12 правил плохого менеджера



                Никогда не планируйте


                Проект, как правило, делается сам собой, вырастает, как дерево: главное — вовремя посадить семена и удобрить почву. Разве вы когда-нибудь встречали чудака, который будет прикидывать, насколько вырастет за год дерево, которое он посадил? Правда в том, что планирование никогда еще никому не помогло сделать хороший проект. Точные сроки — это лишняя ответственность и ненужная головная боль. Диаграммы Ганта — для слабаков. Забудьте о них.

                Еще 11 практических советов
              • Хороший пользовательский интерфейс

                • Translation

                Вольный перевод статьи Якуба Линовски — «A Good User Interface».

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

                16 практических идей
              • Разработка web API

                • Translation

                Интро


                Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

                В тексте попадаются комментарии переводчика, они выделены курсивом.

                Собираем API-интерфейсы, которые понравятся другим разработчикам


                Понятные URL для вызовов API

                Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

                Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
                /dogs для работы со списком собак
                /dogs/12345 для работы с отдельной собакой
                Дальше
              • Советы новичкам при проектировании модульных производственных систем

                В этой статье я попытаюсь поделиться своим опытом в проектировании пользовательской бизнес-логики. Это явно не претендует на полноценный ликбез, т.к. я всего лишь вспоминаю то, через что прошёл лично я, какие ошибки я допустил, и как мне их удалось (или не удалось) исправить в будущем. Наверняка, опытные системные архитекторы уже все проходили и знают, однако надеюсь, что некоторые советы таки будут полезны.
                Мы использовали (и используем) клиентскую часть на WPF/Silverlight, WCF сервисы и СУБД Oracle, Postrges, MsSQL. Код написан по MVVM, использована Prism для модульности и навигации. Не могу точно сказать, какие из тезисов подойдут для других платформ и языков.

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

                Итак, поехали.
                Читать дальше →
              • Исполняемая спецификация: SpecFlow от А до Я

                • Tutorial

                Эта статья является продолжением первой части и раскрывает технические подробности работы с «исполняемой спецификацией» с помощью SpecFlow.

                Для начала работы вам понадобится плагин к Visual Studio (скачивается с официального сайта) и пакет SpecFlow (устанавливается из nuget).

                Итак, наш Product Owner попросил команду разработать калькулятор…
                Под катом user stories, тестовые сценарии, автоматизация и запуски по расписанию из Team City
                • +15
                • 41.7k
                • 2
              • Как две недели?!

                  Как это вам надо две недели на эту задачу? Что, правда? Вот на эту элементарную формочку с тремя полями и двумя кнопками? Две недели? Да вы надо мной издеваетесь, наверное! Давайте разбираться.

                  Что? Нужна ли валидация данных при вводе? Ну, конечно, нужна! И вообще, вот это поле лучше разбить на два, так понятнее. А вот в это добавить маску. А вот это — заменить на выпадающий список. Где брать варианты для этого списка? В базе на сервере, конечно. Как это их там нет? А, ну да, это же в другом проекте они у нас были… Ну, значит надо добавить. Взять там и добавить сюда. Сейчас я дам вам контакт разработчика того проекта — обсудите с ним. Он, правда, у нас уже не работает, но я думаю, вполне можно спросить что и как — он расскажет, скорее всего.

                  Мы всё обсудили? Нет? Что ещё?
                  Читать дальше →
                • Юнит-тестирование для чайников

                  • Tutorial
                  Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



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

                  Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

                  We need to go deeper
                • Top 5 раздражающих моментов в работе программиста

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

                    1. А сколько займет сделать этот раздел (дается ТЗ из одной строки)?

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

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

                    2. Ты же ОБЕЩАЛ сделать за два дня, а прошла неделя! (моют мозг по сроку из пункта 1)

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

                    Менеджеру: ничто так не демотивирует, как обвинение в некомпетентности и лжи. Постарайтесь давать точное ТЗ и бить задачу на простые кусочки, в чем программист с удовольствием поможет (если хорошо попросить). Тогда можно будет более точно управлять сроками.
                    Читать дальше →