All streams
Search
Write a publication
Pull to refresh
60
0
Vladislav Khorev @Mephi1984

Developer

Send message
Мне кажется, там будут регистрироваться только тролли и только «по приколу».
Я думаю, тут как у Ленина — «Капиталисты сами продадут нам веревку, на которой мы их повесим»
Стал бы автомехаником
Можно выбрать несколько вариантов, а проценты считаются от общего числа проголосовавших.
Например, на втором опросе я выбрал почти все варианты.
Например, так.

ЗАПРАШИВАЕМАЯ_ЗП = Максимум( ЗП_В_РЕЗЮМЕ, МИН_ЗП + (МАКС_ЗП — МИН_ЗП) * УСПЕШНОСТЬ_СОБЕСЕДОВАНИЯ )

УСПЕШНОСТЬ_СОБЕСЕДОВАНИЯ — это то, как вы оцениваете свои шансы после собеседования, от 0 до 1
>Так и делаю. В итоге резюме пустое.
>Надоело дома сидеть.

Вы пытаетесь устроиться на работу после длительного перерыва?

Я бы посоветовал занизить ожидания по зарплате, вспомнить подробнее о своих старых проектах и, может быть, немножко пофрилансить/поработать на Open Source, прежде чем идти работать.
Хороших менеджеров по продажам мало, и они тоже имеют высокую оплату.
Вообще, рынок труда — это именно рынок. Если труд рабочего ценится ниже, чем труд программиста — значит, так сложилось в силу ряда факторов. Возможно, порог вхождения ниже, или слишком высокая зарплата рабочего — не окупается.
То же самое верно для любой отрасли. Хороший <механик, сантехник, фрезеровщик> не принесет денег, если его начальник будет использовать его труд не по назначению.
Можно добавить, что хороший программист принесет IT-конторе больше денег, чем хороший фрезеровщик — заводу, отсюда разница в оплате труда.
Не лучше и не хуже, но программистов сильно не хватает — отсюда такое отношение.
Танцевать на улицах пока еще не запретили, а о вкусах не спорят.
В ТЗ ни слова про крышку, потому надо обсудить увеличение бюджета и сроков.
Квадратно-кубичный закон Галилея: при уменьшении всех размеров животных или человека их объем уменьшается в кубе (если ваш рост уменьшить вдвое, вы станете в восемь раз легче), однако площадь поперечного сечения их костей — а следовательно, их прочность — только в квадрате. Поэтому, будучи маленькими, люди смогут прыгать намного выше своего роста.
Мой ответ — чтобы выбраться из блендера, нужно высоко подпрыгнуть.
Напоминаю, что сейчас уже работает аналогичная программа в Чили — Start Up Chile. Главные отличия — высшее образование не требуется, сумма инвестиций ограничена $40000 (из которых 10% предоставляются предпринимателем), инвестиции безвозмездные, программа рассчитана на 6 месяцев.
Придумал решение вообще без цикла и без переменных.
Если кому интересно:
#include <iostream>
using namespace std;
 
template<unsigned char i>
void f()
{
    cout<<static_cast<int>(i)<<endl;
    f<i+1>();
}
 
template<>
void f<255>()
{
    cout<<255<<endl;
}
 
int main()
{
    f<0>();
    
    return 0;
 
}

Исправил. Вот так лучше:
for (unsigned char x = 0; static_cast<int>(x) < 256; x++)
{
std::cout<<static_cast<int>(x)<<std::endl;
}
Сжульничаю немножко
for (unsigned char x = 0; static_cast<int>(x) + 1 < 256; x++)
{
std::cout<<x<<std::endl;
}
Пример использования:

auto mouseDownFunc = [](TSignalParam param)
{
	vec2 v = boost::get<vec2>(param);
	
	std::cout<<"pressed at "<<v.x<<" "<<v.y<<std::endl;
}

auto changeTextFunc = [](TSignalParam param)
{
	std::string text = boost::get<std::string>(param);

	std::cout<<"text :"<<text<<std::endl;
}

TWidgetStruct WidgetStruct;

WidgetStruct.AddSlot("OnMouseDown", mouseDownFunc);
WidgetStruct.AddSlot("OnChangeText", changeTextFunc);
>Вот допустим, у меня контрол, в котором 150 событий — можно ли как-то свалить все слоты в один объект и сэкономить на 150 объектах сигналов?

Я делаю комбинацией shared_ptr и variant, не судите строго:

//Variant с зараннее определенными типами данных:
typedef boost::variant<int, float, std::string, vec2> TSignalParam;


//Хранитель различных сигналов:
struct TWidgetStruct
{
protected:
    //Карта сигналов, ключ - имя сигнала
    std::map<std::string, std::shared_ptr<boost::signal<void (TSignalParam)>>> SignalMap; 

public:

    //Чистим все
    void ClearSignals()
    {
        SignalMap.clear();
    }

	//Добавляем слот к сигналу
    void AddSlot(std::string signalName, std::function<void (TSignalParam)>> func)
    {
        
        //Если такого сигнала еще нет - создаем
        if (SignalMap[signalName] == std::shared_ptr<boost::signal<void (TSignalParam)>>())
        {
        	SignalMap[signalName] = std::shared_ptr<boost::signal<void (TSignalParam)>>(
                    new boost::signal<void (TSignalParam)>());
        }
        
	//Добавляем слот
        SignalMap[signalName]->connect(func);
    }
};
Я посмотрел С++ версию Rx Framework (https://rx.codeplex.com/SourceControl/changeset/view/7881e17c060b#Rx/CPP/RxCpp.sln) — это оно? Я не нашел способа скомпилировать это под Android и iOS, а это для меня критично.

>Нельзя получить сигнал, который бы аггрегировал другие сигналы без кучи boilerplate кода.
boost::signal<void()> signal1;
boost::signal<void()> signal2;

signal2.connect(boost::ref(signal1));

signal2(); //Вызывает signal2, который вызывает signal1

Это оно?

>Нет способа управлять тем, в каком потоке и в какое время будет вызван соответствующий слот.
Это приходится делать вручную, отправляя вызов сигнала в определенный поток. Примерно так, как я писал выше. Не очень удобно, но я привык.

Information

Rating
4,452-nd
Location
Бишкек, Кыргызстан, Кыргызстан
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Game Developer
Lead
From 550,000 ₽