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

    • Tutorial

    Предыдущие части




    О чем будет рассказано в этой части


    В этой части мы познакомимся:
    1. с выражением CASE, которое позволяет включить условные выражения в запрос;
    2. с агрегатными функциями, которые позволяют получить разного рода итоги (агрегированные значения) рассчитанные на основании детальных данных, полученных оператором «SELECT … WHERE …»;
    3. с предложением GROUP BY, которое в скупе с агрегатными функциями позволяет получить итоги по детальным данным в разрезе групп;
    4. с предложением HAVING, которое позволяет произвести фильтрацию по сгруппированным данным.

    Читать дальше →
    • +18
    • 155k
    • 3
  • Lock-free структуры данных. Concurrent maps: деревья

      Это последняя, на сегодняшний день, статья из цикла про внутреннее устройство конкурентных ассоциативных контейнеров. В предыдущих статьях рассматривались hash map, был построен алгоритм lock-free ordered list и контейнеры на его основе. За бортом остался один важный тип структур данных — деревья. Пришло время немного рассказать и о них.

      Исследования, посвященные алгоритмам конкурентных деревьев, не требующих внешней синхронизации доступа к ним, начались довольно давно — в 70-х годах прошлого века, — и были инициированы развитием СУБД, поэтому касались в основном оптимизации страничных деревьев (B-tree и его модификации).

      Развитие lock-free подхода в начале 2000-х не прошло мимо алгоритмов деревьев, но лишь недавно, в 2010-х годах, появилось множество действительно интересных работ по конкурентным деревьям. Алгоритмы деревьев довольно сложны, поэтому исследователям потребовалось время — порядка 10 лет — на их lock-free/non-blocking адаптацию. В данной статье мы рассмотрим самый простой случай — обычное бинарное дерево, даже не самобалансирующееся.
      Читать дальше →
    • Простой PHP генератор сложных HTML таблиц

      Всем привет. Хочу поделиться свеженаписанным генератором HTML таблиц.

      Участились случаи сбора различной статистики и компоновки ее в сложные таблицы с различными групировками.

      image

      Заметив такую тенденцию решил автоматизировать рисование таблиц.

      Как итог:
      • Избавил себя от составления слоеных циклов для вывода массива;
      • Получил стандартизацию структуры массивов;
      Читать дальше →
    • Перевод книги «Выразительный Javascript» в pdf

        Хабр, привет.

        Не так давно SLY_G опубликовал цикл переводов книги Eloquent Javascript (за что ему большое спасибо). В комментариях раз за разом поднимались вопросы о сборке переводов книги, что, собственно, я и сделал при помощи сервиса Gitbook — «Выразительный Javascript», pdf, ePub, mobi и онлайн версия.

        Репозитарий книги, pull requests принимаются.
        Читать дальше →
      • 30 чудных библиотек для PHP программистов

        Предлагаю читателям «Хабрахабра» перевод публикации «30 Amazing PHP Libraries for Programmers and Developers». Авторы собрали несколько удивительных PHP-библиотек, которые помогут реализовать некоторые классные вещи, не прилагая много усилий. Цель обзора состоит в том, чтобы преподнести что-то новое, поэтому список не включает популярные библиотеки.
        Читать дальше →
      • Форматирование Python-кода

          Введение


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

          О читаемости и пойдет речь, а точнее как ее увеличить.
          Читать дальше →
        • Tree — убийца JSON, XML, YAML и иже с ними

          Здравствуйте, меня зовут Дмитрий Карловский и я… много думал. Думал я о том, что не так с XML и почему его в последнее время променяли, на бестолковый JSON. Результатом этих измышлений стал новый стандарт формат данных, который вобрал в себя гибкость XML, простоту JSON и наглядность YAML.

          image Tree — двумерный бинарно-безопасный формат представления структурированных данных. Легко читаемый как человеком так и компьютером. Простой, компактный, быстрый, выразительный и расширяемый. Сравнивая его с другими популярными форматами, можно составить следующую сравнительную таблицу:
          Больше — лучше JSON XML YAML INI Tree
          Человекопонятность 3 1 4 5 5
          Удобство редактирования 3 1 4 5 5
          Произвольная иерархия 3 3 3 1 5
          Простота реализации 3 2 1 5 5
          Скорость парсинга/сериализации 3 1 1 5 5
          Размер в сериализованном виде 3 1 4 5 5
          Поддержка поточной обработки 0 0 5 5 5
          Бинарная безопасность 3 0 0 0 5
          Распространённость 5 5 3 3 0
          Поддержка редакторами 5 5 3 5 1
          Поддержка языками программирования 5 5 3 5 1
          Читать дальше →
        • Секрет изучения иностранного языка для взрослых

            Дэвид Бэйли, глава компании Spotnight, рассказал, как ему удалось обучиться французскому языку всего за 17 дней. Под катом — несколько проверенных и рекомендуемых им лайфхаков.

            image
            Читать дальше →
          • Выразительный JavaScript: Проект: Веб-сайт по обмену опытом

            • Translation

            Содержание




            На встречах по обмену опытом люди с общими интересами встречаются и делают небольшие неформальные презентации на тему своих знаний. На встрече по обмену опытом среди фермеров кто-нибудь может рассказать о выращивании сельдерея. На встрече программистов вы можете выступить с рассказом про Node.js

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



            В последней главе-проекте мы устроим веб-сайт по обслуживанию выступлений, которые делаются на таких встречах. Представьте себе группу людей, которые регулярно встречаются в офисе одного из участников, чтобы поговорить о моноциклах. Проблема в том, что когда предыдущий организатор встреч переехал в другой город, никто не занял его место. Нам нужна система, которая позволит участникам предлагать и обсуждать темы друг с другом, без участия организатора.
            Читать дальше →
            • +36
            • 33.3k
            • 9
          • Структуры данных: 2-3 куча (2-3 heap)

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

            В компьютерных науках для эффективной реализации очереди с приоритетом используются структуры в виде кучи.
            Читать дальше →
            • +34
            • 41.4k
            • 5
          • Обработка и оформление отчетов в Excel на PHP

            • Tutorial

            Не редко при разработке некоего проекта, возникает необходимость в формировании отчетной статистики. Если проект разрабатывается на Delphi, C# или к примеру, на С++ и под Windows, то тут проблем нет. Всего лишь необходимо воспользоваться COM объектом. Но дела обстоят иначе, если необходимо сформировать отчет в формате excel на PHP. И чтобы это творение функционировало на UNIX-подобных системах. Но, к счастью, не так все плохо. И библиотек для этого хватает. Я свой выбор остановил на PHPExcel. Я уже пару лет работаю с этой библиотекой, и остаюсь доволен. Поскольку она является кроссплатформенной, то не возникает проблем с переносимостью.


            PHPExcel позволяет производить импорт и экспорт данных в excel. Применять различные стили оформления к отчетам. В общем, все на высоте. Даже есть возможность работы с формулами. Только необходимо учитывать, что вся работа (чтение и запись) должна вестись в кодировке utf-8.

            Читать дальше →
          • Пальчиковые деревья (часть 2. Операции)

            • Translation
            • Tutorial
            Статья будет состоять из 3х частей:
            Пальчиковые деревья (часть 1. Представление)
            Пальчиковые деревья (часть 2. Операции)
            Пальчиковые деревья (часть 3. Применение)

            Пальчиковые Деревья как Последовательности



            В первой части статьи мы рассмотрели пальчиковые деревья как перспективную структуру в качестве немутабельных последовательностей. И научились создавать пальчиковые деревья. Хочу заметить, научились создавать так, что стало принципиально невозможно построить неправильные деревья. Теперь наша задача научится работать с пальчиковыми деревьями как с последовательностями: научится присоединять к началу и концу последовательности, научится легко отделять от обоих концов последовательности, а также соединять несколько деревьев в одно.
            Читать дальше →
            • +7
            • 5.8k
            • 2
          • Аддон для Overclock`a сознания или флешбек-профи

            В продолжение темы ОС и этих двух постов: «Overclock мозга или внутренняя виртуализация сознания», Патч для гипервизора сознания хотелось бы поделиться своим опытом в данном сабже, а так же мало задокументированной, но зато намного более простой возможностью «прокачать» свой мозг.

            image
            Читать дальше →
          • Overclock мозга или Внутренняя виртуализация сознания

            • Tutorial


            Все помнят этот фильм? Какого черта он делает на Хабре? И вообще что тут делает подобный пост?
            Наверное потому, что я считаю главным звеном в IT все таки человека, а точнее его мозги. Я попробую рассказать еще об одной возможности использовать свой мозг чуточку эффективнее. Одна из слабо задокументированных возможностей, которую мы используем каждый день, но не всегда даже об этом вспоминаем. Все описанное проверялось на мне. Если что-то я не пробовал, но рассказать об этом важно буду отмечать особо. Никаких наркотиков, аппаратов и издевательств над собой, только общедоступные легкие методики (короче, лег проспался и вперед, не вставая даже с кровати).
            И да… Это до жути реалистично, на столько, что попробовав, вы не сможете не рассказать об этом.

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

            image

            Недавно в топе Хабра появился пост, заставивший меня вылезти из read-only: «Overclock мозга или внутрення виртуализация сознания».
            Вводящее в заблуждение название и не менее спорное содержание. Неприятные ощущения вызывает еще и тот факт, что при всей неточности и искажении фактов автор осмелился прикрепить к нему метку tutorial.

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

              Если вы читаете эти строки, то будет вполне естественно предположить, что вы проводите за компьютером по крайней мере несколько часов в день, а то и больше. Такой режим работы привносит с собой достаточно сильную нагрузку на наши руки, которая может вызвать боли в кистях, запястьях и пальцах. Такие боли вызваны так называемым «туннельным синдромом» (синдромом карпального канала, кистевым туннельный синдром, carpal tunnel syndrome) — хроническим заболеванием.

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

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


              Итак, что же порождает это неприятное явление? Карпальный (туннельный) синдром вызывается сдавливанием нерва кисти (срединного нерва), который проходит в специальных каналах, образованных костями и связками. Естественно, при сдавливании нерва мы ощущаем боль, которая может чувствоваться в суставе кисти, но не только в нём. Сейчас мы пройдёмся по всем этапам обсуждаемого синдрома и постараемся связять физиологические процессы с тем, что мы можем ощущать при работе за компьютером.

              Читать дальше →
            • Очень быстрый и эффективный способ расслабления глаз

                Предисловие


                imageНе знаю, все ли программисты всесторонне любознательные люди, но я всегда пытаюсь получить фундаментальные знания во всех областях, которые могут быть практически полезны. В то время, когда мне в голову пришла эта идея я изучал анатомию и физиологию по журналам «Тело человека. Снаружи и внутри», ну а по работе я занимался стерео-варио фотографиями (для тех кто не знает — были такие советские календарики с ребристой поверхностью, где картинка либо казалась объемной, либо менялась). Так вот, в один из вечеров мне пришла в голову замечательная идея, которую я на протяжении уже 4х лет использую для поддержания своего зрения.
                Обещаю, что эффект почувствуете сразу!
                Читать дальше →
              • Персистентное декартово дерево по неявному ключу

                Осторожно, персистентность


                Сегодня достаточно необычный день, не правда ли? Как часто на Хабре появляются статьи про персистентные структуры данных? И именно сегодня я желаю вам рассказать про незаслуженно забытую персистентную дерамиду по неявному ключу. Итак, начнем.
                Поехали!
              • Как накормить мозг программиста… или feed your brain

                Введение


                Из всех наслаждений, отпущенных человеку в жизни,
                самое изысканное — шевелить мозгами.
                (Борис Акунин)


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

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

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