• Что почитать про организацию рабочих мест, коворкинги и дизайн пространств для дистанционной работы

      Получилось так, что с 2012 года я курирую московский Techstars Startup Digest. Это — email-рассылка мероприятий для IT-специалистов, основателей стартапов и маркетологов.

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

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

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

      На Хабре я пока показал только #tceh, SOK и Ключ, а в период новогодних каникул переключился на изучение «мат.части», чтобы посмотреть, какие книги рассказывают об эволюции рабочего пространства: от первых опенспейсов 1900-х годов до коворкингов.

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


      Читать дальше →
      • +19
      • 9,3k
      • 2
    • Если вы не нанимаете джунов, то не заслуживаете сеньоров

      • Перевод
      Позвольте рассказать вам историю об одной очень успешной компании, совершившей большую, глупую ошибку:
      Мы не нанимаем младших программистов и интернов… Если не заводить щенка, не придётся убирать лужи.
      --Netflix

      Я был совершенно поражён, как некое корпоративное нечто умудрилось представить щенков в отрицательном свете, да ещё кого-то этим убедило. Щенки — самые чистые создания на Земле, живая пушистая радость! Лучики света в одиноком мире. Но перейдём к сути.

      Многие компании последовали данной стратегии «нанимать только сеньоров». Они обосновывают это так:
      • У нас нет времени и ресурсов нанимать младших программистов; мы слишком быстро развиваемся.
      • Наша компания может себе позволить сеньоров, так что в джунах нет необходимости.
      • На текущем этапе мы не можем позволить себе ошибки. Ставки слишком высоки.
      • Наш процесс предоставляет сотрудникам большую автономность. Мы не готовы держать джунов за ручку, как они в том нуждаются.
      • Мы хотим заложить фундамент продукта прежде, чем начнём нанимать неопытных сотрудников.
      Читать дальше →
    • Как я диплом в LaTeX писал с GitHub, Docker и TravisCI

        Еще со времен обучения в университете я использовал LaTeX для оформления лабораторных и курсовых работ. Познакомился впервые с LaTeX на Coursera, на курсе "Документы и презентации в LaTeX".


        В этой заметке я расскажу, как я писал диплом с помощью LaTeX и почему я использовал GitHub, Docker и TravisCI.


        Но зачем?

        Читать дальше →
      • Роскомнадзору не удалось подвести правовую базу под массовую блокировку IP-адресов

          23 апреля 2018 года Роскомнадзор опубликовал на правительственном портале Regulation.gov.ru проект приказа «Об утверждении Порядка идентификации информационных ресурсов в целях принятия мер по ограничению доступа к информационным ресурсам». Согласно проекту, в документ добавили ещё одно основание для внесения информационного ресурса в реестр запрещённых ресурсов: это «судебные решения и постановления по делам об административных правонарушениях, вступившие в законную силу». Согласно документу, Роскомнадзор получает право самостоятельно устанавливать сетевой адрес, доменное имя и указатель страницы, содержащие запрещённую информацию, «в случае выявления ошибок».

          По мнению экспертов, таким образом Роскомнадзор пытается легализовать действия, которые он осуществляет с 16 апреля 2018 года, блокируя миллионы IP-адресов ради поставленной задачи — деградации мессенджера Telegram на территории Российской Федерации. Сам Роскомнадзор уверяет, что единственная цель нового документа — исправлять ошибки в неправильном написании доменных имён в решениях судов, а «иных целей приказ не преследует».
          Читать дальше →
        • Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

            Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
            Вы заказчик. Как убедиться, что работа выполнена качественно?
            Как оценить качество вёрстки?

            Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

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

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

            Итак что же это за список?

            Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

            История обновлений:
            • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
            • 2015/08/10: актуализирован список исключений для CSSLint
            • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
            • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
            • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
            • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
            • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
            • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
            • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
            • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


            Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
          • Летняя практика: Топ-10 курсов Microsoft Virtual Academy

              Двигаемся дальше и продолжаем прокачивать скиллы в виртуальной академии Microsoft MVA. В прошлой подборке были самые интересные курсы для новичков, сегодня вы узнаете популярные курсы для подготовленных специалистов: Windows 10 в корпоративной сети, JSON и C#, использование Docker-контейнеров в облаке Microsoft Azure, обеспечение катастрофоустойчивости в приложениях, виртуализация серверов Windows Server Hyper-V и System Center, импортирование локальной системы Linux в облако, написание скриптов в PowerShell и использование технологии PowerShell Desired State Configuration, а также о LINQ, Data Science и Machine Learning.



              Читать дальше →
            • Руководство по работе с Redux

              • Перевод
              • Tutorial
              Сегодня Redux — это одно из наиболее интересных явлений мира JavaScript. Он выделяется из сотни библиотек и фреймворков тем, что грамотно решает множество разных вопросов путем введения простой и предсказуемой модели состояний, уклоне на функциональное программирование и неизменяемые данные, предоставления компактного API. Что ещё нужно для счастья? Redux — библиотека очень маленькая, и выучить её API не сложно. Но у многих людей происходит своеобразный разрыв шаблона — небольшое количество компонентов и добровольные ограничения чистых функций и неизменяемых данных могут показаться неоправданным принуждением. Каким именно образом работать в таких условиях?

              В этом руководстве мы рассмотрим создание с нуля full-stack приложения с использованием Redux и Immutable-js. Применив подход TDD, пройдём все этапы конструирования Node+Redux бэкенда и React+Redux фронтенда приложения. Помимо этого мы будем использовать такие инструменты, как ES6, Babel, Socket.io, Webpack и Mocha. Набор весьма любопытный, и вы мигом его освоите!
              Читать дальше →
            • Эффективно лечим прокрастинацию раз и навсегда (18+)

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

                В этой статье я расскажу, как быстро и эффективно избавиться от лени и прокрастинации. Информация почерпнута из разных авторитетных источников, собирать и перечислять которые мне лень.
                Читать дальше →
              • «Половина научных работ по Concurrency — полная чушь!» — интервью с Романом Елизаровым из Devexperts

                  Добрый день, это «Без слайдов». В гостях у меня побывал Роман Елизаров aka elizarov, Java Champion, эксперт по Java и многопоточности (а с недавнего времени — еще и по финансовой математике), спикер многочисленных конференций, председатель жюри Северо-Восточного Европейского региона ACM-ICPC, престижнейшей в мире олимпиады по программированию, лектор в ИТМО и, наконец, VP по технологиям в компании Devexperts. В общем, «человек и пароход».

                  В разговоре мы затронули следующие темы:
                  • что такое финансовая математика и как ее учить;
                  • как устроен софт для финансовой индустрии;
                  • как в компании Devexperts появилась исследовательская лаборатория по многопоточности;
                  • куда развивается Concurrency, и что будет в моде в ближайшее время;
                  • как всемирная олимпиада по программированию пришла в Россию.




                  Текстовая версия — под катом.
                  Читать дальше →
                • Текстовый туториал по React.js и Redux на русском

                  (у учебника по Основам React вышло второе издание, Redux-учебник в процессе обновления)

                  Закончил работу над парой подробных текстовых туториалов на русском. Постарался уделить как можно больше времени практике. По ходу повествования есть вопросы, задачи и решения.


                  Курс про Redux попал в официальную документацию.


                  Оба руководства бесплатны и выложены на gitbook (можно скачать PDF, ePub, mobi).


                  В текстах нарочно участвуют термины переведенные на русский (например, состояние), английские (state), либо английский термин написанный по-русски — стейт. Считаю это допустимым, и даже более того, удобным для читателя.

                  Читать дальше →
                • Теория и практика парсинга исходников с помощью ANTLR и Roslyn

                    В нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:


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

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



                    К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:


                    • поддержка нескольких языков программирования и простое добавление новых;
                    • поддержка анализа кода, содержащего синтаксические и семантические ошибки;
                    • возможность описания шаблонов на универсальном языке (DSL, domain specific language).

                    В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.


                    Весь процесс анализа кода может быть разбит на следующие этапы:


                    1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
                    2. преобразование AST в независимый от языка унифицированный формат;
                    3. непосредственное сопоставление с шаблонами, описанными на DSL.

                    Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.

                    Читать дальше →
                  • Архитектура Stack Overflow

                    • Перевод
                    image

                    Чтобы понять, как все это работает, давайте начнем с показателей Stack Overflow. Итак, ниже приводится статистика за 12 ноября 2013 и 9 февраля 2016 года:

                    статистика
                    • 209,420,973 (+61,336,090) HTTP-запросов к нашему балансировщику нагрузки;
                    • 66,294,789 (+30,199,477) страниц было загружено;
                    • 1,240,266,346,053 (+406,273,363,426) битов (1.24 TБ) отосланного HTTP-трафика;
                    • 569,449,470,023 (+282,874,825,991) битов (569 ГБ) всего получено;
                    • 3,084,303,599,266 (+1,958,311,041,954) битов (3.08 ТБ) всего отослано;
                    • 504,816,843 (+170,244,740) SQL-запросов (только из HTTP-запросов);
                    • 5,831,683,114 (+5,418,818,063) обращений к Redis;
                    • 17,158,874 (not tracked in 2013) поисков в Elastic;
                    • 3,661,134 (+57,716) запросов Tag Engine;
                    • 607,073,066 (+48,848,481) мс (168 часов) выполнения SQL-запросов;
                    • 10,396,073 (-88,950,843) мс (2.8 часов) затрачено на обращение к Redis;
                    • 147,018,571 (+14,634,512) мс (40.8 часов) затрачено на запросы к Tag Engine;
                    • 1,609,944,301 (-1,118,232,744) мс (447 часов) затрачено на обработку в ASP.Net;
                    • 22.71 (-5.29) мс в среднем (19.12 мс в ASP.Net) на формирование каждой из 49,180,275 запрошенных страниц;
                    • 11.80 (-53.2) мс в среднем (8.81 мс в ASP.Net) на формирование каждой из 6,370,076 домашних страниц.


                    Вы можете спросить, почему существенно сократилась продолжительность обработки в ASP.Net по сравнению с 2013 годом (когда было 757 часов) несмотря на прибавление 61 миллиона запросов в день. Это произошло как и из-за модернизации оборудования в начале 2015 года, так и из-за некоторого изменения параметров в самих приложениях. Пожалуйста, не забывайте, что производительность – это наша отличительная особенность. Если Вы хотите, чтобы я более подробно рассказал о характеристиках оборудования – без проблем. В следующем посте будут подробные спецификации железа всех серверов, которые обеспечивают работу сайта.

                    Итак, что изменилось за прошедшие 2 года? Кроме замены некоторых серверов и сетевого оборудования, не очень многое. Вот укрупненный список хардварной части, которая обеспечивает работу ресурса (выделены различия по сравнению с 2013 годом):

                    • 4 Microsoft SQL Servers (новое железо для 2-х из них);
                    • 11 Web-серверов IIS (новое оборудование);
                    • 2 сервера Redis (новое оборудование);
                    • 3 сервера Tag Engine (новое оборудование для 2-х из 3-х);
                    • 3 сервера Elasticsearch (те же, старые);
                    • 4 балансировщика нагрузки HAProxy (добавлено 2 для поддержки CloudFlare);
                    • 2 брандмауэра Fortinet 800C (вместо Cisco 5525-X ASAs);
                    • 2 маршрутизатора Cisco ASR-1001 (вместо маршрутизаторов Cisco 3945);
                    • 2 маршрутизатора Cisco ASR-1001-x (новые!).

                    Что нам необходимо, чтобы запустить Stack Overflow? Этот процесс не сильно изменился с 2013 года, но из-за оптимизации и нового железа, нам необходим только один web-сервер. Мы этого не хотели, но несколько раз успешно проверили. Вношу ясность: я заявляю, что это работает. Я не утверждаю, что это (запуск SO на единственном web-сервере) — хорошая затея, хотя каждый раз выглядит весьма забавно.
                    Читать дальше →
                  • Как листок бумаги может устроить тебя на работу, или все секреты резюме

                      image

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

                      Что написать


                      В западной культуре резюме называют CV – Curriculum Vitae, то в переводе с латыни означает «жизнеописание». И правда: из твоего резюме потенциальный работодатель должен составить впечатление не просто о твоем предыдущем карьерном пути, но и о том, что ты из себя представляешь как личность. С другой стороны, интерес к этой самой личности у человека, который читает твое резюме, отнюдь не праздный. Ему важно понять, соответствуешь ли ты духу компании, сможешь ли разделить ее ценности и справишься ли со своими будущими обязанностями.

                      Постарайся отразить не то, что ты делал, а то, что ты сделал – говори о результате, о своих достижениях. Причем фокусироваться нужно на конкретике, в идеале – на цифрах. Например, напиши не просто «Был SMM-менеджером нескольких групп Вконтакте», а приведи доказательства своего профессионализма: «За неделю увеличил количество подписчиков на 10 тысяч человек». Если ты работал в консалтинге, вспомни все и пиши: «Успешно реализовал 9 консалтинговых проектов: 5 для FMCG-компаний, 3 для нефтегазовых предприятий и 1 pro bono для городской администрации».

                      Что делать тем, чья работа была рутинной и по определению не могла принести ощутимых результатов? Сосредоточьтесь на том, что вы исполняли все идеально. Например: «За время моей работы помощником бухгалтера фирма успешно прошла 2 аудиторских проверки».
                      Читать дальше →
                    • 6 впечатляющих веб-технологий 2015 года

                      • Перевод
                      2015 год выдался богатым на нововведения, связанные с улучшениями веб-платформы. Аксель Рошмайер рассматривает 6 технологий, которые ему кажутся наиболее интересными:

                      1. Electron;
                      2. React Native;
                      3. Прогрессивные веб-приложения;
                      4. Visual Studio Code;
                      5. Rollup;
                      6. WebAssembly.



                      Читать дальше →
                    • [ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

                      • Перевод
                      Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



                      Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
                      Читать дальше →
                      • +140
                      • 80,3k
                      • 15
                    • Лучшие бесплатные коллекции векторных иконок

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

                        Среди веб-разработчиков существует много споров о том, что лучше: иконочный шрифт или SVG спрайты? Четкого ответа на этот вопрос нет. Каждый выбирает свое. Данные наборы иконок вас неограничиывают в выборе, поскольку представлены в различных форматах: @font-face, SVG, EPS, AI, PSD, Sketch.

                        В целом данная подборка содержит более 10 000 иконок, охватывающих множество категорий: интерфейсы, технологии, наука, спорт, маркетинг, среда, транспорт и тд. Полые, заполненные, цветные, во Flat, Material, Elegant, Cartoon, Hand drawing стилях.

                        Responsive Icons (100 иконок, PSD, AI, EPS, SVG)


                        Responsive Icons

                        Читать дальше →
                      • Коллекция практических советов и заметок по вёрстке

                          CSS Refresher


                          Это большая коллекция практических советов и заметок по вёрстке. Своеобразная памятка для тех, кто каждодневно использует CSS. Освещаются самые разные темы, от деталей поведения плавающих элементов до использования SVG и спрайтов. Проект постоянно обновляется, активное сообщество github также принимает в нем участие, там добавляются интересные замечания, о которых, возможно, вы и не слышали.

                          От переводчика


                          Приветствую всех, меня зовут Максим Иванов, и сегодня я подготовил для вас перевод заметок разработчика из Сан-Франциско Васанта Кришнамурти (Vasanth Krishnamoorthy) «CSS Refresher». Web-программирование одна из самых быстро развивающихся отраслей в наше время. Казалось бы, возьми какой-нибудь видеокурс на tuts+ и освой html-верстку, однако, как говорил разработчик Opera Software Вадим Макеев, выступая на конференции CodeFest, они все равно это делают плохо. Но давайте посмотрим, может мы итак все это знаем.

                          Содержание


                          1. Позиционирование (position)
                          2. Отображение элемента в документе (display)
                          3. Плавающие элементы (float)
                          4. CSS селекторы
                          5. Эффективные селекторы
                          6. Переотрисовка и перерасчет
                          7. CSS3 свойства
                          8. CSS3 медиа-запросы
                          9. Адаптивный web-дизайн
                          10. CSS3 переходы
                          11. CSS3 анимации
                          12. Масштабируемая векторная графика (SVG)
                          13. CSS спрайты
                          14. Вертикальное выравнивание
                          15. Известные проблемы

                          Читать дальше →
                        • Работа в одиночку очень сложна

                          • Перевод
                          От переводчика: не торопитесь, прочитав заголовок, бурчать что-то вроде «Спасибо, капитан», и скроллить дальше. Название статьи не совсем отражает её содержание, сама она несколько о другом: о творческом процессе и возможности выразить себя в создании нового. Ну и немного об одиночестве, конечно.

                          По какому-то безумному совпадению, которое я никогда не пойму, моя игра Pinstripe (над ней я работаю уже почти 4 года) была показана на церемонии Game Awards 2015. Было чрезвычайно странно наблюдать, как Марк Хэмилл и Кифер Сазерленд обсуждают игры, в то время как моё лицо крупным планом показывают на всех проекторах. Я очень доволен, не поймите неправильно, но я также хочу быть откровенным: это стало первым за четыре года реальным подтверждением того, что да, работа над проектом в одиночку стоила того. Кроме ощущения счастья и возможности рассказать свою историю «одинокого волка» тысячам людей в Лос-Анджелесе, есть ещё несколько преимуществ работы в одиночку.
                          Читать дальше →
                        • Лекции Технопарка. Мастер-класс «20 ошибок при создании IT-компании»



                            При создании любой компании можно наделать немало промахов, которые впоследствии могут похоронить весь бизнес. В каждой сфере есть свои специфические ошибки, в том числе и в IT. На тему того, как не бегать по граблям, в Технопарке рассказал Стас Щукин, обладающий 15-летним опытом работы с IT в таких компаниях, как «Ситроникс», «Связной», Tvigle Media и А1. Кроме того, шесть лет назад Стас основал собственную компанию, разрабатывающую заказные проекты, где периодически выступает в роли подрядчика, консультанта и основного разработчика. Текст выступления читайте под катом.
                            Читать дальше →
                            • +25
                            • 33,8k
                            • 4
                          • Применение инфраструктуры кеширования в ASP.NET

                            • Tutorial
                            Полтора года назад я написал статью про кеширование в ASP.NET MVC, в которой описал как повысить производительность ASP.NET MVC приложения за счет кеширования как на сервере, так и на клиенте. В комментариях к статье было упомянто много дополнительных способов для управления кешированием в ASP.NET.

                            В том посте я расскажу как использовать возможности инфраструктуры ASP.NET для управления кешированием.

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