Задавайте вопросы, мы ответим
Вы не зашли.
С точки зрения философии - согласен. А с точки зрения именно практичности, в частности пересаживания с C на C++ - все ж тут останусь при своем :-).
Неактивен
Господа, а что вы думаете по поводу вот этой книги?
http://www.kodges.ru/komp/program/4480- … e-v-c.html
И вот этой:
http://www.ozon.ru/context/detail/id/2847443/
Мне их рекомендовали, вы случайно с ними не сталкивались?
Неактивен
Увы, не читал Возможно, deadka знает их
Неактивен
Буду очень признателен если кто-то расскажет о них...
Неактивен
Хотел отмолчаться, но раз долг зовет, то :-)...
Книги по программированию ( в частности по c++) сейчас, увы, не пишет только глупый да ленивый. Порой диву даешься, проглядывая содержимое книжных полок ). Это я к тому, что определить качество книги по оглавлению я, увы, не смогу . Приведенные fox'ом книги, я не читал, увы (.
От себя дам такие рекомендации:
Начинать надо с Шилдта (Paulus, я помню и согласен касательно философии, но Шилдт проще читается, начинать надо с него). Следом лучше осилить Страуструпа.
Потом - Скотт Мейерс! Скотт Мейерс! И еще раз Скотт Мейерс! Эффективное использование c++ и, конечно же, эффективное использование stl.
Следом - Джефф Элджер - http://www.ozon.ru/context/detail/id/88891/
Вершиной айсберга наверное является Андрей Александреску - Современное проектирование на c++. Убийственная книга.
очень хорош Герб Саттер - если есть желание познакомиться поближе со стандартной библиотекой.
В-общем, fox, если напишете, что именно вы написать хотите на c++, может точнее подскажем ). А то c++ - многогран и многолик, его ООП - отдельная тема, шаблоны - тоже отдельная...
А касательно того, что приведеные книги вам рекомендовали - если Рекомендатель уверит вас в том, что те книги лучше моего списка - забудьте про мой список и читайте те :-))).
Неактивен
Спасибо огромное, что вы отозвались...
Я Шилдта уже читаю, купил на выходных, четвёртое издание Полный Справочник по C++...
Читается легко 100 страниц не заметил как прочёл, текст понятен и вполне адекватные примеры...
Спасибо огромное за такой список литературы это меня вдохновило!
Что я хочу? Ну С/C++ взаимодействовать с sql-лями. К примеру: MySQL, MsSQL, может даже придётся к OpenLDAP прикручивать... В конечном итоге билинговые программы, парсеры все возможные, ну бухгалтерского содержания софт, при этом я больше к никсовой платформе стремлюсь, FreeBSD моя любимая ОС, я вообще был Админом теперь там мне стало скучновато, много того что хочется в мире ещё нет, или есть но дорого, хочется написать своё!
И ещё тут с другом полемика была, не бейте ногами может быть я абсурдные вещи скажу, но на C/C++ можно я так понял писать графические вещи, вот к примеру взять рынок игрушек, в каком направлении C нужно развивать, что бы писать графический софт? Пока что этот вопрос меня чисто на мировоззренческом уровне интересует моё направление более приземлённое, выше указанное...
Огромное спасибо, за внимание!
Неактивен
По взаимодействию c++ и sql книжек нету, во-всяком случае я не встречал. Есть конкретные api, к ним есть официальная документация. И добрые люди на форумах, напр. Rgbeast, Paulus . Для работы с Mssql лучше использовать c#. для работы LDAP в есть готовые компоненты в .net.
Для игрушек традиционных (трехмерных) используется DirectX (иногда opengl), там нужно COM знать, это уже немного другое. К directx вроде есть API на c++, но соль там, конечно, не в знании c++, а именно в directx и понимании трехмерной математики. Онлайн-игры (хотя могу и ошибаться, конечно) все ж не на крестах пишутся ))), там скорее веб какой. Разве что самое ядро игры.
Однако давайте здесь заканчивать с этим, а то сильно уехали с тематики форума. По крестам есть зачемятельный раздел на rsdn, истые фанаты нафлудят там на ваш вопрос много ответов, гораздо больше чем требуется! :-D
Отредактированно deadka (23.04.2010 00:00:28)
Неактивен
У меня друг работает в геймдеве, поэтому напишу свое впечатление из его рассказов. Как я понял, в геймдеве есть специализации: графический программист, сетевой программист, программист AI, и др., хотя они не жесткие - каждый должен иметь несколько компетенций. Из общих навыков нужно знать аналитическую геометрию, основные алгоритмы, писать качественный код (никакой кусок не может быть написан криво - вылавливать потом ошибку сложнее и требует больше квалификацию, чем написать нормально); не писать то, что создает проблемы с памятью; писать гибкий код - использовать абстракцию и принципы ООП. Особенность геймдева в том, что при разработке игры, дизайн может измениться за день и нужно иметь возможность быстро адаптировать код так, чтобы он после адаптации не стал кривым и сложным. Есть такие турниры программистов (название не помню) - дается задача на три дня написать игру, но после двух дней техзадание существенно меняется (всем заранее известно, что оно поменяется, но не известно как). Выигрывает тот, кто к концу третьего дня наиболее полно реализует игру по обновленному техзаданию.
Неактивен
Огромное спасибо, Вы мне дали очень много информации, спасибо!
Насчёт C#, я слышел у кампани ИмПакт из Донецка, к стате я от туда...
http://www.accent.ua/index.php
В смысле из этог города!
Так вот они сейчас делают новый проект и набирают спецов по C - шарп, ведь правельно это и есть C#, им нужно работать с mssql, в прошлом они работали с mssql 2000 msde, а теперь гатовится более грандиозный проект...
Ещё раз спасибо за внимание, начну изучать книги которые вы рекомендовали...
Неактивен
Добрый вечер Господа!
И снова я, этот вопрос немного не по теми но всё же я его пишу потому, что начал писать пока что очень простые программки под С/С++ в связке с MySQL в основном на платформе FreeBSD, в чом мой вопрос? Подскажите пожалуйста, а как в сях сделать что бы программа работала всё время, ну понятно можно её к примеру зациклить, но всё же на экран выводится происходящее, а как сделать что бы программа запустилась и просто в процессах жила а на экран не чего не выводилось?
За ранние спасибо!
Неактивен
Вообще говоря, на экран выводится только то, что Вы туда выводите )), std::cout'ом каким или printf'ом. Да и опять же - запускайте программу в фоне (./myprog&) и ничего она в консоль выводить не будет.
Неактивен
Да, я знаю про бекграунд &, но как быть в винде? К примеру...
Моя программка лопатить лог, вытаскивает нужный данные складывает в базу муськи, но когда в интерпритаторе bash иди sh я запустил бинарник он не проскакивает а работает себе и я уже не могу с этим интерпритатором работать, можно как вы сказали запускать ставить символ &, но это же не лучший вариант, есть наверное элегантное решение средствами самого C или C++?
И с виндовозом тоже хотелось бы так...
Спасибо за внимание!
Неактивен
Ну, давайте поочередно...
Винда - Вы можете создать приложение без консоли вовсе - как это делается уже зависит от ide/компилятора, и оно будет у вас работать "невидимо". Можете написать службу для windows, тоже все будет более чем "невидимо" ).
Невинда - есть такой прием, иногда его использую. Создаете bash-файл (myfile.sh), в нем строка /home/myuser/myprog&, shell-скрипт этот после запуска мгновенно отрабатывается, возвращает управление в консоль, а программа работает.
Средствами c/c++ такого не сделаешь. В теории можно в Вашей программе воспользоваться функцией daemon (man daemon), которая помимо прочего отцепляет вашу программу от управляющего терминала.
Неактивен
Ага вот как...
А у вас нет примера, для написания виндовой службы?
В смысле кода, компелятор я использую VisualStudia 2008 C/C++
Что качается BSD то я так понял лучше & и не парится...
Не пинайте ногами я только начинаю изучать читаю книги по мере свободного времени, я что то читал о stdout что это тогда это не то, что я дума, вывод на эран, я так понял вводом и выводом в сях можно упровлять вот я и подумал, что можно легко как то отцепить от терминала программу...
Спасибо за пояснения!
Неактивен
Примеры виндовой службы - есть где-то, скиньте мне уведомление на deadka@ngs.ru, скину Вам что-нибудь полезное. Но там есть неприятные подводные камни..., не рекомендовал бы на самом деле, а тем более, что Вам это не нужно в данном контексте, вполне достаточно просто создать просто win32-приложение (именно Win32 application, а не Win32 console application) и делать там то, что вы хотите, и никакой консоли не будет. Ну а запускать уже - либо "ручками" либо через планировщик, как Вам уже нужно по логике вашего ПО...
Отредактированно deadka (22.06.2010 01:04:46)
Неактивен
Спасибо за ЛикБез!
Но вот снова не задача(((
Не получается у меня как бы я не компелил Win32 application всёравно выводит:
....
Компоновка...
MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
C:\CPP\Projects\1234567\Debug\1234567.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
...
Что то немогу понять что окмпановщику не нравется?
Только когда по дефорлту как мастер создал исходный код тогда он компелит и окно получается...
Неактивен
Таки Вам нужно делать *не* консольное приложение А Вы делаете консольное.
Просто амперсанд делать плохо, надо по крайней мере еще nohup. Демоны лучше
всего запускать непосредственно из кода. Но если все же пытаться правильно
демонизировать процесс со стороны, то надо делать как-то так (nohupа нету, т.к.
stdin тоже переопределен):
cd /; processname >/dev/null 2>&1 </dev/null &
Неактивен
К стате вот как это сделать в Perl, и между прочем получилось)))
http://m-ivanov.livejournal.com/4831.html?thread=48095
Мой пример:
Неактивен
Ну ладно Вам, никто так не пишет на перле
http://search.cpan.org/~rokr/Daemon-Dae … emonize.pm
В результате вся демонизация сводится к вызову одной функции.
И в С тоже, как сказал deadka, достаточно вызвать daemon(), который закроет все
соединения и перейдет в корень.
Неактивен
Вот только что получил, оцените это, пожалуйста:
http://forum.try-catch.ru/index.php?topic=265.0
))))
Неактивен
1. Слишком много кода для реального приложения (daemon() хватило бы).
2. Слишком много кода для примера того, что делает daemon().
3. Отвратительные комментарии внутри кода
(чего только стоит /* & #1090;& #1091;& #1090; */).
4. Обрабатывать сигналы в отдельном потоке — рискованная операция. Даже
не знаю, зачем тут так сделано. Чтобы не портить красоту языка reinterpret_castами?
5. Но с задачей, скорее всего, справляется.
Оцениваю в 1/5
Неактивен
paulus написал:
1. Слишком много кода для реального приложения (daemon() хватило бы).
2. Слишком много кода для примера того, что делает daemon().
3. Отвратительные комментарии внутри кода
(чего только стоит /* & #1090;& #1091;& #1090; */).
4. Обрабатывать сигналы в отдельном потоке — рискованная операция. Даже
не знаю, зачем тут так сделано. Чтобы не портить красоту языка reinterpret_castами?
5. Но с задачей, скорее всего, справляется.
Оцениваю в 1/5
Много уважаемый а вы бы не могли свой вариант написать ну вот для простого примера:
Неактивен
Вы меня не слушаете
celestia:~/build/tmp$ cat a.cc #include <unistd.h> #include <stdlib.h> int main() { daemon(0,0); while (true) { system("date >>/tmp/blah"); sleep(5); } } celestia:~/build/tmp$ g++ a.cc celestia:~/build/tmp$ ./a.out celestia:~/build/tmp$ ps axu | grep a.out paulus 3143 0.0 0.0 2904 272 ? Ss 10:04 0:00 ./a.out paulus 3149 0.0 0.0 3348 860 pts/1 S+ 10:04 0:00 grep --color=auto a.out celestia:~/build/tmp$ tail /tmp/blah Втр Июн 22 10:04:50 MSD 2010 Втр Июн 22 10:04:55 MSD 2010 Втр Июн 22 10:05:00 MSD 2010
Неактивен
Да уж, убийственный пример для показа daemon'a по ссылке от fox ( http://forum.try-catch.ru/index.php?topic=265.0 ). Чем-то напомнил пример hello worlda на c++ от microsoft (http://lurkmore.ru/c++ пример хеловорд №3). Как говорится многабукв .
Что касается
Компоновка...
MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
C:\CPP\Projects\1234567\Debug\1234567.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
В студии: File => New => Project => Visual C++ => Win32 Project (причем именно Win32 Project, а не Win32 Console Application) - тогда у Вас в программе консоли не будет.
Неактивен
Добрый день Господа Специалисты!
У меня получилось как у вас:
[root@BSD /home/fox/wrk/deman]# cat test.cpp
#include <unistd.h>
#include <stdlib.h>
int main()
{
daemon(0,0);
while (true) {
system("date >>/tmp/blah");
sleep(5);
}
}
Спасибо!
Сейчас буду пробовать дргие варианты...
Почему этот вареант "убийственный" ?
И в функции daemon(0,0); я заметел два параметра тут они стоят 0 и 0, что они обозначают, что они регурируют?
Спасибо!
Неактивен