• Задача от иностранной компании или как я провалил собеседование

    Решив попробовать свои силы на зарубежном рынке, я начал отправлять резюме в различные конторы. Даже не с целью найти работу, а просто для расширения кругозора. Выбор пал на вакансии «Java Developer». Промышленного опыта работы с языком у меня нет, только личный опыт, сертификаты с Oracle Certification Center, книги и.т.д. Честно признаться, на последнем месте работы за полтора года ничего кроме «форов» и «ифов» я не писал (но это совсем уже другая история) поэтому решил, почему бы собственно и нет.

    Пропустив историю поиска и разговоров с работодателями, перейду к сути. Одна компания К из города Г написала, что заинтересованы в проведении собеседования со мной после того как я решу задачу.

    После того как я решил и отправил им решение, К ответила, что после код ревью решили не рассматривать мою заявку более. Это был удар по моей самооценке. Я конечно понимаю, что язык новый, и вообще всякое бывает, но надеялся хотя бы на отзыв о моем решении. Плюс задача-то простая на самом деле… Надеюсь, вам будем интересна задача.
    Читать дальше →
  • Реализация honeypot на маршрутизаторах Cisco



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

    Работает это так. В списке доступа, прикреплённом к интерфейсу граничного интернет-маршрутизатора, создаются правила-ловушки. Когда правило срабатывает, в лог записывается событие. Каждая строка такого события содержит специальную метку, чтобы их легче было отобрать. Лог анализируется, и все попавшие в ловушку IP адреса заносятся в специальную объектную группу. Эту группу можно использовать в том же списке доступа, чтобы забанить доступ злоумышленникам уже ко всем IP адресам и портам нашей сети.

    Для понимания этой статьи нужно знать, что такое списки доступа (access lists), и для чего они нужны, а также знать, как использовать в списках доступа объектные группы (object-group).
    Читать дальше →
    • +17
    • 2,8k
    • 3
  • В России создаётся мобильное приложение для регистрации ДТП



      Правительство РФ подготовило проект постановления, которое упростит оформление документов о ДТП для получения выплат по ОСАГО. В частности, извещение об аварии для страховщика можно будет направить в электронной форме через специальное мобильное приложение (СМП). Проект постановления правительства поступил в распоряжение газеты «Ведомости».
      Читать дальше →
    • Фабрика GoPro переезжает, чтобы защититься от угрозы повышения импортных пошлин

      • Перевод


      Несмотря на то, что в торговой войне между США и Китаем наступило 90-дневное перемирие, и новые заградительные тарифы не будут вводиться до марта 2019 года, не все компании согласны ждать, пока эти страны пытаются договориться между собой. В недавнем пресс-релизе производитель экшн-камер GoPro объявил о решении вывести часть своих производственных мощностей из Китая перед лицом потенциального увеличения тарифов; многие аналитики опасаются, что это будет результатом текущей патовой ситуации. Да, именно часть мощностей.

      «Мы предупреждаем проблемы с тарифами, перенося большую часть производства, работающего на американский рынок, из Китая, — говорит главный финансовый директор GoPro Брайан Макги. – Мы считаем, что диверсификация производства может пойти нашему бизнесу на пользу вне зависимости от результатов введения тарифов». Если читать внимательно, то ключевой фразой тут будет «диверсификация производства». GoPro не собирается полностью уходить из Китая, она выводит только производство, нацеленное на импорт в США. Модели камер, продающиеся на других рынках, и дальше будут делать в Китае.
      Читать дальше →
    • Кибернетический оркестр. Оркестрация контейнеров Docker с приложениями .NET Core в облаке

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


        Читать дальше →
      • Собираем полную колоду

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

          «Пацаны рассказывали, что у настоящих деловых, кто по законам живет, шайка „колодой“ называется, и в каждой колоде свой кумплект. Кумплект — это восемь фартовых, каждый при своем положении. Главный — »король"; при нем маруха, по-деловому «дама»; потом «валет» — вроде как главный помощник; ну и прочие бойцы, от десятки до шестерки. А больше восьми человек в шайке не держат, так уж исстари заведено."

          Меньше восьми людей брать смысла нет, будут пробелы в «компетенциях». Больше — нельзя, будет дублирование и потеря управляемости.



          Как ни странно, тот же Джефф Сазерленд, один из авторов скрама, называл похожие цифры — от 5 до 9 человек. Хотя и не уточнял специализацию.

          Ну да ладно. А мы продолжаем тему построения команд по ролям, на основе тестов Белбина.
          Читать дальше →
        • Экстремальное масштабирование в Alibaba JDK

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


            • Разработали мультитенантную виртуальную Java-машину;
            • Придумали механизм работы объектов, не приносящих оверхеда на сборку мусора;
            • Сделали что-то вроде аналога ReadyNow из Azul Zing;
            • Запилили собственные корутины с yield-ами и континуациями (и даже готовы поделиться опытом с Loom, о котором я писал осенью);
            • Прикрутили ко всем этим чудесам собственную подсистему диагностики.

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



            Доктор, откуда вы берёте такие картинки? Уголок «обложек O'Reilly»: бэкграунд для КДПВ предоставлен Joshua Newton и изображает священный танец Сангьянг Джаран в городе Убуде, Индонезия. Это классический балийский перформанс, состоящий из огня и трансового танца. Человек с непокрытыми пятками двигается вокруг костра, разведённого на кокосовой шелухе, распихивая ногами разное и танцуя в трансовом состоянии под действием конского духа. Идеальная иллюстрация для собственного JDK, правда?

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

            • Перевод
            image

            Теория ходов


            «Мы сыграли в гляделки, и, по-моему, противник моргнул», — сказал государственный секретарь США Дин Раск на пике кубинского ракетного кризиса в октябре 1962 года. Он имел в виду сигналы, которые подавал Советский Союз, желая разрешить самую опасную ядерную конфронтацию между двумя сверхдержавами, которую многие аналитики интерпретировали как классический пример игры в ядерного «цыплёнка» (на русском аналог этой игры называется «ястребы и голуби»).

            Игра в «цыплёнка» обычно используется для моделирования конфликтов, в которых каждый из игроков взял курс на столкновение. Игроками могут быть водители, приближающиеся друг к другу на узкой дороге, каждый из который имеет выбор — свернуть, чтобы избежать столкновения, или не сворачивать. В рассказе «Бунтарь без причины», который позже был переделан в фильм с участием Джеймса Дина, водителями были два подростка, но они ехали не друг на друга, а к обрыву. Цель игры была в том, чтобы не нажать на тормоза первым и не превратиться таким образом в «цыплёнка», и в то же время не свалиться с обрыва.

            Хотя с виду карибский ракетный кризис похож на игру в «цыплёнка», на самом деле он плохо моделируется этой игрой. Другая игра более точно описывает действия лидеров США и Советского Союза, но даже для этой игры стандартная теория игр не полностью описывает доступные им варианты выбора.

            С другой стороны, воспроизводит или предсказывает прошлое действий лидеров «теория ходов» (theory of moves), основанная на теории игр, но радикально меняющая стандартные правила игры. Что ещё более важно, эта теория проливает свет на динамику игры, основываясь на предположении, что игроки думают не только о непосредственных последствиях их действий, но и об их влиянии на игру в будущем.
            Читать дальше →
          • Обновление* Ethereum «Constantinople» откладывается из-за найденной в последний момент потенциальной уязвимости

              image
              *многие называют это событие «hard fork»-ом, но «Виталик» против.

              Долгожданный релиз Constantinople должен был состояться 17 января, в 4AM UTC, однако, в очередной раз жестоко обломав несметную армию разработчиков countdown счетчиков этому не суждено будет сбыться.
              Читать дальше →
            • Современное автомобилестроение — 02. Очень тезисно об ОС

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

                • Перевод

                YOLO


                Позвольте поведать вам о совершенно новой методологии, которая радикально изменит ваши подходы в программировании. Итак, прервитесь ненадолго от своего стройного и прямолинейного кода и откройте для себя мир альтернативных IT-методологий.


                Вообразите наше восхищение, когда манифест этой новаторской новой методологии попал в наши новостные ленты. Пророк YDD, она же YOLO Driven Development Todor Grudev высек в камне (на GitHub) 17 заповедей YDD. YOLO буквально означает — You Only Live Once, или по-русски: ВЖОРВы Живете Один Раз.


                Because #YOLO

                Читать дальше →
              • Применяем data science для определения жизненного цикла клиента

                Привет, Хабр! Представляю вашему вниманию перевод моей статьи "Understanding the Customer Lifetime Value with Data Science".


                Взаимоотношения с клиентами важны для каждой компании и играют ключевую роль в росте бизнеса. Одна из наиболее важных метрик в этой сфере — пожизненная ценность клиента (customer lifetime value, далее LTV) — предсказание чистого дохода, связанного со всеми будущими отношениями с клиентом. Чем дольше клиенты продолжают пользоваться продуктами компании, увеличивая прибыль, тем выше их LTV.

                Есть много маркетинговых статей, о том, как важны LTV и сегментирование клиентов. Но, как Data Scientist’а, меня больше интересуют формулы и я хочу понимать, как модель на самом деле работает. Как предсказать LTV, используя только 3 признака? В этом посте я покажу некоторые модели, которые используются для маркетинговой сегментации клиентов и объясню математику, на которой они основаны. Здесь будет много формул, но не переживайте: все уже готово в библиотеках Python. Цель этого блога показать, как математика делает всю работу.


                Beta-geometric/negative binomial модель для определения вероятности, что клиент “жив”


                Рассмотрим такой пример [из онлайн-сервиса для заказа поездок (такси) по городу]: пользователь зарегистрировался 1 месяц назад, сделал 4 поездки и последняя поездка состоялась 20 дней назад. Основываясь только на этих данных, эта модель может предсказать вероятность, что клиент будет активен в течение определенного периода времени (как показано на графике), а также число транзакций в будущем (которое является основой для понимания ценности клиента в течение всей его “жизни” — взаимоотношений клиента и компании).



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

                Read more →
              • Аппликативные парсеры на Haskell

                • Tutorial


                Мотивация


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


                Мне не хватало хорошего примера, где бы окупались усилия, потраченные на освоение "матчасти". Для меня одним из самых удачных таких примеров оказались парсеры. Теперь я довольно часто рассказываю про них, когда у меня спрашивают, для каких распространённых задач можно красиво использовать Haskell.


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


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

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

                • Перевод
                • Tutorial
                Даже поверхностное знание программы Wireshark и её фильтров на порядок сэкономит время при устранении проблем сетевого или прикладного уровня. Wireshark полезен для многих задач в работе сетевого инженера, специалиста по безопасности или системного администратора. Вот несколько примеров использования:

                Устранение неполадок сетевого подключения


                • Визуальное отображение потери пакетов
                • Анализ ретрансляции TCP
                • График по пакетам с большой задержкой ответа

                Исследование сессий прикладного уровня (даже при шифровании с помощью SSL/TLS, см. ниже)


                • Полный просмотр HTTP-сессий, включая все заголовки и данные для запросов и ответов
                • Просмотр сеансов Telnet, просмотр паролей, введённых команд и ответов
                • Просмотр трафика SMTP и POP3, чтение писем
                Читать дальше →
                • +26
                • 15,2k
                • 4
              • Разработка команды запроса данных из базы

                • Tutorial

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


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

                Читать дальше →
              • Анализ Agile. Мифы и действительность

                  I Вступление


                  Будку надо переносить! Сезона не бывает, чтоб пару-тройку не шандарахнуло.
                  То с туалетом путают, то с пляжной кабинкой…
                  (х/ф Особенности национальной рыбалки)

                  Конец года, подведение итогов, заполнение анкет и прочая предпраздничная мишура ИТ функционеров. Мне уже в который раз попадается на глаза итоговые опросники ИТ фирм, призванные выявить тренды в подходах к разработке продуктов. И каждый раз возникает ощущение какого-то подвоха, когда отвечаешь на вопросы типа: «Вы все еще пользуетесь методом Waterfall (водопадная модель), или Вы все-таки (как и все передовое человечество) практикуете Agile (гибкие методологии)». Когда же начинаешь выяснять у автора сего опроса, а что он понимает под Agile, его разъяснения как-то не сильно ложатся в канву манифеста (Agile Manifesto). О многих принципах он реально задумываются впервые и эти самые принципы прямо-таки ставят его в тупик. Но после небольшого замешательства, в ход идет тяжелая артиллерия с железобетонным обоснованием своей позиции: «Мы же не по Водопаду работаем, значит по Agile».

                  Сам тезис «Гибкие методологии» настолько гуттаперчевый еще в своем звучании, что многие пытаются втиснуть в него все что угодно, а вернее то, что им наиболее выгодно. Постепенно это стало модной ширмой, которой можно прикрыть всякие свои недостатки и даже разгильдяйство, в процессе производства ИТ продуктов, и при этом, как-бы оставаться на гребне волны, в тренде. Мол не мы такие – а методика такая.

                  Давайте вместе, еще раз “ударим анализом” по теме Гибких методологий, попытаемся разложить основные артефакты и принципы по полочкам и отделить, тот сакральный смысл, который закладывали в это понятие изначально, от того, во что его превращают отдельные нерадивые популисты. Так же сравним подходы Agile с другими методиками для более точного понимания той грани, что их разделяет или наоборот – объединяет. Заодно попробуем выяснить, где использование принципов Agile наиболее целесообразно, а где не совсем уместно?
                  Читать дальше →
                • Бикватернионы

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

                  В данной статье даны основные понятия о бикватернионах и операции работы с ними. Для лучшего понимания работы с бикватернионами показан наглядный пример на Javascript с использованием Canvas.
                  Читать дальше →
                • На The Pirate Bay перестали появляться новые торренты


                    У The Pirate Bay 2018 год был особенно сложным. Попытки (и не всегда безуспешные) разделегировать домен ресурса, нехватка средств на содержание трекера, атаки со стороны правительственных органов разных стран и компаний. Все это привело к тому, что в работе The Pirate Bay стали возникать перебои, причем довольно часто.

                    Администрация ресурса не особо распространялась о проблемах, но они были, и немало. Но вполне может быть, что 2019 год станет еще более сложным, или уже стал. Дело в том, что ко всем проблемам прибавилась еще одна — на The Pirate Bay перестали появляться новые торренты. За прошедшие выходные на ресурсе никто ничего не выложил, что довольно странно.
                    Читать дальше →
                  • Я растерял веру в разработку, выгорел, но меня спас культ инструмента



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

                      Уколы в адрес технологий разрабы воспринимают на свой счет. Культ инструмента — очень странная штука, которую не объяснить логически. Одни говорят, что культ есть у всех, потому что мышление плотно сплетается с япом. Другие говорят, это джунироская болезнь — ты впервые что-то написал, оно получилось, от восторга ты посчитал свой яп чудом божьим.

                      Чем бы оно ни было, я эту фигню не понимал никогда.

                      Сторонники культов кажутся мне непроходимыми тупицами. А я всегда пытаюсь понять, как тупицы стали тупицами, и почему тупицей не стал я. Начал думать и бам! — понял, что все-таки стал. Я тупица-культист, который восхваляет F#. И конечно за этим есть история.
                      Читать дальше →
                    • Решение суда США: власти не имеют права заставлять человека разблокировать телефон пальцем или лицом



                        Власти США не могут заставить гражданина разблокировать телефон, защищённый биометрическими методами, такими как сканирование лица (типа Face ID) или сканирование пальца (Touch ID и проч.). Хотя биометрическая защита легко поддаётся взлому, но сам пользователь имеет полное право отказаться от участия в этой процедуре и никто не может его принудить. Такое решение 10 января 2019 года приняла федеральный судья в Окленде, Калифорния.

                        Ранее было принято решение, что Пятая поправка распространяется на пароли и пинкоды: разглашение пароля приравнивается к самооговору. Но полиция считала, что всё равно может брать палец или использовать лицо подозреваемого для разблокировки телефона. Теперь все методы аутентификации уравнены в правах: любое принуждение человека к разблокировке телефона запрещено Пятой поправкой, которая защищает от дачи показаний против себя. Аналогичная статья есть в Конституции РФ.
                        Читать дальше →

                      Самое читаемое