• F# меня испортил, или почему я больше не хочу писать на C#

      Раньше я очень любил C#


      Это был мой основной язык программирования, и каждый раз, когда я сравнивал его с другими, я радовался тому, что в свое время случайно выбрал именно его. Python и Javascript сразу проигрывают динамической типизацией (если к джаваскрипту понятие типизации вообще имеет смысл применять), Java уступает дженериками, отстутствием ивентов, value-типов, вытекающей из этого карусели с разделением примитивов и объектов на два лагеря и зеркальными классами-обертками вроде Integer, отсутствием пропертей и так далее. Одним словом — C# клевый.


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


      А потом я из любопытства попробовал F#.

      Читать дальше →
    • [в закладки] PDF-версия руководства по Node.js и новое руководство по JavaScript

        Недавно мы опубликовали серию материалов, представляющую собой перевод руководства по Node.js. В первой публикации мы интересовались мнением аудитории о целесообразности перевода этого руководства и говорили, что планируется подготовить его PDF-версию.

        image


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

        Скачать PDF-версию [ 1.8 Мб ]



        Сегодня мы хотим представить вашему вниманию новое руководство того же автора, посвящённое JavaScript.

        Вот краткий перечень вопросов, которые оно раскрывает:
        • Общая характеристика языка и его стандартизация
        • Особенности стандартов ES6, ES7, ES8, ES9
        • Оформление кода, руководства по стилю
        • Лексическая структура языка
        • Переменные
        • Типы данных
        • Выражения
        • Логические выражения
        • Прототипное наследование
        • Классы
        • Исключения
        • Функции и замыкания
        • Массивы
        • Циклы
        • События
        • Асинхронное программирование
        • Таймеры
        • Строгий режим
        • Математические вычисления
        • Модули

        Мы планируем это руководство перевести, но, прежде чем приняться за работу, хотели бы предложить вам поучаствовать в небольшом опросе
        Читать дальше →
      • Работа с абстрактными синтаксическими деревьями JavaScript 

          Зачем парсить свой код? Например, для того, чтобы найти забытый console.log перед коммитом. А что делать, если вам надо изменить сигнатуру функции в сотнях вхождений в коде? Справятся ли тут регулярные выражения? В этой статье будет показано, какие возможности перед разработчиком открывают абстрактные синтаксические деревья.



          Под катом — видео и текстовая расшифровка доклада Кирилла Черкашина (z6Dabrata) с конференции HolyJS 2018 Piter.
          Читать дальше →
          • +30
          • 11,5k
          • 5
        • Правительство запретило регистрацию в мессенджерах по чужим номерам

            В России приняли новые правила идентификации пользователей мессенджеров, исключающие анонимность. Власти надеются, что мессенджером сможет пользоваться только тот человек, на которого зарегистрирован конкретный номер мобильного телефона. Правительство подготовило проект постановления о правилах идентификации (upd: сегодня проект подписал премьер-министр Дмитрий Медведев, постановление вступает в силу 5 мая 2019 года).

            Каким образом организована идентификация и проверка? Основная работа возложена на операторов сотовой связи, которые станут вести БД пользователей, прошедших регистрацию в том или ином мессенджере. Представители МТС уже отчитались, что технических проблем здесь нет.
            Читать дальше →
          • Несколько историй про подпольных программистов

            Продажник-программист


            Попал я однажды в организацию, занимающуюся организацией оффлайновых конференций. Им нужен был человек для поддержки сайта. Разговаривал со мной мужчина в пиджаке и при галстуке, представившийся начальником отдела продаж. От общих тем быстро перешли к техническим. Заглянули в код. Свой ORM, самописный шаблонизатор, немного устаревшие приёмы, но в принципе всё стройно, логично и однообразно. Я спросил, что стало с предыдущим программистом, на что собеседник рассказал мне историю.


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


            image

            Читать дальше →
          • Как сотрудники подрядчика NASA используют очки дополненной реальности Microsoft AR HoloLens для сборки узлов Orion

            • Перевод


            Сотрудники подрядчика NASA используют очки-гарнитуру дополненной реальности Microsoft AR HoloLens для быстрой и правильной сборки элементов космического аппарата Orion
            Читать дальше →
          • Бэкдоры в микрокоде ассемблерных инструкций процессоров x86

              Софту мы не доверяем уже давно, и поэтому осуществляем его аудит, проводим обратную инженерию, прогоняем в пошаговом режиме, запускаем в песочнице. Что же насчёт процессора, на котором выполняется наш софт? – Мы слепо и беззаветно доверяем этому маленькому кусочку кремния. Однако современное железо имеет те же самые проблемы, что и софт: секретную недокументированную функциональность, ошибки, уязвимости, малварь, трояны, руткиты, бэкдоры.



              ISA (Instruction Set Architecture) x86 – одна из самых долгих непрерывно изменяющихся «архитектур набора команд» в истории. Начиная с дизайна 8086, разработанного в 1976 году, ISA претерпевает постоянные изменения и обновления; сохраняя при этом обратную совместимость и поддержку исходной спецификации. За 40 лет своего взросления, архитектура ISA обросла и продолжает обрастать множеством новых режимов и наборов инструкций, каждый из которых добавляет к предшествующему дизайну, и без того перегруженному, новый слой. Из-за политики полной обратной совместимости, в современных процессорах x86 присутствуют даже те инструкции и режимы, которые на сегодняшний день уже преданы полному забвению. В результате мы имеем архитектуру процессора, которая представляет собой сложно переплетающийся лабиринт новых и антикварных технологий. Такая чрезвычайно сложная среда – порождает множество проблем с кибербезопасностью процессора. Поэтому процессоры x86 не могут претендовать на роль доверенного корня критической киберинфраструктуры.

              Читать дальше →
            • Сколько зарабатывает Хабр + инструкция как узнать сколько зарабатывают другие компании

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

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

                image
                Читать дальше →
              • Ассортимент — классическая задача оптимизации



                  Ассортимент очень влияет на выручку магазина, но управляется не самим магазином. Судя по последним исследованиям, ассортиментом в России в целом мало кто управляет эффективно. Просто если поддерживать нужные товары в нужном количестве в нужных местах, можно дико поднять эффективность продаж многих магазинов. Дико — это, например, на треть.

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

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

                  • Перевод


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

                  Адам Голаб, эксперт по React и JS, составил пошаговый учебный план, который поможет вам стать разработчиком с нуля либо укажет направление для дальнейшего повышения навыков в профессии.

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

                  • Перевод

                  Когда работникам удаётся автоматизировать свои обязанности, кто должен пожинать плоды?




                  В 2016 году на Reddit появилось анонимное признание: «Уже где-то лет шесть я ничего не делаю на работе». Вроде бы ничего особенного, если дело касается офисной работы. Но этот программист, скрывавшийся под ником FiletOFish1066, сказал, что он работал на известную технокомпанию, и он реально совсем ничего не делал. Он написал, что после того, как восемь месяцев проработал в отделе обеспечения качества, сумел полностью автоматизировать всю свою работу. «Я не шучу. 40 часов в неделю я хожу на работу, играю в League of Legends, читаю Reddit, занимаюсь, чем хочу. За последние шесть лет я проработал часов 50». Когда его боссы поняли, что за половину десятилетия он проработал меньше, чем большая часть программистов Кремниевой долины за неделю, они его уволили.

                  Эта история быстро распространилась по технологическим уголкам веба, из-за чего её герою в итоге пришлось удалить и сам пост, и даже учётную запись.
                  Читать дальше →
                • ref locals и ref returns в C#: подводные камни производительности

                  • Перевод
                  В языке C# с самого начала поддерживалась передача аргументов по значению или по ссылке. Но до версии 7 компилятор C# поддерживал только один способ возврата значения из метода (или свойства) — возврат по значению. В C# 7 ситуация изменилась с введением двух новых возможностей: ref returns и ref locals. Подробнее о них и об их производительности — под катом.

                  Читать дальше →
                • Текстовый редактор — это вам не высшая математика, тут думать надо

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



                    В основе статьи — доклад Алексея Кудрявцева с Joker 2017. Алексей уже лет 10 пишет Intellij IDEA в JetBrains. Под катом вы найдете видео и текстовую расшифровку доклада.
                    Читать дальше →
                  • Эволюция рендеринга пробок в MAPS.ME


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

                      Читать дальше →
                    • Релиз первой беты кросс-платформенного XAML UI-тулкита Avalonia

                        Состоялся релиз первой бета-версии Авалонии.


                        Avalonia — кроссплатформенный .NET UI-тулкит, вдохновлённый технологиями WPF и распространяемый под лицензией MIT. Он полностью поддерживает .NET Core 2.0, XAML, дата-биндинги, lookless-контролы и многое другое. Avalonia позволяет писать на C# приложения под Windows, Linux и Mac OS X. Возможность запуска на iOS и Android находится в экспериментальном состоянии.



                        Данная версия стабильна и имеет полное право называться бетой: тулкит не разваливается в руках и имеет приличный базовый набор контролов (см. видео). На нём создано два достаточно больших приложения с открытым исходным кодом: AvalonStudio — кроссплатформенная IDE для разработки на C# и C++ и Core2D — редактор 2D-схем и диаграмм.

                        Читать дальше →
                      • Смерть микросервисного безумия в 2018 году

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



                        В последние годы микросервисы стали очень популярной темой. «Микросервисное безумие» выглядит примерно так:

                        «Netflix хороши в DevOps. Netflix делают микросервисы. Таким образом, если я делаю микросервисы, я хорош в DevOps».
                        Читать дальше →
                      • Плюсы и минусы разработки на Xamarin

                          Принимаясь за разработку приложений под iOS и Android, большинство в первую очередь рассматривает в качестве инструментов разработки признанные нативные стеки технологий, такие как Objective-C, Swift и Java. Однако существует множество других способов создания эффективных и простых в использовании мобильных приложений. Платформа для разработки приложений Xamarin — один из них. В этой статье мы проведем углублённый обзор платформы Xamarin в сравнении с нативными и кроссплатформенными решениями для мобильной разработки на рынке.

                          Что такое Xamarin?


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

                          Платформа Xamarin была создана разработчиками открытой платформы Mono, находившейся в свободной реализации .NET, которая впервые была представлена в 2001 году. Тем не менее в отличие от своего предшественника, Xamarin существовал исключительно как коммерческий проект до тех пор, пока компания не была приобретена Microsoft.

                          Xamarin — это особый инструмент, так как для создания приложений для всех мобильных платформ он использует единый язык C#.
                          Читать дальше →
                        • Моя компания не взлетела, 6 уроков ценою в 4 года жизни и $150 000

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

                            О том, как мы работали по 10 часов в сутки без выходных, получили инвестиции, прошли во ФРИИ, набрали более ста тысяч пользователей в США, нас хотел купить Sports Illustrated, но в итоге мы закрыли компанию.

                            Читать дальше →
                          • 10 приемов по созданию красивых бизнес презентаций из 2017 года

                            Встречали ужасные PowerPoint презентации с разноцветными слайдами и безвкусными картинками? Тогда вы точно должны прочитать эту статью!

                            ВАЖНО: здесь я пишу только про бизнес презентации для чтения — не для публичных выступлений. Это важно понять, так как техники разные в этих двух форматах. Под форматом «бизнес презентаций для чтения» я подразумеваю такие документы как коммерческие предложения, спонсорские пакеты, инвестиционные презентации проектов, презентации продуктов, которые в большинстве случаев отправляются исключительно по электронной почте.

                            В этой статье я расскажу о наиболее распространенных ошибках в дизайне и поделюсь своими 10 приемами по созданию поистине крутых презентаций. Почти все примеры, которые я привожу ниже, — это выдержки из реальных кейсов, которые мы реализовали.
                            Здесь важно отметить, что 10 приемов актуальны на 2017 год (и ближайшие месяцы 2018).

                            Начнем с самого важного при создании презентации:
                            Читать дальше →
                          • Не простая координатная система, а золотая

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

                            image

                            Распределение углов в ромбах в одном 1:4, 36°:144°, в другом 2:3, 72°:108°. Углы в ромбах кратны одной десятой полного разворота, 36°.

                            Определим координаты углов правильного десятиугольника.
                            Читать дальше →