Ответы пользователя по тегу Программирование
  • Сидячий образ жизни кодера на самом деле ухудшает здоровье?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Все программисты так или иначе страдают от шейного остеохондроза, и вкупе с постоянными умственными нагрузками это ведет к губительным результатам.
    Ответ написан
    Комментировать
  • Какой язык выбрать для написания desktop приложений для Linux?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Конечно C++, тут без вариантов.
    В качестве GUI лучше Qt.

    Всё остальное от лукавого.
    Ответ написан
    Комментировать
  • Какие интересные блоги и другие ресурсы по C++ вы читаете?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Ответ написан
    Комментировать
  • Какие задачи на C / C++ сейчас востребованы?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Задачи, связанные с компьютерным зрением, opencv
    Параллельные вычисления
    Вычисления на GPU
    Драйвера
    Кросс-платформенное ПО для компьютеров и мобильных устройств
    Программирование микроконтроллеров
    Ответ написан
    Комментировать
  • В каких вузах изучают CUDA?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Когда я учился в СПбГПУ на кафедре ИУС, одной из тем НИР, которую предлагал один научрук, было исследование и разработка инструментов, упрощающих (или автоматизирующих) распаралеливание алгоритмов на CUDA.
    Я не решился на такое потому что слишком сложно
    Ответ написан
    Комментировать
  • Почему видеоформат так ненавидим?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Потому что там рассказывают слишком медленно
    Ответ написан
    Комментировать
  • Корректно ли использование нескольких операторов "return" в функции?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Например, если в C++ вы надеетесь на NRVO (Named Return Value Optimization), то лучше использовать один return.
    Ответ написан
    Комментировать
  • Как узнать, что панель задач Windows переместилась или поменяла свой размер?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    WM_SETTINGCHANGE
    SPI_SETWORKAREA
    Ответ написан
    Комментировать
  • Хочется хорошо и качественно разрабатывать, но как?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    >Я - самый обыкновенный мальчик-самоучка,
    Мальчик - это сколько лет? Просто я тоже считаю себя мальчиком, правда мне 26 лет и за плечами множество сделанных проектов.

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

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

    >Да, я прочел не одну книгу по программированию,
    Я программирую уже 13 лет и за это время дай бог чтобы хотябы 1-2 книги полностью прочитал. До какого-то момента вообще любил программировать "методом тыка", но потом неожиданно для себя обнаружил, что со знанием матчасти это получается быстрее.

    >Мне очень стыдно, но ни что такое системы контроля версий, ни фреймворки, ни какие-либо тонкости я, по сути, не знаю.

    Стыдиться тут нечему

    >что годы идут, а прогресс все менее заметен.
    Могу сказать по опыту, что спешить некуда! Вам это еще успеет надоесть. Успеете еще посидеть над кодом в офисе по 8 часов в день.
    Ответ написан
    Комментировать
  • Как отловить момент, когда окно помещается в одну из сторон экрана (прилипает как бы), при нажатии WIN + LEFT?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    >Интересует, как узнать об этом.
    К сожалению, Windows не посылает специального сообщения при этом. Можно обрабатывать сообщение WM_SIZE и при этом ранее не было получено сообщение WM_SYSCOMMAND.

    >Ну или как программно прилепить

    Костыльный способ:
    RECT rc, originalRect;
    SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0);
    GetWindowRect(hwnd, &originalRect);
    SetWindowPos(hwnd, 0, rc.left, rc.top, (rc.right - rc.left) / 2, originalRect.bottom - originalRect.top, 0);
    PostMessage(hwnd, WM_NCLBUTTONDBLCLK, HTTOP, 0);

    Не знаю, как это сделать, не изменяя ширины окна. Не тестировался на мультимониторных конфигурациях.
    Правда по сути эмуляция нажатия клавиш будет лучше работать.
    Ответ написан
    Комментировать
  • Хронология познания программирования, или как вы учили C++?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    С++ невозможно выучить, даже не пытайтесь.

    Я уже 12 лет учу.
    1. Начинал с книги "Borland C++ 5.02" для чайников (моя первая книжка по программированию).
    Благодаря ней я написал два класса Foo и Bar. Там еще было описание GUI библиотеки OWL.
    2. Много читал rsdn.ru (ныне полумертвый), borland.xportal.ru, впитывал.
    Практически никогда сам не задавал вопросов, потому что умел пользоваться поиском, да и с английским проблем не было. Отвечал на вопросы других на разных форумах, помогая другим, набирал знания.
    3. Начал изучать разработку GUI приложений в C++ Builder.
    5. Прочитал множество книжек. Уже точно названий не помню, мне понравилась книжка, где давались практические советы и примеры правильного/неправильного использования C++, кажется "Эффективное использование С/C++".
    6. Писал в школе на уроках информатики реализацию всяких линейных списков/деревьев/вычислений интегралов/производных/простых уравнений/минимумы функции, правда, на паскале (нас заставляли)
    7. Научился работать с потоками (thread). Написал кучу небольших проектов для себя, в основном Winapi + WTL.
    Пробовал писать на С++ "игры" на OpenGL/DirectX.
    Писал программы для себя и для других на С++ Builder, Delphi, Visual C++, C#, Java.
    8. Еще в школе начал писать open-source проект на C++ (сейчас там около 70 тыс. строчек, частично кроссплатформенный, познакомился с особенностями разных компиляторов). https://github.com/zenden2k/image-uploader . Написал много других проектов поменьше.
    9. Писал в универе лабы/курсовые/диплом на С++, C#, Java, Fortran, ASM, Bash, VHDL, Wolfram Mathematica, mssql.
    У нас был курс С++ длящийся 2 семестра. Нас заставляли реализовывать самостоятельно стандартный контейнер (кажется std::vector). Еще писали какую-то базу данных на текстовых файлов с gui интерфейсом.
    Изучил дискретку/теорию графов/матлогику/теорию компиляторов и формальных языков. Написал простой компилятор рекурсивного спуска на С++. Написал модель RTOS на C++. Написал какую-то непонятную систему массового обслуживания (СМО) сначала на паскале, потом на C++. Изучил межпоточную синронизацию на примере Winapi/Posix threads/java threads.
    10. Изучил веб-программирование, PHP, Javascript, mysql/postgres. Написал кучу сайтов/веб-приложений.
    Любимым сайтом стал stackoverflow.com
    11. Прочитал книжку "Совершенный код." - та еще водичка.
    Изучил книгу "Thinking in Java" и C# Дж. Рихтер. Хорошее знание других языков не помешает.
    Открыл для себя Google C++ Style Guide. Начал частично следовать ему.

    Но до сих пор я не могу сказать, что знаю C++ достаточно хорошо. Наверно, я просто тупой, никчемный программист.

    Ошибки при компиляции шаблонов, и особенно ошибки линковки могут заставить меня зависнуть на некоторое время. Эти ошибки ну "очень информативные". Но благодаря опыту и интуиции я с ними справляюсь, а вот начинающему будет нелегко.
    Ответ написан
    2 комментария
  • Как извлечь комментарий из метаданных PNG?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    как-то так:

    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char* argv[])
    {
    	if ( argc < 2 ) {
    		return 0;
    	}
    	FILE *f = fopen( argv[1],"rb");
    	char buffer[100];
    	unsigned char lengthBuf[4];
    	char type[5];
    	fread(buffer, 1, 8, f);
    
    	if ( strncmp("\x89PNG\r\n\x1a\n", buffer, 8 ) ) {
    		printf("Not a PNG file!\r\n");
    		fclose(f);
    		return 0;
    	};
    	while(!feof(f)) {
    		int len = 0;
    		fread(lengthBuf, 1, 4, f);
    		
    		len=(lengthBuf[0]<<24)|(lengthBuf[1]<<16) | (lengthBuf[2]<<8) |lengthBuf[3];
    		fread(type, 4,1, f);
    		type[4] = 0;
    
    		if (strcmp(type, "iTXt") == 0 ) {
    			char *data = new char[len];
    			fread(data, len, 1 , f);
    			data[len] = 0;
    
    			char keyword[100];
    			char* comment = new char[len];
    			strcpy(keyword, data);
    			int keywordLen = strlen(keyword);
    			int i = 0;
    			while( data[keywordLen + i++ ] == 0);
    
    			strcpy(keyword, data);
    			strcpy(comment, &data[keywordLen+i-1]);
    			printf("Keyword='%s', text='%s'\r\n", keyword, comment);
    		
    			delete comment;
    			delete data;
    			break;
    		}
    		if (strcmp(type, "IEND") == 0 ) {
    			break;
    		}
    		fseek(f, len+4, SEEK_CUR);
    
    	}
    	fclose(f);
    	return 0;
    }
    
    Ответ написан
    1 комментарий
  • Откуда такая разница между размерами приложений?

    zenden2k
    @zenden2k
    PHP & C++ programmer
    Чем больше программа весит, тем дороже её можно продать.
    Ответ написан
    Комментировать