Так себе программист
97 subscribers
192 photos
7 videos
1 file
185 links
Меня зовут Александр Троценко. Разработчик, преподаватель, к.т.н. Пишу о программировании и профессии.

10 лет в разработке desktop на C/С++

Контент: https://taplink.cc/atrotsenko
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Гонка данных или состояние гонки

Оба термина относятся к многопоточному программированию и обозначают тип ошибки.

Состояние гонки (race condition) — это общая проблема, когда поведение программы зависит от того, в каком порядке потоки выполняют свои операции.

Гонка данных (data race) — это состояние гонки, при котором несколько потоков одновременно обращаются к одной и той же переменной, и хотя бы один из них пытается в нее что-то записать.

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

—

Ранее в сериале #Словарь : Корректное или принудительное завершение работы
👍2
Что ж, структуры данных мы еще не угадывали. Пробуем 👇
👀 Один я здесь вижу, что чел пашет в своем GitHub как бешеный, отдыхая лишь иногда по воскресеньям?
🤣7
Зачем нужны UML диаграммы?

Честное слово, студенты никогда не дадут мне засохнуть 😊👇

Зачем рисовать ваши схемы, если можно сразу писать код? Бюрократия какая-то!


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

Читать статью: https://mediocre-developer.ru/zachem-nuzhny-uml-diagrammy

Кстати, вы как считаете, UML - это норм 👍 или стрем 👎?
👍7👎1
#include <iostream>

template <typename T>
class Animal {
public:
void speak() {
static_cast<T*>(this)->sound();
}
void sound() {
std::cout << "Ops!";
}
};

class Cat : public Animal<Cat> {
public:
void sound() {
std::cout << "Meow!";
}
};

class Dog : public Animal<Dog> {
};

int main() {
Cat cat;
cat.speak();
Dog dog;
dog.speak();
return 0;
}
🙏3
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
65%
Meow!Ops!
5%
Ops!Ops!
10%
Meow!
20%
Ошибка сборки
👏4
Графический интерфейс в PlantUML

Видели, что в PlantUML можно создавать схемы графических интерфейсов?

На днях попробовал собрать там схему новой вкладки для YouTube Analyzer (на картинке выше). Резюмируя, инструмент вполне юзабельный. Учитывая время на изучение, на все про все я потратил чуть больше часа.

Кому-то может показаться, что схема слишком далека от реальности. Но схема на то и схема. Здесь важен тип элементов и их взаимное расположение.

Для таких схем я обычно использовал drawio, либо просто рисовал их от руки. Теперь в арсенале будет еще и PlantUML.

В комментах оставлю код схемы с картинки.
👍5
#include <iostream>

int main() {
int a[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int* aPtr = &a[1][1];
std::cout << aPtr[0]
<< aPtr[1]
<< aPtr[2];
return 0;
}
🤯4
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
14%
456
33%
567
29%
123
24%
147
🙏3
Путаница в интерфейсах (часть 7)

Открываю настройки в Яндекс Книгах (слева), чтобы что-то переключить и... начинаю всматриваться, что тут вообще включено, а что нет.

Так много переключателей и так мало контраста. Визуально почти не отличить.

А ведь можно же и по-другому. В Яндекс Музыке (справа) с этим никаких проблем 👍

—

Ранее в сериале Путаница в интерфейсах (часть 6)
👍4❤1
#include <iostream>

int main() {
const int factors[6] = {4, 4, 7, 1, 7, 19};
int val = 0;

for (int i = 0; i < 6; ++i) {
val += factors[i];
std::cout << val << " ";
}

return 0;
}


Для ленивых подсказка на картинке 👇
😁2
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
17%
4 4 7 1 7 19
78%
4 8 15 16 23 42
6%
4 8 11 13 22 26
0%
4 11 8 8 26 23
Хронологическая организация документации

Вдохновился статьей Isaac Lyman "Documents: The architect’s programming language" и запилил главную мысль на карточках. Ну, то есть главную мысль для меня. Для вас главная мысль может быть другая 🤓

Рекомендую пробежаться по самой статье, если работаете с документацией (а кто ж с ней не работает то).

—

P.S. Прорыв, я научился делать карточки! Как вам?
👍 - норм, еще
👎 - не, лучше текст
👍8