Search
Write a publication
Pull to refresh
4
0

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

Send message

14 крутых онлайн-сервисов для создания чат-ботов

Reading time10 min
Views175K

Чат-бот – хороший способ автоматизировать коммуникацию с пользователями в любом бизнесе. От саппорта и справочной функции до маркетинга и прямых продаж – со всеми этими задачами чат-боты хорошо справляются и показывают неплохие результаты. 

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

Читать далее

Дизайн API в С++

Level of difficultyHard
Reading time26 min
Views26K

В этом году на C++ Russia я рассказывал про API дизайн. Эта статья — пересказ и переосмысление моего доклада.

То, что я здесь расскажу, основано на моем личном опыте — про API дизайн я думаю уже лет 15, с того момента как в 2008м начал читать ревью библиотек на входе в boost (кстати, всем рекомендую).

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

Читать далее

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android

Level of difficultyMedium
Reading time10 min
Views22K
image

Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно запустить только простые службы без какого-либо интерфейса. Однако, есть один способ писать практически под «голый» Linux, не перекомпилируя ядро и при этом пользоваться самыми интересными фишками устройства без оверхеда в виде тяжелого Android: ускорение 3D-графики (OpenGLES), микшер звука, ввод с различных устройств, OTG, Wi-Fi и если очень постараться — даже 3G. Это открывает множество разных интересных применений старым устройствам: «железо» смартфонов зачастую гораздо мощнее современных недорогих одноплатников. Сегодня я покажу вам, как написать и запустить программу, которая полностью написанное на C без Android, на No-Name Android-смартфоне практически без модификаций. Интересно? Жду вас в статье!
Читать дальше →

Оптимизация на примере. Имитационный отжиг против муравьиного алгоритма. Часть 1

Reading time11 min
Views28K
Всем доброго времени суток. Недавно прочитал статью про имитационный отжиг на примере задачи коммивояжера. Картинка до и после оптимизации вызвала интерес. Чем-то подобные вещи заманивают.Также в комментариях заметил, что людям было бы интересно посмотреть на сравнение с другими видами оптимизации.


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

Бардак в идеальном мире. Часть 2

Level of difficultyMedium
Reading time31 min
Views11K

Современная теория хаоса — это большая и хорошо разработанная область математики, уже прочно вошедшая в набор современных инструментов естествознания. Многие результаты теории динамического хаоса, такие как странные аттракторы, бифуркационные диаграммы, фрактальные области притяжения, разобраны популяризаторами математики на плакаты, мемы и открытки. В этой мини‑серии статей я хочу копнуть немного глубже стандартных введений и «альбомов» с симпатичными картинками и дать пример разбора одной несложной, но ещё не «заезженной» механической системы, которая демонстрирует механизмы возникновения хаоса в гамильтоновых системах.

Предупреждаю, в тексте достаточно много анимированных картинок и не очень много практической пользы :)

Читать далее

Бардак в идеальном мире. Часть 1

Level of difficultyMedium
Reading time14 min
Views30K

Откуда берëтся динамический хаос в простейших механических системах? Как его изучать? А это настоящий хаос или просто что-то очень сложное?

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

Это пример небольшого исследования, доступного студентам младших курсов, поэтому я позволю себе привести некоторые подробности анализа, которые искушённому читателю могут показаться излишними. Моя задача показать, что даже очень простые системы могут быть очень интересными, красивыми и доступными для глубокого анализа. И, конечно же, это повод показать симпатичные картинки, как правило, фрактальные. Ведь все же любят фракталы, верно? Ну, поехали!

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 1

Reading time8 min
Views17K

Квантовые компьютеры. С точки зрения традиционного программиста-математика.
Часть 1. Основы. Квантовый регистр.

О чем эта публикация

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

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

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

Читать далее

Сам себе игровая консоль: как я сделал свой «тетрис» с нуля. Что происходит, когда программист встречается с железом?

