This media is not supported in your browser
VIEW IN TELEGRAM
Когда прикидываешь, сколько наберёшь подписчиков на своём новом канале
Это называется "адекватная оценка" 😁
Это называется "адекватная оценка" 😁
😁4
Troubleshooting
Траблшутингом мы занимаемся каждый день. Баг такой, баг сякой. Мы либо исправляем баг, либо создаем его🐞 👋 (не специально, конечно). Но в наших интересах сводить наши проблемы к минимуму.
Небольшой серией постов я хочу разобрать практические подходы, которые нам в этом помогут. Начнем сначала: как проблемы предупредить?
1. Не пессимизируйте преждевременно. Что бы вы тут не подумали, это значит "делайте сразу хорошо". Простой пример: если нужно использовать число
2. Работайте с предупреждениями компилятора (или что у вас там). В пределе их не должно быть совсем. Игнорируя предупреждения, мы... См. пункт 1... Правильно, пессимизируем.
3. Используйте статические анализаторы. Это отличное усиление компилятора (или что у вас там). Множество проверок, в том числе проверок безопасности, поможет выявить косяки на раннем этапе.
Когда проблема зарегистрирована, но ее решение не очевидно, мы можем прибегать к пунктам 2 и 3. Проверьте, что включен максимальный уровень проверок компилятора (или что у вас там), а также ещё раз прогоните проблемные исходники через анализаторы. Есть шанс, что источник проблемы будет найден ✅
Кто знает, какие еще есть способы предупреждать проблемы?
#Troubleshooting
Траблшутингом мы занимаемся каждый день. Баг такой, баг сякой. Мы либо исправляем баг, либо создаем его
Небольшой серией постов я хочу разобрать практические подходы, которые нам в этом помогут. Начнем сначала: как проблемы предупредить?
1. Не пессимизируйте преждевременно. Что бы вы тут не подумали, это значит "делайте сразу хорошо". Простой пример: если нужно использовать число
42, то определите его именованной константой, а не оставляйте болтаться "голым". Для любой технологии сообщество предлагает лучшие практики, безопасные подходы и прочие гайд-лайны. Время от времени посматривайте в подобные руководства, официальные или нет, и вы не заметите как начнете применять эти подходы автоматически.2. Работайте с предупреждениями компилятора (или что у вас там). В пределе их не должно быть совсем. Игнорируя предупреждения, мы... См. пункт 1... Правильно, пессимизируем.
3. Используйте статические анализаторы. Это отличное усиление компилятора (или что у вас там). Множество проверок, в том числе проверок безопасности, поможет выявить косяки на раннем этапе.
Когда проблема зарегистрирована, но ее решение не очевидно, мы можем прибегать к пунктам 2 и 3. Проверьте, что включен максимальный уровень проверок компилятора (или что у вас там), а также ещё раз прогоните проблемные исходники через анализаторы. Есть шанс, что источник проблемы будет найден ✅
Кто знает, какие еще есть способы предупреждать проблемы?
#Troubleshooting
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1🙏1
int arr[] = { 4, 2, 6, 0, 1 };
for ( int i = 1; i < 5; i++ )
{
int key = arr[i];
int j = i - 1;
while ( j >= 0 && arr[j] > key )
{
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}Выше дан код на C++. Какой алгоритм реализован?
Anonymous Quiz
38%
Пузырьковая сортировка
32%
Сортировка вставками
24%
Назначение ключей
6%
Поиск максимального значения
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯4
Как установить среду разработки QtCreator на Windows
Первый способ. Самый логичный и простой. Идём на официальный сайт Qt, скачиваем нужный установщик QtCreator и устанавливаем. Для установки потребуется учетная запись Qt.
Если по каким-то причинам первый способ вам не подошёл 🤷♂️, то должен подойти...
...второй способ. Чуть более замороченный.
1. Идем в репозиторий GitHub qt-creator.
2. Там открываем страницу с релизами Releases. Записи релизов обозначаются версиями вроде "v14.0.1". Внизу каждой записи есть спойлер Assets - там лежат скомпилированные версии qt-creator под разные платформы и компиляторы. Они нам и нужны.
3. Скачиваем из Assets архив с именем, похожим на это: "qtcreator-windows-x64-msvc-14.0.1.7z".
4. Распаковываем архив на своём компьютере.
5. Запускаем файл bin/qtcreator.exe
И можно работать.
Первый способ. Самый логичный и простой. Идём на официальный сайт Qt, скачиваем нужный установщик QtCreator и устанавливаем. Для установки потребуется учетная запись Qt.
Если по каким-то причинам первый способ вам не подошёл 🤷♂️, то должен подойти...
...второй способ. Чуть более замороченный.
1. Идем в репозиторий GitHub qt-creator.
2. Там открываем страницу с релизами Releases. Записи релизов обозначаются версиями вроде "v14.0.1". Внизу каждой записи есть спойлер Assets - там лежат скомпилированные версии qt-creator под разные платформы и компиляторы. Они нам и нужны.
3. Скачиваем из Assets архив с именем, похожим на это: "qtcreator-windows-x64-msvc-14.0.1.7z".
4. Распаковываем архив на своём компьютере.
5. Запускаем файл bin/qtcreator.exe
И можно работать.
🙏3👍2
Идем по пути от “так себе” вчера к “немного лучше” сегодня.
Авторский образовательный контент по неустанной борьбе с так себе программистом.
Даже рубрики есть:
#КнижнаяПолка 📚
О книгах. Полезно мне - полезно вам 😉
#ЖизньДругих 👀
Об интересных решениях в открытых проектах.
#Словарь📕
О сложной и запутанной терминологии в формате конфликта.
Авторский образовательный контент по неустанной борьбе с так себе программистом.
Даже рубрики есть:
#КнижнаяПолка 📚
О книгах. Полезно мне - полезно вам 😉
#ЖизньДругих 👀
Об интересных решениях в открытых проектах.
#Словарь
О сложной и запутанной терминологии в формате конфликта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Так себе программист pinned «Идем по пути от “так себе” вчера к “немного лучше” сегодня. Авторский образовательный контент по неустанной борьбе с так себе программистом. Даже рубрики есть: #КнижнаяПолка 📚 О книгах. Полезно мне - полезно вам 😉 #ЖизньДругих 👀 Об интересных решениях…»
Какой паттерн определяет объект, который инкапсулирует запрос на выполнение некоей операции с другим объектом?
Anonymous Quiz
69%
Команда
11%
Одиночка
11%
Фабрика
8%
Парковка
#include <iostream>
int main()
{
int* val = new int(0);
std::cout << "Enter a number: ";
std::cin >> *val;
if (*val == 42)
{
std::cout << "Wow! Your number is 42!" << std::endl;
return 0;
}
std::cout << "Good choice!" << std::endl;
delete val;
return 0;
}
Выше дан код на С++. Что с ним не так?
Anonymous Quiz
39%
Нельзя сравнивать число с указателем
11%
Нельзя записывать значение в указатель через std::cin
13%
У функции main() обязательно должны быть аргументы
37%
Возможна утечка памяти
Джуны больше не нужны
Ничего себе заявленьеце, да? 😦
И самое интересное, что оно совсем не беспочвенное и напрямую связано с развитием ИИ.
Kirimgeray Kirimli, руководитель Snapshot Reviews, считает, что задачи джунов скоро будет выполнять ИИ. Предпосылки к этому есть. В условиях хорошо составленного технического задания ИИ сможет дать адекватное решение.
Что же тогда делать джунам?
Да то же, что и всегда, - учиться. Каким бы крутым не был ИИ, доверия к нему мало, а его решения должны быть верифицированы. Kirimgeray Kirimli предполагает, что именно этим и будут заниматься джуны - присматривать за ИИ. А это в любом случае потребует устойчивых знаний компьютерных наук. Может даже более серьёзных, чем от джуна ожидают сейчас.
—
Имхо, даже на сегодня это довольно смелая идея. Для меня ИИ все ещё не стал инструментом повседневной работы. То ли нет нужды, то ли я так себе программист 🙃
Не знаю в общем, присматриваюсь пока.
А вы используете ИИ в разработке?
📍Say goodbye to "junior" engineering roles
Ничего себе заявленьеце, да? 😦
И самое интересное, что оно совсем не беспочвенное и напрямую связано с развитием ИИ.
Kirimgeray Kirimli, руководитель Snapshot Reviews, считает, что задачи джунов скоро будет выполнять ИИ. Предпосылки к этому есть. В условиях хорошо составленного технического задания ИИ сможет дать адекватное решение.
Что же тогда делать джунам?
Да то же, что и всегда, - учиться. Каким бы крутым не был ИИ, доверия к нему мало, а его решения должны быть верифицированы. Kirimgeray Kirimli предполагает, что именно этим и будут заниматься джуны - присматривать за ИИ. А это в любом случае потребует устойчивых знаний компьютерных наук. Может даже более серьёзных, чем от джуна ожидают сейчас.
—
Имхо, даже на сегодня это довольно смелая идея. Для меня ИИ все ещё не стал инструментом повседневной работы. То ли нет нужды, то ли я так себе программист 🙃
Не знаю в общем, присматриваюсь пока.
А вы используете ИИ в разработке?
📍Say goodbye to "junior" engineering roles
👍3
Выше даны два списка. Сортировка какого списка займет меньше времени?
Anonymous Quiz
24%
Неизвестно
27%
Списка 1
22%
Списка 2
27%
Время сортировки примерно одинаково
Недооценённые навыки
1. Это первый навык, который мы обычно недооцениваем: принятие некоторых неудобств и пустяков, если этого требует действительность.
Без этого навыка мы каждый день будем превозмогать, нервничать и опускать руки из-за всякой ерунды.
2. Уважительное отношение к человеку, с которым вы не согласны.
Трюк состоит в том, чтобы найти в таком человеке точку соприкосновения и в конце концов сказать себе: "ок, не такой уж он и сумасшедший". Иначе можно слишком легко его "списать".
3. Способность вести 10-минутную беседу с любым человеком.
В наше время онлайна беседовать с глазу на глаз с незнакомым человеком - тот ещё челендж. Хотя раньше это и не назвали бы каким-то особенным скилом.
4. Кратко и ёмко донести суть.
Все очень заняты. Меньше слов, больше дела.
5. Вежливо сказать "нет".
Люди, которые колеблются сказать "нет", либо медлят, либо говорят "да", откладывая неминуемое "нет". В итоге "нет" становится более разрушительным. Другая крайность - это очень резкое "нет", после которого к нам вообще перестанут обращаться. Нужен баланс.
5-й пункт сильно про меня. Я уже не один раз попадал в "ситуацию" из-за того, что медлил с ответом "нет". Сначала обнадёживаешь почём зря, а потом выглядишь еще большим придурком, чем мог бы 😶
Еще больше навыков и интересных примеров здесь
📍 Morgan Housel - Useful and Overlooked Skills
Если вы не можете ходить и вам приносят молоко вместо апельсинового сока, который вы хотели, то вы скажете: "все нормально", и выпьете его.
1. Это первый навык, который мы обычно недооцениваем: принятие некоторых неудобств и пустяков, если этого требует действительность.
Без этого навыка мы каждый день будем превозмогать, нервничать и опускать руки из-за всякой ерунды.
2. Уважительное отношение к человеку, с которым вы не согласны.
Трюк состоит в том, чтобы найти в таком человеке точку соприкосновения и в конце концов сказать себе: "ок, не такой уж он и сумасшедший". Иначе можно слишком легко его "списать".
3. Способность вести 10-минутную беседу с любым человеком.
В наше время онлайна беседовать с глазу на глаз с незнакомым человеком - тот ещё челендж. Хотя раньше это и не назвали бы каким-то особенным скилом.
4. Кратко и ёмко донести суть.
Все очень заняты. Меньше слов, больше дела.
5. Вежливо сказать "нет".
Люди, которые колеблются сказать "нет", либо медлят, либо говорят "да", откладывая неминуемое "нет". В итоге "нет" становится более разрушительным. Другая крайность - это очень резкое "нет", после которого к нам вообще перестанут обращаться. Нужен баланс.
5-й пункт сильно про меня. Я уже не один раз попадал в "ситуацию" из-за того, что медлил с ответом "нет". Сначала обнадёживаешь почём зря, а потом выглядишь еще большим придурком, чем мог бы 😶
Еще больше навыков и интересных примеров здесь
📍 Morgan Housel - Useful and Overlooked Skills
👍4
Troubleshooting. Метод деления пополам
Продолжаю серию постов по траблшутингу. Сегодня поговорим про локализацию проблемы методом деления пополам.
Метод деления пополам используется, например, в электротехнике⚡️ для поиска обрыва в цепи. Для этого участок цепи визуально разбивается пополам и каждая половина проверяется на предмет наличия тока. Та половина, в которой тока нет, считается содержащей обрыв. Она в свою очередь снова разбивается пополам и половинки снова проверяются. Так продолжается до тех пор, пока мы не придём к проблемному месту.
А мы придём к нему в общем случае быстрее, чем если бы последовательно проверяли цепь по маленьким "кусочкам".
Вот такой итерационный метод можно использовать и при отладке программ.
Представим, что у нас в программе есть ошибка из-за дефектных данных в некоторой переменной. По-моему не сложно представить 😅
Наша задача состоит в том, чтобы найти в коде место, где данные становятся дефектными, то есть локализовать проблему:
1️⃣ Для начала выбираем большой участок программы от ее старта до места проявления ошибки. Мы уверены, что в начале выполнения программы наши данные корректные.
2️⃣ Теперь визуально делим выбранный участок программы пополам и проверяем корректность данных в месте разделения. Если данные корректные, то выбираем следующий по ходу участок программы. Если данные не корректные, то - предыдущий.
3️⃣ Продолжаем пункт 2 до тех пор, пока не "спустимся" к источнику проблемы.
Кстати, таким же методом можно искать ошибки не только по процессу выполнения программы, но и по истории коммитов.
Для этого нужно знать коммит, на котором проблемы еще не было, и коммит, на котором проблема была обнаружена. Тогда путем деления истории коммитов пополам можно быстро найти коммит, который занёс в код ошибку. В git, например, этот метод реализуется командой git bisect. Почитайте, если ещё не слышали.
#Troubleshooting
Продолжаю серию постов по траблшутингу. Сегодня поговорим про локализацию проблемы методом деления пополам.
Метод деления пополам используется, например, в электротехнике
А мы придём к нему в общем случае быстрее, чем если бы последовательно проверяли цепь по маленьким "кусочкам".
Вот такой итерационный метод можно использовать и при отладке программ.
Представим, что у нас в программе есть ошибка из-за дефектных данных в некоторой переменной. По-моему не сложно представить 😅
Наша задача состоит в том, чтобы найти в коде место, где данные становятся дефектными, то есть локализовать проблему:
Кстати, таким же методом можно искать ошибки не только по процессу выполнения программы, но и по истории коммитов.
Для этого нужно знать коммит, на котором проблемы еще не было, и коммит, на котором проблема была обнаружена. Тогда путем деления истории коммитов пополам можно быстро найти коммит, который занёс в код ошибку. В git, например, этот метод реализуется командой git bisect. Почитайте, если ещё не слышали.
#Troubleshooting
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Что такое инкапсуляция в терминах ООП?
Anonymous Quiz
16%
Реализация иерархии "родитель-потомок"
73%
Изоляция абстракции от её реализации
5%
Создание множества конструкторов одного типа
5%
Реализация разных форм одного типа