• Ваш C# уже «функциональный», просто позвольте ему это

    Привет, Хабр! Представляю вашему вниманию перевод оригинальной статьи «Your C# is already functional, but only if you let it» автора Igal Tabachnik.

    Несколько дней назад я написал в Твиттере фрагмент кода C#, реализующий FizzBuzz, используя некоторые из новых «фичи» в C# 8.0 . Твит “стал вирусным”, несколько человек восхищались его лаконичностью и функциональностью, в то время как другие спрашивали меня, почему я не написал его на F#?

    Прошло уже более 4 лет с тех пор, как я в последний раз писал на C#, и то, что я обычно использую функциональное программирование, явно повлияло на то, как я пишу код сегодня. Фрагмент, который я написал, кажется очень аккуратным и естественным, однако некоторые люди выразили опасения, что он не похож на код на C#.
    «Он выглядит слишком функциональным.» – писали мне они.
    В зависимости от того, кого вы спрашиваете, «функциональное программирование» означает разные вещи для разных людей. Но вместо того, чтобы обсуждать семантику, я хотел бы предложить объяснение того, почему эта реализация FizzBuzz кажется функциональной.
    Читать дальше →
  • Цвет в дизайне

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



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

      Читать дальше →
    • 50+ лучших дополнений к Bootstrap



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

        Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
        Читать дальше →
      • Верстка email рассылок от А до Я для чайников

        Уже 3 с лишним года занимаюсь дизайном и версткой почтовых рассылок, которые ориентированы на англоязычных пользователей. За время работы перелопатили огромную кучу информации, перепробовали много вариантов верстки, набили достаточное количество шишек. Были найдены и исправлены типичные баги, которые в той или иной мере повторялись во всех почтовых клиентах. Также нашлись проблемы с некоторыми CSS свойствами — различные почтовые клиенты интерпретировали их по разному. Каждое письмо тестировалось на самых популярных почтовых клиентах: Gmail, Outlook, Yahoo, Android, iOS, MozillaThunderbird, Microsoft Outlook, The Bat. Рассылки ходят на сотни миллионов пользователей и приносят очень хорошие результаты. Итак, приступим к изучению.
        Читать дальше →
      • Интервью с астрофизиком Нилом Тайсоном

        • Translation


        Увлекательное интервью с замечательным человеком. Нил — астрофизик и популяризатор науки, при этом красиво излагает свои мысли и обладает отличным чувством юмора. Я к переводу имел некоторое отношение, внутри напишу некоторые подробности и в комментариях отвечу на вопросы.

        Читать дальше →
      • Великая речь великого человека

          Это был его первый звуковой фильм. Его личный протест, никто не соглашался дать ему денег на картину, разоблачающую Гитлера как сумасшедшего тирана. Гитлер по мнению журнала «The Times», был Человеком года и великим политиком.
          Тогда Чаплин снял фильм «Великий Диктатор» на свои личные средства.
          Фильм, послужившей одной из причин его изгнаия из США.
          Фильм, который посмотрел Гитлер и объявил Чаплина своим личным врагом.

          И речь, которая остается актуальной и по сей день, не смотря на то, что уже прошло больше 70-ти лет.
          3.809.000 — просмотров у оригинального ролика, который уже перевели на 22 различных языка.
          Вот русские субтитры к этому ролику:


          Почему этот ролик на хабре? Это первое, что пришло к вам в голову после просмотра?
          Upd. Огромное спасибо всем, кто гадит мне в карму и угрожает в личке.
          Upd2. Это первый случай на хабре, пост не по it? Нет.
          *пруф1 freetonik Doug 'QualiaSoup' Непредубежденность
          *пруф2 муравьи зомби
          Читать дальше →
        • Определение процента схожести нарисованного 2d-полигона с заданным шаблоном

          Приветствую, друзья.

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



          Я попробую рассказать вам об алгоритме определения нарисованных 2d фигур. Свою версию движка я написал на языке ActionScript 3.0. При желании(и наличии базовых знаний по геометрии) его можно реализовать на любом другом.

          Итак, нам необходимо по нарисованной руками фигуре определить процент схожести с имеющейся:


          Читать дальше →
        • Основы профессиональной верстки электронных писем

          Верстка электронных писем
          Ни для кого не секрет, что e-mail маркетинг только начинает набирать обороты во всем мире. А для России – это ещё и вовсе молодая ниша на рынке. И профессиональная верстка электронных писем здесь один из составляющих факторов успеха. Под профессиональной версткой понимается не только визуально красиво и надежно сверстанный макет, но и то, как выглядит usability открытки с маркетинговой точки зрения, как оптимизирована графика вместе с типографией для спам-фильтров и многое другое. Верстка электронных писем довольно обширная тема, в одной статье все не уместить, поэтому в данном посте постараюсь описать только базовые элементы и приемы, надежно проверенные за годы практики и работающие в top самых используемых почтовых клиентах мира: iPhone 4S/5; Outlook 07/10/13; iPad; Apple Mail; Android 2.3/4.0; Yahoo; Gmail. Если рассматривать только российский рынок, то нельзя не упомянуть о Mail.ru и Яндекс.Почта.

          Что нужно знать в начале?


          Сразу хочу выделить несколько из основных и важных моментов:

          1. В нашем арсенале имеется очень урезанный набор css-свойств, которые поддерживаются всеми почтовиками. При этом, стили нужно прописывать inline, а в head выносить только вендорные свойства и те блоки объявлений, которые не несут нагрузки на основную стилизацию письма. Ну и использовать link in head — крайне нежелательно.
          2. Не используйте background-image в основных визуальных элементах дизайна и не помещайте в изображения важную текстовую информацию. Вообще нужно всегда учитывать такой вариант, что письмо будет просматриваться получателем без единого изображения.


          Каркас


          Пожалуй каждый, кто хоть раз верстал письмо под рассылку, знает, что каркас лучше строить с помощью таблиц. На самом деле простая блочная модель div поддерживается на данный момент во всех перечисленных выше почтовиках, за исключением MS Outlook начиная с 2007 версии. Это связано с тем, что в качестве движка последние версии Outlook используют Microsoft Word, который в свою очередь много не знает о блочных css-свойствах. Игнорировать при верстке данный почтовый клиент я не рекомендую, поэтому в качестве фундамента все же используйте table. Да и добившись хорошего результата для Outlook, можно быть уверенным, что в большинстве почтовиках, письмо будет смотреться тоже хорошо, а скорее и лучше.

          В качестве примера рассмотрим наиболее важные элементы из следующего, не сложного шаблона:
          Шаблон письма для рассылки
          Читать дальше →
        • Дайджест интересных новостей и материалов из мира айти за последнюю неделю №53 (13 — 19 апреля 2013)

            Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.


            Читать дальше →
            • +54
            • 32.6k
            • 6
          • Подборка инструментов для эффективной frontend разработки

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

              Form Builder

              image

              Этот прекрасный генератор форм поможет вам в создании красивейших CSS логин-боксов и прочих input вещей, при минимальных временных затратах. Помимо форм на сайте этого проекта можно создавать и другие не менее красивые CSS элементы, в том числе кнопки и ленты.
              еще 24 ссылки
              • +190
              • 99.2k
              • 46
            • Кастомные фильтры в CSS

              • Translation

              Приступая к кастомным фильтрам на CSS (Custom Cascading Style Sheets Filters)



              Вступление


              Кастомные CSS фильтры (далее CCSSF)(ранее известные как CSS шейдеры) — это новая браузерная фича, накладывающая созданные руками визуальные эффекты на элементы HTML документа.
              Кастомные фильтры являются частью Filter Effects 1.0 specification. Они дополняют другую часть этой спецификации, определяющую некоторые общие CSS фильтры, уже встроенные в браузеры (blur, sepia, contrast, grayscale).
              Читать дальше →
            • Линейная алгебра для разработчиков игр

              • Translation
              • Tutorial
              Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
              Читать дальше →
            • QtWebKit-специфика при разработке мобильных HTML5-приложений

              • Tutorial
              Этот пост участвует в конкурсе „Умные телефоны за умные посты

              Введение


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

              Такими проблемами к примеру, является получение доступа к системной информации, управление и изменение чего-либо в системе. Доступ из HTML5 к контактам, календарю, органайзеру на мобильном устройстве и другие. Опять же, если наше приложение производит какие-то серьёзные вычисления, то их можно перенести с медленного JS на быстрый C++. В данной статье хочу рассмотреть несколько техник взаимодействия Web-приложения и нативного кода на примере модуля QtWebKit, которые могут оказаться полезными.
              Читать дальше →
            • Git Wizardry

                1 Введение


                В своей прошлой заметке я постарался осветить в общих чертах стиль работы с
                распределенной системой контроля версий git и указать на отличия по сравнению с
                классическими централизованными СКВ. Целью было прежде всего обобщение опыта
                работы с системой без упоминания тонкостей синтаксиса отдельных команд.

                Данный же топик задумывался как непосредственное введение в работу с git, нечто
                среднее между tutorial и обобщенной справкой, до которого все же рекомендуется
                прочитать упомянутое выше введение. Сознательно избегаются технические
                подробности работы git, употребляются только общие для СКВ термины и
                ограничивается список упоминаемых команд.

                Читать дальше →
              • Kango — фреймворк для создания кроссбраузерных расширений

                  Вступление

                  Kango позволяет создавать расширения для популярных браузеров используя только JavaScript, причем код един для всех браузеров. На данный момент поддерживается Chrome, Firefox, Internet Explorer (в публичном доступе только версия с поддержкой Chrome и Firefox) и ведется работа над поддержкой Opera и Safari. Ниже будет рассмотрено как можно быстро создать простой кроссбраузерный Gmail Checker

                  Что должно получиться в итоге:



                  Читать дальше →
                • Обзор C# библиотек для работы с PDF

                    topic image
                    На написание данной статьи меня подтолкнул топик HTML в PDF, правда по причине того, что он посвящен языку php, лично мне он был мало полезен, т.к. весь опыт работы с php у меня сводился в переводе нескольких скриптов на C#, поэтому я решил сделать небольшой обзор того, что доступно для работы с pdf по средствам языка C#.

                    Ко мне в список попало 7 библиотек, о которых я скажу несколько слов, а для самой популярной (судя по ответам на stackoverflow), я напишу, как с помощью неё сделать простейший документ. Сразу скажу, что это iTextSharp и работа с ней будет описана в конце статьи.
                    Читать дальше →
                  • Использование Razor за пределами ASP.NET

                      Итак, вчера Microsoft выпустила ASP.NET MVC3 RTM, который включает в себя новый движок представлений Razor. Как вы наверняка уже знаете, Razor не содержит каких-то компонентов, специфичных для web, а значит, его можно использовать и в других приложениях. Ну, а если вы этого еще не знаете – то самое время узнать!

                      В этом посте я покажу, как использовать Razor в качестве движка шаблонов для ваших нужд. Источником для него послужил блог-пост Andrew Nurse «Hosting Razor outside of ASP.Net», но это не прямой перевод.

                      Читать дальше →
                    • Рецепт быстрого приготовления расширений под популярные браузеры

                        0147 (1)

                        Возникла задача написание простенького расширения под все (по возможности) популярные браузеры. Деятельность расширения заключается во внедрении javascript`а в тело документа.
                        Читать дальше →