Level of difficultyMedium
Reading time8 min
Views12K
image

Я, как и многие мои читатели, очень люблю игры. Уже довольно обширное число моих статей было посвящено ремонту и моддингу самых разных игровых консолей — как китайских «нонеймов», так и брендовых PSP и PS Vita! Однако, меня тянет к железу не только желание отремонтировать и поставить в строй «устаревшие» девайсы, но и мания делать и созидать что-то своё! А ещё я очень люблю программировать игры и графику сам. Недавно я загорелся идеей разработать с нуля свой портативный «тетрис»: от схемы и разводки платы, до написания прошивки и игр под нее. Что получается, когда программист, который поставил электронику практически во главе своей жизни, пытается сделать свое устройство? Читайте в статье!
Читать дальше →

Доказана омнипериодичность игры «Жизнь» Конвея

Level of difficultyEasy
Reading time12 min
Views20K

Сообщество игры "Жизнь", клеточного автомата, изобретённого Джоном Конвеем, с давних пор стремилось найти осцилляторы — стабильные конфигурации, которые повторяются с определённой периодичностью во времени — для каждого натурального числа. И вот, наконец, 21 июля 2023 года был найден осциллятор для последнего недостающего периода — 41, завершая таким образом доказательство омнипериодичности.

В этой статье я расскажу историю открытия осцилляторов для всех периодов до 42 включительно, а также про семейство осцилляторов, включающее любой период от 43 и выше.

Читать далее

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

Level of difficultyEasy
Reading time16 min
Views8.5K

По мере развития технологий в мире появляется все больше различных технологических алгоритмов. Часть из названы в честь ученых, имеющих отношение к их разработке, другая часть имеет простые (или не очень простые) «сухие» названия или же забавные наименования, например, коктейльная сортировка (Cocktail shaker sort), в русском языке называемая просто — «сортировка перемешиванием». Сегодня поговорим про алгоритмы, названные в честь различных представителей животного мира.

Читать далее

Небольшой логгер стека вызовов для C++

Reading time5 min
Views24K

На написание этого топика меня сподвиг топик "Какие кодотрюки вы знаете?", и я хотел было поделиться данным логгером там, но автор просил «без фанатизма», и желал видеть такие трюки, на понимание которых требуется не больше пяти-десяти секунд, поэтому я решил вынести это дело в отдельный топик, т.к. по-быстрому такое взглядом не окинешь.

Будет рассмотрен небольшой, но иногда довольно полезный класс, плюс небольшой трюк с макросами, позволяющие проводить первичный анализ стека вызовов (call stack) прямо в stdout, в процессе работы программы. Разумеется, на stdout свет клином не сошёлся, и можете перенаправить хоть в файл, хоть куда-нибудь ещё — я лишь демонстрирую общий принцип.

Сразу договоримся:
  1. злоупотребление макросами — зло
  2. ничего нового и сверхъестественного в данной статье нет, она будет понятна даже новичку (на них и рассчитана)
  3. данный приём мало применим (или вообще не применим) в многопоточной среде
  4. реализация не претендует на идеальность, полноту, и уж тем более уникальность
  5. данный приём ни в коем случае не заменяет, а лишь дополняет дебаггер

Но если при написании программы вы не раз писали что-то вроде printf(«Entering Foo()\n»); для мониторинга входа в ту или иную функцию, то вы пришли как раз по адресу.
Поехали!

Пишем виртуальную машину (интерпретатор) простого байткода + JIT компиляция

Reading time11 min
Views9.3K

На Хабре есть две статьи, автор которых пишет виртуальную машину для исполнения простого байткода, а потом применяет различные оптимизации для ускорения этой виртуальной машины. Кроме того, есть и компилятор простого С‑подобного языка в этот самый байткод. Ознакмившись со статьями и этим компилятором, я подумал, что будет интересно изучить, как написать виртуальную машину этого языка, которая сможет делать JIT‑компиляцию байткода с помощью библиотеки libjit. Опыт этого я и описываю в настоящей статье. В интернете есть статьи, описывающие испльзование этой библитеки, но все, что я видел, описывают генерацию машинного кода с помощью libоit для конкретных программ, а не произвольного байткода: есть официальный tutorial, серия статей и ещё серия сравнений на Хабре.

