Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
50%
1 2 3
0%
0 2 4
39%
Неизвестно. Неопределенное поведение
11%
Никакой. Ошибка компиляции
Что такое САПР?
В новом видео мы поговорим о САПР — системах автоматизированного проектирования. Сначала вспомним историю и назначение САПР, а потом создадим простую 3D модель в бесплатной программе FreeCAD.
Никакого программирования - чисто пользовательские кейсы, чтобы понять что к чему.
📱 Смотреть на YouTube
📱 Смотреть во ВКонтакте
—
Если видео показалось мало, вот дополнительные материалы:
- Обзор на САПР - хронология развития САПР.
- КОМПАС-3D: Знакомство с САПР - легкое обзорное видео о назначении САПР.
- Краткая история САПР от Autodesk [ENG] - анимация с экскурсом в далекую историю САПР.
- Журнал "САПР и графика" - если хочется быть в курсе новостей.
К теме САПР я буду периодически возвращаться в рамках академической работы. Как своей, так и студентов.
В новом видео мы поговорим о САПР — системах автоматизированного проектирования. Сначала вспомним историю и назначение САПР, а потом создадим простую 3D модель в бесплатной программе FreeCAD.
Никакого программирования - чисто пользовательские кейсы, чтобы понять что к чему.
—
Если видео показалось мало, вот дополнительные материалы:
- Обзор на САПР - хронология развития САПР.
- КОМПАС-3D: Знакомство с САПР - легкое обзорное видео о назначении САПР.
- Краткая история САПР от Autodesk [ENG] - анимация с экскурсом в далекую историю САПР.
- Журнал "САПР и графика" - если хочется быть в курсе новостей.
К теме САПР я буду периодически возвращаться в рамках академической работы. Как своей, так и студентов.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2👍1
Не знаю, как у вас, а у меня регулярные выражения - это отдельный нелюбимый квест. Каждый раз, когда сталкиваюсь с регуляркой, я бегу за справочником и минимум час въезжаю. Въезжаю, чтобы потом опять забыть на полгода-год 🤨
Спасибо еще есть онлайн-инструменты, где можно разобрать, протестировать и даже отладить регулярку. Иначе я не знаю, что бы делал 🤯
А у вас регулярки тоже боль?
Надеюсь, я не один в этом клубе 😁
😁 - да, у меня всё так же
👍 - нет, пишу/читаю без проблем
—
⬇️ Ну и для интереса давайте махнём тестик. Поломаем глаза об эти петроглифы-иероглифы)
Спасибо еще есть онлайн-инструменты, где можно разобрать, протестировать и даже отладить регулярку. Иначе я не знаю, что бы делал 🤯
А у вас регулярки тоже боль?
Надеюсь, я не один в этом клубе 😁
😁 - да, у меня всё так же
👍 - нет, пишу/читаю без проблем
—
⬇️ Ну и для интереса давайте махнём тестик. Поломаем глаза об эти петроглифы-иероглифы)
😁6👍1
Какое регулярное выражение подойдет для строки выше?
Anonymous Quiz
27%
/^([01][0-9]|2[0-3]):([0-5][0-9])$/gm
13%
/^(([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)$/gm
7%
/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/gm
53%
Все подходят
Литералы в C++
В C++ помимо стандартных литералов существуют пользовательские. И это, конечно, здорово, но сначала вспомним, что это вообще за зверь.
Литералы в C++ - это специальные символы, которые помогают нам организовывать константы. Хоть численные, хоть строковые. Например,
Так вот, пользовательские литералы в C++ позволяют создавать свои собственные литералы в виде суффиксов.
Например, можно создать литералы для единиц измерения. Представим, что нам в рамках разработки 🐘ЗооВикипедии🐈 нужно вывести на экран массу слона, кошки и воробья в граммах.
Но кто будет вешать слона в граммах? Слишком много цифр, это не воспринимается.
Спросите кого-нибудь: "Сколько весит слон?". И вряд ли вы получите ответ: "Ну граммов пять миллионов, так, плюс-минус..." 🤔
Поэтому берём литералы и делаем:
👆 Слона мы взвесили в тоннах
Константы выглядят лаконично, а на экран печатаются граммы:
Однако на практике я этой фишкой не пользовался. Можно было бы где-то байты-килобайты прикрутить, но вообще... Даже не знаю.
А вы создавали свои литералы?
👍 - было дело
🤷♂️ - как-то не приходилось
—
Если скучно, можно еще вспомнить
В C++ помимо стандартных литералов существуют пользовательские. И это, конечно, здорово, но сначала вспомним, что это вообще за зверь.
Литералы в C++ - это специальные символы, которые помогают нам организовывать константы. Хоть численные, хоть строковые. Например,
42 - это просто число, а 42L - уже число типа long. Символ L - это литерал.Так вот, пользовательские литералы в C++ позволяют создавать свои собственные литералы в виде суффиксов.
Например, можно создать литералы для единиц измерения. Представим, что нам в рамках разработки 🐘ЗооВикипедии🐈 нужно вывести на экран массу слона, кошки и воробья в граммах.
Но кто будет вешать слона в граммах? Слишком много цифр, это не воспринимается.
Спросите кого-нибудь: "Сколько весит слон?". И вряд ли вы получите ответ: "Ну граммов пять миллионов, так, плюс-минус..." 🤔
Поэтому берём литералы и делаем:
#include <iostream>
// Литерал тонны
constexpr double operator"" _t(long double mass) {
return mass * 1000 * 1000;
}
// Литерал килограмма
constexpr double operator"" _kg(long double mass) {
return mass * 1000;
}
// Литерал грамма
constexpr double operator"" _g(long double mass) {
return mass;
}
int main() {
const double elephantMass = 5.0_t;
const double catMass = 4.2_kg;
const double sparrowMass = 25.0_g;
std::cout << "Elephant mass: " << elephantMass << "g\n";
std::cout << "Cat mass: " << catMass << "g\n";
std::cout << "Sparrow mass: " << sparrowMass << "g\n";
return 0;
}
👆 Слона мы взвесили в тоннах
_t, кошку - в килограммах _kg, а воробья - так уж и быть, в граммах _g. Константы выглядят лаконично, а на экран печатаются граммы:
Elephant mass: 5e+06g
Cat mass: 4200g
Sparrow mass: 25g
Однако на практике я этой фишкой не пользовался. Можно было бы где-то байты-килобайты прикрутить, но вообще... Даже не знаю.
А вы создавали свои литералы?
👍 - было дело
🤷♂️ - как-то не приходилось
—
Если скучно, можно еще вспомнить
inline в С++🤷♂3🔥2👍1
Сегодня много буков, но я в вас верю 😊👇
#include <iostream>
class MyClass
{
public:
MyClass(int value) : m_value(value) {}
MyClass(const MyClass& other) :
m_value(other.m_value)
{
std::cout << "Copy constructor called ("
<< m_value << ")\n";
}
MyClass& operator=(const MyClass& other)
{
m_value = other.m_value;
std::cout << "Assignment operator called ("
<< m_value << ")\n";
return *this;
}
private:
int m_value;
};
int main()
{
MyClass obj1(10);
MyClass obj2 = obj1;
return 0;
}
😁2
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
28%
Copy constructor called (10)
39%
Assignment operator called (10)
17%
Неизвестно. Неопределенное поведение
17%
Никакой. Методы не вызываются
Марсоход без багов?
Вместо сказок на ночь хорошо зашла космическая фантастика про марсоход "Резилиенс". С необычным сюжетом.
Повествование ведется от лица самого марсохода. Инженеры НАСА что-то там в нем напрограммировали, что марсоход начал соображать и даже испытывать эмоции. Но никто этого успешно не заметил, а марсоход никому не сказал: не было нужного интерфейса.
Сюжет пересказывать не буду, сами почитаете 😁
Но вот интересная вещь. В конце книги автор рассказывает, что было выдумкой, а что - фактом. Очень кстати для детской литературы.
Но одну выдумку, на мой взгляд, она пропустила 🧐👇
Марсоход "Резилиенс" питал особенные чувства к своей главной разработчице Рании, потому что она всегда писала код без багов. Да, так и говорил:
или:
Вообще... Вообще мне нравится научная фантастика, но это по-моему перебор) Мегафантастично!
Хотя...
Вы знаете кого-нибудь, кто пишет "четкий код без багов"?
👍 - да, это я
😁 - да, но это не я
🤷♂️ - нет, не попадались
—
📍 Почитать книгу можно бесплатно на НЭБ.Дети: Жасмин Варга - Резилиенс. Марсоход с большим сердцем (2024)
#КнижнаяПолка
Вместо сказок на ночь хорошо зашла космическая фантастика про марсоход "Резилиенс". С необычным сюжетом.
Повествование ведется от лица самого марсохода. Инженеры НАСА что-то там в нем напрограммировали, что марсоход начал соображать и даже испытывать эмоции. Но никто этого успешно не заметил, а марсоход никому не сказал: не было нужного интерфейса.
Сюжет пересказывать не буду, сами почитаете 😁
Но вот интересная вещь. В конце книги автор рассказывает, что было выдумкой, а что - фактом. Очень кстати для детской литературы.
Но одну выдумку, на мой взгляд, она пропустила 🧐👇
Марсоход "Резилиенс" питал особенные чувства к своей главной разработчице Рании, потому что она всегда писала код без багов. Да, так и говорил:
Рания действует строго по схеме. Рания — это ритмичность и надежность. Рания — это стук по клавишам компьютера и выверенные решения с результатами точных вычислений. Рания — это изящно прописанный код без ошибок, которые люди в защитных костюмах называют багами.
или:
Моя система всегда определяет код Рании. Никто не пишет такой четкий код без багов, как Рания.
Вообще... Вообще мне нравится научная фантастика, но это по-моему перебор) Мегафантастично!
Хотя...
Вы знаете кого-нибудь, кто пишет "четкий код без багов"?
👍 - да, это я
😁 - да, но это не я
🤷♂️ - нет, не попадались
—
📍 Почитать книгу можно бесплатно на НЭБ.Дети: Жасмин Варга - Резилиенс. Марсоход с большим сердцем (2024)
#КнижнаяПолка
🤷♂7👍2
Путаница в интерфейсах (часть 6)
Гугло-календарь предложил начать новую жизнь*. Что нажать?
👉 ЗАДАЧА ВЫПОЛНЕНА - это, наверное, значит, что я уже начал новую жизнь.
👉 ДА - это, наверное, значит, что я готов начать здесь и сейчас.
Или не значит. Или не наверное... Не понятно.
А где же НАПОМНИТЬ ЧЕРЕЗ 5 МИНУТ ?
Очень кстати, если сейчас немного занят для новой жизни.
🤨 Короче, тупик.
* ну не то, чтобы прямо предложил, просто пример хороший)
—
Читать Путаница в интерфейсах (часть 5)
Гугло-календарь предложил начать новую жизнь*. Что нажать?
👉 ЗАДАЧА ВЫПОЛНЕНА - это, наверное, значит, что я уже начал новую жизнь.
👉 ДА - это, наверное, значит, что я готов начать здесь и сейчас.
Или не значит. Или не наверное... Не понятно.
А где же НАПОМНИТЬ ЧЕРЕЗ 5 МИНУТ ?
Очень кстати, если сейчас немного занят для новой жизни.
🤨 Короче, тупик.
* ну не то, чтобы прямо предложил, просто пример хороший)
—
Читать Путаница в интерфейсах (часть 5)
😁4👍1
Выше дан код из Интернета. Какой язык программирования используется?
Anonymous Quiz
3%
C++
0%
Assembler
11%
BlueCode
86%
Pascal
This media is not supported in your browser
VIEW IN TELEGRAM
Не храните ссылки!
Ну, по крайней мере не все.
Моя база знаний в Obsidian наполнена кучей ссылок на какие-то статьи, книги, видео и много чего еще.
Ссылок стало так много, что в какой-то момент возник закономерный вопрос:
Зачем я их добавлял?
🤷♂️А я не знаю!
Чтобы узнать, надо заново пересматривать материал по ссылке 😅
Никуда не годится.
Поэтому теперь я пользуюсь супер-шаблоном☝️ , который призывает меня мыслить критически каждый раз, когда я добавляю ссылку в базу!
Да-да, прежде чем сохранить ссылку на что-то, объясните себе будущему на кой ляд она вам сдалась. И произойдет магия: ссылка с высокой вероятностью полетит сразу в топку 😁
—
А вы храните ссылки?
👍 - да
🔥 - нет, я все запоминаю
😁 - нет, зачем мне этот кошмар
А ведь когда-то давным-давно я хранил свои ссылки в закладках браузера. Там сейчас такая помойка! Захожу туда раз в год, если нужно откопать какого-то динозавра)
Ну, по крайней мере не все.
Моя база знаний в Obsidian наполнена кучей ссылок на какие-то статьи, книги, видео и много чего еще.
Ссылок стало так много, что в какой-то момент возник закономерный вопрос:
Зачем я их добавлял?
🤷♂️А я не знаю!
Чтобы узнать, надо заново пересматривать материал по ссылке 😅
Никуда не годится.
Поэтому теперь я пользуюсь супер-шаблоном
Да-да, прежде чем сохранить ссылку на что-то, объясните себе будущему на кой ляд она вам сдалась. И произойдет магия: ссылка с высокой вероятностью полетит сразу в топку 😁
—
А вы храните ссылки?
👍 - да
🔥 - нет, я все запоминаю
😁 - нет, зачем мне этот кошмар
А ведь когда-то давным-давно я хранил свои ссылки в закладках браузера. Там сейчас такая помойка! Захожу туда раз в год, если нужно откопать какого-то динозавра)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7🔥3👍2
Troubleshooting. Упрощение задачи
В больших и сложных программах бывает трудно найти истинную причину бага. Проверяешь гипотезы одну за одной, а баг и ныне там.
Или бывает так, что последняя гипотеза срабатывает, но при откате предыдущих все снова ломается.
К этому времени подозреваешь уже все что угодно 👽
Вот тут то и надо задуматься о снижении сложности задачи.
Как снижать?
Нужно взять каждую гипотезу и проверить ее в минимальной простой программе. Словно в лаборатории.
🔽 Рассмотрим пример 🔽
Недавно я решал проблему с нерабочими горячими клавишами на панели инструментов в Qt. При анализе бага появилось несколько гипотез.
Первая гипотеза: проблема со стандартными кнопками
Для проверки гипотезы упрощаю задачу: делаю небольшую программу с единственной панелью инструментов. ➡️ В этой программе гипотеза не подтвердилась - все работало как надо.
Вторая гипотеза: проблема при переходе в режим полного экрана. ➡️ Дорабатываю свою небольшую программу - гипотеза снова не подтверждается.
Третья гипотеза: проблема при нестандартных масштабах экрана. ➡️ Проверяю в небольшой программе - опять мимо.
Четвертая гипотеза: проблема с кнопками
Дошел бы я до этого в основной программе? Конечно дошел бы. Вопрос времени.
Однако, посмотрите на первые три гипотезы. Ну ничего общего с реальным багом! Но именно к ним я пришел при первоначальном анализе. А четвертая появилась уже потом, на маленькой программе.
—
А в прошлый раз в рубрике #Troubleshooting мы разбирали логирование. Вспоминайте, кто забыл.
В больших и сложных программах бывает трудно найти истинную причину бага. Проверяешь гипотезы одну за одной, а баг и ныне там.
Или бывает так, что последняя гипотеза срабатывает, но при откате предыдущих все снова ломается.
К этому времени подозреваешь уже все что угодно 👽
Вот тут то и надо задуматься о снижении сложности задачи.
Как снижать?
Нужно взять каждую гипотезу и проверить ее в минимальной простой программе. Словно в лаборатории.
🔽 Рассмотрим пример 🔽
Недавно я решал проблему с нерабочими горячими клавишами на панели инструментов в Qt. При анализе бага появилось несколько гипотез.
Первая гипотеза: проблема со стандартными кнопками
QAction в самой Qt.Для проверки гипотезы упрощаю задачу: делаю небольшую программу с единственной панелью инструментов. ➡️ В этой программе гипотеза не подтвердилась - все работало как надо.
Вторая гипотеза: проблема при переходе в режим полного экрана. ➡️ Дорабатываю свою небольшую программу - гипотеза снова не подтверждается.
Третья гипотеза: проблема при нестандартных масштабах экрана. ➡️ Проверяю в небольшой программе - опять мимо.
Четвертая гипотеза: проблема с кнопками
QWidgetAction в самой Qt. ➡️ Проверяю, и, наконец-то, вот оно! Поймал!Дошел бы я до этого в основной программе? Конечно дошел бы. Вопрос времени.
Однако, посмотрите на первые три гипотезы. Ну ничего общего с реальным багом! Но именно к ним я пришел при первоначальном анализе. А четвертая появилась уже потом, на маленькой программе.
—
А в прошлый раз в рубрике #Troubleshooting мы разбирали логирование. Вспоминайте, кто забыл.
🔥3👍1😁1
Так себе программист
Troubleshooting. Упрощение задачи В больших и сложных программах бывает трудно найти истинную причину бага. Проверяешь гипотезы одну за одной, а баг и ныне там. Или бывает так, что последняя гипотеза срабатывает, но при откате предыдущих все снова ломается.…
Нейрокейс
К слову, создание маленького приложения - это отличный кейс для нейросети.
В этом примере с траблшутингом я именно так и делал. Промпт в пару предложений и приложение готово.
Для каждой новой гипотезы приложение дописывается также через нейросетку. Доработки руками минимальные.
К слову, создание маленького приложения - это отличный кейс для нейросети.
В этом примере с траблшутингом я именно так и делал. Промпт в пару предложений и приложение готово.
Для каждой новой гипотезы приложение дописывается также через нейросетку. Доработки руками минимальные.
Telegram
Так себе программист
Troubleshooting. Упрощение задачи
В больших и сложных программах бывает трудно найти истинную причину бага. Проверяешь гипотезы одну за одной, а баг и ныне там.
Или бывает так, что последняя гипотеза срабатывает, но при откате предыдущих все снова ломается.…
В больших и сложных программах бывает трудно найти истинную причину бага. Проверяешь гипотезы одну за одной, а баг и ныне там.
Или бывает так, что последняя гипотеза срабатывает, но при откате предыдущих все снова ломается.…
👍1
Так сложилось, что мне часто приходится перепрыгивать с одного стека технологий на другой. Не сидится в одном 😅
Например, за последний год поработал в следующих стеках:
1.
2.
3.
4.
5.
А у вас как? ⤵️
Например, за последний год поработал в следующих стеках:
1.
C++ / Qt / OpenCasCade / CMake / qmake (desktop)2.
C / C++ / shell / Makefile (embeded) 3.
Python / PySide (desktop, tests automation)4.
PHP / Symphony / Doctrine / Apache / nginx (web services)5.
JavaScript / HTML / CSS (static web app)А у вас как? ⤵️
В каком количестве стеков работали за последний год (примерно, субъективно)?
Anonymous Poll
9%
больше 3-х
26%
2 - 3 стека
30%
один стек
35%
не работал, смотреть результат 🤔
This media is not supported in your browser
VIEW IN TELEGRAM
🎓 Июнь - время защит в учебных заведениях.
И я хотел вам сказать, что на презентации лучше показывать заранее записанное видео работы программы вместо того, чтобы запускать саму программу... Но потом вспомнил, как у меня однажды и видео не завелось 😅
Поэтому нечего мне вам посоветовать 🤭
А у вас случались факапы на презентациях?
😁 - ага
👍 - нет, повезло
🤷♂️ - не выступал
И я хотел вам сказать, что на презентации лучше показывать заранее записанное видео работы программы вместо того, чтобы запускать саму программу... Но потом вспомнил, как у меня однажды и видео не завелось 😅
Поэтому нечего мне вам посоветовать 🤭
А у вас случались факапы на презентациях?
😁 - ага
👍 - нет, повезло
🤷♂️ - не выступал
😁6👍4🤷♂1
Остаться в живых... после увольнения
Немного необычный пост. Эта информация, наверное, не пригодится ни мне, ни вам. Но будем знать 🙂
Дочитал недавно книгу Беккера "Дар страха". Это одна из тех, которые про выживание.
Информации там много, но остановимся на увольнении.
Увольнение сопровождается стрессом. Стрессом для обеих сторон. Хорошо, когда работник увольняется сам, а работодатель не против.
Но если есть конфликт?
Мне случалось увольняться, когда работодатель не хотел отпускать, и увольнять, когда сотрудник не хотел уходить. И это точно не то, что хотелось бы повторять.
Но Беккер рассматривает гораздо более сложные ситуации, когда увольняемый... себе на уме, опасный. Когда от него исходит явная угроза жизни и здоровью: как для бывшего руководителя, так и для оставшихся коллег. В книге описано много жутких примеров, даже не хочется их приводить.
Какого-то универсального способа увольнения опасного сотрудника Беккер не дает. Но описывает целый ряд правил, которые могут снизить вероятность нежелательных последствий.
Вот выжимка:
- Увольнять сразу, не растягивать процесс увольнения (испытательным сроком, например).
- Увольнять в конце дня и в конце недели, чтобы человек пошел домой как обычно, а не оказался дома в непривычное для себя время.
- Быть максимально прямым и не вести переговоры, не читать лекции при увольнении. Уже поздно для нотаций.
- Говорить о будущем, не говорить о прошлом.
- Лучше, чтобы увольнял не прямой начальник, а кто-то повыше.
- Брать на увольнение кого-то из руководства, кто в хороших отношениях с увольняемым, чтобы тот чувствовал себя спокойнее и постеснялся вести себя некорректно.
- Не брать на увольнение охрану, полицию и т.п.
Список не полный, но суть, думаю, ясна. Повторюсь, по большей части это касается увольнения опасных сотрудников.
Теперь знаете, куда при случае сходить за советом)
А у меня всё, и так вас утомил 😉
—
📍 Гэвин де Беккер - Дар страха. Как распознавать опасность и правильно на нее реагировать
#КнижнаяПолка
Немного необычный пост. Эта информация, наверное, не пригодится ни мне, ни вам. Но будем знать 🙂
Дочитал недавно книгу Беккера "Дар страха". Это одна из тех, которые про выживание.
Информации там много, но остановимся на увольнении.
Увольнение сопровождается стрессом. Стрессом для обеих сторон. Хорошо, когда работник увольняется сам, а работодатель не против.
Но если есть конфликт?
Мне случалось увольняться, когда работодатель не хотел отпускать, и увольнять, когда сотрудник не хотел уходить. И это точно не то, что хотелось бы повторять.
Но Беккер рассматривает гораздо более сложные ситуации, когда увольняемый... себе на уме, опасный. Когда от него исходит явная угроза жизни и здоровью: как для бывшего руководителя, так и для оставшихся коллег. В книге описано много жутких примеров, даже не хочется их приводить.
Какого-то универсального способа увольнения опасного сотрудника Беккер не дает. Но описывает целый ряд правил, которые могут снизить вероятность нежелательных последствий.
Вот выжимка:
- Увольнять сразу, не растягивать процесс увольнения (испытательным сроком, например).
- Увольнять в конце дня и в конце недели, чтобы человек пошел домой как обычно, а не оказался дома в непривычное для себя время.
- Быть максимально прямым и не вести переговоры, не читать лекции при увольнении. Уже поздно для нотаций.
- Говорить о будущем, не говорить о прошлом.
- Лучше, чтобы увольнял не прямой начальник, а кто-то повыше.
- Брать на увольнение кого-то из руководства, кто в хороших отношениях с увольняемым, чтобы тот чувствовал себя спокойнее и постеснялся вести себя некорректно.
- Не брать на увольнение охрану, полицию и т.п.
Список не полный, но суть, думаю, ясна. Повторюсь, по большей части это касается увольнения опасных сотрудников.
Теперь знаете, куда при случае сходить за советом)
А у меня всё, и так вас утомил 😉
—
📍 Гэвин де Беккер - Дар страха. Как распознавать опасность и правильно на нее реагировать
#КнижнаяПолка
🤯3🤔2😁1
#include <iostream>
void foo(int& value1, const int& value2) {
value1 += value1 + value2;
}
int main() {
int a = 1, b = 2;
foo(a, b);
std::cout << a << b << std::endl;
return 0;
}