Pull to refresh
0
@TTooLLsread⁠-⁠only

User

Send message

Пишем пасьянс «Косынка»

Reading time8 min
Views26K
Девять лет назад я имел неосторожность приобрести приставку PSP, чему был очень рад. Омрачало радость только отсутствие пасьянса. Не то, чтобы я был любителем пасьянса, но как-то привык я раскладывать один из вариантов — “Косынку”. Пришлось такой пасьянс написать самому. В дальнейшем этот написанный для PSP пасьянс я портировал под Windows и под QNX. В этой вот статье я и расскажу, как написать такую игру.
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments39

Отображение 3D-графики на STM32F407

Reading time4 min
Views13K
Как известно, старшие STM'ки имеют приличные частоты и объёмы ОЗУ. Ну а раз так, то почему бы не запустить 3D-графику на таких контроллерах? Да нет ничего проще!

Демонстрационная картинка
Total votes 23: ↑21 and ↓2+28
Comments66

Простая самодельная VGA видеокарта

Reading time2 min
Views88K
Насколько мне известно, довольно многим интересно подключить микроконтроллер к обычному монитору и попробовать что-либо вывести на экран. В этой статье пойдёт речь о создании простейшей VGA-видеокарты на базе микроконтроллера atmega168-20.
Total votes 90: ↑89 and ↓1+115
Comments109

STM32F103C8T6 — первые шаги. Продолжаем делать осциллограф

Reading time5 min
Views69K
Продолжение статьи. На этот раз попробуем подключить USB без падения частоты измерений и соберём одноканальную аналоговую часть.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments25

Шахматы как динамическая система

Reading time4 min
Views6.7K
image

Предисловие


Существует такой тип людей, для которых исследования и создание сложных и функциональных систем — высшая степень удовольствия. К такому типу можно отнести и меня. Любой целостный объект, обладающий единством всей своей структуры, материального, социального и абстрактного миров обладает системностью: человек, семья (да и любой социальный институт), биосфера, химические вещества и пр. Системность присутствует даже в неявных вещах.

Очень давно, благодаря энтузиазму моего деда, я научился играть в шахматы. Вообще, шахматы — это одна из самых древних синтетических системных моделей, представленных в оболочке настольной игры. В данной статье будет произведен системный анализ шахмат, как детерминированной (предопределенной) системы, а именно: исследование структуры связанных шахматных фигур, интегративного свойства всех фигур и отдельных «изолированных» структур и уровня доминирования на доске как отдельных фигур, так и отдельного цвета (белых или черных).
Читать дальше →
Total votes 9: ↑4 and ↓5+4
Comments18

Знай сложности алгоритмов

Reading time2 min
Views1M
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Total votes 312: ↑296 and ↓16+280
Comments99

Бесплатная трансляция DevOops 2019 и C++ Russia 2019 Piter

Reading time3 min
Views4.2K

image


29-30 октября, то есть уже завтра, состоится конференция DevOops 2019. Это два дня докладов про CloudNative, облачные технологии, observability и monitoring, configuration management и security, и так далее.


Сразу следом за ней, 31 октября — 1 ноября, состоится конференция C++ Russia 2019 Piter. Это очередные два дня хардкорных технических докладов, посвященных C++: concurrency, производительности, архитектуре, инфраструктуре и решению хитрых необычных задач.


Из тридцатки докладов на каждой из конференций вы сможете совершенно бесплатно посмотреть на YouTube доклады первого дня, проводящиеся в первом зале — 6 штук. В той же онлайн-трансляции будут онлайн-интервью между докладами.


Начало трансляции:


  • DevOops: 29 октября, 9:45 утра по московскому времени,
  • C++ Russia: 31 октября, 9:45 утра по московскому времени.

После короткого 15-минутного вступления вы сможете вместе со всеми посмотреть открытие, которое плавно перейдёт в просмотр докладов, а закончится всё ближе к 7 часам вечера. Открывать ссылку именно в 9:45 необязательно — ссылка будет работать весь день, поэтому можно открывать её только на наиболее важных докладах.


Ссылка на сайт трансляции — под катом. Там же есть краткое описание докладов и обсуждение пары вещей, которых на трансляции (даже если купили онлайн-билет) всё-таки не будет.

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments0

Спецификатор constexpr в C++11 и в C++14

