• Как клеить по 13 девушек в час, используя машинное обучение и Tinder

      *Исключительно ради изучения Machine Learning, разумеется. Под немного недовольным взглядом любимой жены.

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

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


      Читать дальше →
    • SwiftUI по полочкам

      Каждый раз, когда в языке программирования появляется новый Фреймворк, рано или поздно, появляются люди, которые изучают язык именно с него. Вероятно так было и в IOS разработке во времена появления Swift: поначалу он рассматривался как дополнение к Objective-C — но я этого уже не застал. Сейчас, если начинаешь с нуля, выбор языка уже не стоит. Swift вне конкуренции.

      То же самое, но в меньшем масштабе, происходит и с фреймворками. Появление SwiftUI — не исключение. Вероятно, я — представитель первого поколения разработчиков, кто стартовал с изучения SwiftUI, проигнорировав UIKit. У этого есть своя цена — обучающих материалов и примеров работающего кода пока очень мало. Да, в сети уже есть некоторое количество статей, рассказывающих о той или иной особенности, том или ином инструменте. На том же www.hackingwithswift.com уже довольно много примеров кода с объяснениями. Однако, они слабо помогают тем, кто решил изучать SwiftUI с нуля, как я. Большинство материалов в сети — это ответы на конкретные, сформулированные вопросы. Опытный разработчик легко разберется, как все устроено, почему именно так, и зачем это нужно применять. Новичку же, сначала нужно понять, какой вопрос задать, и только тогда он сможет добраться до этих статей.



      Под катом я попробую систематизировать и разложить по полочкам то, что сам успел усвоить на текущий момент. Формат статьи — почти гайд, хотя скорее, шпаргалка, составленная мной в том виде, в котором я сам бы хотел ее прочитать в начале своего пути. Для опытных разработчиков, еще не вникавшим глубоко в SwiftUI, тоже найдется пара интересных примеров кода, а текстовые пояснения можно читать по-диагонали.

      Надеюсь статья поможет вам сэкономить некоторое время, когда вы тоже захотите ощутить немного магии.
      Читать дальше →
    • Политкорректность проникает в Россию через книги про проектирование чипов на SystemVerilog для не-начинающих

        Наконец-то в России вышел учебник по SystemVerilog уровнем выше чем для начинающих. Учебник описывает технологии и приемы, которые спрашивают на интервью в NVidia, Intel, AMD, Apple и другие электронные компании: использование concurrent assertions и functional coverage, что сейчас требуют не только от инженеров по верификации, но и от дизайнеров микросхем; алгоритм работы симулятора с дельта-циклами; вменяемое объяснение static timing analysis; схемы коммуникации аппаратных блоков через аппаратные очереди; реализацию этих коммуникаций с помощью конечных автоматов с трактами данных и т.д.

        В главе про последнее российского читателя может озадачить упоминание «политкорректной системы». Что бы это значило? Это вероятно намек на казус, который произошел в округе Лос-Анжелес в 2003 году. Чиновники Лос-Анджелеса попросили производителей, поставщиков и подрядчиков прекратить использование терминов «master/slave» («хозяин» и «раб») в отношении компьютерного оборудования, так как одному из работников округа эти термины напомнили про рабовладельческое прошлое.

        Сейчас авторы технической литературы избегают терминов master/slave. В современной Америке работают и афро-американские инженеры (например София Мвокани из Камеруна — на фото слева), и использование старых терминов выглядит архаично, как выглядели бы например термины «пан/холоп» в украинской технической литературе вместо принятых «провідний/ведений» (рус. «ведущий/ведомый»).

        Это не первый раз, когда в российском электронном образовании появляется тема борьбы афро-американцев за гражданские права. Например Татьяна Волкова, известный специалист по образованию в электронике, носит маечку с эмблемой «Черных Пантер», калифорнийского движения, которое в свое время сочло мирный протест недостаточным, и занялось вооруженным протестом.



        Полное изображение эмблемы под кожанкой Татьяны Александровны — под катом, но в основном я буду рассказывать про дельта-циклы и конечные автоматы:
        Читать дальше →
      • Что почитать проектному менеджеру: книги про управление персоналом, soft skills и DevOps

          Мы в «ИТ Гильдии» уделяем особое внимание вопросам управления проектами и помогаем другим компаниям внедрять инструменты, которые оптимизируют работу в IT-отделах.

          Сегодня мы собрали несколько полезных книг для PM’ов. В подборку вошла литература, которую рекомендуют к прочтению в тематических тредах на Hacker News, Reddit и Quora.

          Читать дальше →
          • +14
          • 13.1k
          • 1
        • Очень много YouTube-каналов для прокачки английского языка для программистов

          • Tutorial
          Привет, Хабр!

          С помощью YouTube можно ощутимо и сравнительно быстро улучшить английский.
          Понимание на слух как минимум. Истина не нова, но мало кто смотрит английский YouTube, потому что легко потеряться в бесконечности каналов. Но для вас я собрал самые стоящие каналы!

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

          Поучить английский


          AJ Hoge. На его канале есть всё: от базовых слов до размышлений о важности языка тела в общении. Чувак пилит видосы уже много лет, материальчик накопился.

          EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
          Читать дальше →
        • Шпаргалка для стажера: пошаговое решение задач на собеседовании Google

          • Translation
          image

          В прошлом году последние пару месяцев я потратил на подготовку к собеседованию для стажировки в Google (Google Internship). Все прошло хорошо: я получил и работу, и отличный опыт.

          Теперь, спустя два месяца после стажировки, я хочу поделиться документом, который использовал для подготовки к собеседованиям. Для меня это было чем-то типа шпаргалки перед экзаменом. Но процесс создания документа и постоянная пошаговая проверка по нему помогли мне запомнить все самое важное.
          Читать дальше →
          • +13
          • 13.9k
          • 1
        • Ищем свободное парковочное место с Python

          • Translation
          image

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

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

          image

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

          Поэтому давайте немного развлечёмся и напишем точную систему уведомлений о свободной парковке с помощью Python и глубокого обучения
          Читать дальше →
        • Интеграция Jira с GitLab

          Цель


          При коммите в git упоминаем в комментарии какую-либо задачу из Jira по имени, после чего происходит две вещи:

          • в GitLab название задачи превращается в активную ссылку на нее в Jira

          • в Jira к задаче добавляется комментарий со ссылками на коммит и пользователя, его совершившего, а также добавляется сам текст упоминания
          Читать дальше →
          • +13
          • 15.2k
          • 5
        • AWS показал Open Source средний палец

          • Translation

          От переводчика: мне кажется, заголовок слегка неточный и на самом деле средний палец показали ребятам из MongoDB, которая теперь не очень то и Open Source.



          Сегодня, Amazon AWS запустил продукт DocumentDB — новую базу данных, совместимую с API MongoDB. Компания описывает DocumentDB так — "быстрая, масштабируемая и отказоустойчивая документная база данных, разработанная так, чтобы быть совместимой с вашими существующими приложениями и инструментами на MongoDB". Фактически, это полная замена MongoDB, развёрнутая в AWS, которая не использует код MongoDB.


          В AWS утверждают, что, хотя MongoDB отлично справляется со своими задачами, их клиентам всё же трудно создавать быстрые и высокодоступные приложения на платформе с открытым исходным кодом, которые смогут масштабироваться до нескольких терабайт и сотен тысяч операций чтения и записи в секунду. Поэтому компания создала свою собственную базу данных документов, но сделала ее совместимой с API MongoDB 3.6, распространяющимся под лицензией Apache 2.0.

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

          Когда твой парень - fullstack


          Когда твой парень — fullstack


          Работая программистом и проживая в пяти минутах ходьбы от офиса, крайне тяжело успеть «отойти» от работы, отойдя от работы.


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


          Как бы не так!


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


          И вот однажды она приходит к тебе и торжественно заявляет:
          — Я готова! Готова учиться программированию! Давай!


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


          О том, как я, не имея никакого практического опыта в обучении, решил ввести в программирование человека, объяснившего, что «ты же умный» и «всё у нас получится», расскажу под катом.


          Добро пожаловать!

          Читать дальше →
        • Telegram на MacOS [предположительно] тоже локально хранит переписку в доступном виде

            image
            Иллюстрация bleepingcomputer.com

            Никогда такого не было, и вот опять…
            Исследователь из США Натаниэль Сачи обнаружил, что приложение Telegram не защищает шифрованием локальную копию переписки пользователя:



            Telegram хранит ваши сообщения в незашифрованной базе данных SQLite. По крайней мере, мне не пришлось прилагать усилия, чтобы найти ключ в этот раз. Хотя [сообщения] довольно трудно просматривать (наверное, надо написать какой нибудь вспомогательный скрипт на python?) — это очень похоже на проблему с Signal


            UPD Информация подается в том виде, в каком она была в первоисточнике и твиттере исследователя.
            UPD 2 Поступил разоблачительный комментарий от Павла Дурова
            Читать дальше →
          • «Яндекс» задумался о защите от поглощений, если Сбербанк разрешит

              В акционерной структуре «Яндекса» могут произойти важные изменения. Как стало известно «Коммерсанту», сейчас Аркадий Волож с топ-менеджерами обсуждают новый манёвр, который позволит защитить компанию от враждебного поглощения.

              Как рассказал источник, близкий к руководству «Яндекса», обсуждаемая структура предполагает, что 60% голосов будет контролировать фонд под управлением основателя Аркадия Воложа и 10–12 топ-менеджеров с российским гражданством. Для этого будут выпущены новые акции класса Б-1, 80% которых получит Волож, а в случае его отхода от дел — сам фонд. У фонда не будет права отчуждать эти акции.

              Но парадокс в том, что такой манёвр требует согласия Сбербанка, которому принадлежит золотая акция «Яндекса» и который является главным кандидатом на враждебное поглощение.
              Читать дальше →
            • Обновление Siri Shortcut

              • Translation


              Помимо анонсов о новый iPad и Mac, Apple также выпустила новую версию для Siri Shortcuts. Приложение впервые было представлено на WWWC и пришло вместе с iOS12 как способ раскрыть потенциал Сири с помощью создания своих команд и макросов. Теперь, приложение умеет делать новые вещи, такие как настройки времени и таймера, получение последнего прогноза погоды и т.д.
              Читать дальше →
            • Курс MIT «Безопасность компьютерных систем». Лекция 14: «SSL и HTTPS», часть 1

              • Translation
              • Tutorial

              Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


              Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

              Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
              Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
              Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
              Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
              Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
              Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
              Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
              Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
              Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
              Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
              Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
              Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
              Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
              Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
              Читать дальше →
              • +15
              • 10.7k
              • 2
            • Самое краткое введение в Reactive Programming

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


                Возьмем такую задачу:
                Есть некий сервис c REST API и endpointом /people. При POST-запросе на этот endpoint'a создается новая сущность. Написать функцию которая принимает массив объектов вида { name: 'Max' } и создают набор сущностей посредством API(по-английски, это называется batch-операция).


                Давайте решим эту задачу в императивном стиле:


                const request = require('superagent')
                
                function batchCreate(bodies) {
                  const calls = []
                  for (let body of bodies) {
                    calls.push(
                      request
                        .post('/people')
                        .send(body)
                        .then(r => r.status)
                    )
                  }
                  return Promise.all(calls)
                }
                

                Давайте, для сравнения, перепишем этот кусочек кода в функциональном стиле. Для простоты, под функциональным стилем мы будем понимать:


                1. Применение функциональных примитивов(.map, .filter, .reduce) вместо императивных циклов(for, while)
                2. Код организован в "чистые" функции – они зависят только от своих аргументов и не зависят от состояния системы
                Читать дальше →
              • Автоматизируем сборку iOS приложений с помощью Fastlane

                • Tutorial

                Как часто нам, iOS разработчикам, приходится собирать приложение для загрузки в iTunes Connect App Store Connect? В процессе этапа активного бета-тестирования приложения нужно оперативно фиксить баги и поставлять обновленную сборку для тестирования. А также необходимо скачивать сертификаты, Provision profiles, прокликивать много разных галочек и кнопочек при каждой выкладке нового билда.


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


                В этом посте я расскажу: что такое fastlane и как быстро начать его использовать в своих iOS проектах.

                Читать дальше →
              • Apple блокирует возможность независимого ремонта новых моделей MacBook



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

                  В США относительно недавно была одержана небольшая победа сторонников «права на ремонт». Но корпорации все равно берут свое. Например, Apple закрывает возможность независимого ремонта новых моделей Macbook. Эта информация была получена журналистами Motherboard из внутренней документации Apple, которая попала в руки представителей СМИ.
                  Читать дальше →
                • Написать Telegram клиент — легко


                    Чем отличается Telegram от других популярных мессенджеров? Он — открытый!
                    Другие мессенджеры тоже имеют API, но почему-то именно телеграм известен как наиболее открытый из самых популярных?


                    Начнем с того, что у Telegram действительно полностью открытый клиентский
                    код. К сожалению, мы не видим комиты каждый день прямо на GitHub, но у нас есть код под открытой лицензией. Архитектура Telegram подразумевает, что и Bot и API имеет практически такие же методы — https://core.telegram.org/methods.


                    На самом деле, Telegram представляет не просто чат-мессенджер, а социальную платформу, доступ к которой открыт для разного рода приложений. Они могут предоставлять дополнительные фишки пользователям, взамен используя готовую сеть пользователей и сервера для доставки сообщений. Звучит настолько привлекательно, что нам захотелось попробовать написать своего "клиента" для Телеграм.

                    Читать дальше →
                  • Курс MIT «Безопасность компьютерных систем». Лекция 9: «Безопасность Web-приложений», часть 3

                    • Translation
                    • Tutorial

                    Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


                    Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

                    Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
                    Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
                    Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
                    Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
                    Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
                    Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
                    Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
                    Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
                    Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
                    Читать дальше →
                  • Познакомьтесь с анархистами, самостоятельно делающими лекарства

                    • Translation

                    «Уксусный коллектив четырёх воров» – сеть анархистов, опирающихся на технологии, и бросающих вызов гигантам фарминдустрии при помощи самостоятельно изготовленных лекарств




                    Впервые я познакомился с Майклом Лофером, когда он швырялся в аудиторию хакерской конференции HOPE (Hackers on Planet Earth), проходящей раз в два года в Нью-Йорке, лекарствами на тысячи долларов.

                    «Кто-нибудь из присутствующих переживал анафилактический шок, не имея доступа к эпинефрину?» – спросил Лофер у аудитории. Поднялось несколько рук, и Лофер швырнул одному из поднявших руку людей изготовленную в домашних условиях EpiPen [похожее на шариковую ручку устройство для самостоятельных инъекций адреналина / прим. перев.]. «Это одно из первых сделанных нами устройств, — сказал он. – Используйте его с умом».

                    Немного позлорадствовав насчёт того, как Мартин Шкрели из племени фармацевтических гигантов поднял цены на препарат дараприм, необходимый для людей, страдающих от ВИЧ, с $13 до $750, Лофер посерьёзнел. «Прошло два года, но несмотря на всё произошедшее, стоимость препарата дараприм не поменялась», — сказал он. Он залез в карман и достал пригоршню белых таблеток. «Думаю, надо раздать ещё немного», — сказал Лофер, и швырнул дараприм в аудиторию.
                    Читать дальше →