Язык Си — один из наиболее влиятельных языков программирования за всю историю. Он стал незаменимым инструментом разработки операционных систем, сместив с этого пьедестала языки ассемблера. Изучение Си обязательно для любого уважающего себя программиста. Этот язык любим за свою внешнюю простоту и ненавидим за беспощадность к ошибкам. Благодаря ему у нас есть ядро Linux и тысячи уязвимостей в нём же в придачу. Попробуем понять, что же такое этот противоречивый язык Си — благословение или проклятие?
История языка Си берёт свое начало в недрах американской компании Bell Labs и тесно связана с судьбой операционной системы UNIX. Ее создатели, Кен Томпсон и Деннис Ритчи, разрабатывали свой проект для компьютеров PDP-11, и первые два года их основным инструментом был язык ассемблера. Трудоёмкость написания машинного кода вынуждала искать ему замену, которой в конечном итоге и стал язык Си. С его помощью было полностью переписано ядро операционной системы и большая часть утилит. Язык Си позволял создавать эффективные низкоуровневые программы на PDP-11, практически не используя при этом язык ассемблера.
Со временем встал вопрос портирования UNIX на новые аппаратные платформы. Использование языка Си значительно упростило эту задачу. Ведь если бы в разработке применялся только язык ассемблера, то тогда операционную систему пришлось бы переписывать под каждую компьютерную архитектуру. С другой стороны, исходники UNIX все еще содержали немало кода, созданного специально для компьютера PDP-11. Да и сам язык Си далеко не всегда точно отражал особенности и детали той или иной аппаратной платформы. Последнее еще больше затрудняло процесс переноса и лишало язык одного из его главных достоинств — прозрачной и понятной генерации машинного кода. Чем больше компьютерных архитектур захватывал Си, тем менее очевидной становились его связь с низким уровнем.
В процессе миграции UNIX на новые аппаратные платформы обнаружилась ещё одна проблема. Портированные программы на языке Си исполнялись медленнее, нежели можно было от них ожидать. Чем сильнее отличалась целевая компьютерная архитектура от PDP-11, тем менее эффективным был получаемый код. Чтобы скомпенсировать этот недостаток, разработчики компиляторов всё чаще стали применять неявные оптимизации. И хотя такое решение и улучшало производительность самих программ, Си всё больше отдалялся от низкого уровня. Теперь приходилось не только понимать, как именно определялись конструкции языка для каждой из компьютерных архитектур, но также и то, как они оптимизировались. Разумеется, любой компилятор самостоятельно решал, как именно транслировать исходный код для каждой аппаратной платформы. В итоге написать на языке Си низкоуровневую программу, независящую от используемого компилятора, стало практически невозможно.
Необходимо было понять, как эффективно реализовать высокоуровневые конструкции языка Си, сохранив при этом его низкоуровневые свойства. Попыткой решить эту проблему стала публикация в 1989 году первого стандарта языка. Его принято называть «ANSI C» или «C89», и именно на него мы будем ссылаться в дальнейшем. Создатели стандарта решили окончательно разорвать связь Си с архитектурой PDP-11 и сделать язык полностью высокоуровневым. Была введена так называемая «абстрактная машина» — воображаемый исполнитель кода на языке Си (раздел 2.1.2.3, «Program execution»):
Семантические описания в этом Стандарте описывают поведение абстрактной машины, в которой вопросы оптимизации не имеют значения.
Это означает, что оптимизации компилятора не будут влиять на работу программы, пока её исходный текст согласуется со стандартом. Абстрактная машина должна была решить две проблемы одновременно. Во-первых, следование стандарту давало возможность создавать легко переносимые программы на языке Си. Во-вторых, абстрактная машина могла предоставить компиляторам свободу для оптимизаций. Вот только возникает вполне резонный вопрос — а чем тогда язык Си отличается от любого другого компилируемого языка высокого уровня? Ответ кроется в тексте стандарта. Чтобы всё-таки дать теоретическую возможность программистам писать низкоуровневые процедуры, а значит непереносимые, было введено ещё одно понятие — неопределённое поведение (undefined behavior, раздел 1.6, «DEFINITIONS OF TERMS»):
Неопределённое поведение — поведение при использовании непереносимой или ошибочной программной конструкции, ошибочных данных или объектов с неопределёнными значениями, для которых стандарт не накладывает никаких требований. Возможное неопределённое поведение варьируется от полного игнорирования ситуации с непредсказуемыми результатами, поведения во время трансляции или выполнении программы задокументированным образом, характерным для среды (с выдачей диагностического сообщения или без него), до прекращения трансляции или выполнения (с выдачей диагностического сообщения).
Проще говоря, неопределённое поведение — это специально оставленные дыры в описании абстрактной машины языка Си. Они позволяют компиляторам самим решать, как поступать с теми или иными конструкциями языка, о поведении которых текст стандарта намеренно умалчивает. В том числе они могут быть восприняты как недопустимые в тексте программы. Давайте подробнее разберем неопределённое поведение на конкретном примере.
Возьмём следующий фрагмент кода на языке Си:
int x = 1;
x = x << sizeof(int) * 8;
Попробуем предположить, какой результат у нас получится. Допустим, мы скомпилировали этот код для процессоров архитектуры ARM. Инструкция битового сдвига в рамках этой аппаратной платформы определена так, что итоговым значением переменной «x» должен быть «0». С другой стороны, мы можем транслировать нашу программу в машинный код архитектуры x86. И уже там битовый сдвиг реализован таким образом, что значение «x» не изменится и останется равным «1». Мы могли бы сделать вывод, что результат работы данного фрагмента кода зависит от того, для какой аппаратной платформы мы его скомпилировали. Но на самом деле это не так.
В действительности данный фрагмент кода может быть обработан компилятором любым возможным и невозможным образом. Причина в следующем: согласно тексту стандарта языка Си битовый сдвиг на величину, большую или равную размеру выражения в битах, является неопределённым поведением. Получается, нет никакой гарантии, что этот кусок кода вообще будет работать. В действительности, даже в рамках одной архитектуры один и тот же компилятор может сгенерировать совершенно разные исполняемые файлы. Приведём примеры компиляции и запуска программы с печатью значения переменной «x». В обоих случаях мы используем компилятор gcc версии 10.2.1 для целевой архитектуры x86-64.
$ cat test.c
#include <stdio.h>
int main()
{
int x = 1;
x = x << sizeof(int) * 8;
printf("%dn", x);
return 0;
}
$ gcc test.c -o test
$ ./test
1
$ gcc -O test.c -o test
$ ./test
0
Флаг «-O» разрешает компилятору gcc использовать оптимизации исходного кода. То, какие именно механизмы оптимизации могут быть применены, а также какие флаги за них отвечают, зависит от конкретного компилятора. В общем случае невозможно узнать, каким образом будет обработано неопределённое поведение в программе при трансляции исходного кода. Поэтому единственный способ написания переносимых программ на языке Си — это полное избегание неопределённого поведения при разработке.
Рассмотрим чуть более сложный пример. Ещё одной разновидностью неопределённого поведения является разыменование нулевого указателя. Его тривиальным вариантом будет следующий фрагмент кода:
* (char *) 0;
Разумеется, никто в здравом уме не станет писать что-то подобное в своей программе. Однако совсем необязательно делать разыменование нулевого указателя явным образом, чтобы вызвать неопределённое поведение. В цикле статей «What Every C Programmer Should Know About Undefined Behavior» на сайте blog.llvm.org приводится фрагмент кода, подтверждающий это:
void contains_null_check(int *p)
{
int dead = *p;
if(p == 0)
return;
*p = 4;
}
Пример может показаться надуманным, но он позволяет немного лучше понять работу компилятора языка Си. Последний использует различные механизмы оптимизации, но здесь нам интересны лишь два. Один из них удаляет лишний, «мертвый» код, а второй вычёркивает бесполезные проверки на нулевой указатель. Если к вышеописанному фрагменту кода будет применён первый механизм оптимизации, то он преобразует функцию следующим образом:
void contains_null_check(int *p)
{
if(p == 0)
return;
*p = 4;
}
Затем второй механизм не обнаружит лишних проверок на нулевой указатель, и исходный код функции примет свой итоговый вид. Однако в действительности порядок оптимизаций может быть и другим. К примеру, компилятор вправе первым делом исключить лишние проверки на нулевой указатель, и тогда функция будет преобразована уже следующим образом:
void contains_null_check(int *p)
{
int dead = *p;
if(0)
return;
*p = 4;
}
Так как мы разыменовываем указатель до его проверки, то компилятор спокойно решает, что сам указатель никогда не будет нулевым. Благодаря этому сравнение «p == 0» заменяется на выражение, всегда возвращающее ложь. Затем компилятор запускает первый механизм оптимизации и убирает «мертвый» код:
void contains_null_check(int *p)
{
*p = 4;
}
Важно подчеркнуть, что обе этих оптимизации являются верными. Удаление проверки может стать неожиданным подарком недостаточно внимательному программисту от разработчиков компилятора. Такой код способен создать уязвимость для программ, работающих без защиты памяти, т.е. ядер операционных систем или прошивок микроконтроллеров. Безусловно, данный пример содержит ошибку, однако главная проблема не в ней, а в том, как компилятор её обрабатывает.
Предположим, вы случайно допустили в своей программе неопределённое поведение. В лучшем случае вы сразу же обнаружите ошибку и исправите её. В не столь удачном — сделаете это не сразу. Однако гораздо вероятнее ситуация, что компилятор не станет использовать вашу оплошность себе на пользу. В таком случае неопределённое поведение останется в исходном коде программы до тех пор, пока не объявится в самый неподходящий момент. А такой момент может наступить при смене: целевой компьютерной архитектуры, компилятора или даже его версии, флагов оптимизации или вообще каких угодно флагов. Проще говоря, неопределенное поведение — это бомба замедленного действия. Когда она рванет — непонятно, но можно только догадываться, сколько интересных сюрпризов хранят в себе исходные коды тысяч программ.
Оптимизации компилятора могут затрагивать также и функции стандартной библиотеки языка Си, в том числе, к примеру, memset. Она широко и печально известна за обилие ошибок, которые допускают программисты при её вызове. Заголовок функции выглядит следующим образом:
void *memset(void *ptr, int value, size_t num);
memset записывает «num» байтов со значением «value» по адресу «ptr». Несмотря на то, что параметр «value» имеет тип int, в действительности используется лишь его младший байт. Функция активно применяется для обнуления больших массивов данных, однако компилятор и сам частенько любит вставить её вызов туда, где это нужно и не очень. Так, любопытный случай обсуждался 15 апреля 2018 года на форуме osdev.org. Пользователь под ником ScropTheOSAdventurer создал тему, в которой рассказал о процессе разработки собственной учебной операционной системы. На свою беду он разрешил компилятору оптимизировать исходный код проекта, в результате чего последний перестал работать. В процессе отладки программист обнаружил ошибку в следующем фрагменте кода:
void *memset(void *ptr, int value, size_t num)
{
unsigned char *ptr_byte = (unsigned char *) ptr;
for(size_t i = 0; i < num; ptr_byte[i] = (unsigned char) value, i++);
return ptr;
}
Для своей операционной системы разработчик решил использовать собственную реализацию функции memset. Но он не учёл, что в процессе трансляции компилятор gcc обнаружит в этом коде весьма заманчивую возможность для оптимизации. Фактически функция была в итоге преобразована к следующему виду:
void *memset(void *ptr, int value, size_t num)
{
return memset(ptr, value, num);
}
Вполне вероятно, что среди разработчиков компилятора gcc были непревзойденные мастера софистики. В любом случае способности компилятора к оптимизациям явно превосходят все доступные человеческому разуму пределы.
Приведем еще один пример с функцией memset. Компилятор способен не только создавать её вызовы на пустом месте, но и выкидывать их из исходного кода по собственному желанию. Так, в криптографических программах зачастую бывает полезно стирать все данные из памяти после того, как они перестают быть нужными. Обычно такое поведение является избыточным, однако представим себе следующую ситуацию. Ваша программа работает с базой данных пользователей, хранящей их имена и пароли, и вы описали примерно такую функцию:
int check_password(const char *pwd)
{
char real_pwd[32];
get_password(real_pwd);
return !strcmp(pwd, real_pwd);
}
Есть лишь одна проблема — после вызова check_password в стеке останется строка с настоящим паролем пользователя. Если в вашей программе есть хотя бы одна уязвимость, позволяющая читать данные из памяти, то существует реальная вероятность украсть пароль из стека. Примером подобной уязвимости стал печально известный баг «Heartbleed». Чтобы снизить возможные риски, проще всего очистить содержащий пароль фрагмент стека:
int check_password(const char *pwd)
{
int result;
char real_pwd[32];
get_password(real_pwd);
result = !strcmp(pwd, real_pwd);
memset(real_pwd, 0, sizeof(real_pwd));
return result;
}
Казалось бы, решение найдено, однако не все так просто. Искушённый в вопросах оптимизации компилятор может решить, что вызов memset здесь лишний, и спокойно удалит его из тела функции. Действительно, для работы самой программы это действие абсолютно бесполезно. Что ещё хуже, компилятор может сгенерировать код, в котором пароль окажется в одном из регистров процессора. В таком случае получить его, используя уязвимость в программе, может оказаться еще проще. И у вас даже не получится заставить компилятор очистить содержимое регистра. Более подробно о данной проблеме можно прочитать по ссылке.
Одной из наиболее коварных разновидностей неопределённого поведения является strict aliasing. Термин может быть переведён как «строгое наложение», однако традиционного названия на русском языке у него не существует. По этой причине мы будем использовать оригинальный английский термин. Текст стандарта дает такое описание для strict aliasing (раздел 3.3, «EXPRESSIONS»):
Значение объекта должно быть доступно только с помощью lvalue-выражения одного из следующих типов:
— объявленный тип объекта,
— квалифицированная версия объявленного типа объекта,
— знаковый или беззнаковый тип, соответствующий объявленному типу объекта,
— знаковый или беззнаковый тип, соответствующий квалифицированной версии объявленного типа объекта,
— тип массива, структуры или объединения, который включает в себя один из вышеупомянутых типов среди своих членов (включая, рекурсивно, член внутренней структуры, массива или объединения),
— символьный тип.
Проще всего strict aliasing проиллюстрировать на конкретном примере:
int x = 42;
float *p = &x;
*p = 13;
Чтобы вызвать неопределенное поведение, достаточно обратиться к какой-либо переменной по типу, несовместимому с объявленным. Это ограничение можно обойти, применив символьный тип (char), на который не распространяются правила strict aliasing:
int x = 42;
char *p = &x;
*p = 13;
Вот только расчленение переменной на символы может оказаться трудоемкой задачей. Придется учитывать размер данных, а также используемый порядок байтов. Избежать неопределённого поведения можно также с помощью объединений (union):
union u { int a; short b };
union u x;
x.a = 42;
x.b = 13;
Впрочем и этот метод не лишён недостатков — объединение должно содержать члены со всеми возможными типами, которые будут использованы программой. Все это серьёзно осложняет применение «type punning» или так называемого каламбура типизации — намеренного нарушения системы типов. Эта техника необходима для более гибкого низкоуровневого управления памятью машины.
Чтобы проиллюстрировать пользу каламбура типизации, разберем небольшой пример. Допустим, вы прочитали содержимое файла с изображением в память программы. И теперь вам требуется написать функцию, которая возвращает цвет пикселя по указанным координатам. Для простоты будем считать, что размер типа int совпадает с размером пикселя, как и порядок байтов у обоих:
int get_pixel(const char *buf, int width, int x, int y)
{
buf += get_header_size(buf);
return ((const int *) buf)[y * width + x];
}
При вызове функции ей передается адрес области данных с содержимым файла, включая его заголовок, ширину изображения, а также координаты пикселя, цвет которого следует вернуть. Вместо типа int мы могли бы выбрать любой другой с известным нам размером. Но все это неважно, потому что функция get_pixel абсолютно неверна с точки зрения стандарта, так как нарушает правила strict aliasing. Чтобы использовать каламбур типизации, придется переписать весь код, связанный с используемым буфером, в том числе и тот, который ответственен за чтение файла.
Существует огромное количество примеров программ, не удовлетворяющих правилам strict aliasing. В их число входит знаменитая функция вычисления быстрого обратного квадратного корня из игры Quake 3:
float FastInvSqrt(float x)
{
float xhalf = 0.5f * x;
int i = *(int *) &x;
i = 0x5f3759df - (i >> 1); /* What the fuck? */
x = *(float *) &i;
x = x * (1.5f - (xhalf * x * x));
return x;
}
Этот код позволял вычислить обратный квадратный корень числа с плавающей точкой в несколько раз быстрее, чем с использованием арифметического сопроцессора. Впрочем, и этот шедевр черной магии не проходит проверку стандартом — похоже, что создатель культовых игр Джон Кармак совсем не разбирается в языке Си.
Остается один вопрос — зачем вообще нужен этот strict aliasing? Все дело в том, что он позволяет создателям компиляторов применять крайне агрессивные оптимизации исходного кода. Правила strict aliasing распространяются на обращения к любой памяти, в том числе и динамической. Так комитет стандартизации отметил, что следующий фрагмент кода (источник):
void f(int *x, double *y)
{
*x = 0;
*y = 3.14;
*x = *x + 2;
}
может быть преобразован таким образом:
void f(int *x, double *y)
{
*x = 0;
*y = 3.14;
*x = 2;
}
Согласно правилам strict aliasing указатель y не может содержать адрес того же участка памяти, что и указатель x. Именно этот факт и позволяет заменить выражение «*x = *x + 2» на «*x = 2». Активное использование компиляторами подобных оптимизаций сломало огромное количество старого кода. Так, в письме от 12 июля 1998 года один из разработчиков компилятора gcc Jeff Law, отвечая на вопросы по strict aliasing и связанными с ним ошибками, пишет (источник):
> Существует очень много кода, который нарушает правила strict aliasing. Одним из таких примеров является «переносимая» универсальная функция контрольной суммы IP, которая содержится в исходных кодах BSD для работы с сетями.
ИМХО, такого кода становится все меньше и меньше — современные компиляторы уже какое-то время используют strict aliasing в анализе, в результате чего люди были вынуждены исправлять свой код. Безусловно, это не относится к Linux и некоторым другим свободным проектам, так как они используют только gcc.
> Если мы начнем говорить о том, что такой код неверный, то нам лучше было бы иметь какой-то план на случай, если люди начнут спрашивать, почему их код, который работал много лет, теперь сломался.
Укажите им на стандарт языка Си
Правила strict aliasing для компилятора gcc можно разрешить, используя флаг «-fstrict-aliasing», и запретить флагом «-fno-strict-aliasing». Последний рекомендуется применять, если вы не уверены, нарушаете ли вы текст стандарта — скорее всего, нарушаете. Говоря об упомянутом в письме ядре Linux, его автор Линус Торвальдс также дал свою оценку strict aliasing в частности и работе комитета в целом. Так, критикуя желание одного из разработчиков операционной системы лишний раз перестраховаться от нарушения стандарта, Линус написал такое письмо (источник):
Честно говоря, все это кажется мне сомнительным.
И я не о самих изменениях — с этим я могу смириться. Но вот обоснование этих самых изменений — абсолютная и полная чушь, причем весьма опасная.
Дело в том, что использование объединений для реализации каламбура типизации — это обычный и СТАНДАРТНЫЙ для этого способ. В действительности он является документированным для gcc, и используется в том случае, если вы, будучи не слишком умным (оригинал: «f*cking moron»), применили «-fstrict aliasing», и теперь вам необходимо избавиться от всего того ущерба, который навязывает этот мусорный стандарт.
Энди, что послужило причиной для всего этого идиотизма? И не надо говорить мне, что текст стандарта «недостаточно ясный». Текст стандарта, совершенно ясно, является дерьмовой чушью (см. выше о правилах strict aliasing), и в таких случаях его нужно игнорировать. Для этого необходимо использовать средства компилятора, чтобы избежать ущерба. Аналогично нужно поступать и в ситуациях, где нет полной ясности.
Это то, почему мы используем «-fwrapv», «-fno-strict-aliasing» и другие флаги.
Я уже говорил об этом раньше и повторю еще раз: когда текст стандарта противоречит реальности — он является обычным куском туалетной бумаги. Он не имеет абсолютно никакой важности. В действительности, вместо него я лучше возьму рулон настоящей туалетной бумаги — так хотя бы я не испачкаю свою задницу чернилами (оригинал: «won’t have splinters and ink up my arse»).
Видимо, Линус Торвальдс плохо изучил язык Си — настоящему программисту на Си такое в голову бы не пришло.
Впрочем, одним лишь strict aliasing стандарт не полон. Чтобы вызвать неопределённое поведение, необязательно даже разыменовывать указатель:
void f(int *p, int *q)
{
free(p);
if(p == q) /* Undefined behaviour! */
do_something();
}
Использование значения указателя после того, как память по нему была освобождена, запрещено текстом стандарта (раздел 4.10.3, «Memory managment functions»):
Значение указателя, ссылающегося на освобожденную память, не определено.
Программисту важно понимать, что указатели в Си не являются низкоуровневыми. Стандарт постарался полностью искоренить какую-либо связь языка с реальным миром. Даже сравнение указателей, ссылающихся на разные объекты, объявлено неопределённым поведением (раздел 3.3.8, «Relational operators»):
При сравнении двух указателей результат зависит от относительного расположения в адресном пространстве объектов, на которые они указывают. Если указанные объекты не являются членами одной и той же структуры, массива или объединения, то результат не определён.
Вот небольшой фрагмент кода, демонстрирующий некорректное с точки зрения стандарта сравнение:
int *p = malloc(64 * sizeof(int));
int *q = malloc(64 * sizeof(int));
if(p < q) /* Undefined behaviour! */
do_something();
Однако наиболее интересным примером здесь будет служить исходный код следующей программы:
#include <stdio.h>
int main()
{
int x;
int y;
int *p = &x + 1;
int *q = &y;
printf("%p %p %dn", (void *) p, (void *) q, p == q);
return 0;
}
Если транслировать приведенный выше текст компилятором gcc, передав ему флаг «-O», то полученный исполняемый файл при запуске выдаст примерно следующую строку:
0x1badc0de 0x1badc0de 0
Остается большой тайной, по какой причине два указателя, содержащие одинаковые значения, оказались не равны. Возможно, ранее уже отмеченные нами разработчики компилятора gcc не менее искусны в трактовке текстов стандарта, чем в вопросах софистики. Проникнуться утончённой герменевтикой можно в обсуждении этого вопроса на официальном сайте организации GNU.
Большая часть примеров, связанных с работой указателей, была взята с сайта kristerw.blogspot.com. На нём вы сможете найти больше информации о текстах стандарта языка Си, а также загадочных оптимизациях компиляторов.
Может показаться, что в случае выключенных оптимизаций все вышеописанные проблемы обойдут вас стороной. Просто не передавайте компилятору флаг «-O», и вы получите тот результат, на который рассчитываете. Но на самом деле это не так. В январе 2007-ого года на сайте gcc.gnu.org пользователь под ником felix-gcc выложил исходный код следующей программы:
#include <assert.h>
int foo(int a) {
assert(a + 100 > a);
printf("%d %dn",a + 100, a);
return a;
}
int main() {
foo(100);
foo(0x7fffffff);
}
Функция foo проверяет на переполнение сумму поданного знакового числа и константы «100». Как известно, на подавляющем большинстве компьютерных архитектур отрицательные числа задаются в виде дополнительного кода. В случае переполнения такое число меняет знак на противоположный, благодаря чему проверка «a + 100 > a» возвращает ложь. В теле функции main felix-gcc дважды вызывает foo. Сначала он подает на вход число, которое не приведёт к переполнению. Затем, исходя из того, что размер типа данных int равен четырем байтам, felix-gcc вызывает foo с наибольшим положительным числом данного типа. Логично предположить, что в таком случае сравнение вернёт ложь, и assert прервёт работу программы. Однако вот какой вывод получил felix-gcc после запуска исполняемого файла:
200 100
-2147483549 2147483647
Фактически gcc решил удалить проверку на переполнение, и это при том, что никаких флагов компилятору передано не было. И что еще интереснее, ранние версии gcc при тех же условиях не убирали проверку, в результате чего получаемая программа вела себя иначе. На резонную просьбу felix-gcc исправить неожиданный баг компилятора ответил пользователь под ником Andrew Pinski. Будучи разработчиком gcc, Andrew Pinski заметил, что данное поведение не является ошибочным. Более того, он сам оказался автором изменения в коде компилятора, которое и создало столь странный результат. Далее приводится фрагмент диалога felix-gcc и Andrew Pinski. Комментарии излишни:
Andrew Pinski
Переполнение знакового числа — это неопределённое поведение в тексте стандарта языка Си, используйте беззнаковый тип или флаг «-fwrapv».felix-gcc
Вы должно быть шутите?
Различные проблемы безопасности вызваны переполнениями чисел, и вы просто так говорите мне, что в gcc 4.1 я больше не могу тестировать их для знаковых типов? Вы явно чего-то не понимаете. ДОЛЖЕН быть способ обойти эту проблему. Существующее программное обеспечение использует знаковые числа, и я не могу просто поменять тип на беззнаковый — мне все равно нужно проверить переполнение! Не похоже, что я мог бы использовать какой-нибудь обходной путь для этого. Что вы хотите от меня — чтобы я привел тип к беззнаковому, сдвинул вправо на один, затем сложил или что вообще?!
ПОЖАЛУЙСТА, ОТМЕНИТЕ ЭТО ИЗМЕНЕНИЕ. Оно создаст СЕРЬЁЗНЫЕ ПРОБЛЕМЫ БЕЗОПАСНОСТИ во ВСЕВОЗМОЖНЫХ ПРОГРАММАХ. Меня не волнует, что ваши стандартизаторы говорят о том, что gcc исправен. ВСЕ ЭТО ПРИВЕДЁТ К ТОМУ, ЧТО ЛЮДЕЙ ВЗЛОМАЮТ. Я обнаружил эту проблему, так как одна из проверок безопасности, которая предотвращает взлом, провалилась.
ЭТО НЕ ШУТКА. ИСПРАВЬТЕ ЭТО! СЕЙЧАС ЖЕ!Andrew Pinski
Я не шучу, стандарт языка Си прямо говорит, что переполнение знакового числа — это неопределённое поведение.felix-gcc
Так, послушайте, Эндрю, вы что, действительно думаете, что эта проблема исчезнет, если вы продолжите закрывать баги достаточно быстро? Проверка, которую я написал, покрывала все возможные ситуации. Не требуется даже уточнения того, что за тип используется — указатель, беззнаковое или знаковое число. Ну, указатели вы тоже сломали, но ваши изменения были исправлены. Парень, который сделал это тогда, должен появиться здесь, нам нужен кто-то с трезвой головой и видением ситуации как у него.
Давайте посмотрим правде в глаза — вы облажались по полной (оригинал: «fucked up this royally»), и теперь вы пытаетесь прикрыть все ошибки как можно скорее, чтобы никто не заметил, сколько ущерба вы нанесли. Вы, сэр, непрофессиональны и позорите команду разработчиков gcc. Эта ошибка останется открытой до тех пор, пока вы не вернёте все обратно или не сделаете упомянутый вами флаг по умолчанию. Пока вы будете ломать программы, чьи авторы по глупости включили оптимизации, мне всё равно. Но я не позволю вам делать моё окружение менее безопасным только потому, что ваш непрофессионализм не позволяет вам разобраться с оптимизациями после того, как было показано, что они наносят больше вреда, чем пользы. Сколько еще доказательств вам необходимо предоставить? Боже мой, да autoconf считает, что ваши «оптимизации» нужно отключать повсеместно. Вы вообще замечаете взрывы вокруг самих себя?Andrew Pinski
http://c-faq.com/misc/sd26.html
Это всё, на что я собираюсь ссылаться с этого момента. Этот код ясно говорит вам, как необходимо распознавать переполнение до того, как оно произойдет. Опять же, ваш код сломан и не соответствует стандарту.
felix-gcc
МОЙ КОД НЕ СЛОМАН.
Попытки обесценить проблему или оскорбить меня ничего не решат.Andrew Pinski
Вы написали ошибку, поэтому я и решил, что ваш код сломан.felix-gcc
Итак, скажите мне, какая часть моей аргументации вам непонятна? Я мог бы использовать слова попроще, чтобы вы смогли меня понять на этот раз.
Ребята, ваша задача — это не просто реализовать стандарт Си. Вы также обязаны не нарушать работу программ, которые зависят от вас. А от вас зависит МНОГО программ. Когда вы нарушили точность вычислений с плавающей точкой, то вы сделали это доступным с помощью флага (-ffast-math). Когда вы добавили strict aliasing, вы так же сделали эту функцию доступной через флаг (-fstrict-aliasing). Если я правильно помню, вы тогда тоже цитировали текст стандарта, пока люди с более адекватным пониманием мира вас не остановили. И я собираюсь оставить эту ошибку открытой до тех пор, пока не повторится та же история.Andrew Pinski
Я думаю, нам не следовало делать это необязательным, но меня не было в тот момент, когда было принято это решение. Также помните, что у нас был релиз, когда strict aliasing был включен, но затем нам пришлось его отключить по умолчанию. За это время люди исправляли свои программы, пока оптимизация была активна. И мы уже сделали оптимизацию знакового переполнения опциональной с помощью «-fwrapv». Я не понимаю, к чему вы приводите свои аргументы.felix-gcc
Вы не можете просто так потенциально сломать кучу свободного ПО лишь потому, что изменили свое мнение по поводу того, какую свободу вам дает стандарт.
Повзрослейте или уйдите, позволив более ответственным людям заниматься вашими делами.Andrew Pinski
Подождите, но эта оптимизация была еще с 1994-ого года, и если какой-либо код, начиная с этого момента, использовал знаковое переполнение, то авторы этих программ сами напросились.felix-gcc
Знаете ли вы, что ракета Ариан-5 взорвалась (и могла убить людей!) из-за ошибки переполнения? Что если люди погибнут из-за того, что вы решили, что стандарт позволяет вам выкидывать проверки безопасности, написанные людьми?Andrew Pinski
Я уже показал вам, как проверять знаковое переполнение до того, как оно произойдет, а не после. Вы можете научить других специалистов по безопасности тому, как писать этот код.felix-gcc
Еще раз: НЕ ИМЕЕТ ЗНАЧЕНИЯ ТО, ЧТО ГОВОРИТ СТАНДАРТ. Вы сломали программы, и люди пострадали от этого. Теперь верните все обратно. Меньшее, что вы можете, это сделать «-fwrapv» по умолчанию. Вам все еще придётся заставить его работать правильно (я слышал, что он неверно работает в определенных ситуациях), но это уже другая история.Andrew Pinski
Он будет по умолчанию в тех языках, где определено именно такое поведение. Я дал вам способ написания проверок переполнения, и если вам не нравится то, что говорит стандарт языка Си, то это не моя вина.
Запомните: компилятор gcc также является оптимизирующим компилятором, и если вам нужны оптимизации, то вы должны следовать правилам того языка, на котором вы пишете, вместо создания неверных программ, что и происходит с Си и Си++ в целом.felix-gcc
В ранних версиях компилятора такое поведение происходило только в случае включённых оптимизаций. Если немножко присмотреться, то окажется, что все ваши аргументы ничего не стоят.
Потому как gcc 4.1 выкидывает этот код уже без включённых оптимизаций. Вот и все ваши аргументы.
Пожалуйста, сделайте «-fwrapv» по умолчанию, и я заткнусь.Andrew Pinski
Попробуйте проверить время исполнения программы с «-fwrapv» и без него. Вы увидите, что без него код работает быстрее.
Пытаясь уйти в обсуждение оптимизаций компилятора, Andrew Pinski решил тем самым оправдать свою позицию. В процессе он, однако, упомянул куда более «интересную» аргументацию:
Тот факт, что человек написал проверку переполнения неверным образом, не является основанием для наказания людей, которые на самом деле сделали это правильно, используя способ, описанный в документации. Это моя позиция — вы пытаетесь наказать людей, которые написали свои проверки так, как это предполагает стандарт языка Си.
А в самом конце обсуждения Andew Pinski заявил следующее:
Я бы принял вашу идею о включении «-fwrapv» по умолчанию, если бы не существовало способа для проверки переполнения до того, как оно случилось, но он есть. Да, мы сломаем код, который был написан, исходя из предположения о том, что знаковое переполнение возможно. Но я думаю, что это та цена, которую мы можем принять.
В заключение хочется привести еще одну цитату Линуса Торвальдса:
Разработчики gcc больше заинтересованы в попытках выяснить, что еще им позволяет делать стандарт, чем в том, как заставить вещи действительно работать.
И в этом, похоже, заключена главная проблема языка Си. Но подобное не могло произойти на пустом месте — в конечном итоге мы сами позволили этому случиться. Язык Си уже очень давно перестал выполнять возложенные на него функции и превратился в уродливую пародию на самого себя. Но мы этого не заметили, потому что смирились с тем, что наши программы не работают. Мы, как программисты, настолько привыкли к ошибкам, что они стали неотъемлемой частью нашей жизни. Зачастую на отладку и тестирование программ уходит больше времени, чем на проектирование и написание самого кода. И ведь это немудрено — людям свойственно ошибаться. Большую часть багов и уязвимостей программисты вносят случайно, совершенно не задумываясь, и мы ничего не можем с этим сделать. Однако неизбежность ошибок не оправдывает их существование. Задача программиста в том, чтобы писать код, который работает. Даже если это неочевидно, трудно и невозможно, мы не имеем права делать ошибки. Потому что иначе все бессмысленно, и мы перестаем понимать, что можно делать, а что нельзя, что красиво, а что уродливо. В погоне за эффективностью разработчики компиляторов забыли о том, для чего на самом деле нужен язык Си. Он инструмент программиста, а плохим инструментом нельзя написать хорошую программу. Эта история — показательный пример того, что не всякая деятельность плодотворна, и не каждое изменение ведет к лучшему результату. Стараниями комитета стандартизации и разработчиков компиляторов мы в конечном итоге потеряли язык Си. Как инструмент разработки он стал абсолютно бесполезен и даже вреден, и мы обязаны признать это. В противном случае наши программы никогда не будут работать. Пренебрежительное отношение к ошибкам должно уйти в прошлое, а вместе с ним должен умереть и язык Си.
P.S. Если вы все ещё верите, что язык Си можно спасти, ознакомьтесь по ссылке со следующей выдержкой за авторством одного из двух редакторов текста стандарта языка Си:
Мы позволим компилятору лгать вам. Мы будем лгать вашему коду. И когда дела пойдут плохо — ошибка, «обосратушки», утечка памяти — мы торжественно покачаем головами.
Авторы выражают благодарность Андрею Викторовичу Столярову за его критику и комментарии, благодаря которым эта статья приобрела настоящий вид, и без которых, быть может, её и вовсе не было бы.
Соавтор статьи: @aversey
Изначальная публикация: cmustdie.com
Как правильно написать жалобу в полицию, то, что ст. По дому подделывает подписи жильцов мкд при голосовании. Спасибо.
Ответы на вопрос:
Ирина, советую в Прокуратуру обращаться, а не в полицию
Можете обратиться к юристу или адвокату Вам помогут с жалобой.
Вам помог ответ?ДаНет
Заявление в полицию или иной правоохранительный орган пишется собственноручно на листе бумаги формат А 4. В верхнем правом углу пишется… Начальнику полиции N-ского отделения полиции по г. Калининграду полковнику полиции Иванову И.И… от Ф.И.О. (ваше), адрес проживания, конт. Тел… Посередине пишете… заявление. Ниже с красной строки… Прошу провести проверку и привлечь к уголовной ответственности руководителя ______, который (число, месяц, год) подделал документы, сфальнифицировал акты, подделал печати и подписи на таких-то документах. (если точно Вы не знаете кто это сделал, то надо писать… прошу провести проверку и привлечь к уголовной ответственности неизвестное мне лицо…).
После того, как Вы все описали пишите: Об уголовной ответственности по ст. 306 УК РФ за заведомо ложный донос предупрежден.
Число подпись.
Вам помог ответ?ДаНет
вы обращаетесь в отдел полиции и они обязаны принять заявления как простое (свободного образца) от вас, так и могут принять на своем бланке, и по вашему обращению проводят проверку в соответствии ст. 144-145 УПК РФ, а также проводят ваш опрос (объяснение) для получения подробной информации по данному факту.
Вам помог ответ?ДаНет
Похожие вопросы
Управляющая компания незаконным путём пришла к управлению МК домом, подделав протакол собрания собственников. Суд установил, чтт протокол поддельный и незаконен. Лицензия анулирована. Имеет ли право компания на оплату услуг содержание и текущий ремонт, если она мошенническим образом подделала протокол собрания соббственников дома.
Как правильно написать заявление в полицию, есть подозрение что решение собственников и протокол голосования поддельный.
Кому и чем грозит подделка подписей в листке голосования общего собрания собственников жилья при выборе управляющей компании? Срок давности этого деяния для обжалования в суде.
Инициатор «провел» Общее собрание собственников МКД. Через 6 месяцев удалось с третьего раза получить заверенный Протокол Общего собрания. Мы обращались во все инстанции, ГЖИ, Роспотребнадзор. Отписки, только и всего. Собрали подписи более 50% собственников, подтверждающих, что Уведомления и Бланка Решения не получали, в выборах Управляющей компании не участвовали. По Протоколу 57% присутствующих от общего числа, по площадям. Отправили Заявление в Прокуратуру с Уведомлением по почте (О подделке Протокола ОСС в порядке ст.ст. 144 – 145 УПК РФ) . 1,5 месяца прошло и полная тишина! По факту МЫ ГОТОВЫ ИДТИ В СУД. НО! Начали консультироваться, и юрист говорит, что суд может по факту узаконить беспредел, так как мы имели право обратиться в суд не только после получения поддельного Протокола, но и ранее, после получения Квитанций об оплате от новой УК. То есть срок исковой давности по ЖК РФ 6 месяцев истек, и мы проиграем суд, узаконится невыбранная вами УК. Но это же подделка Протокола! Есть ли по этой статье срок исковой давности или то касается Общего собрании подделки Протокола и подписей тоже относится к гражданским делам и ЖК РФ? Мы надеялись на то, что ГЖИ проведет проверку и подаст в суд, нет, он просто тупо встали на сторону УК и ответили, что проверка по сайту проведена, все ок, но мы можем подать в суд. То же ответил Роспотреб. Прокуратура молчит. Где искать защиту от беспредела? Или нам подавать в суд на НИЧТОЖНОСТЬ по 181,5 ГК РФ, тут до 2-х лет срок давности? Хотлось бы, чтобы ответили беспредельщики по подделке, но боимся, что суд примет сторону и откажет по сроку давности 6 месяцев. Посоветуйте, пожалуйста. С уважением, Андрей Валентинович
Ответ прошу прислать по почте: lav2003@ya.ru
На телефон прошу звонить в воскресенье после 11.00 или в понедельник после 12.00. Благодарю.
В реестре собственников квартир в МКД я увидела подделку моей подписи..
Что делать?
Многоквартирный дом захватила иная Управляющая Компания с подделкой подписей жильцов. Куда обращаться?
Протокол ОСС подделан УК по многочисленным фактам, в том числе и подделка подписей собственников. Жалобу рассматривает прокуратура города с мая 2019 года. Все задерживается из-за одного участкового районного отдела полиции, кому поручили провести проверку. Он ничего не проверял, писал 4 раза отказы в возбуждении уголовного дела, которые отменяла районная прокуратура и ему снова в отделе полиции поручали делать проверку. Сейчас — в пятый раз. Завтра придет наконец-то в дом. Всего в ОСС участвовало 138 бюллетеней. Всех собственников, указанных в 138 бюллетенях, ему не обойти по причине нехватки времени у него и отсутствия их в данный момент дома.
Вопросы: достаточно ли будет для открытия уголовного дела получить объяснения с 3—5 собственников, чьи подписи подделаны?
Здравствуйте. Сотрудники нашей УК ходили по квартирам и собирали подписи жильцов, объясняя им, что якобы наша УК объединяется с другой УК в целях экономии денежных средств и для этого объединение нужно согласие жильцов. Изменится только название УК, а директор и все сотрудники будут прежние. У меня это вызвало большие сомнения и я потребовала документы к которым будут прилагаться эти подписи. Выяснила, что УК составила протокол общего собрания жильцов нашего дома, они же сами написали повестку собрания и теперь собирают подписи. Этот протокол не заполнен, а в повестке стоит вопрос о том что собственники нашего дома ОТКАЗЫВАЮТСЯ от своей УК за неисполнения ими договора управления дома и СОГЛАСНЫ перейти в другую компания. Следующий вопрос был о принятии тарифа на содержание дома. Сейчас у нас муниципальный тариф, который они неправомерно завысили 3 года назад (по этому вопросу я собираюсь обратиться в суд, что не понравилось УК). Некоторые доверчивые жильцы поставили свои подписи на чистом листе. Как поступить в этой ситуации остальным жильцам, т.к. подписывать больше никто не будет (я им всё объяснила почему это не надо делать). Как мне можно проверить истинную причину ликвидации нашей УК: произошла ли реорганизация, банкротство или другая причина. Мы от неё не отказываемся. Правомерны ли действия УК составлять подобные протоколы общих собраний, собирать подписи на чистых листах? Как опротестовать уже собранные подписи? Спасибо.
Администратор печатает сообщение
Какие аффирмации самые эффективные
Стоит только набрать в поисковике запрос “аффирмации для женщин на каждый день” – и вы получите огромное количество фраз, которые, как утверждается, гарантированно изменят вашу жизнь к лучшему. Что здесь не так?
Все аффирмации начинаются с внимательного отслеживания мыслей. Прежде чем вы научитесь применять спонтанный перехват и таким образом прерывать поток негативного представления о себе, сначала нужно научиться фиксировать все, что вы ежедневно говорите себе о себе.
- Настройтесь на самого себя и слушайте. Действительно слушайте — именно так. Слушайте мысли, слушайте свои комментарии о себе — и записывайте. И когда соберете необходимый материал, начинайте исследовать его.
- Рядом с каждым отрицательным комментарием о себе напишите положительный. Пока не нужно изощряться, просто напишите что-то прямо противоположное негативному утверждению, а к тонкостям формулировок мы вернемся позже.
- Зачеркивайте каждую негативную оценку, адресованную себе, и пишите ее положительный аналог. Теперь у вас есть от чего отталкиваться, и мы можем перейти к созданию аффирмаций на волнующие вас темы.
Как писать эффективные аффирмации
Каждый раз, как вы будете записывать, а потом произносить собственные аффирмации, вспоминайте об особенностях работы подсознания. Оно воспринимает все буквально, знает лишь настоящее время, не понимает того, чего нет в наличии, не разбирается в туманных и абстрактных понятиях.
Представьте себе маленького ребенка, которому нужно объяснять окружающий мир очень конкретно и осязаемо. Дети знают лишь то, что можно увидеть, услышать и потрогать. Им недоступны такие понятия, как время, расстояние и место (особенно “не здесь”). Любая неопределенность сбивает их с толку. Кроме того, важна краткость, ведь у детей маленький объем внимания.
Итак, эффективные аффирмации должны быть сформулированы утвердительно, в настоящем времени, лаконично и конкретно; они должны быть персонально направлены и призывать к самосовершенствованию.
Утвердительность. Например, если вы стремитесь бросить курить и хотите создать аффирмацию действия, первым делом вам придет в голову фраза: “Я не курю”. Но подсознание проигнорирует частицу не. Следовательно, у вас получится полная противоположность тому, что вы хотите утвердить в своем сознании. Хорошим вариантом может быть: “Я свободный от курения человек”.
Настоящее время. Старайтесь не употреблять фраз с такими конструкциями, как я хотел бы быть, я буду. Не выходите за границы сегодняшнего дня. Другие неудачные примеры: я собираюсь… я начну… я должна…
Вам нужно донести до подсознания определенный образ, как будто он уже существует. Суть нашей работы в том, чтобы переучить подсознание, научить его думать о вас в терминах того, кто вы есть (кем вы хотите быть), а не того, кем вы можете быть.
Лаконичность и конкретность. Подсознанию требуются четкие и емкие формулировки. Бессмысленно твердить аффирмации типа “Я с каждым днем становлюсь все лучше” — не только из-за слова становлюсь (о котором я писала выше), но и из-за расплывчатого лучше. Лучше в чем? Аффирмация не уточняет, и с точки зрения подсознания эта фраза пустая.
Если вы скажете маленькому ребенку: “Веди себя лучше”, он будет лишь хлопать глазами. Лучше, чем что? Даже если вы имеете в виду “лучше, чем сейчас”, большинство дошкольников не поймут, что от них требуется. С подсознанием происходит та же история.
Персональная направленность и самосовершенствование. В ваш набор аффирмаций всегда нужно включать несколько одобрительных фраз, которые подкрепляют то хорошее, что в вас уже есть. Но стратегическое направление, чтобы достичь желаемого результата или приобрести желаемое качество, — это улучшение конкретных аспектов жизни и психологическая коррекция личности.
Собственные аффирмации должны помогать в личностном и социальном росте, поэтому вам не подойдут готовые шаблоны: они написаны посторонним человеком и лично для вас бесполезны. Во-первых, они должны укрепить именно ваше самоуважение; во?вторых, они должны звучать в контексте именно вашей жизни.
Как работать над индивидуальной аффирмацией
На семинарах, посвященных этой теме, я обычно рассказываю одну историю. Женщина захотела возобновить образование, но когда-то учеба давалась ей с большим трудом. Всю свою взрослую жизнь она считала себя человеком умным и способным, и в своих аффирмациях всегда отмечала эти качества. Правда, ее представление о себе как о плохой студентке никуда не девалось.
Оказалось, что недостаточно хвалить себя за ум и способности. Образ нерадивого студента внушили ей родители. Они так высмеивали ее университетскую жизнь, что она, утратив все стимулы, бросила учебу. В ее подсознании остался стереотип никудышной ученицы, и это убеждение влияло на всю ее жизнь.
После стольких лет было непросто вернуться к учебе. Проблемы начались уже в первом семестре.
Эта женщина, став моей клиенткой, обратилась к аффирмациям. Сначала она написала: “Я хорошая студентка”. Для начала сойдет, но я предложила ей добавить что-то личное, как-то оживить фразу. Что значит хорошая студентка конкретно для нее? Какие именно действия надо предпринять, чтобы стать хорошей?
Она вспомнила, что и в детстве, и в юности никогда не тратила много времени на учебу. Поэтому вторая версия аффирмации звучала так: “Я учусь больше”. Но слово больше слишком неопределенное, оно не подходило. Я попросила ее подумать о своем предмете и об объемах учебной программы.
Оказалось, она изучала историю — предмет, по которому обычно требуется читать довольно много книг. По ее словам, это вызывало у нее прокрастинацию. Итак, у нее появилась третья версия аффирмации: “Я хорошая студентка, которая учит историю по часу каждый вечер”.
Теперь ее аффирмация звучала конкретно. Но, кажется, это был перегиб. Если вы поднимете планку слишком высоко, то лишь разочаруете себя. Я спросила ее: “Ты собираешься читать учебники и другие книги семь дней в неделю, каждый вечер, без передышки, без выходных? Неужели у вас такая нагрузка?” Она задумалась и поменяла аффирмацию: “Я хорошая студентка, которая учит историю по часу в понедельник, среду и четверг”. Такой вариант оказался длянее приемлемым, она смогла придерживаться этого графика, что намного улучшило ее позитивный настрой по отношению к самой себе.
Как улучшить ваши аффирмации: примерный список
Давайте посмотрим, как применить на практике те способы и приемы, которые мы обсудили. Возьмем хорошие аффирмации и улучшим их, добавив деталей.
Хорошо | Лучше |
Я ответственная | Я вовремя оплачиваю счета |
Я симпатичная | У меня красивые глаза |
Я привлекаю хороших людей | В моей жизни есть любящие люди; Вокруг меня доброжелательные люди; Вокруг меня милые люди; Ко мне относятся с заботой и уважением |
Я дарю любовь | Я отношусь к другим с заботой и уважением |
Я люблю себя | Я отношусь к себе с заботой и уважением |
У меня хорошая память | Я записываю все, что мне надо запомнить |
Я пунктуальная | Я заношу свои планы в ежедневник; Я приезжаю на работу вовремя; Я прихожу на встречи с друзьями вовремя |
Я забочусь о себе | Я каждый день пишу дневник; Я каждый день принимаю витамины; Я каждый день даю себе позитивные установки |
Я делаю зарядку | Я каждый день хожу пешком на работу и с работы; Я хожу в спортзал в понедельник, среду и пятницу |
Я высыпаюсь | Я каждый день ложусь спать в 11 часов вечера |
Я доброжелательная | Я здороваюсь с соседями |
Как правильно использовать аффирмации
- Итак, сядьте и напишите много активных утверждений. Потратьте еще время и отшлифуйте их формулировки. Затем выберите от семи до двенадцати активных аффирмаций, которые нужно повторять несколько раз за день.
- Такое повторение действительно запечатлеет их в вашем подсознании. Кому-то нравится записывать аффирмации на стикерах и развешивать на зеркале в ванной комнате или вокруг рабочего стола. Кто-то начитывает на диктофон и слушает их. Выбирайте, что вам удобнее. Главное — делайте!
- Потребуется по меньшей мере тридцать дней, чтобы новая аффирмация прочно укрепилась в подсознании. Все тридцать дней повторяйте свои семь или двенадцать основных установок, которые вы выбрали.
- Потом можно заново пройтись по списку. Не меняйте все сразу, решите, какие нуждаются в уточнении в первую очередь, какие — позже.
- Некоторые переставьте, что-то выкиньте, можете добавить несколько новых. Произносите их еще месяц, а потом снова усовершенствуйте список.
Итак, впереди вас ждет несколько недель позитивного самоутверждения. Говорите себе, что вы способный, уверенный в себе человек, который справляется со всем очень хорошо. Пусть позитивный внутренний диалог и правильный психологический настрой станут естественной частью вашей жизни. Будьте сами себе лучшей группой поддержки.
Как повысить эффективность аффирмаций: добавьте визуализацию
Проговаривать аффирмации — это основа основ, но, когда вы добавляете визуализацию, процесс выходит на совершенно новый уровень.
В еженедельном расписании выделите специальное время для следующих упражнений.
- Прежде всего, устройтесь где-нибудь поудобнее. Сядьте в удобное кресло, прилягте на кровать, наберите ванну с пеной.
- Поставьте аудиозапись с медитацией или спокойной музыкой и закройте глаза. Расслабьтесь.
- Вспомните свои позитивные установки. Если вы записали их на диктофон, включите запись.
- Если нет, то выберите несколько из них, которые сможете визуализировать, и представьте, что вы уже находитесь в той точке, куда стремитесь попасть. Проведите время наедине с собой и рассмотрите мысленно ваше будущее так, словно оно уже воплотилось в жизнь.
Визуализация во много раз повышает эффективность аффирмаций. Зрительный образ запечатлевается в подсознании очень крепко.
Мне кажется отрицательно пишут те, кто не пробовал и сам может взять себя в руки и замотивироваться. Я знаю одну женщину в инсте — она прошла подобный марафон в 36 лет примерно — была много больше 70 кг, отекшая вся, ужасная вся была. Она выиграла этот марафон, продолжила питаться правильно, изменила вообще жизнь+ пошла учиться на нутрицитолога и так далее. Сейчас сама делает свои марафоны, оч хорошо выглядит, я ее каждый день вижу)) . Я сама худела после вторых родов — смогла поменять питание+ йога каждый день. Но среди моих знакомых со спортом каждый день только я
01.12.2021 09:48:22, Шота
И просто заниматься йогой, висеть на турнике не надо, очень важно правильно выбрать нагрузку.
30.11.2021 23:04:27, Фьорд
Нет. Вам надо подбирать упражнения для укрепления спины, иначе может хуже стать, не все полезно. У меня рука онемела и боль была из-за защемленного нерва.
30.11.2021 23:00:25, Фьорд
Ой, нет! Знаю «отдайте мне все ваши деньги и худейте на здоровье»))) Вчера был мозговыностельный день, сегодня есть не хочется и ничего не хочется.
30.11.2021 15:56:21, жираф Анатолий
соревнование кто больше скинет за месяц — это точно вред
не надо это делать резко
ну и я не понимаю за что 3 тыщи? за коллектив разве что ))
так то ешь 1200-1500 кал/день с соблюдение БЖУ, через день тренируйся до пота минут 40-60. А уж если еще и 10 тыщ шагов, то ваще супер
заплатите мне, я буду с радостью принимать ваши отчеты )), хвалить буду за успехи
Но вот за слишком быстрый сброс веса буду ругать ), не полезно это
какой только ерунды люди не покупают теперь в интернетах, а на продавцов мне нравится смотреть, я и Мавроди любила ))
30.11.2021 12:48:57, ЁЁЁЁЁ
1. Таблетками спину не вылечить. К сожалению спорт в таблетках еще не придумали.
Йога отлично для спины, в тренажерку можно, спина — это второй по популярности запрос тренеру после похудения.
Если совсем лень, есть мануальные техники работы со спиной и животом. Вакуумные банки, гуаша, мануальная остеопатическая работа, висцеральные техники. Это мышцы не укрепит, конечно, но улучшит состояние за счет работы с лимфатической и сосудистой системой, снимет спастику.
2. Любая диета работает, если ее придерживаться длительное время. Марафоны заходят тем, кому нужна компания и поддержка единомышленников. но потом надо продолжать самостоятельно или не выходить из марафонов.
30.11.2021 12:15:59, Фиолетта
2. Про марафоны отвечу, сейчас их проводит все кому не лень, толк в том, что самому просто так сложно заставить себя жить по программе, а там типа контроль, еще и денег заплатили, поэтому больше стимула. Есть толковые, есть просто кто рубит на этом хайпе деньги, у меня в инсте среди знакомых много кто этим увлекается, и проведением и участием.
Если есть проблемы со здоровье, спина в частности, то лучше все же не марафон онлайн, а личная консультация специалиста
30.11.2021 12:11:36, Пирожки
как-то подошел ко мне чел на 30 лет меня младше и спросил типа спина болит, что делать. Ну показал пару упражнений, сказал, что года три занятий — и проблема исчезнет… Ну и потом продолжать, конечно… Приходит лет через пять- опять жалуется на спину Говорю — а вот если бы три года делал упражнения, то щас был бы уже пару лет как в порядке… Тот пальцем у виска покрутил и ушел растираться мазями да БАДы пачками хавать…
Легко и приятно давать советы, обладая четвертьвековым опытом тренажерного зала ))
30.11.2021 11:57:14, AleXXX
расскажи упражнения то ))
а то историю уже не первый раз рассказываешь, а упражнения зажимаешь
мы тут все уже старенькие, у всех спины болят периодически )
30.11.2021 12:52:58, ЁЁЁЁЁ
банальная гиперэкстензия в двух разных видах. И разных темпах и нагрузках.
30.11.2021 13:44:01, AleXXX
я и слова то такого не знала
ну погуглю, ок
30.11.2021 14:12:19, ЁЁЁЁЁ
2.Эти марафоны проходят на разных платформах
(из того, что известно мне — ВК и Инстраграм,
суммы разные, разные они и по содержанию).
Самое главное надо решить,
как вы будете питаться/двигаться/тренироваться после завершения марафона.
30.11.2021 11:56:20, Фруате
1. ну если бы витамины, то почему не пили? не ясно. не доверяли врачам? тогда зачем к ним оращались. вопросов больше, чем ответов.
2. да, слышала, в странемам давали ссылку, хвалили. ну, такое. если я сама себя не сподвигну, то никто не сподвигнет ) или тренер нужен, обласкивать и обкрикивать ) а тренера (личные, я привыкла) стоят 1500 в час, а не 3000 в месяц )))
30.11.2021 11:32:59, Акцент
1. Заметила, что пальцы рук немного немеют . Врач сделал рентген шеи и назначил ( как выяснилось хондропротекторы.Уже прочла про них)
Так целый мешок я не готова была пить ( я вообще крайне редко пью лекарства, не разбираюсь ) , то и не пила ). Ничего не болело.
Зря, конечно
30.11.2021 11:46:46, птичка певчая
«пальцы рук немного немеют» = «ничего не болело»???
вообще, витамины нужно пить именно мешками, много, чтобы усваивалось. и это самое действенное, что есть, имхо.
30.11.2021 12:34:27, Акцент
«пальцы рук немного немеют» = «ничего не болело»???
Это было эпизодично . Потом прошло.
Но я тогда же начала ходить на фитнес регулярно. может поэтому прошло.
Зря не пила, да
30.11.2021 12:37:55, птичка певчая
фитнес и движения всегда хорошо )
30.11.2021 12:41:26, Акцент
Поначалу эти марафоны действительно мотивируют, но с годами я превратилась в коллекционера марафонов ))). Для меня в принципе ничего нового в них нет. Но каждый раз надеешься на чудо. А в принципе-то достаточно только пары листочков, выданных мне врачом, на которых расписано: что мне можно есть и что категорически нельзя. Да даже и этого много))). достаточно помнить, что нельзя быстрые углеводы))).
30.11.2021 11:30:27, Петровн@
)) +1
и в принципе поменьше жрать и побольше двигаться
30.11.2021 14:13:17, ЁЁЁЁЁ
в основном такие марафоны это переплачивание денег. в интернете полно пп рецептов. полно бесплатных программ для похудения и упражнений для начинающих. посмотрите тикток. Там мне нравится Наталья Мелькова, @_dasha_hudey . По крайней мере можно понять с чего начать. Но вообще это образ жизни а не один момент. А вот марафон не зашел. обучения там не получила.
30.11.2021 11:29:33, ПимпусЬ
При больной спине полезно(после консультации с врачём) делать зарядку. У меня болит, я делаю, если не не делаю болит больше(((
Про марафон зависит от вашей мотивации. Настраивайтесь, общайтесь с единомышленниками, это хорошая поддержка. Но если ВЫ сами не способны себя мотивировать деньги уйдут в песок
30.11.2021 11:01:25, ВВ (быв.Не овен)
Спасибо , что напомнили название
Точно!!!
Это было что то ХОНДРО..) Хондропротекторы.
Пока буду пить , если посоветуете конкретно -марку ,дозу стандартную .Колоть, увы, некому пока.
Поеду в Россию , врача буду искать и спрашивать.
У нас же меня записали на консультацию ….на май 2022))))
А платно будет со всеми анализами и МРТ 1,5-2 т долларов как минимум. Мою компанию жаба задушила -пока кризис — не дают страховку(
30.11.2021 11:00:15, птичка певчая
В 32 года я за 2 недели худела на 7 кг без всяких марафон. Вот после 40 так похудеть… И второй вопрос а надо ли? Похудеть для спины вам конечно надо. Но нужен ли для этого марафон? Не знаю. Если самой никак, то можно. Вреда я думаю от марафона не будет. Про биодобавки не скажу. Если поделитесь что пили буду благодарна. У мужа как раз сейчас грыжа
30.11.2021 10:54:26, Верная жена
Мне при весе 62 и росте 164 хотелось бы только 3 кг сбросить . Поэтому мотивация слабая. В течение дня с шоколадкой в руке вдруг начинает казаться, что и так хорошо))
Спина же напоминает, нет , ничего хорошего.
Вот сейчас составлю список для поддержания спины.
1. Хондропротекторы
2.Витамины Д, ОМЕГА, Б ( какие вот только Б6,Б2, Б12?)
3.Мне йога помогает очень .Лёгкая, для начинающих, я её не собираюсь менять на более продвинутую.
4… вес и питание .Думаю вот
30.11.2021 11:19:06, птичка певчая
Спасибо за витамины! Витамины группы В муж пьет. А вот хондопротекторы нет. Но видимо его доктор в них не верит. Омегу нужно всем. И мне в том числе. Если б у меня было 64 кг я б не парилась вообще. Не нужен вам марафон. Йога — это замечательно. Еще в бассейн можно пойти для спины и похудения. Хоть тут его ругали недавно. А у меня муж начал ходить и хромать за пару занятий перестал. У него защемился нерв из за грыжи. Уколы прокололи что врач назанчил. Но до конца не прошло. В бассейн и врач рекомендовала. Вот пошел и сразу легче стало
30.11.2021 12:31:20, Верная жена
Это не тот перебор веса, чтоб спина болела, она болит из-за того, что слабая.
Вам надо акцент не на сбросить, а на мышцы накачать, как раз пресса и спины
Неплохо для начала определить соотношения жира и мышечной массы, потом со специалистом выбрать правильный комплекс упражнение
30.11.2021 12:31:06, Пирожки
При росте 164 вес 62 в нашем возрасте это норма, а не перебор.
30.11.2021 12:40:07, ШаНуар
Подозреваю, в соотношении жир/мышцы проблема.
30.11.2021 12:42:18, птичка певчая
Да, про мышцы и соотношение согласна. Думаю , надо переводить вес жира в вес мышц.
Но как я летом похудела на 3 кг, всё перестало болеть. Сейчас опять набрала и вернулась боль.
Но я никак себя не ограничиваю в еде, это да.
30.11.2021 12:36:02, птичка певчая
Как у вас с питьем воды? И как со сном? Порой если начинаешь пить больше простой воды и спать по 8 часов и не есть как минимум за 3 часа до сна — то этого уже может быть вполне достаточно чтоб похудеть на пару кг.
30.11.2021 11:22:38, KengaLu
Стараюсь пить 1,5 л воды в день . Стандартная бутылка .
Я про воду добавлю еще .
Как переживу дефицит воды -так начинают болеть суставы. Это точно .
Сплю нормально , 8 часов .
Не есть за 3 часа -в общем то так и есть . Но у нас так получается, что главный прием пищи в 7 вечера. У нормальных людей это 2-3 часа дня.
Вот после 7 почти и не хочется есть по этой причине)
30.11.2021 11:27:57, птичка певчая
Да у вас вес нормальный. Можете проверить по ИМТ. Т.е. все мы хотим быть стройнее но для организма это нормально. Я тоже всегда при нормальном ИМТ старалась похудеть. Всю жизнь. В итоге сбила обмен веществ и потолстела мама не горюй. Сбрасывала 5 поправлялась на 7. И так в геометрической прогрессии. И доросла до того что по ИМТ лишний вес. А небось не занималась бы этой фигней и сейчас бы была с нормальным весом. Вашему организму худеть не надо. У него все норм. А если вам мерещаться лишние 3 кг то ему это как то все равно. Ему главное чтоб вы излишне не похудели.
30.11.2021 12:34:53, Верная жена
Излишне худеть после 40ка не хочу. Лицо жалко) .
Я не столько о внешности, сколько о суставах задумалась.
30.11.2021 12:44:08, птичка певчая
У меня основной прием пищи в десять вечера, но первый раз ем в 12 дня, оказалось, что для моего организма это самое комфортное
Так что тут пробовать
30.11.2021 12:18:44, Пирожки
А завтрак во сколько? Попробуйте intermittent fasting (интервальное голодание кажется по русски). Найдите свой интервал. Большинству подходит 16/8 (16 часов не есть совсем ничего. Воду пить можно. Приём пищи в течении оставшихся 8ми часов. Естественно не все 8 часов жевать) или 18/6 или 20/4 (но это я бы не советовала сразу).
30.11.2021 11:33:32, KengaLu
У меня не очень хорош желчный. Был момент, хотели удалить. Пока обошлось. Но совет был -есть понемногу почаще.
Интервальное голодание у моей подруги. Результат хороший.
30.11.2021 11:48:34, птичка певчая
Вы правильно объединили эти два вопроса, так как они напрямую связаны. Если есть проблемы со спиной, их надо решать и путём физически правильных нагрузок, и питанием, и БАДы можно подключить.
Но тогда лучше искать не похудательный марафон, а «гуру» по вопросам спины. Я бы искала среди йогов, но не идейных, а физиотерапевтических.
30.11.2021 10:42:35, Perry
Вот тогда и 3й вопрос -может кто-то посоветует гуру, с которым сам работал над своей спиной.
И четвёртый …)
Есть такая возможность из за границы консультироваться у хорошего врача по инету. ? Это ортопед нужен или невролог?
У нас после локдауна такая фигня с врачами несрочной помощи, что я никак и не разберусь .
30.11.2021 10:49:54, птичка певчая
Я не в Москве, поэтому не смогу рекомендовать кого-то конкретно. Думаю, что по интернету вариант не подойдёт. Мой тренер очень внимательно следит за правильностью использования, часто подходит и поправляет, нажимает, отодвигает… Плюс, если в Москве вам ещё подскажут знающие люди какого-то специалиста, то заграничного вы как найдете? Всё таки нужны отзывы реальных пациентов. Ну и не думаю, что у вас какой-то сверх сложный случай, чтобы так заморачиваться. Я бы начала искать очную помощь и пробовать здесь и сейчас.
30.11.2021 11:04:42, Perry
Ааа, так вы не в Москве. Ну тогда у себя искать по отзывам.
30.11.2021 11:08:50, Perry
У себя -глухой номер.
Хочу дистанционно с российским ( не обязатеьно в Москве)
А здесь делать его назначения
Мечтаю так пока)
30.11.2021 11:20:51, птичка певчая
[ссылка-1] посмотрите тут для новичков, есть что-то для людей от 60 лет, моя спина и от таких простых треков расправляется. И делайте осторожно, слушайте себя)
30.11.2021 11:03:12, Зимняя (р.пианистка)
Спасибо
Ну до 60ти мне ещё далеко ))
30.11.2021 11:49:48, птичка певчая
1.Не надо хондропротекторы пить, они из желудка не усваиваются. Их надо колоть. Найдите врача, который это умеет.
2. На подобном марафоне худела моя дочь. Сбросила за курс 18 кг. Все соблюдала железно. И после курса пришлось соблюдать, иначе вес немедленно увеличивается.
30.11.2021 10:41:08, Mrezz
При чем колоть в сустав. Слышала такое мнение.
30.11.2021 12:35:41, Верная жена
Положите 3 тыс. в тумбочку и дальше делайте как будто вы их выслали чужому человеку. Пишите отчеты, делайте упражнения. :-))
30.11.2021 10:28:24, Краевед
1. Не знаю
2. Регулярно сама провожу. Но у меня веганское питание + движение + сон + pampering (уход за собой). За 6 лет вреда не было ни у кого. Наоборот у всех здоровье улучшилось. Многие после марафонов записывались на годовую программу. Есть и те кто просто возвращается периодически на марафон. Мол очистить организм и вдохновиться, но на постоянной основе такой стиль жизни не могут держать — и это тоже понятно.
Посмотрела что 3000 рублей — это примерно $40? Так? Совсем дёшево имхо.
30.11.2021 10:21:44, KengaLu
[Cообщение удалено модератором на основании пункта правил:
-спам, флуд, провокации, сообщения, носящие навязчивый характер
После 5-ти нарушений Вы будете переведены в режим чтения!]
30.11.2021 11:25:42, ??????
Теперь запрещено рассказывать о своей деятельности?
Пишешь, что врач — ищешь пациентов, пишешь, что журналист — о, подработку подыскиваешь… Учителям и вообще писать нельзя. Переводчик — ну, понятно, этот тоже рыщет в поисках дополнительного заработка. Бухгалтер — этот связи развивает, вдруг на место получше пригласят или предложат баланс свести разово.
30.11.2021 13:57:17, Шиповник (экс-Василиса)
Не знаю, кто Вы , но , думаю, очень завистливый и ничего не представляющий из себя человек.
Жалко Вас.
Мысли так подставить Кенгу , которая мне интересна безотносительно какой то деятельности ,под подколы таких фантомов никак не могло возникнуть.
Расслабьтесь
30.11.2021 11:32:33, птичка певчая
3000 никак не возмутило, в Катаре это один лёгкий завтрак в кафе Пол )
Я специально цену указала, чтобы поняли , про какой марафон речь.
А где можно Вас почитать ? Интересно стало.
30.11.2021 11:03:01, птичка певчая
Я не работаю тут, извините.
30.11.2021 11:16:54, KengaLu
Я была уверена , что Вам здесь было бы некомфортно . Как то по семейному здесь , не стоит с роднёй дела иметь. Вы правы.
Я просто про источник советов, необязательно лично Ваших . Но которым Вы доверяете.
Ничего страшного, я понимаю что тут неудобно .
30.11.2021 11:36:22, птичка певчая
Хотела попросить у вас ссылку на ваши программы, но чувствую что для меня это дорого) а 3000 это некопеешная цена, для большинства россиян это 1-2 дня работы, и надо ещё оторвать их от семейного бюджета
30.11.2021 10:58:13, Зимняя (р.пианистка)
Я ссылку не дам. У меня другая ниша, цена много выше, много английского языка даже на программе для русскоговорящих, плюс я не хочу мешать здешнее общение с работой.
Я просто ответила автору, так как она собирает мнения. Из моего опыта такие марафоны помогают людям поддержкой, мотивацией и чувством командности (team playing).
30.11.2021 11:07:14, KengaLu
1. Как мы Вам можем сказать, что это было?
2. Зачем для всего этого платить 3 тыс? Это можно все делать самостоятельно, комплекс упражнений можно подобрать любой самостострятельно, никаких чудо-комплексов на 20 минут не бывает.
30.11.2021 10:20:39, ПчЁлКа™®
1. Хондроитин с глюкозамином? Обычно большие таблетки или капсулы, по 2-3 на прием, в зависимости от производителя.
30.11.2021 10:19:41, Leenka
Вред в том, что подобные марафоны не учитывают особенности каждого участвующего, например Ваши. И упражнения на 20 минут и 10 тысяч шагов, могут очень губительно сказаться на Вашей спине. Как и диета.
Таблетки скорее всего были хондропротекторами.
30.11.2021 10:02:55, хъ
а какие мнения вы хотите услышать?
Чудо-таблеток не существует, заниматься спиной можно и нужно, похудеть можно и не обязательно за это платить кому-то деньги.
1. в вашем случае могло быть что угодно — от витамина С и глюконата кальция до хондропротекторов, коллагена и «обезболивающих».
2. всегда удивлялась умению людей выкачать из других деньги из воздуха)
30.11.2021 09:53:48, Vanilla
Биодобавки — возможно, это были хондропротекторы.
Постоянная ходьба и больная спина плохо сочетаются. Нужны будут ещё дополнительные упражнения для мышц спины. Но зарядка и правильное питание в малых дозах обязательно помогут похудеть)
30.11.2021 09:37:05, Вечная Весна
чем может повредить месяц очевидно малокалорийной еды и движения?
30.11.2021 09:33:16, Шерлок
32 года это не дама, а девушка. Уж не знаю, какой там вес, что для похудения программа требуется. Мне в 32 худеть не требовалось в принципе.
Вы хотите от нас ответов на вопросы, которые мы не знаем и знать не можем. Первый вопрос к специалистам, врачам. Второй вообще выглядит как пойди туда, не знаю куда. Названия программы нет только в вашем изложении чужого пересказа.
30.11.2021 09:33:09, ШаНуар
32 года это женщина с двумя детьми.А так то и мы с Вами -девушки)
Про специалистов я написала. Сложно немного здесь.
Название я не знаю, но напиши я здесь, сразу обвинят в рекламе, ттт
30.11.2021 12:25:01, птичка певчая
А при чем здесь количество детей? Я знаю даму, у которой в 32 их было уже четверг, и она таки была девушкой чисто внешне. Это состояние души, внешности, физическая активность. Я в 32 была не просто девушка, мне больше 20 с маленьким хвостиком не давали, хотя у меня тоже годовалый ребенок был. А мы с вами тут уже все же дамы)) И да, название программы собственно не важно, важно содержание. Кто знает, может там упражнения вредные для вашей спины, а питание не подходит вашему желудку.
30.11.2021 12:47:56, ШаНуар
За мной этим летом юноша лет 18 бежал со словами » девушка, вы мою тележку взяли»
Большой светлый гипермакет, людей не много .Я этого юношу аж захотела в свою тележку посадить и домой взять в знак благодарности)))
Так что и мы девушки тогда .
У той девушки 32 лет не меньше 20 кг лишних, кстати. Я видела ее.
30.11.2021 13:27:43, птичка певчая
1. Я против всяких БАДов. Может они и приносят пользу, а может это плацебо, я не знаю. Я бы нашла хорошего, грамотного врача на эти деньги. Может какие рекомендации дал бы. У меня тоже есть проблемы с позвоночником, их я учитываю при тренировках.
2. ИМХО, все эти марафоны — средство для заработка инстаграмщиков. Они очень неплохо себя чувствуют))
По факту — все в нашей голове, в нашей самодисциплине, в питании и в тренировках. И будет колоссальный результат. У меня минус 10 кг, когда хотела скинуть 5.
30.11.2021 09:28:50, Gulchatai
В Катаре на эти деньги нет даже просто одного визита к специалисту.
Есть гос бесплатно и хорошее мед обслуживание.
Но запись… на полгода вперд
Самодисциплина….Ну вот я считаю себя организованным человеком , даже очень, если сравню с членами моей семьи и подругами.
Есть вещи , которые делаю регулярно, в том числе много лет йогу утром .
Но я из тех, кто за компанию удавится))) Вот просто на порядок выше моя активность.
30.11.2021 11:08:26, птичка певчая
Таких людей — с самодисциплиной — очень мало.
А так бы и языки все сами учили и много чего еще осваивали самостоятельно.
30.11.2021 09:30:57, Яшими ( МарикаЧ)
языки самостоятельно сложно и преподаватель нужен совсем не для организации. Тот же навык говорения — как без партнера, знающего язык? А объяснить нюансы? С преподавателем гораздо быстрее и эффективнее
30.11.2021 09:56:41, Vanilla
так за деньги все равно дисциплина, зашитый рот и физическая активность?
Без тебя никто тебя не подвинет:)
30.11.2021 09:54:50, Vanilla
Для меня изучение языка — это бесконечное какое-то занятие. Говорю на бытовом уровне неплохо, занимаюсь с носителем, а вот для бизнеса — пока как ребенок-первоклассник(((
но я не унываю, слушаю, читаю, смотрю…
30.11.2021 09:38:07, Gulchatai
Я тоже не унываю:) Смотрю, читаю, занимаюсь. Но теперь с репетитором. Не получается делать регулярно без организующего начала.
кстати, надо начать писать контрольную… а я тут сижу, прокрастинирую…
30.11.2021 09:43:45, Яшими ( МарикаЧ)
Да, в том то и дело что есть куча бесплатных ресурсов, но это практически никому не помогает
30.11.2021 09:32:50, Зимняя (р.пианистка)
Я 2 года назад очень хорошо похудела на 6 кг: ходьба и запись съеденного в приложение.
Сейчас наела 2 кг и хотела опять начать худеть с помощью приложения. Но не получается пока в
Вообще я верю в эти марафон и считаю, что оплата дисциплинирует.
Вот на прошлой неделе скачала пробный курс, там добавлены упражнения с танцами, короткие минут на 7. Сделала-понравилось.
Но постоянно покупать не хочу.
Можно у вас в теме поинтересуюсь хорошими короткими танцевальными комплексами на ютубе?
Вдруг кто-то поделится.
30.11.2021 09:28:34, LoraEf
Я тоже послушаю -короткие танц. упражнения тоже хочу
30.11.2021 11:10:47, птичка певчая
обоже, в 32 года я худела без всяких марафонов, точнее, я их себе делала сама. В 32 года совершенно ничего не стоит заклеить рот скотчем и немножко попрыгать, чтобы сбросить вес.
Я тогда худела на коктейле Diet Trim (вроде так) и каждое утро бегала всего лишь 2 км. Никому никакие тысячи не платила. А вред такой — в 32, конечно, похудеешь. Может, даже сколько-то продержишься, год или 3. Потом еще похудеешь, допустим в 40. И еще сколько-то продержишься…Ну и т.д. А потом все эти сброшенные килограммы вернутся снова и скажут «привет, а вот и мы!», а ты уже на шестом десятке и сил снова начинать этот марафон совершенно нет! Вот это, блин, засада! А главное, уже ничего не действует, ни диета, ни физ нагрузка. Хотя физ нагрузка у меня ща намного больше чем в 32. Но организм хитрый, он не реагирует.
30.11.2021 09:27:35, хухра-мухра
Я пришла к выводу, что у каждого в жизни есть своя «болевая точка».
У Вас это вес. И я считаю, это не такой уж большой минус.
У меня — деньги. Как бы я не старалась, что бы ни делала, не получается у меня жить хоть в каком-то достатке, позволять себе то, что доступно многим. Я уже расслабилась на эту тему.
Вернее, расслабилась не в попытках найти работу, а в желании иметь достаточно средств к существованию.
Да и ладно. Есть вещи и похуже.
30.11.2021 09:40:46, Яшими ( МарикаЧ)
ой, у меня вес -совсем не болевая точка. Я, конечно, за ним слежу, иначе перестану проходить в двери да и вообще вставать с кровати не смогу. Но болевая точка у меня совсем другая — сколько ни ищу, не могу найти нормального мужика))) А вес, ну даже большой по нынешним временам — он мне особо не мешает, в метро в турникет прохожу, в дверь протискиваюсь, по 10 км в день прохожу, значит, все нормально.
30.11.2021 10:00:39, хухра-мухра
* сколько ни ищу, не могу найти нормального мужика)))*
А мне видится —
* сколько не пытаюсь, никак не могу пересмотреть спецификацию разыскиваемого товара»)
Офф
Рисуете Вы -просто класс, в инсте вижу постоянно.
Может, художников прошерстить ?
30.11.2021 11:41:31, птичка певчая
спасибо) На открытии была парочка художников, заинтересованно на меня смотрели, но мои приятели всех там распугали. Вот так всегда.
Помню, была на ДР подруги. Прекрасное место, спортбар. Потом еще музыка заиграла, мужчины пошли танцевать! И многие без пары были! Но ее сынулька пошел танцевать со мной и всех распугал. Это ему скучно стало с мамиными ровесницами там сидеть за столиком, а мне, как всегда, захотелось подвигаться — ну, он и решил компанию составить. Короче, не везет))
30.11.2021 16:05:12, хухра-мухра
Да, надо было сказать «цыц» дружкам. Ну или сказать им чётко, что Вы в поиске, пусть знакомят.
30.11.2021 16:38:00, птичка певчая
ахаха)) Один из них бы прифигел от такой моей заявы))) Я ему когда-то пообещала ни с кем при нем не целоваться)))
30.11.2021 17:45:33, хухра-мухра
Так у Вас проблема не » нет мужчины» !)
Проблема » у меня их много, трудно выбрать» )))
Как при капитализме стало трудно выбрать в многообразии вещей, а раньше как хорошо было , встал в очередь , купил, что дают)
30.11.2021 18:24:56, птичка певч.
Во-первых, в 32-36 можно и без дорогой программы так худеть, проверено Во-вторых, имея те же проблемы со спиной, что у вас (возможно, правда, чуть хуже), при значительном снижении веса неожиданно получаю проблемы со спиной. Пару раз проверяла, потом бросила эксперименты Ну, то есть умом я понимаю, что надо _сначала_ нарастить очень приличный мышечный корсет для поддержания спины, и потом уже заниматься аккуратным снижением веса, постоянно эти мышцы поддерживая уже в обязательном порядке, без всяких «надоело/некогда/я-и-так-красивая». Но таааак лень )))
30.11.2021 09:27:35, УникаЛьнаЯ
1. Вы спрашиваете почему вы выбросили хорошие таблетки? Наверное, вам так хотелось. 2. Я участвовала в подобных марафонах, мне нравится такой формат, но вам естественно никто не даст гарантии что конкретно это конкретно вам поможет или не на вредит.
30.11.2021 09:21:40, Зимняя (р.пианистка)
1. Да нет, конечно, я спрашиваю, что за БИОдобавки могли быть ? Для чего?
2. Мнения собираю пока. Спасибо за Ваше)
30.11.2021 09:27:19, птичка певчая
По хорошему надо сдавать анализы по списку нутрициолога. Хотя бы витамин Д , железо, гемоглобин, и при дефиците принимают большие лечебные дозы а без дефекта не стоит и тратиться
30.11.2021 09:31:28, Зимняя (р.пианистка)
Вот именно в отношении таких проблем как , видимо, артроз и грыжи -вот эти анализы сдавать? Или ещё что то можно.
я не очень на короткой ноге с мед. вопросами , это да(
30.11.2021 10:52:29, птичка певчая
Это вам надо к неврологу. Атроз-грыжи и прочее — это все туда. Если вдруг грыжа — то нейрохирург посоветует что делать. У мужа грыжа, ему назначили гимнастику, вот и делает ее ежедневно по 10-15 минут. По анализам — может вам кальция не хватает — это надо смотреть отдельно.
09.12.2021 13:15:34, Nadjuscha