Reading time16 min
Views214K
Одна из новых возможностей C++11 — спецификатор constexpr. С помощью него можно создавать переменные, функции и даже объекты, которые будут рассчитаны на этапе компиляции. Это удобно, ведь раньше для таких целей приходилось использовать шаблоны. Но тут все не так просто. У тех, кто не так хорошо знаком с constexpr, может сложиться впечатление, что теперь не будет никаких проблем с расчетами на этапе компиляции. Но на constexpr-выражения наложены серьезные ограничения.

В первой части будет рассказано про constexpr, о том, какие будут изменения в стандарте C++14, а во второй части будет пример использования constexpr: библиотека, которая считает результат математического выражения в строке.
С помощью нее можно будет написать следующий код:
constexpr auto x = "(4^2-9)/8+2/3"_solve;
std::cout << "Answer is " << x;

И ответ в виде дроби будет получен на этапе компиляции:
Answer is 37/24
Сразу предупреждаю, код этой библиотеки сложно понять.
Кому эта тема интересна, добро пожаловать под кат!
Читать дальше →
Total votes 53: ↑52 and ↓1+51
Comments45

История постройки гусеничного робота

Reading time8 min
Views14K
image

Моя история погружения в изучение робототехники и создание робота с помощью 3d принтера. Ошибки, с которыми я столкнулся и что хотел-бы получить в итоге
Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments21

Алексей Савватеев: Как бороться с коррупцией при помощи математики (Нобелевская премия по экономике за 2016 год)

Reading time7 min
Views40K
image

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

image


Оливер Харт и Бенгт Хольмстрём.

Контракт. Что это такое? Я работодатель, у меня несколько сотрудников, я говорю им как будет устроена их зарплата. В каких случаях и что они будут получать. Эти случаи могут включать и поведение их коллег.

Приведу пять примеров. Три из них иллюстрируют, как попытка вмешательства привела к ухудшению ситуации.
Total votes 68: ↑61 and ↓7+54
Comments244

Способ организации коллективного изучения теории в ходе семестра

Reading time6 min
Views2.2K

Всем привет! Год назад я написал статью про то, как я организовывал университетский курс по обработке сигналов. Судя по отзывам, в статье много интересных идей, но она большая и тяжелочитаемая. И я давно хотел разбить её на более маленькие и написать их понятнее.


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


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

Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments22

Вся правда об ОСРВ. Статья #29. Прерывания в Nucleus SE

