Правильнее ставь вопросы. Ты хочешь сделать СУБД. А пишешь БД. Вот и отвечают не то что надо. При разработке СУБД затрагивается очень много тем из разных областей. Можешь начинать с интерпретатора команд. Тебе надолго хватит )) P.S. Только не говори, что на асме писать собрался ))
=))) ВСЁ принялось)))) ура)) вот тестовый код).. все данные записались в файл, надо было только, права на доступ открыть chmod a+rwx Код (Text): ;Секция не инициалезированных данных BSS section .bss http_login_param_buf resb 65536 ; зарезервировать память в 65536 байт fd resd 1 ; резервируем 8 байт для возвращаемого дескриптора функции open section .date path_file db 'test.txt',0 global _start _start: ;Системный вызов #3 read: mov eax, 3 ; syscall read mov ebx, 0 ; STD_IN mov ecx, http_login_param_buf ; адрес буфера для приёма параметров mov edx, 65536 ; длинна записываемых данных в байтах int 0x80 ; Обратится к ядру для возбуждения системного вызова ;системный вызов open mov eax,5 ; syscall open mov ebx,path_file mov ecx,0001002 mov edx,7666 int 0x80 mov [fd],eax ; записываем в fd номер возвращённого дескриптора функции open ; write mov eax,4 mov ebx,[fd] ; сохраняем в дескриптор открытого файла mov ecx,http_login_param_buf mov edx,65536 int 0x80 ; close mov eax,6 mov ebx,[fd] int 0x80 mov eax, 1 ; syscall exit xor ebx,ebx ; поместить 0 в ebx int 0x80 ; Обратится к ядру для возбуждения системного вызова Теперь остался второй вопрос)..как из ассама подключиться к БД ?
К сожалению, нет. Но наверняка такая литература есть. Если работал с СУБД, то все намного проще- уже знаешь что для чего и как работает. Тогда остается только написаьб все то же самое в своем видении и для конкретно своей задачи. Я думаю, очень много людей с этого форума написали для своих задач СУБД на асм, в этом нет ничего особого.
Не просто, но реально. При чем- чем меньше требований к быстродействию + чем меньше макс. кол-во ожидаемых записей в проекте + отсутствие возможности работы по сети + не многопользовательская, тем проще.
В продолжении темы POST. Вот что записалось в файл test.txt login=stellaco&password=123&button=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C И собственно сам вопрос, что это за button такой, и чему он равен??? button=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C perez Всё делается под *nix . И мне хотелось бы избежать взаимодействия с ODBC. Пойду искать книги по проектированию СУБД. Может какие-то идеи появятся...
У тебя в форме есть объект button, value='Отправить' Вот это value и передается. urldecode(%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C) == 'Отправить' Если бы написал <input type=button value='send'>, то принялось бы login=stellaco&password=123&button=send
И последний вопрос, не в тему. есть у кого такая книжка? "Локальная СУБД своими руками" в электронном варианте?
stellaco На сайте INTUIT Там есть алгебра Кодда - с нее начни. Реляционная модель организации данных. Поучись пока записывать и читать структуры данных в файл и из него На Асме не надо odbc. Ты ODBC не настроишь Юзай libmysql, там есть все функции.
Да и еще тебе в догонку: Если че не понятно на асме - бери любую прогу на си и переводи ее на асм. ( gcc -s) Там год не очень путанный вылазит, понять и разобраться можно.
Ещё одна проблема. Разбор присланных данных. вот код Код (Text): ;Секция не инициалезированных данных BSS section .bss http_login_param_buf resb 65536 ; зарезервировать память в 65536 байт fd resd 1 ; резервируем 8 байт для возвращаемого дескриптора функции open http_login_buf resb 100 ; зарезервировать память в 100 байт для логина переданного через форму. section .date http_login_string db "login=" ; строка login= передаваемая от клиента серверу path_file db 'test.txt',0 global _start _start: ;Системный вызов #3 read: mov eax, 3 ; syscall read mov ebx, 0 ; STD_IN mov ecx, http_login_param_buf ; адрес буфера для приёма параметров mov edx, 65536 ; длинна записываемых данных в байтах int 0x80 ; Обратится к ядру для возбуждения системного вызова ;сканирование логина cld ; автоинкремент mov edi, http_login_param_buf mov esi, http_login_string mov ecx,6 ; сколько первых символов строк нужно сравнить (адресуемые регистрами ESI и EDI) cmpsb ; сравниваем две строки, адресуемые регистрами ESI и EDI jnz exit ; проверяем флаг нуля, если не ноль, то строки не совпали и прыгаем на incorrect mov eax, "&" ; что будем искать mov ecx, 65530 ; записать в счётчик 65530 (размер сканируемой строки) repne scasb ; поиск & в массиве из 65530 байт jcxz exit ; переход на метку incorrect , если не нашли mov edx, 65530 ; sub edx, ecx ; в edx размер логина в байтах cmp edx, 100 ; узнаём, хватит ли места в BSS для логина (http_login_buf) jg exit ; если больше , (не хватит места в BSS для переданного логина) то incorrect mov esi, [http_login_param_buf+6] ; логин начинается тут mov edi, http_login_buf ; в edi адресс куда будем копировать логин mov ecx, edx ; счётчик равен колличеству символов в логине rep movsb ; повторить ecx раз, копирование [http_login_param_buf+6] в http_login_buf ;окончание сканирования логина ;системный вызов open mov eax,5 ; syscall open mov ebx,path_file mov ecx,0001002 mov edx,7666 int 0x80 mov [fd],eax ; записываем в fd номер возвращённого дескриптора функции open ; write mov eax,4 mov ebx,[fd] ; сохраняем в дескриптор открытого файла mov ecx, http_login_buf ; записываем логин ;mov edx,65536 ; длинна логина в http_login_buf int 0x80 ; close mov eax,6 mov ebx,[fd] int 0x80 exit: mov eax, 1 ; syscall exit xor ebx,ebx ; поместить 0 в ebx int 0x80 ; Обратится к ядру для возбуждения системного вызова Ошибка кроется(как я понимаю) в участке "сканирование логина" Если передать из формы данные такому коду, то в /var/www/cgi-bin появляется файл core.N , где N всегда различное четырёхзначное число. Кстати если его открыть , то можно вполне сносно разглядеть переменные окружения сервера Apache... Подскажите пожалуйста..в чем ошибка?
«Введение в систему баз данных» — Джеффри Ульман, Дженнифер Уидом. Книга просто про базы данные с некоторым углублением принципов и методов компонентов баз данных. MySQL так же отклоняется от SQL как и SQL Server, Oracle или Postgre. Разница в спец. конструкциях.