SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#26 13.03.2010 16:47:05

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа с API MySQL

С точки зрения философии - согласен. А с точки зрения именно практичности, в частности пересаживания с C на C++ - все ж тут останусь при своем :-).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#27 19.04.2010 23:09:28

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Господа, а что вы думаете по поводу вот этой книги?
http://www.kodges.ru/komp/program/4480- … e-v-c.html
И вот этой:
http://www.ozon.ru/context/detail/id/2847443/
Мне их рекомендовали, вы случайно с ними не сталкивались?

Неактивен

 

#28 20.04.2010 13:05:49

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Работа с API MySQL

Увы, не читал sad Возможно, deadka знает их smile

Неактивен

 

#29 22.04.2010 02:56:36

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Буду очень признателен если кто-то расскажет о них...

Неактивен

 

#30 22.04.2010 23:09:07

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа с API MySQL

Хотел отмолчаться, но раз долг зовет, то :-)...

Книги по программированию ( в частности по c++) сейчас, увы, не пишет только глупый да ленивый. Порой диву даешься, проглядывая содержимое книжных полок ). Это я к тому, что определить качество книги по оглавлению я, увы, не смогу sad. Приведенные fox'ом книги, я не читал, увы (.

От себя дам такие рекомендации:

Начинать надо с Шилдта (Paulus, я помню и согласен касательно философии, но Шилдт проще читается, начинать надо с него). Следом лучше осилить Страуструпа.

Потом - Скотт Мейерс! Скотт Мейерс! И еще раз Скотт Мейерс! Эффективное использование c++ и, конечно же, эффективное использование stl.

Следом - Джефф Элджер - http://www.ozon.ru/context/detail/id/88891/
Вершиной айсберга наверное является Андрей Александреску - Современное проектирование на c++. Убийственная книга.

очень хорош Герб Саттер - если есть желание познакомиться поближе со стандартной библиотекой.

В-общем, fox, если напишете, что именно вы написать хотите на c++, может точнее подскажем ). А то c++ - многогран и многолик, его ООП - отдельная тема, шаблоны - тоже отдельная...

А касательно того, что приведеные книги вам рекомендовали - если Рекомендатель уверит вас в том, что те книги лучше моего списка - забудьте про мой список и читайте те :-))).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#31 22.04.2010 23:28:05

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Спасибо огромное, что вы отозвались...
Я Шилдта уже читаю, купил на выходных, четвёртое издание Полный Справочник по C++...
Читается легко 100 страниц не заметил как прочёл, текст понятен и вполне адекватные примеры...
Спасибо огромное за такой список литературы это меня вдохновило!
Что я хочу? Ну С/C++ взаимодействовать с sql-лями. К примеру: MySQL, MsSQL, может даже придётся к OpenLDAP прикручивать... В конечном итоге  билинговые программы, парсеры все возможные, ну бухгалтерского содержания софт, при этом я больше к никсовой платформе стремлюсь, FreeBSD моя любимая ОС, я вообще был Админом теперь там мне стало скучновато, много того что хочется в мире ещё нет, или есть но дорого, хочется написать своё!

И ещё тут с другом полемика была, не бейте ногами может быть я абсурдные вещи скажу, но на C/C++ можно я так понял писать графические вещи, вот к примеру взять рынок игрушек, в каком направлении C нужно развивать, что бы писать графический софт? Пока что этот вопрос меня чисто на мировоззренческом уровне интересует моё направление более приземлённое, выше указанное...
Огромное спасибо, за внимание!

Неактивен

 

#32 22.04.2010 23:58:11

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа с API MySQL

По взаимодействию c++ и sql книжек нету, во-всяком случае я не встречал. Есть конкретные api, к ним есть официальная документация. И добрые люди на форумах, напр. Rgbeast, Paulus smile. Для работы с Mssql лучше использовать c#. для работы LDAP в есть готовые компоненты в .net.

Для игрушек традиционных (трехмерных) используется DirectX (иногда opengl), там нужно COM знать, это уже немного другое. К directx вроде есть API на c++, но соль там, конечно, не в знании c++, а именно в directx и понимании трехмерной математики. Онлайн-игры (хотя могу и ошибаться, конечно) все ж не на крестах пишутся ))), там скорее веб какой. Разве что самое ядро игры.

Однако давайте здесь заканчивать с этим, а то сильно уехали с тематики форума. По крестам есть зачемятельный раздел на rsdn, истые фанаты нафлудят там на ваш вопрос много ответов, гораздо больше чем требуется! :-D

Отредактированно deadka (23.04.2010 00:00:28)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#33 22.04.2010 23:59:21

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Работа с API MySQL

