• Какой из вариантов Code Style правильный?

    Zoominger
    @Zoominger
    System Integrator
    Правильного или неправильного нет, каждый пишет, как хочет.
    Но второй читается проще, сам так пишу.
    Ответ написан
    Комментировать
  • Кто же я такой в 3D?

    Zoominger
    @Zoominger
    System Integrator
    модели для серверных игр

    А?

    Интересует вопрос кто же я такой? 3d артист? или может Левел дизайнер?

    Посредственный 3D-моделлер, какой, к чёрту, артист и, тем более, левел-дизайнер? Просто увлекающийся кривеньким моделированием школьник.

    И да, обидки не принимаются, вы спросили - я ответил.
    Ответ написан
    4 комментария
  • Одинаковый ли результат имеют записи?

    @Sumor
    Всё что создано через new должно быть удалено через delete.
    Ответ написан
    Комментировать
  • Как нарисовать такую звезду openGL?

    @danij_com Автор вопроса
    Выложу полный код, может кому-то когда-то понадобится (заранее сочувствую)
    spoiler

    #include "OpenGL\glut.h"
    #include "OpenGL\gl.h"
    #include "math.h"
    
    #define PI 3.1415926535897931159979635
    
    //Определение координаты x точки по формуле x = xc+R*cos(f+(2*pi*i/n)),
    //где xc - координата х центра, а f - угловая координата первой вершины
    float __x(float start_angle, int radius, int i, int n, int offset) {
    	return radius * cos(start_angle + (2 * PI * i / n)) + offset;
    }
    //Определение координаты y точки по формуле y = xc+R*sin(f+(2*pi*i/n)),
    //где xc - координата х центра, а f - угловая координата первой вершины
    float __y(float start_angle, int radius, int i, int n, int offset) {
    	return radius * sin(start_angle + (2 * PI * i / n)) + offset;
    }
    
    //Отрисовка звезды, в ф-цию можно передать радиус, кол-во вершин, смещение по оси х и у,
    //а так же угловую координату начальной точки
    void drawStar(int radius, int vertexes, int offset_x, int offset_y, float start_angle) {
    	glClear(GL_COLOR_BUFFER_BIT);
    	glBegin(GL_LINE_LOOP);
    
    	float* o_x = new float[vertexes];
    	float* o_y = new float[vertexes];
    
    	for (int i = 0; i < vertexes; i++) {
    		o_x[i] = __x(start_angle, radius, i, vertexes, offset_x);
    		o_y[i] = __y(start_angle, radius, i, vertexes, offset_y);
    	}
    	for (int i = 0; i < vertexes; i++) {
    		int ind = (i * 3) % vertexes;   //Точки выводим со смещением на 3
    		glVertex2f(o_x[ind], o_y[ind]); //и по модулю 10ти
    	}
    
    	glEnd();
    	glFlush();
    }
    
    void display(){
    	//Такой вызов отрисовывает звезду аналогичную звезде из условия,
    	//угловая координата выбрана "методом тыка"
    	drawStar(200, 10, 320, 240, 6.6);
    	//так же, кол-во вершин лучше ставить кратное 10ти, иначе фигура,
    	//скорее всего, не отрисуется
    }
    
    int main(int argc, char** argv)
    {
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    	glutInitWindowSize(640, 480);
    	glutInitWindowPosition(100, 150);
    
    	glutCreateWindow("Star");
    
    	glClearColor(1., 1., 1., 0.);
    	glColor3ub(0, 0, 0); 		
    	glLineWidth(4.);
    	glPointSize(4.); 
    	glMatrixMode(GL_PROJECTION); 
    	glLoadIdentity(); 	
    	gluOrtho2D(0., 640., 0., 480.);
    
    	glutDisplayFunc(display); 
    	glutMainLoop();
    	return 0;
    }

    Ответ написан
    Комментировать
  • Можно ли написать систему на ядре Linux чисто на C++ и Python?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Увы, без пары сотен строк на ассемблере не обойтись никак (это специальные инструкции, которые обычно компиляторами не компилируются, типа переключения контекста, работа с mmu и кешем, доступ к спец-регистрам, переключение стека и т.д.). Причем, эти строки на ассемблере нужно будет писать под каждую архитектуру - инструкции везде разные!
    Ну и всегда вопрос - а зачем?!
    Ответ написан
    4 комментария
  • Ipv6 доступ извне из под nat?

    msHack
    @msHack
    Yggdrasil это аналог hamachi с открытым кодом только лучше с его помощью можно создавать игровые сервера за нат, хостить сайты за нат, хостить ftp за нат, юзать rdp находясь за натом, Yggdrasil работает с любой программой которая поддерживает ipv6 ipv4

    Качать тут https://yggdrasil-network.github.io/installation.html

    ноды тут https://github.com/yggdrasil-network/public-peers/...

    Установка Создаем папку yggdrasil кидаем ее в c:\Program Files качаем tap-windows-9.9.2_3 устанавливаем за тем качаем сам yggdrasil-0.3.12-windows-amd64.exe переименовываем в yggdrasil и кидаем в папку yggdrasil
    создаем файл конфигурации командой
    "C:\Program Files\Yggdrasil\yggdrasil.exe" -genconf > "C:\Program Files\Yggdrasil\yggdrasil.conf"

    в конфиг добовляем ноды

    Peers: [
    tcp://a.b.c.d:xxxxx
    socks://e.f.g.h:xxxxx/a.b.c.d:xxxxx
    tls://a.b.c.d:xxxxx
    ]

    запускаем yggdrasil
    "C:\Program Files\Yggdrasil\yggdrasil.exe" -useconffile "C:\Program Files\Yggdrasil\yggdrasil.conf"

    Видео https://www.youtube.com/watch?v=Hp1O-4fZbOE
    Ответ написан
    1 комментарий
  • Почему приложение Rocket Chat с любого iphone не подключается к серверу?

    Zoominger
    @Zoominger
    System Integrator
    "Неверный URL или невозможно установить безопасное соединение."
    Кто-нибудь уже решал такую проблему?

    О, я решал. Трабла в сертификате - он у вас есть на Рокете? HTTPS, я имею в виду.

    На андроид всё работает без проблем

    Потому что "Б" в слове "Андроид" означает "Безопасность".
    Ответ написан
    4 комментария
  • Как отправить сообщение с шифрование SSL/TLS в Winsock2?

    @res2001
    Developer, ex-admin
    Используйте openssl или аналогичные библиотеки.
    Ответ написан
    4 комментария
  • Как принимать и разбирать по UDP QByteArray в структуру из битовых полей?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Если гипотетически, ваша программа будет переноситься между разными компиляторами, процессорами, и архитектурами, вам придется учесть множество нюансов:

    1) простое копирование данных из пакета в структуру будет работать только в том случае, если на обеих машинах одинаковая архитектура процессора и один и тот же компилятор. В противном случае возможны нюансы с выравниванием полей в структуре (его надо отключить) и с порядком хранения байт (а тут уже начинаются проблемы)

    2) разные архитектуры процессоров хранят целые числа с разным порядком байт. Чтобы не возникало конфликтов, принято по сети передавать данные в сетевом порядке байт. Для перевода в него есть семейства функций hton[s|l]/ntoh[s|l] . Без них вы будете наблюдать жуткие глюки.

    Отсюда следует, что нельзя просто так (тм) копирнуть байты, пришедшие из сети куда-то там, нужно как минимум преобразовать их из сетевого порядка в хостовый (а при отсылке - из хостового в сетевой), и уже потом заталкивать в поля структуры (так что выравнивание можно и не отключать в таком случае).
    Ответ написан
    Комментировать
  • Как ввести и вывести число в assembler(AT&T, GAS синтаксис)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Пишу под Linux(Ubuntu), следовательно приходится осваивать синтаксис GAS(AT&T)

    Не, не "следовательно". gas умеет как синтексис intel (.intel_syntax) так и синтаксис at&t (.att_syntax).

    addb $str, i
    relocation truncated to fit: R_X86_64_8 against `.data'

    Потому что при сборке под 64 бита надо адресоваться относительно %rip. Если оно тебе не надо, проще собирать под 32 бита.

    int $0x80

    Не работает в 64-битных программах. Ну ты понел. (с)
    Ответ написан
    Комментировать
  • Имена массивов в си?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Начнем с устранения ваших проблем в терминах, так как из него следует ваше непонимание ситуации. А также с устранения методических проблем.

    Главный источник информации о языке - стандарт языка. Не книжки Страуструпа, Майерса, не то, что показывает CLion, IntelliSense и их друзья, а стандарт языка. Не следует делать выводов о работе и устройстве языка из этих источников.

    Далее, нет такоего термина "имя массива в C". Есть термин "переменная типа массив". Если вы написали:
    int ints[2];
    - это у вас массив на стеке. ints при этом имеет семантику указателя, который всегда и гарантированно указывает на 0 элемент в массиве. Понятно, что коль скоро это указатель на стек, записать туда другой указатель (ints=somePointer) нельзя - потому что нигде в программе, на самом деле, этот указатель не хранится - он вычисляется и подставляется компилятором на ходу.

    Из этого не следует(!), что переменная типа "массив" не имеет семантики указателя.
    Ответ написан
    7 комментариев
  • Пропал wifi в Ubuntu 18.04?

    Zoominger
    @Zoominger
    System Integrator
    Перейти на нормальную ОС, где не депрекейтят модули ядра после обновления, например. Намёк поняли? Если нет, откатитесь на более старое ядро.
    Ответ написан
    Комментировать
  • Делает ли из меня Linux-профи установка и использование дистрибутивов Gentoo/Arch?

    Zoominger
    @Zoominger
    System Integrator
    Нет, установка Генту делает из вас хорошего копипастера мануалов.
    Источник: личный опыт.
    Ответ написан
    3 комментария
  • Почему частота в cpuinfo выше в Arch, чем в Ubuntu при простое?

    Zoominger
    @Zoominger
    System Integrator
    Ковыряйте cpufreq на Арче. Там отключено энергосбережение процессора.
    Типа не страшно, если траты на электричество и нагрев не пугает.
    Ответ написан
    2 комментария
  • Существует ли бесплатное менторство?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Ответ написан
    Комментировать
  • Что выбрать для освоения DirectX - UWP или Win32 API?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Microsoft UWP является надстройкой для создания универсальных приложений, которые, в теории, должны легко переноситься между различными аппаратными слоями платформы Windows. UWP поддерживается только в Win10, реализована на базе расширения C++/CX стандарта C++17 и выполна преимущественно в объектном стиле.

    Windows API является низкоуровневым слоем взаимодействия между приложением и операционной системой. Win32 API поддерживается всеми версиями Windows, начиная с Windows 95. Однако, разные версии Windows поддерживают разные наборы функций. Поэтому уровень поддержки той или иной функции из набора API всегда следует уточнять в документации. Реализован Win32 API на языке C стандарта C99 и выполнен в процедурном стиле.

    Данная информация создает ряд допущений и ограничений для использования как UWP, так и WinAPI. Исходя из требований проекта и опираясь как на допущения, так и на ограничения, можно вывести однозначное решение о выборе только одной из этих двух технологий.

    C++/CX является расширением стандарта и не поддерживается другими платформами, а так же всеми компиляторами кроме компилятора Microsoft. При этом, существуют такие условия, когда отказаться от использования C++/CX и UWP невозможно. В иных ситуациях следует принимать к сведению особый синтаксис расширения и объектную организацию. Скажем, я бы не стал полностью весь проект делать на базе C++/CX.

    WinAPI, с другой стороны, предоставляет довольно низкоуровневый доступ, что немного осложняет реализацию требуемого функционала. Ряд абстракций, по умолчанию доступных в UWP, или потребуется сделать самому, или сделать вообще не получится без прямой низкоуровневой работы с драйверами.

    В любом случае, выбрав UWP или WinAPI, дальше тебе все равно лучше работать исключительно со стандартным C++ и стандартной реализацией DirctX для C++. От C++/CX стоит избавляться на как можно ранних слоях абстракции палатформозависимого кода. От типов и абстракций WInAPI, равно как и от наследия C99, тоже лучше избавляться как можно раньше и переходить на работу исключительно со стандартным C++.
    Ответ написан
    1 комментарий
  • Какие области computer science нужно знать full stack веб разработчику?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В подавляющем большинстве случаев деятельность программистов далека от науки, тем более деятельность web-разработчиков.
    Ответ написан
    Комментировать
  • Бывает ли момент когда нет права на ошибку?

    На собеседовании.
    Ответ написан
    Комментировать
  • Как сделать авторизацию в программе на C++ с базой данных?

    NeiroNx
    @NeiroNx
    Программист
    "Правильная" авторизация возможна только на сервере баз данных, когда пользователь авторизуется на сервере и по итогам сервер предоставляет ему права доступа к данным и операциям над ними.
    Ставите сервер баз данных - например PostgreSql
    Установка создает пользователя с максимальными правами и просит указать его пароль.
    В приложении используете соответствующую библиотеку для доступа к бд - до подключения спрашиваете логин, пароль, после подключаетесь с введенными данными.

    Все зависит от требований безопасности и критичности утечки данных из базы.

    Если делается защита от дурака для локальной базы(например SQLite) - то можно и в самой базе хранить пользователей и хэши паролей. Но при этом пользователь имеет доступ к самой базе в виде файла - может его копировать и модифицировать.
    Ответ написан
    Комментировать
  • Что изучить для разработки приложения?

    Zoominger
    @Zoominger
    System Integrator
    недавно пришла в голову создать приложение (социлаьную сеть) как Facebook/Instagram и тп.

    Дальше не читал. Пусть эта мысль из вашей головы уйдёт, потому что кажущаяся простота проистекает из неведения, какие технологии там задействованы.
    А так - JS, PHP, SQL и трясение Гугла на тему авторизации в вебе.
    Ответ написан
    Комментировать