• Аддиктивные синдромы IT

      Здравствуйте, меня зовут Алексей. Я работаю в IT-сфере. Много времени провожу в социальных сетях и мессенджерах по работе. И у меня развились различные аддиктивные сценарии поведения. Я отвлекался от работы и заглядывал в Facebook, чтобы посмотреть, сколько «лайков» накапало на какую-то резонансную публикацию. И вместо того, чтобы дальше работать с новыми текстами, я подвисал на состоянии старого. Я несколько раз за час практически неосознанно брал в руки смартфон — и в какой-то степени меня это успокаивало. Давало контроль над жизнью.


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


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



      — Па-ап, мы все на одну фоточку помещаемся? — Не бойся, у меня на смарте широкоугольник.

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

      • Translation
      • Tutorial
      Передать нужный код для каждого браузера – непростая задача.

      В этой статье рассмотрим несколько вариантов, как эту задачу можно решить.



      Передача современного кода современным браузером может очень сильно повысить производительность. Ваши JavaScript-пакеты смогут содержать более компактный или оптимизированный современный синтаксис и поддерживать старые браузеры.

      Среди инструментов для разработчиков доминирует паттерн module/nomodule декларативной загрузки современного или legacy-кода, который предоставляет браузерам источники и позволяет решать, какие из них использовать:

      <script type="module" src="/modern.js"></script>  
      <script nomodule src="/legacy.js"></script> 

      К сожалению, не всё так просто. Показанный выше подход на основе HTML инициирует перезагрузку скриптов в Edge и Safari.
      Читать дальше →
      • +16
      • 5.9k
      • 5
    • Как посадить Space Shuttle из космоса

        В общем, небольшая оговорка: выступление будет всего 20 минут.

        Таким образом, у меня есть только время, чтобы дать вам приблизительное понятие о том, как устроена посадка.



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



        Теперь они обитают в музеях и никак не смогут взлететь. Тем не менее, я, как и все вы, последние пять лет нахожусь в состоянии отрицания этого факта. Особенно ты, Стив Фельдман. Так что, в моем мире шаттл до сих пор летает и мы просто будем использовать настоящее время для этого разговора.
        Читать дальше →
      • Как CSS Grid меняет представление о структурировании контента

        • Translation
        Каждый, кто хотя бы немного занимался созданием веб-сайтов, знает, что теги <div> — являются важным строительным блоком для контроля над макетом.

        HTML5 представил новые семантические элементы, чтобы помочь в этом. И хотя они являются фантастическим дополнением к языку, они немного похожи на украшение к нашему супу из <div> элементов.



        С приходом CSS Grid, нам больше не нужно полагаться на элементы <div> для создания структуры страницы или даже более сложного компонента. Структура буквально определяется родительским элементом, а не тем, как расположено содержимое внутри него.

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

        Читать дальше →
      • Локализация пуш-сообщений в мобильных приложениях

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

        В своем сообщении я расскажу, как можно сделать локализацию пуш-сообщений в топиках на стороне бэкенда мобильного приложения.
        Читать дальше →
      • Переупаковка пакетов в Gradle

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


          configurations.all {
              resolutionStrategy {
                  force "org.ow2.asm:asm:7.2"
              }
          }

          К сожалению, это не всегда помогает решить проблему конфликта версий. Например, есть известная проблема, что некоторые устройства htc в прошивке уже имеют библиотеку gson и если ваша версия gson-а отличается от встроенной, то могут возникнуть проблемы, так как ClassLoader загрузит в память только один класс и в данном случае это будет системный.


          Такая проблема также может возникнуть и при разработке библиотек. Если вы подключите в свой проект 2 библиотеки, использующие одну и ту же стороннюю библиотеку разных версий, например 1 и 2, то Gradle разрулит и возьмет самую новую версию, вторую. Но если в этой сторонней библиотеке нет обратной совместимости и вторая версия не может быть просто так использована вместо первой, то будут проблемы, которые наверняка будет очень сложно отследить по стектрейсу. Библиотека, ожидающая первую версию, получит классы второй и просто упадет.


          Я столкнулся с конфликтом версий при написании градл плагина, в нем используется библиотека asm, которая и конфликтовала. После написания плагина, я проверил его работоспособность на тестовом проекте: все отлично, проверил на pet project-е, тоже все хорошо, но когда подключил к реальному рабочему проекту с кучей сторонних зависимостей, столкнулся с проблемой.



          Решение проблемы под катом.

          Читать дальше →
          • +10
          • 1.7k
          • 6
        • Пример расчета пенсии IT-шника из Москвы

            Сегодня мне вдруг захотелось узнать, какую пенсию я получал бы, если бы вышел на пенсию в этом 2019 году. До пенсии мне ещё лет 25-30, но всё же интересно, сколько пенсии я накопил за 15 лет работы в IT (из которых 12 лет работаю в Москве).

            image
            Читать дальше →
          • Часть 5. Карьера программиста. Middle. Кризис. Первый релиз

              Продолжение рассказа «Карьера программиста».

              2008-ой год. Глобальный экономический кризис. Казалось бы, при чем тут фрилансер-одиночка из глубокой провинции? Оказалось, что даже мелкий бизнес и стартапы на Западе, также обнищали. А это были мои непосредственные и потенциальные клиенты. Ко всему прочему, я наконец защитил диплом специалиста в университете и других занятий, кроме как фрилансить — у меня не оставалось. До кучи, я расстался со своим первым клиентом, который приносил постоянный доход. И следом за ним, рухнули и мои отношения с потенциально будущей женой. Все как в том анекдоте.
              Наступила “черная полоса”, в тот момент, когда должна была наступить пора возможностей и роста. Пора, когда амбициозные молодые люди рвутся строить карьеру и впахивают за пятерых, молниеносно получая повышение. У меня было все наоборот.

              Один на один, с фриланс-биржей oDesk и редкими заказами, протекала моя жизнь. Я по-прежнему жил с родителями, хотя мог позволить себе жить отдельно. Но жить одному мне не понравилось. Поэтому мамкины борщи и папкины сто грамм, скрашивали серые будни.
              Когда-никогда я встречался со старыми друзьями из универа, поговорить за жизнь, да поделиться новостями. Компания СКС из третьей части этого рассказа сделала pivot и перекочевала во фриланс. Теперь Илон и Ален, также как и я, просиживали штаны дома у компа, добывая деньги для существования. Вот так мы и жили: без целей, перспектив и возможностей. Внутри меня все бунтовало, я категорически был несогласен с происходящим. Это был system error в моей голове.

              Первой попыткой что-то изменить, был масштабный по замыслу веб-сервис.
              Читать дальше →
              • +33
              • 18.6k
              • 5
            • Всё, что вам нужно знать про CSS Margin

              • Translation
              Одним из первых, что многие из нас усвоили, когда изучали CSS, были особенности разных составляющих блока в CSS, описываемые как «Блочная Модель CSS». Один из элементов в блочной модели — margin (внешний отступ), прозрачная область вокруг блока, которая отталкивает другие элементы от содержимого данного блока. Свойства margin-top, margin-right, margin-bottom и margin-left были описаны еще в CSS1, вместе с сокращенным свойством margin для одновременной установки в всех четырёх свойств.

              Margin кажется довольно несложным, однако, в этой статье мы рассмотрим некоторые моменты, на которых люди спотыкаются при его использовании. В частности, как margins взаимодействуют друг с другом и как на самом деле работает схлопывание внешних отступов.
              Читать дальше →
              • +20
              • 17k
              • 2
            • Суперинфекции, антибиотики и модели зомби-апокалипсиса



                Бактерии, а не рак, террористы и катастрофы унесли жизни огромного количества людей. Одна только Yersinia pestis (чумная палочка) привела к смерти 150 млн человек. Прием антибиотиков является основным методом борьбы с бактериальными инфекциями. Но что если лекарства перестанут действовать?

                Это не риторический вопрос и не вводная для моделирования гипотезы, а реальная ситуация в обозримом будущем на фоне роста бактериальной устойчивости. У Всемирной организации здравоохранения (ВОЗ) и национальных служб есть общий план действий, но детального алгоритма предотвращения бактериальной пандемии нет ни у одного государства.

                Расскажем о причинах надвигающейся катастрофы, а также о попытках найти выход из медицинского тупика при помощи смежных дисциплин — геномики, математики и вирусологии.
                Читать дальше →
              • Типичная ошибка сетки (Bootstrap Grid), или почему дизайнер и верстальщик не понимают друг друга

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

                Просмотрев существенное число сайтов, пришел к выводу, что в среду дизайнеров и верстальщиков закралась одна банальная ошибка.
                Читать дальше →
                • +8
                • 14.8k
                • 5
              • Полное руководство по Flexbox

                • Translation
                Полное руководство по CSS flexbox. Это полное руководство объясняет все о flexbox, сосредотачиваясь на всех возможных свойствах для родительского элемента (контейнер flex) и дочерних элементов (элементы flex). Оно также включает в себя историю, демонстрации, шаблоны и таблицу поддержки браузеров.
                Читать дальше →
                • +11
                • 10.9k
                • 5
              • Sass MediaScreen — Определяем девайсы на CSS

                Я считаю, что в последнее время разница размера экранов между разными группами устройств всё больше размывается. Не смотря на это я попытался написать инструмент для определения, как групп устройств (мобильники, планшеты, лаптопы, десктопы), так и конкретных девайсов (iPhone 5, iPhone X, iPad Pro 12 и т.д.). Получилась, на мой взгляд, довольно удобная пачка SASS-миксинов. И что немаловажно, инструмент прост в использовании, а также позволяет расширять список устройств своим без правки исходников.

                Читать дальше →
                • +16
                • 5.4k
                • 6
              • Невидимая фотография



                  О чём речь?


                  Знакомые часто интересуются: зачем я занимаюсь невидимой фотографией? Инфракрасной, ультрафиолетовой, тепловой. Неужели там есть что-то интересное?

                  Поскольку лучше один раз увидеть, чем сто раз услышать, то вот вам небольшая демка. С 15-ю предметами. Здесь они в видимом спектре, а дальше мы на них посмотрим в других диапазонах:

                  [Видимый свет, 400-750 нм. F/6.3, 1/2500 сек, ISO 200, стеклянная 35-мм линза Nikkor. Снято на модифицированный Nikon D90 с удалёнными внутренними ИК/УФ фильтрами через светофильтр видимого света Kolari Vision Hot Mirror UV/IR Cut filter.]
                  Читать дальше →
                • Пуля

                    Пуля – это такая система оплаты труда. Ничего сверхъестественного, идея лежит на поверхности, результаты не заставляют себя долго ждать. Название придумал не я, а собственник компании, где эта система внедрялась. Вот прям так выслушал аргументы и особенности, и сказал: «Это – Пуля!».

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

                    Принцип Пули очень прост: платить людям долю от прибыли. Не всем, а только тем, кто стоит в цепочке создания ценности. Банально, просто и скучно. Вся фишка не в самой системе, не в дележе прибыли, а в… Ну, сами узнаете.

                    На высшую истину не претендую. Название «Пуля» — не претензия на оригинальность или уникальность. Просто так удобнее обсуждать, когда одним словом называется. Внедрение Пули делал сам и видел, как это делают другие. Ничего не продаю. Просто рассказываю. Без программиста во внедрении не обойтись. Поэтому, как говорится, извините, что обращаюсь к вам.
                    Читать дальше →
                  • Обнаружение пересекающихся сообществ в Instagram для определения интересов пользователей

                      Сколько может рассказать о человеке профиль в соцсети? Фотографии, посты, комментарии, подписки – непаханное поле для анализа. Сегодня поговорим о том, как мы определяем интересы пользователей на основе их подписок в сети Instagram.

                      image
                      Источник
                      Читать дальше →
                    • В Германию разработчиком без в/о

                        image

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

                        В своё оправдание скажу, что случай необычный. Ваш покорный слуга в силу природной лени и прочих хорошо знакомых каждому причин зафейлил квест по получению полезной бумажки под названием диплом. Последствия моего юношеского легкомыслия ждут вас под катом.
                        Читать дальше →
                      • Алексей Кривенков: «Мои друзья продали мне домен Mail.ru за 500 долларов»



                          Алексей Кривенков стоял у истоков DataArt и Mail.ru, но в 2001 году покинул компанию. В интервью DataArt Алексей рассказал о том, когда и как было придумано название компании, первых офисах в Петербурге и Нью-Йорке и многом другом.

                          Интервью: Таня Андрианова и Даниэль Лурье.
                          Фотографии из личных архивов Алексея Кривенкова, Дмитрия Андрианова и Андрея Язикова.


                          — Кем ты был до DataArt и как очутился в компании?

                          — Вообще, название DataArt появилось при мне, когда я уже был в Нью-Йорке.

                          Я учился на 2-м курсе физфака, и в какой-то момент решил съездить в Америку, навестить своего друга Диму Крюкова. Он отвез меня в гости к однокласснику своего друга, Жене Голанду, — так мы и познакомились.

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

                          В то время в Петербурге я работал в первых интернет-провайдерах: в «Невалинке», «Дуксе», потом еще в «Веб Пласе». Я ходил в гости к клиентам и подключал им интернет. Интернет тогда состоял из электронной почты UUPC. Я, наверное, настроил около сотни UUPC. Я подключил к интернету, например, известного музыканта Лешу Вишню и покойного писателя и интернет-литератора Александра Житинского.

                          В общем, я сидел в ректорском флигеле в подвале Университета. У нас там был настоящий IP-интернет на 386-х «линуксах», а у меня, конечно, была личная электронная почта, с которой я и написал Жене Голанду, что собираюсь в Америку. Женя сказал, что у него как раз есть для меня дело. Я купил билет и приехал.

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

                          В общем, машины я так помыть и не успел…
                          Читать дальше →
                          • +30
                          • 21.9k
                          • 9
                        • Топ 8 лучших ресурсов для практики программирования в 2018

                            Привет, Хабр! Представляю вашему вниманию перевод статьи Top Coding Challenge Websites of 2018 автора Trey Huffine.

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

                            На чем бы вы не кодили: Python, Ruby, JavaScript, Golang, TypeScript, или еще какой-то язык, вы найдете здесь ресурс под ваши потребности. Чтобы научиться программировать — нужно программировать.
                            Читать дальше →
                          • Как я сделал удобной разработку на Vue.js с server-side рендерингом

                            Всем привет!

                            Начну с небольшой предыстории.

                            Свой новый проект я решил попробовать сделать на Vue.js. Мне нужен был серверный рендеринг (SSR), CSS модули, code-splitting и прочие прелести. Разумеется, для повышения производительности разработки нужна была горячая перезагрузка (HMR).

                            Я не хотел использовать готовые решения, типа Nuxt.js, т.к. при разрастании проекта важно иметь возможность кастомизации. А любые высокоуровневые решения, как правило, не дают этого делать, или дают, но с большими усилиями (был похожий опыт с использованием Next.js для React).

                            Основная проблема локальной разработки при использовании серверного рендеринга и горячей перезагрузки состояла в том, что мало запустить один webpack-dev-server. Мы должны также что-то сделать с исходниками, которые запускает Node.js, иначе при следующей перезагрузке страницы мы получим код, который не был обновлен на сервере, но обновился на клиенте.

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


                            Читать дальше →