У меня друг работает в геймдеве, поэтому напишу свое впечатление из его рассказов. Как я понял, в геймдеве есть специализации: графический программист, сетевой программист, программист AI, и др., хотя они не жесткие - каждый должен иметь несколько компетенций. Из общих навыков нужно знать аналитическую геометрию, основные алгоритмы, писать качественный код (никакой кусок не может быть написан криво - вылавливать потом ошибку сложнее и требует больше квалификацию, чем написать нормально); не писать то, что создает проблемы с памятью; писать гибкий код - использовать абстракцию и принципы ООП. Особенность геймдева в том, что при разработке игры, дизайн может измениться за день и нужно иметь возможность быстро адаптировать код так, чтобы он после адаптации не стал кривым и сложным. Есть такие турниры программистов (название не помню) - дается задача на три дня написать игру, но после двух дней техзадание существенно меняется (всем заранее известно, что оно поменяется, но не известно как). Выигрывает тот, кто к концу третьего дня наиболее полно реализует игру по обновленному техзаданию.

Неактивен

 

#34 23.04.2010 00:45:37

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Огромное спасибо, Вы мне дали очень много информации, спасибо!

Насчёт C#, я слышел у кампани ИмПакт из Донецка, к стате я от туда...
http://www.accent.ua/index.php
В смысле из этог города!
Так вот они сейчас делают новый проект и набирают спецов по C - шарп, ведь правельно это и есть C#, им нужно работать с mssql, в прошлом они работали с mssql 2000 msde, а теперь гатовится более грандиозный проект...

Ещё раз спасибо за внимание, начну изучать книги которые вы рекомендовали...

Неактивен

 

#35 22.06.2010 00:09:55

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Добрый вечер Господа!
И снова я, этот вопрос немного не по теми но всё же я его пишу потому, что начал писать пока что очень простые программки под С/С++ в связке с MySQL в основном на платформе FreeBSD, в чом мой вопрос? Подскажите пожалуйста, а как в сях сделать что бы программа работала всё время, ну понятно можно её к примеру зациклить, но всё же на экран выводится происходящее, а как сделать что бы программа запустилась и просто в процессах жила а на экран не чего не выводилось?
За ранние спасибо!

Неактивен

 

#36 22.06.2010 00:29:30

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа с API MySQL

Вообще говоря, на экран выводится только то, что Вы туда выводите )), std::cout'ом каким или printf'ом. Да и опять же - запускайте программу в фоне (./myprog&) и ничего она в консоль выводить не будет.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#37 22.06.2010 00:37:08

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Да, я знаю про бекграунд &, но как быть в винде? К примеру...
Моя программка лопатить лог, вытаскивает нужный данные складывает в базу муськи, но когда в интерпритаторе bash иди sh я запустил бинарник он не проскакивает а работает себе и я уже не могу с этим интерпритатором работать, можно как вы сказали запускать ставить символ &, но это же не  лучший вариант, есть наверное элегантное решение средствами самого C или C++?
И с виндовозом тоже хотелось бы так...
Спасибо за внимание!

Неактивен

 

#38 22.06.2010 00:45:03

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа с API MySQL

Ну, давайте поочередно...

Винда - Вы можете создать приложение без консоли вовсе - как это делается уже зависит от ide/компилятора, и оно будет у вас работать "невидимо". Можете написать службу для windows, тоже все будет более чем "невидимо" ).

Невинда - есть такой прием, иногда его использую. Создаете bash-файл (myfile.sh), в нем строка /home/myuser/myprog&, shell-скрипт этот после запуска мгновенно отрабатывается, возвращает управление в консоль, а программа работает.

Средствами c/c++ такого не сделаешь. В теории можно в Вашей программе воспользоваться функцией daemon (man daemon), которая помимо прочего отцепляет вашу программу от управляющего терминала.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#39 22.06.2010 00:52:42

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Ага вот как...
А у вас нет примера, для написания виндовой службы?
В смысле кода, компелятор я использую VisualStudia 2008 C/C++
Что качается BSD то я так понял лучше & и не парится...
Не пинайте ногами я только начинаю изучать читаю книги по мере свободного времени, я что то читал о stdout что это тогда это не то, что я дума, вывод на эран, я так понял вводом и выводом в сях можно упровлять вот я и подумал, что можно легко как то отцепить от терминала программу...
Спасибо за пояснения!

Неактивен

 

#40 22.06.2010 00:59:16

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа с API MySQL

Примеры виндовой службы - есть где-то, скиньте мне уведомление на deadka@ngs.ru, скину Вам что-нибудь полезное. Но там есть неприятные подводные камни..., не рекомендовал бы на самом деле, а тем более, что  Вам это не нужно в данном контексте, вполне достаточно просто создать просто win32-приложение (именно Win32 application, а не Win32 console application) и делать там то, что вы хотите, и никакой консоли не будет. Ну а запускать уже - либо "ручками" либо через планировщик, как Вам уже нужно по логике вашего ПО...

