• Разрабы работают медленно и дорого — и люди считают нас лентяями. Просто в разработке всё сложно

      — Люди не из индустрии вечно не понимают программистов: что они там такое сложное делают, если видно только две кнопки? Что за непонятные слова говорят? Почему так много получают?


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


      Читать дальше →
    • Меня перевезли в другую страну и через две недели выставили на мороз — потому что передумали нанимать

        tp


        Почти год назад я переехал жить в Беларусь. Как вы уже догадались, если релокейт проходит без проблем, то такие истории на Хабр не пишутся. Однако, у меня есть что рассказать. Моя история будет не о славном граде Минске, белорусской идентичности, летних протестах и прочих, несомненно, важных вещах. Я расскажу вам об одной белорусской компании, в которой меня угораздило недолго поработать. История эта совершенно феерическая — что-то подобное могли бы снять режиссёры Silicon Valley. Всю свою карьеру я думал что так просто не бывает. Ну даже если и бывает — то я в это точно не вляпаюсь. Однако, я ошибался. Мне не повезло — переезд вышел мне боком и я влетел в целый водоворот событий. Они довольно поучительны и, как мне кажется, мой опыт будет интересен всем, кто планирует переезжать в ближайшем будущем. Меня зовут Павел и вот моя история.

        Читать дальше →
      • Как выбрать красивые цвета для вашей инфографики

        • Translation
        • Tutorial


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

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

        Статья не поможет найти хорошие градиенты или оттенки. Она предназначена для подбора красивых, чётких цветов для различных категорий информации (например, континентов, отраслей промышленности, видов птиц) в линейных, круговых, полосковых диаграммах и так далее.
        Читать дальше →
        • +44
        • 15.8k
        • 5
      • Выведение Action type с помощью Typescript

          Всем привет! Меня зовут Дмитрий Новиков, я javascript-разработчик в Альфа-Банке, и сегодня я расскажу вам про наш опыт выведения Action type при помощи Typescript, с каким проблемами мы столкнулись и как их решили.

          Это расшифровка моего доклада на Alfa JavaScript MeetUp. Код из слайдов презентации можно посмотреть здесь, а запись трансляции митапа — здесь.

          Наши фронтовые приложения работают на связке React+Redux. Redux data flow упрощенно выглядит так:

          Читать дальше →
        • Основы React: всё, что нужно знать для начала работы

          • Translation
          Хотите узнать о том, что такое React, но вам всё никак не выпадает шанс изучить его? Или, может быть, вы уже пробовали освоить React, но не смогли толком понять? А может, вы разобрались с основами, но хотите привести в порядок знания? Эта статья написана специально для тех, кто положительно ответил хотя бы на один из этих вопросов. Сегодня мы создадим простой музыкальный проигрыватель, раскрывая основные концепции React по мере продвижения к цели.

          image

          Разобравшись с этим материалом, вы освоите следующее:

          • Компоненты React.
          • Рендеринг ReactDOM.
          • Классы компонентов и функциональных компоненты.
          • JSX.
          • Состояние (state).
          • Обработка событий.
          • Асинхронный метод setState.
          • Свойства (props).
          • Ссылки (refs).

          Это — практически всё, что нужно знать для того, чтобы создавать и поддерживать React-приложения.
          Читать дальше →
        • Y-метод — действительно простой способ собрать кубик Рубика

          • Tutorial

          Введение


          В статье рассматривается «Y-метод» сборки кубика Рубика — его легко понять и запомнить. Он основан всего на одной последовательности, которая называется «Y-движение». Поняв этот алгоритм, вы навряд ли забудете как собрать кубик самостоятельно.
          Читать дальше →
        • Взгляд юриста: как IT компании расторгнуть контракт с токсичным госзаказчиком

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

          Часть 1: темные стороны ТЗ


          Одно скромное ФГБУ (федеральное гос. богоугодное учреждение) объявило тендер на создание системы дистанционного обучения («СДО»). Сроки 5 мес., цена 4,5 млн. рублей.

          Создание СДО проходило в 4 последовательных этапа: (1) анализ инфрастуктуры Заказчика, (2) создание СДО, (3) внедрение и гарантийное обслуживание.

          Так как ТЗ написано госзаказчиком «широкими мазками», то и родился в нем первый этап – анализ инфраструктуры. Анализ, точнее, анамнез показал, что вычислительных мощностей железа Заказчика явно не хватает, чтобы обеспечить
          «бесперебойное функционировании СДО при одновременном использовании 10 000 пользователей».
          Заказчик подливает масла в огонь новой вводной, которой не было в ТЗ – объемом курсов обучения. Цитируя госзаказчика: «Подумаешь, забыли про объем написать?». Доблестный разработчик снова вглядывается в инфраструктуру, делает перерасчет и ужасается. Такой объем курсов помноженный на кол-во пользователей приведет к коллапсу системы.
          Какие выходы есть?

          Часть 2: адская бюрократия и решение на полмиллиона долларов


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

          Выход второй (не, не Шереметьево и не Домодедово): взять мощности в аренду у ЦОДа. Всего-то 30 млн. рублей аренды в год. Примерно в этом месте госзаказчик понимает, что люто обдел-ся, потому что бюджет на аренду ЦОДов он не заложил, а отступить от ТЗ не может. Ведь ТЗ согласован со старшими товарищами и тогда….
          Читать дальше →
        • Короткая шпаргалка по блокировкам при чтении и изменении данных в зависимости от уровня изоляции транзакции в MSSQL

            Read Uncommitted

            • если в одной транзакции поменять данные — селект этих данных (в другой транзакции или без транзакции) не будут ждать окончания первой транзакции и вернут записанные данные незакомиченных транзакций
            • если в одной транзакции считать данные — апдейты этих данных в другой транзакции не будут ждать окончания первой транзакции
            • шаред локи не используются. Что аналогично установке NOLOCK хинта во все селекты в Read Commited
            • эксклюзивные локировки устанавливаются в процессе выполнения стейтмента и снимаются по окончанию транзакции


            Read Committed + read_committed_snapshot off

            (alter database xxx set read_committed_snapshot off)

            • если в одной транзакции поменять данные — селект этих данных (в другой транзакции или без транзакции) будут ждать окончания первой транзакции. Селект с NOLOCK хинтом вернёт изменённые, но не закомиченные данные.
            • если в одной транзакции считать данные — апдейты этих данных в другой транзакции не будут ждать окончания первой транзакции
            • шаред локировки устанавливаются в процессе работы стейтмента и снимаются по окончанию стейтмента
            • эксклюзивные локировки устанавливаются в процессе выполнения стейтмента и снимаются по окончанию транзакции


            Дальше
          • Визуализация данных при помощи Angular и D3

            • Translation
            • Tutorial
            D3.js — это JavaScript библотека для манипулирования документами на основе входных данных. Angular — фреймворк, который может похвастаться высокой производительностью привязки данных.

            Ниже я рассмотрю один хороший подход по использованию всей этой мощи. От симуляций D3 до SVG-инъекций и использования синтаксиса шаблонизатора.

            image
            Демо: положительные числа до 300 соединенные со своими делителями.
            Читать дальше →
            • +30
            • 16.7k
            • 3
          • Я порчу разрабам жизни своими код ревью и больше так не хочу



              Однажды в моей команде был настолько слабый парень, что его собирались уволить (уволить разработчика!). Каждый мой коммент на ревью к его коду был гвоздем в крышку гроба. Я почти слышал стук молотка, нажимая «submit review». Он был приятным человеком, я даже переживал за него, но это не мешало мне разносить его старания в щепки. Мое право критиковать его работу казалось очевидным и неотъемлемым. Все просто — я сильнее, я прав. Никто же не хочет сказать, что плохой код — это хорошо, а? Его уволили, предварительно лишая стандартной премии в течение нескольких месяцев.

              Я говорил себе: «Но ведь не делать же мне всю работу за него!? Он занимал место более талантливого разработчика. Я все правильно сделал». Но почему-то на душе скребли кошки. И когда мне пришел на ревью очередной pull request, что-то очень сильно поменялось.
              Читать дальше →
            • Создание собственной цветовой палитры

              • Translation
              • Tutorial
              Адаптировано из нашей будущей книги «Рефакторинг UI»

              Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?



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


              Где же была эта чертова картинка?! Я сто раз натыкался на нее, пока она была не нужна!

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

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

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

              Да, внести десяток (а порой – и не один!) тегов для файла тяжелее, чем перетащить его из одной папочки в другую, но это сторицей окупается, когда ты с легкостью находишь сохраненный пять лет назад фотоснимок, о котором в памяти остался лишь тот красивый желтый одуванчик в углу на заднем фоне.

              Какие удобства предлагают нам наиболее известные файловые менеджеры с поддержкой тегов?
              Читать дальше →
            • Используем Apple Pay и карту Тройка в качестве пропуска на работу

                Используем Apple Pay, Android Pay, Mastercard Paypass, Visa PayWave и карту Тройка в качестве пропуска на работу

                TL;DR В статье описывается процесс создания системы контроля доступа (СКУД), в которой в качестве идентификатора могут использоваться карты Тройка, любые бесконтактные банковские карты EMV, а также телефоны с Apple Pay и Android Pay. Управление системой происходит через Telegram-бота.

                Основные задачи системы


                • Избавиться от лишних карт — в качестве идентификатора используется то, что уже есть у пользователя: транспортная карта, телефон или банковская карта. Какой идентификатор использовать — каждый выбирает сам. Система работает со всеми типами идентификаторов одновременно.
                • Избавиться от бюро пропусков и сложных программ управления — нам надоело выдавать и забирать карты у пользователей, держать отдельные компьютеры для управления пропусками, изучать переусложненные программы.
                • Управление через Telegram — заведение и удаления пользователей происходит удаленно и не требует компьютера.
                Читать дальше →
              • Юридические аспекты операций с криптовалютами для резидентов РФ

                  image


                  Являются ли криптовалюты объектом гражданских прав в РФ


                  Да, являются.


                  Список объектов гражданских прав указан в ст. 128 ГК РФ:


                  “К объектам гражданских прав относятся вещи, включая наличные деньги и документарные ценные бумаги, иное имущество, в том числе безналичные денежные средства, бездокументарные ценные бумаги, имущественные права; результаты работ и оказание услуг; охраняемые результаты интеллектуальной деятельности и приравненные к ним средства индивидуализации (интеллектуальная собственность); нематериальные блага”

                  Как видно из текста закона, этот список не исключительный, и туда входят любые имущественные права, результаты работ и оказание услуг, и даже нематериальные блага (пример: "вы мне споете, а я вам станцую" — это обмен нематериальными благами)


                  Часто встречаемые высказывания о том, что де "нет определения криптовалюты в законодательстве РФ и поэтому операции с ними незаконны" — неграмотны.

                  Читать дальше →
                • Взаимодействие веб-страницы с Ethereum

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

                  В конце концов, есть официальная документация и stackoverflow.

                  В то же время, долго разбираться в документации не хочется, и многие разработчики в последнее время хотят побыстрее что-то пощупать руками и написать что-нибудь под эфириум, а так как вопросов возникает масса и источники разрознены, я решил собрать в одном месте простой пошаговый мануал с картинками по созданию своего первого dapp (от decentralized app) — децентрализованного приложения. Он будет представлять из себя связку смарт-контракта с веб-интерфейсом. То есть чтобы с помощью веба можно было доставать информацию из блокчейна и пихать ее туда. Постараюсь быть кратким, шаги буду объяснять по ходу дела.
                  Читать дальше →
                  • +21
                  • 14.6k
                  • 1
                • Если вы планируете или уже получаете оплату в валюте, вам в любом случае предстоит валютный контроль. Мы не знаем, какая часть предпринимателей отказывается от работы с иностранными клиентами или работает по-черному, лишь бы не связываться с валютным контролем. Но кажется, что его не любят многие. Мы подготовили инструкцию, которая поможет вам разобраться с валютным контролем. Мы не будем рассказывать обо всех трудностях - проговорим только те, которые чаще встречаются в сфере IT.
                  Подробная инструкция – под катом.
                • Анализ работы MS SQL Server, для тех кто видит его впервые (часть 2)

                    Часть 1

                    Продолжаем анализировать что происходит на нашем MS SQL сервере. В этой части посмотрим как получить информацию о работе пользователей: кто и что делает, сколько ресурсов на это расходуется.

                    Думаю, вторая часть будет интересна не только админам БД, но и разработчикам (возможно даже разработчикам больше), которым необходимо разбираться, что не так с запросами на рабочем сервере, которые до этого отлично работали в тестовом.

                    Задачи анализа действий пользователей условно поделим на группы и рассмотрим каждую отдельно:
                    Читать дальше →
                    • +16
                    • 57.6k
                    • 5
                  • Анализ работы MS SQL Server, для тех кто видит его впервые

                    Опубликовано продолжение: часть 2

                    Недавно столкнулся с проблемой — занедужил SVN на ubuntu server. Сам я программирую под windows и с linux “на Вы”… Погуглил по ошибке — безрезультатно. Ошибка оказалась самая типовая (сервер неожиданно закрыл соединение) и ни о чем конкретном не говорящая. Следовательно, надо погружаться глубже и анализировать логи/настройки/права/и т.п., а с этим, как раз, я “на Вы”.

                    В результате, конечно, разобрался и нашел всё что нужно, но время потрачено много. В очередной раз думая, как глобально (да-да, во всём мире или хотя бы на ⅙ части суши) уменьшить бесполезно потраченные часы — решил написать статью, которая поможет людям быстро сориентироваться в незнакомом программном обеспечении.

                    Писать я буду не про линукс — проблему хоть и решил, но профессионалом вряд ли стал. Напишу про более знакомый мне MS SQL. Благо, уже приходилось много раз отвечать на вопросы и список типовых уже готов.

                    Для кого пишу

                    Если вы админ в Сбере (или в Яндексе или <другая топ-100 компания>), вы можете сохранить статью в избранное. Да, пригодится! Когда к вам, в очередной раз, с одними и теми же вопросами придут новички — Вы дадите им ссылку на нее. Это сэкономит Ваше время.

                    Если без шуток, эта СУБД часто используется в небольших компаниях. Часто совместно с 1С либо другим ПО. Отдельного БД-админа таким компаниям держать затратно — надо будет выкручиваться обычному ИТ-шнику. Для таких и пишу.
                    Читать дальше →
                  • Как писать нормальные тексты на английском, не будучи носителем языка

                      Ксения Каланова, выпускница нашего курса по копирайтингу и маркетолог в MERA, написала колонку для блога Нетологии о том, как заставить текст звучать «по-английски», даже когда до уровня Advanced еще далеко.

                      Вся моя жизнь связана с английским языком: школьные олимпиады, подготовка к вступительным экзаменам в вуз, пять лет на переводческом факультете, лето в США и путешествия по миру. В студенческие годы я работала письменным переводчиком, а сразу после выпуска — устным.

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

                      Если бы не опыт работы переводчиком, меня такие просьбы поставили бы в ступор. Ведь мой текст увидят иностранцы — клиенты компании, руководители!



                      В этой статье я поделюсь секретами, как заставить текст звучать «по-английски», если вы не носитель языка. Для этого расскажу о 5 основных ошибках, которые мешают написать нормальный англоязычный текст.
                      Читать дальше →
                    • Скрытые послания в именах свойств JavaScript

                      • Translation
                      Для тестирования код нужно выделить и скопировать прямо из твита. — прим. пер.

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

                      Вот тот сниппет:



                      Что бы вы ожидали от него?

                      Здесь используется цикл for in, который проходит через перечислимые свойства объекта. Поскольку указано только свойство A, можно предположить, что будет показано сообщение с буквой А. Ну… я ошибался. :D
                      Читать дальше →