Reading time17 min
Views1.6K
Все современные микропроцессоры и микроконтроллеры содержат какие-либо механизмы прерывания. Эти механизмы необходимы для обеспечения «отзывчивости», требуемой многими приложениями. Безусловно, отзывчивость и предсказуемость являются основной целью при использовании ОСРВ, но при этом они противостоят друг другу. Использование прерываний может нарушить целостность реального времени ОС. Эта проблема и ее решение были затронуты в одной из предыдущих статей (#4 и #6). В этой статье мы рассмотрим стратегию обработки прерываний, используемую в Nucleus SE. Во всех случаях прерывания НЕ управляются Nucleus SE: они обрабатываются при возникновении согласно приоритету и векторам обычным способом. Время их выполнения просто «крадется» из доступного времени в коде основного приложения и планировщика. Очевидно, из этого следует, что все обработчики прерывания должны быть простыми, короткими и быстрыми.


Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments0

Современный детский технический кружок VS советские СЮТы

Reading time5 min
Views11K
Больше всего полемики под подобными статьями возникает как раз в сравнении старого и нового. Одни говорят о современном капитализме и изменении догм и правил у детей, другие, что с советскими кружками умерла целая эпоха воспитания из детей настоящих инженеров. Попытаемся разобраться, в чём соль вопроса.


Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments66

Как правильно задавать вопросы, если ты начинающий айтишник

Reading time5 min
Views49K
Привет!

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

Давным-давно я прочитал статью 2004-го года авторства Эрика Рэймонда, и всегда в карьере неукоснительно ей следовал. Она довольно большая, и заточена скорее под системных администраторов. Мне же приходится помогать людям, зачастую вообще не имеющим опыта в разработке, стать джуниорами и начать свою карьеру.

Тем, кто уже стал, или еще только мечтает стать начинающим разработчиком, я могу дать следующие рекомендации:

  • Изучайте проблему самостоятельно
  • Сначала сообщайте цель, потом озвучивайте проблему
  • Пишите грамотно и по существу
  • Задавайте вопросы по адресу и делитесь решением
  • Уважайте чужое время
  • Смотрите шире

А теперь подробнее.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments32

Простой сервер на Qt/C++

Reading time3 min
Views126K
В последнее время очень часто приходится слушать определенный порт, получать данные от клиента и отправлять соответствующий ответ. Решил поделиться с новичками, как же создать такой сервер и решить некоторые поставленные вопросы.
В этой статье мы рассмотрим:
— Создание tcp сервера.
— Подключение нескольких клиентов к серверу параллельно.
— Отключение клиентов (отключение сокетов).
— Получение и отправку данных.

Исходники: https://github.com/valualit/QTcpServer01

image

Читать дальше →
Total votes 67: ↑45 and ↓22+23
Comments27

Клиент-серверный чат, используя сокеты Qt/C++

Reading time6 min
Views138K

Предисловие


Статья ориентирована в основном на новичков. Целью ее написания является быстрое и максимально подробное описание сокетов, для начального понимания сети и сокетов. В свое время искал подобную, но нужны были подробные примеры. В стандартном примере fortune server/client, который идет с qt очень плохо показывают возможности сокетов.

Итак, сервер умеет:
  • «Слушать» произвольный адрес, порт
  • Авторизовать клиента по имени
  • Отправлять общие, приватные, серверные сообщения
  • Отправлять список пользователей
Клиент умеет подавать соответствующие запросы серверу.

Для понимания это будут Гуи-приложения:

image

В qt существуют классы QTcpSocket и QTcpServer для работы с сокетами. Используя сигналы и слоты, с ними можно работать в неблокирующем (асинхронном режиме). Это значит, если подключение к серверу занимает заметное количество времени, гуи не блокируется, а продолжает обрабатывать события, а когда произойдет подключение (либо ошибка), вызовется определенный слот (в текущем случае подключенный к сигналу connected()).
Читать дальше →
Total votes 39: ↑21 and ↓18+3
Comments13

Работа с сокетами в Qt

Reading time5 min
Views129K

Введение


image
Как-то несколько лет назад, на одном из форумов, я нашел такую замечательную фразу — «Каждый уважающий себя программист в жизни должен написать свой чат-клиент». Тогда мои знания не позволяли сделать это. Я просто улыбнулся и прошел мимо этой фразы. Но вот совсем недавно я столкнулся именно с данной проблемой — нужно было написать свой чат. Ну а так как последнее время мой интерес был направлен на изучение и разработку Qt-приложений, на чем будет сделан он, решилось само собой.
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments8

Как разрабатываются и производятся процессоры: основы архитектуры компьютеров

Reading time9 min
Views59K
image

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

В этой серии мы расскажем о компьютерной архитектуре, проектировании процессорных плат, VLSI (very-large-scale integration), производстве чипов и тенденциях будущего в области вычислительной техники. Если вам было интересно разобраться в подробностях работы процессоров, то начинать изучение лучше с этой серии статей.

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

Программы, например, операционная система или игра, сами по себе являются последовательностями инструкций, которые должен выполнять ЦП. Эти инструкции загружаются из памяти и в простом процессоре выполняются одна за другой, пока программа не завершится. Разработчики программного обеспечения пишут программы на высокоуровневых языках, например, на C++ или на Python, но процессор не может их понимать. Он понимает только единицы и нули, поэтому нам нужно каким-то образом представить код в этом формате.
Читать дальше →
Total votes 57: ↑54 and ↓3+51
Comments18

Создаём датчик контроля качества воздуха на InfluxDB, Grafana, Docker и Raspberry Pi

Reading time9 min
Views22K
Когда-нибудь думали о мониторинге качества воздуха в доме или за его пределами: там, где живёте и работаете? Этот проект, который мы окрестили balenaSense, представляет собой установку для снятия показаний температуры, влажности, барометрического давления и качества воздуха, а также панель мониторинга, к которой вы можете получить доступ из любого места, чтобы увидеть сводную статистику и отслеживать тенденции.


Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments43

От 5 до 7 и ведерко кофе

Reading time3 min
Views19K
Сколько раз в неделю вы слышите от домашних и коллег слова «хочу выспаться» и «не могу проснуться»? Как часто по утрам вы стонете «Ну еще бы часок!» или «Когда уже пенсия?»

Проблемы, так или иначе связанные со сном, обсуждают на ТВ и в YouTube, на форумах и в пабликах. Говорят об этом и у нас в Plarium Krasnodar. Хотя утренняя очередь к кофемашинам заменяет тысячи слов.

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

Total votes 34: ↑28 and ↓6+22
Comments43

Information

Rating
Does not participate
Registered
Activity