Отредактированно deadka (22.06.2010 01:04:46)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#41 22.06.2010 01:22:36

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Спасибо за ЛикБез!
Но вот снова не задача(((
Не получается у меня как бы я не компелил Win32 application всёравно выводит:
....
Компоновка...
MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
C:\CPP\Projects\1234567\Debug\1234567.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
...
Что то немогу понять что окмпановщику не нравется?
Только когда по дефорлту как мастер создал исходный код тогда он компелит и окно получается...

Неактивен

 

#42 22.06.2010 02:36:03

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Работа с API MySQL

Таки Вам нужно делать *не* консольное приложение wink А Вы делаете консольное.

Просто амперсанд делать плохо, надо по крайней мере еще nohup. Демоны лучше
всего запускать непосредственно из кода. Но если все же пытаться правильно
демонизировать процесс со стороны, то надо делать как-то так (nohupа нету, т.к.
stdin тоже переопределен):

cd /; processname >/dev/null 2>&1 </dev/null &

Неактивен

 

#43 22.06.2010 02:37:31

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

К стате вот как это сделать в Perl, и между прочем получилось)))
http://m-ivanov.livejournal.com/4831.html?thread=48095
Мой пример:


#!/usr/bin/perl

use POSIX;
fork_proc() && exit 0;
POSIX::setsid() or die "Can't set sid: $!";
chdir '/' or die "Can't chdir: $!";
POSIX::setuid(65534) or die "Can't set uid: $!";
reopen_std();

$a=1;
for($z=1;$z<10;$z++)
{
$b=$b+$a;
sleep(2);
system("echo $b >> /tmp/1.txt");

}

sub fork_proc {
   my $pid;

    FORK: {
        if (defined($pid = fork)) {
            return $pid;
        }
        elsif ($! =~ /No more process/) {
            sleep 5;
            redo FORK;
        }
        else {
            die "Can't fork: $!";
        };
    };
};

sub reopen_std {
    open(STDIN,  "+>/dev/null") or die "Can't open STDIN: $!";
    open(STDOUT, "+>&STDIN") or die "Can't open STDOUT: $!";
    open(STDERR, "+>&STDIN") or die "Can't open STDERR: $!";
};

 

Работает зараза)))
Ну неужели C под никсом уступает Perl...

Неактивен

 

#44 22.06.2010 02:59:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Работа с API MySQL

Ну ладно Вам, никто так не пишет на перле smile
http://search.cpan.org/~rokr/Daemon-Dae … emonize.pm
В результате вся демонизация сводится к вызову одной функции.

И в С тоже, как сказал deadka, достаточно вызвать daemon(), который закроет все
соединения и перейдет в корень.

Неактивен

 

#45 22.06.2010 03:02:19

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Вот только что получил, оцените это, пожалуйста:
http://forum.try-catch.ru/index.php?topic=265.0
))))

Неактивен

 

#46 22.06.2010 03:25:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Работа с API MySQL

1. Слишком много кода для реального приложения (daemon() хватило бы).
2. Слишком много кода для примера того, что делает daemon().
3. Отвратительные комментарии внутри кода
(чего только стоит /* & #1090;& #1091;& #1090; */).
4. Обрабатывать сигналы в отдельном потоке — рискованная операция. Даже
не знаю, зачем тут так сделано. Чтобы не портить красоту языка reinterpret_castами?
5. Но с задачей, скорее всего, справляется.

Оцениваю в 1/5 wink

Неактивен

 

#47 22.06.2010 03:53:01

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

paulus написал:

1. Слишком много кода для реального приложения (daemon() хватило бы).
2. Слишком много кода для примера того, что делает daemon().
3. Отвратительные комментарии внутри кода
(чего только стоит /* & #1090;& #1091;& #1090; */).
4. Обрабатывать сигналы в отдельном потоке — рискованная операция. Даже
не знаю, зачем тут так сделано. Чтобы не портить красоту языка reinterpret_castами?
5. Но с задачей, скорее всего, справляется.

Оцениваю в 1/5 wink

Много уважаемый а вы бы не могли свой вариант написать ну вот для простого примера:


#include <iostream>

using namespace std;

int main()
{

for(int z=0;z<100;z++)
{
system("echo Helllo... >> /tmp/test.txt");
sleep(2);

}
}
 

Что бы эта программа в режиме демона была...
За рание спасибо!

Неактивен

 

#48 22.06.2010 10:07:44

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Работа с API MySQL

Вы меня не слушаете sad

Код:

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

Неактивен

 

#49 22.06.2010 11:08:07

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа с API MySQL

Да уж, убийственный пример для показа daemon'a по ссылке от fox ( http://forum.try-catch.ru/index.php?topic=265.0 ). Чем-то напомнил пример hello worlda на c++ от microsoft (http://lurkmore.ru/c++ пример хеловорд №3). Как говорится многабукв smile.

Что касается

Компоновка...
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) - тогда у Вас в программе консоли не будет.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#50 22.06.2010 13:26:45

fox
Завсегдатай
Зарегистрирован: 10.02.2010
Сообщений: 64

Re: Работа с API MySQL

Добрый день Господа Специалисты!
У меня получилось как у вас:

[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, что они обозначают, что они регурируют?
Спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson