Требования к плюсовому миддлу в 2018
А, собственно, чего сейчас хотят от C++ миддла? Какая обычная вилка зарплат, вопросы на собеседовании и т.д и т.п.
А, собственно, чего сейчас хотят от C++ миддла? Какая обычная вилка зарплат, вопросы на собеседовании и т.д и т.п.
В общем нужно для игрового движка сгенерировать карту высот, то бишь Terrain Heightmap. Есть ли программы для линуксов? Программа очень нужна, ибо в ландшафтном дизайне я полный ноль, а красивый ландшафт очень хочется сделать.
Подойдут любые - платные(пробные), бесплатные, проприетарные и т.д..
Перемещено JB из talks
Можно ли заоптимизировать эту функцию?
char * intToHex(int32_t value, uint32_t up, uint32_t pre, uint32_t msize)
{
const char * hexdigit[2] = {"0123456789abcdef",
"0123456789ABCDEF"};
union itou
{
int32_t i;
uint32_t u;
};
union itou conv;
conv.i = value;
uint32_t pos = 0;
char * result;
/* 0x FF FF FF FF \0 */
if (!(result = malloc(sign(pre) * 2 + sizeof(uint32_t) * 2 + 1)))
return 0;
if (pre)
{
strcpy(result, "0x");
pos = 2;
}
while (1UL << (msize * 4) > conv.u)
{
result[pos++] = '0';
msize--;
}
while (conv.u != 0)
{
result[pos++] = hexdigit[sign(up)][conv.u & 0xF];
conv.u >>= 4;
}
result[pos] = '\0';
return result;
}
Давайте сравним производительность различных процессоров не с помощью ангажированных производителями непонятных бенчмарков, а используя старый добрый openssl (в особенности интересно сравнить аналогичные процессоры Intel и AMD).
Итак, для того, чтобы поучаствовать в сравнении, нужно выложить сюда выхлоп команды
cat /proc/cpuinfo|sed -rn 's/.*el na.*: //p'|uniq -c; openssl speed md5 -multi `cat /proc/cpuinfo|grep 'el na'|wc -l` 2>&1|grep ^md5
Дополнение: в результате получаются количества хэшей md5 (точнее, их суммарные длины в байтах), которые процессор может посчитать за секунду для блоков следующих длин:
16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
Update: TL;DR, результаты можно посмотреть тут
Поскольку, как всем известно, основное предназначение различных функциональных ЯП состоит в расчете факториалов, давайте померяемся - какой ЯП это делает быстрее (при условии что делает правильно)? Естественно имеет значение машина на которой идет счет.
Условия такие - надо посчитать 10000! и вывести его в 16ти-ричном виде (буквочки маленькие), без всяких '0x' вначале и какой то служебной лабуды в конце. Что бы не постить прстыни, для контроля правильности ответа предлагается использовать md5sum. Вот как это выглядит на втором питоне:
$ python -c 'print hex(reduce( long.__mul__, range(1,10000+1), 1L ))[2:-1]' | md5sum
3de6339590fbdf0a1c0ae2f2b820f8bf -
Вот однострочник, выводящий модель проца, частоту и время работы (я привожу несколько примеров для доступных мне машин):
$ ssh host1 "less /proc/cpuinfo | grep 'model' | tail -n 1; less /proc/cpuinfo | grep 'cpu MHz' | tail -n 1; time python -c 'print hex(reduce( long.__mul__, range(1,10000+1), 1L ))[2:-1]' | md5sum"
model name : AMD FX(tm)-8320 Eight-Core Processor
cpu MHz : 1400.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.058s
user 0m0.048s
sys 0m0.008s
-------------------------------------------------
model name : Intel(R) Core(TM)2 CPU U7500 @ 1.06GHz
cpu MHz : 798.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.301s
user 0m0.256s
sys 0m0.024s
--------------------------------------------------
model name : Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
cpu MHz : 1600.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.042s
user 0m0.040s
sys 0m0.000s
--------------------------------------------------
model name : AMD Phenom(tm) 9550 Quad-Core Processor
cpu MHz : 1100.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.083s
user 0m0.068s
sys 0m0.012s
---------------------------------------------------
model name : AMD Phenom(tm) 9850 Quad-Core Processor
cpu MHz : 2506.801
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.123s
user 0m0.118s
sys 0m0.004s
----------------------------------------------------
model name : Intel(R) Core(TM)2 Quad CPU Q9450 @ 2.66GHz
cpu MHz : 2506.801
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.124s
user 0m0.118s
sys 0m0.006s
----------------------------------------------------
model name : AMD Opteron(tm) Processor 6174
cpu MHz : 2506.801
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.120s
user 0m0.119s
sys 0m0.002s
----------------------------------------------------
model name : Intel(R) Xeon(R) CPU X5670 @ 2.93GHz
cpu MHz : 1600.000
3de6339590fbdf0a1c0ae2f2b820f8bf -
real 0m0.120s
user 0m0.060s
sys 0m0.004s
Я к чему предлагаю померяться - только что обнаружил в соседнем треде, что вечный-тормоз-питон в таком тесте на порядок(!) обогнал священную-корову-лисп;-)))
Предлагайте свои решения на других ЯП (хаскель очень интересен;-))
Типа размашистого аккомпанимента к романсу. Можно заковырестый джаз. Интересует ещё импровизация, типа Кейта Джаррета, когда он шоколадок обжирается.
В связи с тем, что новая работа высвободила тонну времени (а денег как всегда хочется еще) решил попробовать себя в фрилансе, соответственно вопрос, с чего начать?
- стоит ли регаться на всех фрилансерских сайтах подряд или есть один-два самых адекватных и доступных; - какие то советы по построению отношений с заказчиком (с рождения добр и верю в людей, а в современном обществе это больше недостаток уже)
И вообще, что почитать на тему подводных камней и прочего?
Привет всем. Хочется узнать кто чем польуется при программировании в *nix? Не нужно воин, просто чем пользуетесь - редактор + плагины + отладчик и прочее. Я что-то чего только не перепробывал, но не могу нормально к чему-то привыкнуть. Что советуете почитать по gdb для эффективной отладки? Интересно все :)
Теперь его могут установить не только участники бета-теста. Workaround для бага с генерацией шейдеров, проблема со Steam Overlay на Mesa, другие известные баги.
Отрастил я домашнему компу третий манипулятор. Надо для него, и только для него, уменьшить чувствительность. Сам Logitech M570 подхватился сразу. В логах он такой
[ 39.954] (II) config/udev: Adding input device Logitech Unifying Device. Wireless PID:1028 (/dev/input/event12)
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: Applying InputClass «evdev pointer catchall»
[ 39.954] (II) Using input driver 'evdev' for 'Logitech Unifying Device. Wireless PID:1028'
[ 39.954] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: always reports core events
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: Device: «/dev/input/event12»
[ 39.954] (--) Logitech Unifying Device. Wireless PID:1028: Found 20 mouse buttons
[ 39.954] (--) Logitech Unifying Device. Wireless PID:1028: Found scroll wheel(s)
[ 39.954] (--) Logitech Unifying Device. Wireless PID:1028: Found relative axes
[ 39.954] (--) Logitech Unifying Device. Wireless PID:1028: Found x and y relative axes
[ 39.954] (II) Logitech Unifying Device. Wireless PID:1028: Configuring as mouse
[ 39.954] (II) Logitech Unifying Device. Wireless PID:1028: Adding scrollwheel support
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: YAxisMapping: buttons 4 and 5
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[ 39.954] (**) Option «config_info» «udev:/sys/devices/pci0000:00/0000:00:13.0/usb5/5-1/5-1.3/5-1.3:1.2/0003:046D:C52B.0008/input/input12/event12»
[ 39.954] (II) XINPUT: Adding extended input device «Logitech Unifying Device. Wireless PID:1028» (type: MOUSE, id 14)
[ 39.954] (II) Logitech Unifying Device. Wireless PID:1028: initialized for relative axes.
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: (accel) keeping acceleration scheme 1
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: (accel) acceleration profile 0
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: (accel) acceleration factor: 2.000
[ 39.954] (**) Logitech Unifying Device. Wireless PID:1028: (accel) acceleration threshold: 4
С какого конца начать? прописать его жестко в Xorg.conf с чувствительностью или все таки заходить через udev как то???