Один американский доллар
Мне нравится как в интернете, обсуждая и сравнивая зарплаты, пособия и помощь от государства в Америке и России, отдельные ребята не глядя умножают среднюю американскую зарплату или ежемесячное пособие на текущий курс рубля и на основе полученных цифр, которые не имеют ничего общего с реальностью, принимаются рассуждать «Как же на Руси живётся плохо».
Ремарка: я считаю, что нежелание вводить режим ЧС в стране и взять на себя обязательства по поддержанию своего народа в трудные для всей планеты времена — трусостью и банальной жадностью, однако к теме сегодняшней публикации, решения правительства России имеют весьма отдалённое отношение.
Считаем деньги среднего класса в России и США правильно:
1. Одна американская семья, где работают оба взрослых, складывает свои годовые зарплаты и получает так называемый Household Income, все заработанные семьей деньги ДО вычета налогов. На 2019 год, по Америке на 1 семью, медианный доход составляет $63,688 в год. Я чуть позже поясню почему берем медиану.
2. Вычитаем налоги: формула довольно комплексна и мучить вас ею не буду, на нашу медианную зарплату выйдет около $9 000, здесь учтены федеральные налоги, FICA, скидка в $2,000 за 1 ребенка и усредненный налог штата, так как от региона к региону он может сильно меняться (от 0 до 5-7%). Обычно уже на этом этапе многие счетоводы и любители сравнивать зарплаты в обеих странах «в лоб» — просто обосрутся, так как они не учли налоги.
3. Теперь $54 688 мы делим на 4. Это ключевое действие в наших расчётах, на которое почти всегда забивают болт, рассказывая как же хорошо в Америке живёт средний класс. На 4 мы делим потому, что необходимо добиться «паритета покупательской способности» между США и Россией. Аренда/ипотечные выплаты, ЖКХ, еда, всё это в Америке несравнимо выше, чем в России. Самый простой пример: булка хлеба в США в среднем стоит $2,50-$3,00, 1 фунт (полкило) риса $1, а дюжина яиц около $2. А теперь скажите мне, как давно вы покупали в России булку хлеба за 190-220 рублей? То-то и оно.
4. И вот теперь, оставшиеся $13 672 умножаем на 75 (средний в последние месяцы курс) и получаем 1 025 400 рублей в год или 85 450 рублей в месяц на семью. То есть американские мама и папа, в конце месяца, домой приносят каждый по ~42 725 рублей и вот это, реальная средняя зарплата в США, скорректированная на российские реалии.
Что там в России?
Медианная зарплата на 1 работника в России около 25 000 рублей, то есть 40 000 - 50 000 рублей на семью, где оба работают на примерно одном уровне. Я взял медианные показатели не просто так. В Росстате, очевидно работают сумасшедшие и просто хитрожопые ребята, ибо выдают 47 000 рублей как среднюю ЗП по стране на одного. А всё потому, что нельзя просто брать и складывать зарплату директоров и квалифицированных специалистов с зарплатами рядовых трудяг/работяг.
Теперь вы знаете, что реальная разница зарплат, между Россией и США для среднего человека буквально в 2-3 раза и это максимум. А всяческих полоумных счетоводов, умножающих 60-70 тысяч долларов на 75 и кричащих «Вот ведь в Америке люди живут!» можете ссылкой отправлять на этот пост, для просвещения, ну или в крайнем случае — на хуй, менее информативно для него, зато эффективней.
Источник
https://t.me/vata_usa/488
Создание простой области видимости (C++) [UE4]
Добрый день. Это второй мой пост на тему создания простой области видимости. И он тесно связан с первым постом, так как конечный результат будет точно таким же как и там. Только получим мы этот результат с помощью C++. Если какие-то детали разобраны недостаточно подробно, то в конце поста есть ссылка на видеоурок.
Создание проекта
За основу возьмем шаблон "ThirdPerson" со стартовым набором. Тип проекта выберем "С++" и назовем его "SimpleVisionAreaCPP" (это название влияет на названия C++ классов, которые создаются автоматически). В папке "Content" создаем рабочую папку "MyContent", а в ней папки "BP" и "Materials".
Создание материала
Переходим в папку "Materials". Создаем новый материал и называем его "M_VisionArea".
Процесс создания этого материала подробно описан в первом посте.
Назначение параметров:
"ExternalRadius" - отвечает за дальность видимости (внешний радиус)
"InternalRadius" - отвечает за область около персонажа (внутренний радиус)
"Density" - отвечает за размытость границ
"HalfAngle" - отвечает за угол обзора (половинный угол)
В дальнейшем нам понадобится DecalMaterial, поэтому создадим копию нашего материала и назовем ее "M_DecalVisionArea". Откроем этот материал и изменим "Material Domain" с "Surface" на "Deferred Decal".
Настройка персонажа
Переходим в папку "C++ Classes"/"SimpleVisionAreaCPP", выбираем С++ класс "SimpleVisionAreaCPPCharacter", нажимаем на него правой кнопкой мыши и создаем производный C++ класс. И называем его "MyCharacter".
Переходим в папку "BP" и создаем новый "Blueprint Class" (в качестве родителя выбираем только что созданный C++ класс "MyCharacter"). Называем его "BP_MyCharacter" и помещаем на сцену.
Сейчас в "BP_MyCharacter" не выбраны "Skeletal Mesh" и "Anim Class" (анимация).
Создаем конструктор класса. Для этого в заголовочный файл "MyCharacter.h" добавляем строчки:
public:а в cpp файл "MyCharacter.cpp" добавляем два заголовочных файла:
AMyCharacter();
#include "Components/SkeletalMeshComponent.h"Создаем переменную CharacterMesh:
#include "UObject/ConstructorHelpers.h"
USkeletalMeshComponent* CharacterMesh = GetMesh();
И используем метод "GetMesh", для того чтобы получить "Mesh" (SkeletalMeshComponent) из "BP_MyCharacter" (выделен желтым на предыдущем рисунке). Ищем "SkeletalMesh" при помощи "ConstructorHelpers::FObjectFinder":
static ConstructorHelpers::FObjectFinder <USkeletalMesh> SkeletalMeshHelper(TEXT("SkeletalMesh'/Game/Mannequin/Character/Mesh/SK_Mannequin.SK_Mannequin'"));
Путь "SkeletalMesh'/Game/Mannequin/Character/Mesh/SK_Mannequin.SK_Mannequin'" можно получить, если выбрать интересующий нас объект в "Content Browser", щелкнуть по нему правой кнопкой мыши и выбрать "Copy Reference".
Если не знаете где расположен нужный объект, но знаете "Bluprint Class", где он используется, то можете перейти в этот класс и воспользоваться лупой.
После этого в "Content Browser" будет открыта папка с нужным объектом, а сам объект будет выделен.
Проверяем, удалось ли найти нужный объект. И если удалось, то применяем его:
if (SkeletalMeshHelper.Object) {Перемещаем и поворачиваем наш манекен так, чтобы ноги у него находились на уровне пола, а смотрел он в сторону оси "X":
CharacterMesh->SetSkeletalMesh(SkeletalMeshHelper.Object);
}
CharacterMesh->SetRelativeLocation(FVector(0.0, 0.0, -97.0));
CharacterMesh->SetRelativeRotation(FRotator(0.0, 270.0, 0.0));
По аналогии со "SkeletalMesh" добавляем анимацию:
static ConstructorHelpers::FClassFinder <UAnimInstance> AnimInstanceHelper(TEXT("AnimBlueprint'/Game/Mannequin/Animations/ThirdPerson_AnimBP.ThirdPerson_AnimBP_C'"));
if (AnimInstanceHelper.Class) {Только в этот раз мы ищем не объект, а класс. Поэтому к пути, который получается с помощью "Copy Reference": нужно дописать "_C".
CharacterMesh->SetAnimInstanceClass(AnimInstanceHelper.Class);
}
После сборки проекта у нас получается вот такой "BP_MyCharacter":
На этом настройка персонажа закончена. Давайте теперь добавим область видимости.
Добавление области видимости к персонажу
Добавляем в заголовочный файл две переменные:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "VisionArea|Components")В "StaticMeshComponent" мы поместим плоскость, а переменная "VisonArea_Material" позволит выбрать материал, который будет использоваться для отображения области видимости.
UStaticMeshComponent* VisionArea_SMC;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "VisionArea|Components")
UMaterial* VisonArea_Material;
В cpp файле создаем дефолтный "StaticMeshComponent" и называем его "VisionArea_SMC" (это имя будет отображаться редакторе).
VisionArea_SMC = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("VisionArea_SMC"));
Прикрепляем его к корневому компоненту, перемещаем на уровень пола и отключаем столкновения:
VisionArea_SMC->SetupAttachment(RootComponent);Ищем плоскость. И если удалось найти, то используем ее.
VisionArea_SMC->SetRelativeLocation(FVector(0.0, 0.0, -95.0));
VisionArea_SMC->SetCollisionEnabled(ECollisionEnabled::NoCollision);
static ConstructorHelpers::FObjectFinder <UStaticMesh> PlaneHelper(TEXT("StaticMesh'/Engine/BasicShapes/Plane.Plane'"));Аналогично поступаем с материалом:
if (PlaneHelper.Object)
{
VisionArea_SMC->SetStaticMesh(PlaneHelper.Object);
}
VisonArea_Material = CreateDefaultSubobject<UMaterial>(TEXT("VisonArea_Material"));
static ConstructorHelpers::FObjectFinder <UMaterial>MaterialHelper(TEXT("Material'/Game/MyContent/Materials/M_VisionArea.M_VisionArea'"));
if (MaterialHelper.Object)
{
VisonArea_Material = MaterialHelper.Object;
}
Для того чтобы у нас была возможность регулировать размеры области видимости, добавляем в заголовочный файл четыре переменные, которые позволят регулировать угол обзора, внешний и внутренний радиусы, а также цвет и прозрачность материала:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VisionArea|Base")Также нам понадобится переменная "VisionArea_DMI", отвечающая за динамический материал,
float HalfAngle = 30.0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VisionArea|Base")
float ExternalRadius = 1000.0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VisionArea|Base")
float InternalRadius = 50.0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VisionArea|Base")
FLinearColor BaseColor = FLinearColor(0.0, 1.0, 0.0, 1.0);
UMaterialInstanceDynamic* VisionArea_DMI;
и функция "OnConstruction", которая будет служить заменой функции "ConstructionScript" из Blueprint:
virtual void OnConstruction(const FTransform& Transform) override;
Переходим в cpp файл, создаем "MaterialInstanceDynamic", используя "VisonArea_Material", и связываем наши переменные с параметрами материала. Все это делаем внутри функции "OnConstruction":
void AMyCharacter::OnConstruction(const FTransform& Transform) {}
//----------------VisionArea_SMC-------------------//
float Scale = ExternalRadius / 50.0;
VisionArea_SMC->SetRelativeScale3D(FVector(Scale, Scale, 1.0));
VisionArea_DMI = UMaterialInstanceDynamic::Create(VisonArea_Material, nullptr);
VisionArea_DMI->SetVectorParameterValue(FName("BaseColor"), BaseColor);
VisionArea_DMI->SetScalarParameterValue(FName("HalfAngle"), HalfAngle);
VisionArea_DMI->SetScalarParameterValue(FName("InternalRadius"), 0.5 * InternalRadius / ExternalRadius);
VisionArea_SMC->SetMaterial(0, VisionArea_DMI);
"BP_MyCharacter" после сборки проекта:
Давайте теперь добавим возможность использовать "DecalMaterial". Для этого добавляем в заголовочный фал две переменные, отвечающие за "DecalComponent" и "DecalMaterial" :
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "VisionArea|Components")а также переменную "UseDecal", которая позволить переключаться между "StaticMeshComponent" и "DecalComponent" (менять тип области):
UDecalComponent* VisionArea_DC;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "VisionArea|Components")
UMaterial* VisionArea_DecalMaterial;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VisionArea|Base")Переходим в cpp файл и добавляем заголовочные файлы:
bool UseDecal;
#include "Materials/MaterialInstanceDynamic.h"
#include "Components/DecalComponent.h"
В функцию "OnConstruction" (по аналогии с "VisionArea_SMC" ) добавляем следующий код:
//---------------VisionArea_Decal-------------------//а также устанавливаем видимость для "VisionArea_SMC" и "VisionArea_DC":
float DecalScale = ExternalRadius / 256.0;
VisionArea_DC->SetRelativeScale3D(FVector(10.0, DecalScale, DecalScale));
VisionArea_DMI = UMaterialInstanceDynamic::Create(VisionArea_DecalMaterial, nullptr);
VisionArea_DMI->SetVectorParameterValue(FName("BaseColor"), BaseColor);
VisionArea_DMI->SetScalarParameterValue(FName("HalfAngle"), HalfAngle);
VisionArea_DMI->SetScalarParameterValue(FName("InternalRadius"), 0.5 * InternalRadius / ExternalRadius);
VisionArea_DC->SetMaterial(0, VisionArea_DMI);
VisionArea_SMC->SetVisibility(!UseDecal);
VisionArea_DC->SetVisibility(UseDecal);
Осталось только собрать проект.
Заключение
Хотел добавить итоговый вариант заголовочного и cpp файлов в заключение. Но добиться нормального форматирования текста на pikabu у меня не получается, поэтому полный текст "MyCharacter.h" и "MyCharacter.cpp" я добавлю в комментарии. Может быть кому-то пригодится.
Ссылка на видеоурок:
Зависит ли ум от размера мозга?
Ты можешь задаваться данным вопросом и дальше, а можешь прочитать эту статейку. Я открою вам глаза на множество мифов касательно данной темы, а также отвечу на вопросы: влияет ли ширина лба и строение черепа на интеллектуальные способности человека? Зависит ли ум от размера мозга? Как развить свой мозг? Итак начинаем.
Ученые давно пришли к выводу, что большой и тяжелый мозг не влияет на интеллектуальные способности. К примеру у слонов самый крупный среди млекопитающих мозг, однако они не умнее людей.
В тридцатые годы в СССР был открыт целый исследовательский институт на данную тему. Академики пытались выяснить, отличается ли мозг известных и великих личностей от мозга обычного человека.
На руках, а точнее в формалиновых баночках у них хранился мозг Ленина, Клары Цеткин, академиков Луначарского, Гулевича и Покровского, поэтов Маяковского, Белого и Багрицкого, писателя Горького, режиссера Станиславского и даже певца Леонида Собинова.
Как они не пытались так и не смогли выяснить в чем отличие, вед внешне, как и по весу они никак не отличались. А мозг Ленина к примеру даже не дотягивал до нормы. ( его мозг весил всего лишь 1340 граммов при мужской норме кило четыреста)
Зависит ли ум от размера мозга?
Ответ: нет, не зависит.
При рождении все люди получают примерно равное количество нервных клеток, если быть точнее 86 миллиардов нейронов, это значение не меняется до конца жизни. По мере развития, обучения и познания у людей увеличивается количество связей между нейронами. Начальный вес мозга здорового человека 300 граммов, в течение жизни он растет и занимает 95% объема черепной коробки.
Если стартовые условия у всех одинаковые и от размера мозга ничего не зависит, то почему одни люди умнее других? И как развить свои умственные способности?
Музей мозгов в штате Коннектикут США
-В течение жизни мозг развивается. Занятия, например, математикой (прекрасная гимнастика для ума) способны развить любой мозг (кроме совершенных врождённых дефектов, отклонений). С каждой итерацией (повторением какого-либо действия - пусть физического, либо мысленного) укрепляется нейронная связь, она возбуждается быстрее. Отсюда вытекают профессиональные спортсмены - постоянно повторяющие свои действия.
Отсюда - в чём-то убеждённого человека трудно переубедить, - сложно разрушить устоявшуюся нейронную цепь. Также не забываем о таком понятии как нейропластичность мозга. О способности мозга, как бы, "перестраиваться".Чем короче нейронная связь - тем быстрее доходит сигнал. Когда действие происходит уже практически интуитивно (после доведения до автоматизации путём постоянных итераций) - синапсы возбуждаются уже путём короче, чем изначальное расстояния цепочки.
Мое мнение по данному поводу:
Если вам не нравится математика вы можете начать читать, или заниматься какой-либо иной умственной деятельностью. Если же вы каждый день часами листаете ленту в какой-нибудь соцсети, это не поможет развить ваш мозг в той же мере, в которой он бы развился займись вы чем-то более полезным для мышления.
Возможно умственные способности зависят и от генов. К примеру у сына профессора умственный потенциал будет немного выше, чем у мальчика, в чьих корнях поколения алкоголиков и наркоманов, даже если им создать одинаковые условия для развития с рождения. Мальчик с плохими генами может с какой-то долей вероятности вернуться к образу жизни своих предков. Ведь при употреблении алкоголя и наркотиков меняется генотип и не в лучшую сторону, особенно пагубное влияние оказывают именно наркотики.
Это сугубо мое личное мнение и я не хотел задеть ничьих интересов по данному поводу.
Мое сообщество в вк: https://vk.com/interesproraznoe
Волк... почти...
Зовут Умка. Почти 5 лет.
В японских магазинах появились бюджетники Comet Lake - Pentium и Celeron
Цена Pentium G6400 около 5400 рублей , заметно дороже рекомендованых цен. Интересен процессор повышеной частотой DDR и инструкциями AVX, что делает его по произвдительности равным культовому i5 2500K (который может многое, например в - рендере . В тесте CINEBENCH 15 новинка наберает около 440 баллов.