• Мега-Учебник Flask, Часть XIV: Ajax

    • Tutorial

    (издание 2018)


    Miguel Grinberg




    Туда Сюда


    Это четырнадцатая часть Мега-Учебника Flask,k, в которой я собираюсь добавить функцию перевода текста в реальном времени, используя службу перевода Microsoft и немного JavaScript.

    Читать дальше →
    • +7
    • 12,6k
    • 3
  • Обобщаем анимацию таблиц в iOS приложениях

    image

    Пользователи хотят видеть изменения


    Анимированное обновление списков всегда было непростой задачей в iOS. Что неприятно, это всегда было рутинной задачей.

    Приложения крупных компаний, таких как Facebook, Twitter, Instagram, VK, используют таблицы. Более того, почти каждое iOS приложение написано с использованием UITableView или UICollectionView и пользователи хотят видеть, что изменяется у них на экранах, по этой причине reloadData не подходит для обновления экрана. Посмотрев несколько уже имеющихся фреймворков для данной задачи, я удивился, как много они в себе обобщают, помимо расчета анимаций. Некоторые же вообще при вставке одного элемента в начало, радостно сообщали о перемещениях всех остальных элементов.

    Начав решать проблему обобщения построения и запуска анимаций, я ещё не понимал такого количества наличия подводных камней в дебрях UIKit. Но обо всём по порядку.
    Читать дальше →
  • Data Science: Про любовь, имена и не только

    Что значит имя? Роза пахнет розой,
    Хоть розой назови ее, хоть нет.

    • Шекспир "Ромео и Джульетта" (пер. Пастернака)

    Ромео и Джульетта


    Данная статья не может служить поводом для выражения нетолерантности или дискриминации по какому-либо признаку.


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


    Это примерно все равно, что сказать: вероятность быть сбитым машиной, если тебя зовут Сережа, выше, чем если бы тебя звали Костя! Звучит довольно дико, не правда ли? Ну, как минимум, ненаучно. Однако социальные сети сделали возможным сравнительно просто проверить приведенное выше утверждение.


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

    Читать дальше →
  • Эффективный расчёт области видимости и линии взгляда в играх

    • Перевод
    image

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

    image

    Имея параметры видимости наблюдателя (направление взгляда, расстояние видимости и угол поля зрения), нам нужно найти видимую для него область, т.е. определить область видимости (field of view, FoV). Если препятствия отсутствуют, это будет сектор круга, состоящий из двух граней (радиусов) и соединяющей их дуги (см. Рис. 1). Кроме того, имея заданную точку мира, мы должны быстро определить, видима ли она для наблюдателя, т.е. необходимо обрабатывать запросы линии взгляда (line of sight, LOS) для заданной точки. Обе эти операции можно выполнить достаточно эффективно для использования при рендеринге в реальном времени.
    Читать дальше →
  • 27 open-source ништячков для iOS разработчика

    • Перевод
    В портфолио компании EDISON Software есть 8 проектов, связанных с разработкой под Android и 4 крупных проекта, связанных с разработкой под iOS:


    Хотим поделиться с вами полезной подборкой open-source библиотек для iOS разработчика.

    1. DZNEmptyDataSet


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

    С этой библиотекой вам необходимо всего лишь соответствовать определённым протоколам и iOS сама позаботиться о просмотре коллекций и выделит необходимое особым шрифтом, в виде красивых сообщений для пользователя. Элементарное решение для каждого проекта под iOS.

    image


    Читать дальше →
    • +17
    • 18,7k
    • 9
  • Собираем DJI f450 или почему я не купил Phantom 3

      Немного истории. Квадрокоптер типа f450 у меня уже около 3х лет. За все это время на нем поменялись 3 комплекта двигателей, 2 комплекта регуляторов и пропеллеров: от дешевых turnigyдо t-motor. Но в итоге, после выхода комплекта E300 от DJI, я остановился именно на них. Этот набор* вместе с рамой я заказал с ebay.


      Читать дальше →
    • Ваш wi-fi расскажет мне, где вы живёте, где работаете и где путешествуете


        Москва вайфайная

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

        Пробы WiFi


        Чтобы соединиться с уже известными сетями, которые не сообщают о своём присутствии, все ваши мобильные устройства отправляют пробные пакеты, чтобы найти известные им сети. Эти пакеты можно перехватить, когда телефон включается, или когда он отсоединяется от сети. Для этого используются обычные инструменты — airodump / tcpdump. Пример:

        # airodump-ng -w wifi-dump wlan0
        # tcpdump -n -l -e -r wifi-dump.cap |
            grep 'Probe Request ([^)]'
        


        Вывод содержит время, MAC-адрес устройства и имя сети. Пример:

        16:32:26.628209 BSSID:ff:ff:ff:ff:ff:ff DA:ff:ff:ff:ff:ff:ff SA:50:ea:d6:aa:bb:cc
            Probe Request (SUBWAY) [1.0 2.0 5.5 11.0 Mbit]
        


        То бишь, устройство 50:ea:d6:aa:bb:cc проверяло, есть ли сеть SUBWAY в пределах доступности.

        Ну и что тут плохого?


        Ну испускают они эти пакеты с именами сетей. Подумаешь.
        Читать дальше →
      • Пробуем Xcode Live Rendering

          Как вы знаете, в Xcode 6 и iOS 8 SDK Apple добавила возможность рендеринга кастомных компонентов и редактирования их свойств прямо в стандартном Interface Builder (здесь должно быть едкое упоминание о том, что это было еще в Delphi древних версий).

          Основы


          Для начала нам понадобится какой-то самодельный наследник UIView, чтобы заставить Xcode рендерить его в Interface Builder. Для этого его нужно пометить атрибутом IB_DESIGNABLE (технически в Objective-C это макрос, ну раз Apple называет это атрибутом, и в Swift это атрибут, так тому и быть):
          IB_DESIGNABLE
          @interface XXXStaticPriceView : UIView
          
          @property (nonatomic, copy) IBInspectable NSNumber *price;
          @property (nonatomic) IBInspectable NSUInteger amount;
          @property (nonatomic) IBInspectable NSNumberFormatterRoundingMode roundingMode;
          
          @property (nonatomic, getter = isHighlighted) IBInspectable BOOL highlighted;
          
          @property (nonatomic, copy) IBInspectable UIColor *textColor;
          @property (nonatomic, copy) IBInspectable UIColor *outlineColor;
          
          @end
          

          Теперь можно создать storyboard (или xib) и разместить там наш view, и Xcode должен будет его успешно отобразить (предварительно собрав проект):

          Читать дальше →
        • Встраиваем Touch ID в iOS приложение



          Вступление


          Начиная с iOS 8 Apple открывает доступ к возможности использования технологии Touch ID (аутентификации с помощью сканера отпечатков пальцев, встроенного в iPhone 5s) в сторонних приложениях. В связи с этим я хотел бы поделиться с вами подробной информацией о том, что же именно стало доступно разработчикам, как это встроить в свое приложение, каким поведением это обладает, а также поделиться удобной «оберткой», которая реализует наиболее, на мой взгляд, вероятный сценарий использования Touch ID.
          Читать дальше →
        • Анализ дружеских связей VK с помощью Python. Продолжение

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



              Micromouse — это конкурс для маленьких роботов-мышей по поиску пути в центр лабиринта размером 16х16 ячеек. Мероприятие популярно во многих странах, особенно в Великобритании, Японии и Южной Корее. Лабиринт представляет собой сетку из квадратов по 16 штук в длину и ширину, каждый квадрат имеет размеры стен 18 см. и высотой 5 см.
              Читать дальше →
            • Правильные барабаны для выбора времени

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

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

                А сегодня я расскажу о то, как сделать качественный барабан выбора времени для этого приложения. Эти же принципы можно применить на любые другие барабаны-выбиралки.
                Читать дальше →
              • Написание покерного бота

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

                В данной статье полных исходных кодов не будет, только теоретически что и как можно использовать, и некоторые куски функций. Если ты интересуешься этим, тебе не составит собрать все в единую картину и написать свое. Так же не буду учить стратегиям игры, про термины или стратегии а так же правила можно в интернете найти много информации.
                Читать дальше →
              • Логически прозрачные нейронные сети и производство явных знаний из данных

                  В продолжение темы эволюции нейросетей.
                  image
                  Производство явных знаний из накопленных данных — проблема, которая намного старше чем компьютеры. Обучаемые нейронные сети могут производить из данных скрытые знания: создается навык предсказания, классификации, распознавания образов и т.п., но его логическая структура обычно остается скрытой от пользователя. Проблема проявления (контрастирования) этой скрытой логической структуры решается путем приведения нейронных сетей к специальному “логически прозрачному” разреженному виду.
                  Перед каждым исследователем, решившим использовать нейронные сети, встают два вопроса: “Сколько нейронов необходимо для решения задачи?” и “Какова должна быть структура нейронной сети?” Объединяя эти два вопроса, мы получаем третий: “Как сделать работу нейронной сети понятной для пользователя (логически прозрачной) и какие выгоды может принести такое понимание?”
                  Читать дальше →
                • Как я делал телевизор на кухне из Samsung'a ue40c6510uw, WD TV Live и 802.11n

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

                    ТЗ

                    Все очень просто: на кухне должно быть некое устройство, которое показывает фильмы в 720р (идеально 1080р) популярных форматов в популярных контейнерах. Специальных требований 3: выбор звуковой дорожки по запросу пользователя, наличие беспроводного интерфейса (досадный просчет при ремонте затрудняет прокладывание кабеля) и все богатство должно продаваться в этой стране, с ebay и почтой я не дружу.

                    Читать дальше →
                  • Все ходы записаны

                         Я считаю, что одним из главных устройств, которое должно быть в любом автомобиле, является видеорегистратор. Что это такое и для чего он нужен? По большому счету, это небольшая штука, основная задача которой – записывать всё то, что видит водитель в лобовое стекло своего автомобиля. За этот «бесполезный» кусок китайской пластмассы иной раз хотят очень много денег, поэтому многие считают его покупку нецелесообразной, предпочитая купить какой-нибудь сабвуфер. Однако в жизни любого водителя может случиться (тьфу-тьфу-тьфу) такой момент, когда подобное устройство может оказаться единственным спасением – пройдет всего какой-то миг, а видеорегистратор, в отличие от того же сабвуфера, успеет многократно окупиться. От приключений на дороге никто не застрахован, просто одни вздохнут с облегчением, а к другим моментально придет понимание, что регистратор все-таки нужен. Был.

                      image

                      Сегодня под катом – подробный обзор интересной новинки, некоторые рассуждения и немного советов. Ну так, чтобы знать, на что обращать внимание при выборе и чтобы окончательно понять, нужное это приобретение или нет.

                      Читать дальше →
                    • Хранение своего архива фотографий

                      Фотографий становится все больше и больше


                      В последнее время наблюдается «бум» в цифровой фотографии. Мыльница, зеркалка, камера в телефоне или любое другое устройство, способное сделать снимок, есть, пожалуй, у каждого человека. Количество людей увлекающихся фотографией растет с каждым днем. С приходом цифровой фотографии, количество сделанных кадров перестало играть какое-либо значение (это не пленка и сделать лишних 100-200 кадров ничего не стоит). У многих людей есть больших архивы их фотографий и фотографий их друзей, которые никак не структурированы. Поиск нужной фотографии иногда может занимать довольно много времени. Если у вас совсем немного фотографий в личном архиве, то эта статья вряд ли будет вам интересна. Но если у вас несколько тысяч или более снимков, и вы хотите легко ориентироваться в своем архиве, то в эта статья должна быть вам интересна.

                      Читать дальше →
                    • Побеждаем ELMS Delivery Client

                        Сначала объясню, о чем речь.
                        Что такое ELMS? ELMS (e-academy License Management System) — это веб-сайт для распространения ПО, который каждый администратор программы может настроить в соответствии с потребностями своего подразделения. Факультеты-подписчики MSDN Academic Alliance всего мира могут пользоваться ELMS бесплатно, так что ее использование не приведет к дополнительным затратам.

                        Зачем нужна ELMS? ELMS — это основанная на веб-технологиях система управления, упрощающая распространение ПО среди студентов в соответствии с политикой лицензирования программы MSDN AA.
                        Ссылка

                        Основная идея этой системы заключается о том, что пользователь скачивает специальное приложение, которое скачивает установщик лицензионного ПО и разархивирует его. Идея не так чтобы очень хорошая, но на первый взгляд терпимая. Но, как это часто бывает с продуктами Microsoft, всё пошло не так, как надо.
                        Читать дальше →
                      • Семейный бюджет в Google Docs v3

                          C Новым Годом всех, кто не может в праздники без мозговой деятельности и без хабра.
                          Продолжаю полюбившуюся серию постов (раз, два) про теорию и практику ведения семейного бюджета в Google Docs.

                          Я честно вел свой бюджет, написанный в Google docs год назад, и родил новую версию и новую философию (для себя) ведения бюджета. Чем и спешу поделиться.

                          Вступление

                          Я знаю, что есть много специализированных систем для семейного бюджета вроде 4 Конверта или ИзиФинанс, но я люблю все делать сам, ибо это позволяет сделать то, что сам хочешь и своим детищем пользоваться приятнее.

                          Основные преимущества ведения бюджета на Google Docs:

                          1. Можно заполнять откуда угодно (ноутбуки, телефоны, айпады) — с помощью Google forms
                          2. Можно самому разрабатывать логику и визуализацию
                          3. Надежность и почти 100% отказоустойчивость обеспечена корпорацией зла :)

                          Немного философии.

                          Зачем мы начинаем вести бюджет? У каждого есть свои причины: понять, почему за 10 дней до ЗП кончаются деньги; понять, почему долги по кредиткам только растут; понять какие расходы лучше сократить или как накопить денег на новую машину.
                          Многие финансовые системы предлагают нам завести целую уйму статей бюджета и записываться свои расходы в них, не задумываясь, а зачем нам все это. Я в самом начале пошел тем же путем и столкнулся с тем, что расходы почти невозможно анализировать, т.к. часть из них были явно не постоянными (покупка ноутбука или костюма — явно расходы «по необходимости/желанию») и планировать и анализировать их невозможно.
                          Сферический бюджет в вакууме — это две статьи: «приход» и «расход». Каждый день вписываете расходы и доходы и смотрите, что получается. Потом у вас появляются мысли, а что мы хотим анализировать? Кто-то хочет посмотреть, а сколько в итоге уходит денег на авто (бензин, страховка, налоги, ремонт, мойка), кому-то интересно понять, сколько он тратит на развлечения (походы в рестораны, кино, бары).
                          Я советую делить статьи расходов не более чем на 10-15 позиций исходя из того, что вы хотите анализировать в этом году/квартале.

                          Мои статьи расходов выглядят примерно так:
                          image

                          А самое интересное — как это сделать в Гуглодоксах с подробными инструкциями и формулами и примеров — под катом.
                          Читать дальше →
                        • Управление транспортным средством с помощью нейронной сети

                          • Перевод

                          Аннотация


                          Используя нейронную сеть, мы хотим, чтобы транспортное средство управляло собой само, избегая препятствий. Мы добиваемся этого путем выбора соответствующих входов/выходов и тщательного обучения нейронной сети. Мы скармливаем сети расстояния до ближайших препятствий вокруг автомобиля, имитируя зрение водителя-человека. На выходе получаем ускорение и поворот руля транспортного средства. Нам также необходимо обучить сеть на множестве стратегий ввода-вывода. Результат впечатляющий даже с использованием всего лишь нескольких нейронов! Автомобиль ездит, обходя препятствия, но возможно сделать некоторые модификации, чтобы это программное средство справлялось с более специфическими задачами.

                          Введение


                          Идея в том, чтобы иметь транспортное средство, которое управляет собой само и избегает препятствий в виртуальном мире. Каждое мгновение оно само решает, как изменить свою скорость и направление в зависимости от окружающей среды. Для того чтобы сделать это более реальным, ИИ должен видеть только то, что видел бы человек, если бы находился за рулем, так что ИИ будет принимать решения только на основе препятствий, которые находятся спереди транспортного средства. Имея реалистичный ввод, ИИ мог бы быть использован в реальном автомобиле и работать так же хорошо.
                          Когда я слышу фразу: "Управление транспортным средством с помощью ИИ", я сразу же задумываюсь о компьютерных играх. Многие из гоночных игр могут использовать эту технику для контроля транспортных средств, но есть целый ряд других приложений, которые ищут средство управления транспортом в виртуальном или же реальном мире.
                          Так как же мы это будем делать? Существует множество способов реализации ИИ, но ведь если нам нужен "мозг" для управления транспортным средством, то нейронные сети подойдут как нельзя лучше. Нейронные сети работают так же, как и наш мозг. Они, наверное, и будут правильным выбором. Мы должны определить, что будет входом, а что выходом нашей нейронной сети.
                          Читать дальше →