Весь мой код приведён в моём репозитории.

Читать далее

Одноплатный компьютер с 3G «за косарь». Что Orange Pi предлагает по цене ящика пива?

Level of difficultyMedium
Reading time9 min
Views24K
image

Каждый год выпускается с десяток новых моделей одноплатных компьютеров. Свежие девайсы представляют как старые и уважаемые фирмы по типу Raspberry Pi, Orange Pi или Banana Pi, так и относительные новички на рынке — Repka Pi, или, например, Lctech Pi. Одноплатники работают на достаточно большом парке железа: кто-то использует чипы AllWinner, кто-то Amlogic, кто-то Broadcom, а кто-то… мобильные! Пару лет назад Orange Pi отличились выпуском нескольких одноплатников на базе чипсетов очень бюджетных мобильников 2013-2015 годов — 2G IoT и 3G IoT. На данный момент, выпуск 3G IoT завершен, а компания предлагает купить абсолютно новый одноплатник с 3G, Bluetooth, Wi-Fi, GPS, поддержкой Linux и Android всего за 1.000 рублей (500 само устройство и 500 доставка). На что оно способно и стоит ли его брать — узнаем в статье!
Читать дальше →

Как вывести форматированный текст на экран в C++

Level of difficultyMedium
Reading time4 min
Views11K

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

Но как сделать это оптимально и кроссплатформенно? Читайте в нашей статье!

Читать далее

В {n} раз быстрее Си

Level of difficultyHard
Reading time13 min
Views39K

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

Эта статья публиковалась на главной странице HackerNews, и к её обсуждению вы можете присоединиться здесь.
Читать дальше →

Создание своей библиотеки на Rust: от cargo init до cargo publish

Level of difficultyEasy
Reading time4 min
Views4.9K

Приветствую, растиане, сегодня мы поговорим о сборке и публикации собственного крейта на crates.io.

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

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

Читать далее

«Иной путь» Джона Кармака к общему искусственному интеллекту. Часть 1

Reading time6 min
Views4.1K

Культовый разработчик игр, ракетный и VR инженер Джон Кармак переключился на новое амбициозное испытание: разработку общего искусственного интеллекта — формы искусственного интеллекта, которая выйдет за рамки имитации человеческого интеллекта и перейдёт к пониманию сути явлений и решению проблем. Кармак считает что к 2030 году есть 60% шанс достижения начального успеха в разработке общего искусственного интеллекта (ОИИ). В этом интервью вы узнаете о том, как и почему он работает независимо, над тем чтобы это случилось.

Читать далее

Вычислительная сложность некоторых игр и головоломок (часть 2)

Level of difficultyEasy
Reading time14 min
Views3.7K

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

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

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

Читать далее

Действующий процессор на 13 микросхемах стандартной логики

Level of difficultyMedium
Reading time7 min
Views24K


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

Действующая модель называется "TD4 CPU", является проектом с открытыми исходниками, реально работает и позволяет понять устройство и принцип работы процессора.
Читать дальше →

PopStick: одноплатный ПК на Linux в формфакторе флешки за $29. Что он умеет?

Reading time3 min
Views29K
image

Компания Popcorn Computer представила свою новую разработку — одноплатный ПК PopStick. Его формфактор похож на флешку, а сам девайс полностью открытый, включая как софт, так и «железо». Конечно, рекордов производительности он не бьет, но для определенных задач это отличный вариант. Стоимость девайса при этом — всего $29. Подробности — под катом.
Читать дальше →

Information

Rating
7,453-rd
Registered
Activity