• Прямой эфир конференции Я ❤︎ Фронтенд 2020 — 29 февраля. Спикеры и программа

      Яндекс во второй половине нулевых начал проводить встречи по фронтенду — тогда их аудиторию часто называли верстальщиками. Недавно мы отметили 10-летие Я.Субботника по фронтенду. Но Я.Субботник традиционно строится вокруг докладов о технологиях Яндекса. Сообществу и нам нужна была конференция по разработке интерфейсов, участники которой могли бы узнать об опыте разных компаний и standalone-разработчиков. Мы не раз устраивали такие события в регионах — но не в Москве. Год назад мы заполнили этот пробел, проведя конференцию «Я Фронтенд». Судя по отзывам, получилось неплохо — 29 февраля будет следующая серия.

      Прямой эфир со второй конференции «Я Фронтенд» начнётся в 11:00. Он пройдёт в канале «Фронтенд» на YouTube, в группах «Яндекс для разработчиков» во ВКонтакте и Фейсбуке, а также на странице мероприятия — по ссылке можно оставить почту, если вы хотите получить напоминание о трансляции. Вот её программа:
      Читать дальше →
    • 26 ноября, Москва — Alfa JS MeetUP #3

        Привет!

        Во вторник, 26 ноября, мы проведём третий JS-митап. Бесплатный по предварительной регистрации, на привычной вам площадке, Большая Полянка, дом 2/10, строение 1 (Deworkacy Полянка).

        Спикеры от Ozon.travel, HH.RU и, само собой, Альфа-Банка.



        Поговорим о CI/CD, про использование Typescript вместо Babel и многом другом.
        Читать дальше →
      • Уровни изолированности транзакций для самых маленьких



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

          Немного теории


          Сами транзакции особых объяснений не требуют, транзакция — это N (N≥1) запросов к БД, которые выполнятся успешно все вместе или не выполнятся вовсе. Изолированность же транзакции показывает то, насколько сильно влияют друг на друга параллельно выполняющиеся транзакции.
          Выбирая уровень транзакции, мы пытаемся прийти к консенсусу в выборе между высокой согласованностью данных между транзакциями и скоростью выполнения этих самых транзакций.
          Стоит отметить, что самую высокую скорость выполнения и самую низкую согласованность имеет уровень read uncommitted. Самую низкую скорость выполнения и самую высокую согласованность — serializable.
          Читать дальше →
        • Подготовка к Spring Professional Certification. Контейнер, IoC, бины

          • Translation

          Доброго времени суток, Хабр.


          Сегодня я решил представить вам перевод цикла статей для подготовки к Spring Professional Certification.


          Это перевод только первой статьи, если он зайдет аудитории, я продолжу выпуск переводов.  


          Зачем я это делаю, ведь уже есть куча профильных материалов?
          1. Часто в них информация не структурирована, не собрана, или не актуальна
          2. Молодые разработчики могут не знать английский. Этот цикл можно использовать не только для сертификации, но и для самообучения/повторения материалов.
          3. Этими материалами можно пользоваться при подготовке к собеседованию, т.к. они выстроены в виде вопросов и ответов.
          4. Важное, и самое главное преимущество — этот QA сделан из вопросов из  официального Study Guide от Pivotal. 

          • Некоторые вопросы, которые казались мне лишними или которых не было в гиде я осознанно упустил.

          Оглавление
          1. Внедрение зависимостей, контейнер, IoC, бины
          2. AOP (аспектно-ориентированное программирование)
          3. JDBC, транзакции, JPA, Spring Data
          4. Spring Boot
          5. Spring MVC
          6. Spring Security
          7. REST
          8. Тестирование

          Читать дальше →
        • Кейс: слезаем с иглы контекстной рекламы на бесплатный SEO-трафик

          Данный кейс можно разделить на 2 части. Первая часть короткая – в ней суть. Вторая часть – подробности работы. У кого есть опыт в сфере – могут ознакомиться только с первой частью. Тем, кому интересны детали (кому-то покажутся очевидными и банальными) – для вас вторая часть.



          1 этап – нас устраивает контекст


          Мы работали с клиентом за 45 000 р. в месяц. В эту сумму входили в основном программные правки сайта + SEO поддержка (первичная оптимизация, работа над юзабилити, оптимизация новостей и другие мелкие доработки).

          Бюджет распределялся так: 90% — доработки сайта, 10% — SEO. Тематика – пластиковые окна, регион Удмуртская Республика.
          Параллельно, другая компания работала над контекстной рекламой. Вот как распределялся трафик.



          Стоит учитывать, что часть переходов из поисковиков – это тот же трафик с директа, поэтому фактического SEO-трафика было меньше.

          Таким образом мы работали год. Занимались правками, делали маломальскую SEO оптимизацию новостей и других материалов.


          Читать дальше →
          • +23
          • 14.6k
          • 3
        • Пост-пост, мета-мета. Учимся писать на Хабр


            — Ямщик, а далеко до релиза?
            — Да пара вёрсток.


            Докатился — пишу на Хабр о том, как писать на Хабр. Хотя причины есть — я пять лет занимаюсь этим, перевидал и перепробовал кучу инструментов, так что теперь делюсь с вами самыми лучшими.


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

            Читать дальше →
          • Шаблоны проектирования с человеческим лицом

            • Translation

            image


            Шаблоны проектирования — это способ решения периодически возникающих проблем. Точнее, это руководства по решению конкретных проблем. Это не классы, пакеты или библиотеки, которые вы можете вставить в своё приложение и ожидать волшебства.


            Как сказано в Википедии:


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

            image Будьте осторожны


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

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

            Читать дальше →
          • Spring Data JPA: что такое хорошо, и что такое плохо

              Крошка-сын к отцу пришел
              И спросила кроха
              — Что такое хорошо
              и что такое плохо

              Владимир Маяковский


              Эта статья о Spring Data JPA, а именно в подводных граблях, встретившихся на моём пути, ну и конечно же немного о производительности.

              Читать дальше →
            • Как мы полностью поменяли собеседования

                Меня зовут Саша, и я руковожу backend-разработкой в Tutu.ru. Сегодня я расскажу, почему и как мы полностью поменяли процесс собеседования кандидатов за прошедший 2018 год.

                Итак, диспозиция на начало года


                • Мы быстро растем – нам нужно набирать новых сотрудников
                • Сообщество разработчиков о нас думает примерно «Ну это сайт с расписанием электричек – там наверно 3 человека работает в подвале». На самом деле у нас сейчас 7 бизнес-направлений и два десятка команд, которые над ними трудятся.

                  Кстати, немного об электричках
                  Кстати, в команде Электричек 7 разработчиков, а еще там высоконагруженные микросервисы, которые мы начали переписывать на go
                • На собеседовании мы задаем логические задачи, задачи по синтаксису php, ООП и базам данных

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

                image
                Читать дальше →
              • Точечный обход блокировок PKH на роутере с OpenWrt с помощью WireGuard и DNSCrypt

                Чем отличается от подобных материалов?


                • Реализация на чистом OpenWrt
                • Использование WireGuard
                • Конфигурация роутера организуется с помощью конфигов OpenWrt, а не кучей в одном скрипте
                • Предусмотрены ситуации при рестарте сети и перезагрузке
                • Потребляет мало ресурсов роутера: заблокированные подсети содержатся в iptables, а не в таблицах маршрутизации. Что позволяет развернуть это дело даже на слабых устройствах
                • Автоматизация конфигурации с помощью Ansible (не требуется python на роутере)
                Читать дальше →
              • Введение в Kubernetes для пользователей VMware. Часть 1. Теория

                • Translation
                Это вторая часть из моей серии постов “Kubernetes in the Enterprise”. Как я упоминал в моем последнем посте, очень важно при переходе к “Design and Implementation Guides” всем быть на одном уровне понимания Kubernetes (K8s).

                Я не хочу здесь применять традиционный подход для объяснения архитектуры и технологий Kubernetes, а объясню все через сравнение с vSphere платформой, которая вам, как пользователям VMware, хорошо знакома. Это позволит вам преодолеть кажущуюся запутанность и тяжесть понимания Kubernetes. Я использовал этот подход внутри VMware для представления Kubernetes разным аудиториям слушателей, и он доказал, что отлично работает и помогает людям быстрее освоиться с ключевыми концепциями.

                Важное замечание, прежде чем мы начнем. Я не использую это сравнение ради доказательства каких-либо сходств или различий между vSphere и Kubernetes. И то, и другое, в сущности, это распределенные системы, и, следовательно, должны иметь сходство с любой другой подобной системой. Поэтому в итоге я пытаюсь представить такую замечательную технологию как Kubernetes широкому сообществу её пользователей.
                Читать дальше →
              • Как стать Java разработчиком за 1,5 года

                  Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Это моя первая работа в качестве разработчика. До этого я работал в сфере IT-поддержки и системной интеграции. Первого февраля 2019 г. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.



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


                  Моя первая статья: «IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там»

                  Читать дальше →
                • Защищаем SSH от брутфорса на любом порту

                    Сегодня меня заинтересовал опрос надо ли перевешивать SSH на нестандартный порт. Сам опрос не так интересен как способ автора zivot_je_cudo защищать SSH от подбора пароля: после неверной попытки подключения блокировать новые попытки в течение 20 секунд. Задержка, видимо, выбрана эмпирически, исходя их двух противположных пожеланий: чтобы не заблокировать в случае опечатки себя надолго, и в тоже время усложнить жизнь подбиральщика. Я хочу поделиться своим способом противодействия брут-форсу, который применяю уже несколько лет. Он имеет два преимущества:
                    — дает мне больше попыток для набора правильного пароля
                    — но при этом блокирует брутфорсеров «навечно».

                    Как можно достичь этих двух противоположных целей?
                    Читать дальше →
                  • Интеграция web-приложений с помощью Spring Cloud Contract

                    • Tutorial


                    В статье речь пойдет об интеграции веб-приложений, написанных с помощью Spring и работающих по HTTP. Название Spring Cloud Contract, на мой взгляд, вводит в заблуждение, так как не имеет ничего общего с cloud.


                    Речь пойдет об API контрактах.

                    Читать дальше →
                  • Расширение PHP и Kotlin Native. Часть третья, наверное финальная

                      В первой части рассказываются совсем базовые вещи про настройку инструментария и общие концепции.

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

                      В этой статье будет чуть больше хардкора про интероп Си и K/N, много макросов, боли, безысходности и «лучей добра». Конечно же будет глава с рассказом о достижениях (сам себя не похвалишь… и в качестве бонуса рассказ о эпичном факапе.
                      Читать дальше →
                    • Функции высших порядков в JS: курс молодого бойца

                        Данная статья рассчитана на человека, делающего свои первые робкие шаги на тернистой тропе изучения JavaScript. Несмотря на то, что на дворе 2018 год, я использую синтаксис ES5, дабы статья была понятной юным падаванам, проходящим курс «JavaScript, уровень 1» на HTML Academy.

                        Одной из особенностей, отличающих JS от многих других языков программирования, является то, что в этом языке функция — «объект первого класса». Или, говоря по-русски, функция — это значение. Такое же, как число, строка или объект. Мы можем записать функцию в переменную, можем положить её в массив или в свойство объекта. Мы даже можем сложить две функции. На самом деле, ничего осмысленного из этого не получится, но как факт — мы можем!

                        function hello(){};
                        function world(){};
                        console.log(hello + world);
                        // кто знает, что получится, тому печеньку
                        // кто не знает, пусть попробует в консоли
                        

                        Самое интересное, что мы можем создавать функции, оперирующие другими функциями — принимающие их в качестве аргументов или возвращающие их как значение. Такие функции называются функциями высшего порядка. И сегодня мы с вами, девочки и мальчики, поговорим о том, как бы эту возможность приспособить на нужды народного хозяйства. Попутно вы узнаете ещё про некоторые полезные особенности функций в JS.
                        Читать дальше →
                      • Курс «Разработка на Java» от Mail.Ru Group на канале Технострим



                          Этой весной мы выложили на канале Технострим запись курса по Java. Уже несколько семестров подряд он читается в рамках образовательного проекта Техносфера, реализуемого компанией Mail.Ru Group совместно с МГУ им. М. В. Ломоносова. Курс включает все темы, необходимые начинающему разработчику в мире Java. Авторы не углубляются в детали синтаксиса, а сразу берутся за практические задачи: разработку игры с консольным интерфейсом и функционального чата. В конце курса разбираются частые вопросы из собеседований на позиции junior и middle Java-developer.

                          Записи лекций и материалы курса бесплатны и доступны всем желающим.

                          Большинство домашних заданий можно выполнить и проверить в репозитории курса.
                          Читать дальше →
                        • 11 лучших шрифтов для программирования

                          • Translation
                          Много статей и сайтов сравнивают шрифты для программирования — всё это отличные ресурсы. Так зачем я опять поднимаю эту тему? Потому что сам всегда терялся в десятках шрифтов и не мог понять, какой лучше. Так что я опробовал много шрифтов и выбрал следующие для вас. Они довольно популярны и их легко получить. И самое главное, все эти шрифты бесплатны!

                          Я ранжировал шрифты по следующим показателям:

                          • Насколько различимы схожие символы, такие как 0O, 1lI.
                          • Легко ли читается шрифт (ширина строк, ширина/высота символов).
                          • И мои личные предпочтения!

                          Все скриншоты сделаны в VSCode на одном фрагменте кода. Если не обозначено иное, то везде установлен размер "editor.fontSize": 14.
                          Читать дальше →
                        • Современный PHP без фреймворков

                          • Translation
                          • Tutorial


                          У меня есть для вас непростое задание. Когда в следующий раз начнёте новый проект, постарайтесь обойтись без PHP-фреймворка. Я не собираюсь перечислять недостатки фреймворков, и это не проявление синдрома неприятия чужой разработки: в этом руководстве мы будем использовать пакеты, написанные разработчиками нескольких фреймворков. Я всецело уважаю инновации в этой сфере.

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