GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.28 (40)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Кароч решил я снова заняться программированием
daner
Сообщений: 4605
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 12:43
Цитата:
Автор: IvanVlaskin1976

Моё предложение вам взять шефство над УЭС остаётся в силе
Можете переделать УЭС под лицензию GNU, тогда вам зачтётся авторство


Начнём с того, что я просто не понимаю, что такое эта ваша УЭС и какие задачи она решает. соответственно, я не могу оценить того КАК вы это решаете и подходит ли такой подход для решения поставленных вами задач.

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

Делать это "своим проектом" я тоже не хочу, но проконсультировать и помочь, не проблема.

На "С" я не пишу в принципе. Так что, если варианта перехода на "С++" вообще нет, я не собираюсь касаться реализации вообще (впрочем с дизайном все-равно можно было бы помочь).

без GIT я тоже код трогать и обсуждать не собираюсь. Могу помочь вам с организацией гита (если хотите)
[Ответ][Цитата]
гость
85.26.183.*
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 12:45
Цитата:
Автор: IvanVlaskin1976

ты тупой
у меня в главной программе зачатки Менеджера Задач уже есть, значит есть основа
и динамическая память мне не подходит, так как мне нужны глобальные массивы, видные и из главной программы и из функций, а динамическую память надо объявлять в главной программе и не факт что просто её в функции ставить, это лишний геморой в аргументах функций


может, это ты тупой? Ну расскажи, здесь всем интересно, что твоя прога делает, подробнее.

Цитата:
Автор: IvanVlaskin1976
и динамическая память мне не подходит, так как мне нужны глобальные массивы, видные и из главной программы и из функций, а динамическую память надо объявлять в главной программе и не факт что просто её в функции ставить, это лишний геморой в аргументах функций


ты глобально статические массивы объявил на 100000 объектов (я не знаю что это за хуйня, я не разбирался), при чем тут область видимости, речь о том что точно также нужно объявить динамические массивы, и задавать количество объектов уже по ходу программы, в этом ничего сложного нет. А так ты задал сразу максимально возможное число зачем то и твоя прога жрет лишнюю память.
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 14737
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 12:57
Цитата:
Автор: гость
может, это ты тупой? Ну расскажи, здесь всем интересно, что твоя прога делает, подробнее.

моя прога работает с иерархиями и их ветвями, вплоть до того что даже виртуальные файловые системы есть для иерархий и ветвей, ещё работает с массивами и текстом, есть даже определитель русской кодировки текста, ну и прочие функции, в главной программе есть зачатки менеджера задач, поскольку я не смог найти функцию опроса клавиатуры без остановки работы программы я опрос клавиатуры вынес в отдельный процесс
[/quote]
Цитата:
Автор: гость
ты глобально статические массивы объявил на 100000 объектов (я не знаю что это за хуйня, я не разбирался), при чем тут область видимости, речь о том что точно также нужно объявить динамические массивы, и задавать количество объектов уже по ходу программы, в этом ничего сложного нет. А так ты задал сразу максимально возможное число зачем то и твоя прога жрет лишнюю память.

тебе объясняют - если сделать динамические массивы, то для каждой функции которая их использует пришлось бы динамические массивы прописывать в аргументах функций, а это лишний геморой
а поскольку у меня глобальные массивы то они видны и из главной программы и из любой функции
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 14737
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 13:07
Полноценный Веб-Сервер с исправленной ошибкой автора в коде

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<netdb.h>
#include<time.h>
#include<unistd.h> // close()
#include<arpa/inet.h> // inet_ntop
#include<sys/socket.h>

// http://localhost:8000

#define SERVER_PORT "8000"
#define MAX_CONNECTION 1000

typedef enum {
eHTTP_UNKNOWN = 0,
eHTTP_CONNECT,
eHTTP_DELETE,
eHTTP_GET,
eHTTP_HEAD,
eHTTP_OPTIONS,
eHTTP_PATCH,
eHTTP_POST,
eHTTP_PUT,
eHTTP_TRACE
}eHTTPMethod;

typedef struct {
eHTTPMethod type;
char path[255];
}sHTTPHeader;

// Client

int create_socket(const char *apstrPort) {
struct addrinfo hints;
struct addrinfo *servinfo;
struct addrinfo *p;

memset(&hints, 0, sizeof(hints));
// IPv4 or IPv6
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;

int r=getaddrinfo(NULL, apstrPort, &hints, &servinfo);
if( r != 0) {
fprintf(stderr,"error getaddrinfo()\n");
return -1;
}

int sock;
int yes;
for(p = servinfo; p != NULL; p = p->ai_next) {
sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol);
if(sock == -1)
continue;
if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) {
fprintf(stderr,"error setsockopt\n");
close(sock);
freeaddrinfo(servinfo); // all done with this structure
return -2;
}
if(bind(sock, p->ai_addr, p->ai_addrlen) == -1) {
close(sock);
continue;
}
break;
}
freeaddrinfo(servinfo); // all done with this structure

if(p == NULL) {
fprintf(stderr,"failed to find address\n");
return -3;
}

if(listen(sock, MAX_CONNECTION) == -1) {
fprintf(stderr,"error listen\n");
return -4;
}

return sock;
}

void *get_client_addr(struct sockaddr *sa) {
if(sa->sa_family == AF_INET) {
return &(((struct sockaddr_in*)sa)->sin_addr);
}
else {
return &(((struct sockaddr_in6*)sa)->sin6_addr);
}
}

void http_request(int aSock) {
const int request_buffer_size = 65536;
char request[request_buffer_size];

int bytes_recvd = recv(aSock, request, request_buffer_size - 1, 0);

if(bytes_recvd < 0) {
fprintf(stderr,"error recv\n");
return;
}
request[bytes_recvd] = '\0';

printf("request:\n%s\n",request);

sHTTPHeader req;
parse_http_request(request, &req);

if(req.type == eHTTP_GET) {
send_massage(aSock,"sensor 1: 10<br> sensor 2: 20<br><a href=\"http://yandex.ru\">YANDEX</a><br><a href=\"http://google.com\">GOOGLE</a><FORM METHOD=POST ACTION=file01>text<INPUT NAME=\"test1\" VALUE=\"test2\" TYPE=\"text\"><BR>Submit:<INPUT NAME=\"submit1\" VALUE=\"Submit2\" TYPE=\"submit\"><BR></FORM>");
}
else {
send_404(aSock);
}

}

void parse_http_request(const char *apstrRequest, sHTTPHeader *apHeader) {
int type_length = 0;
char type[255] = {0};
int index = 0;

apHeader->type = eHTTP_UNKNOWN;

sscanf(&apstrRequest[index], "%s", type);
type_length = strlen(type);

if(type_length == 3) {
if(type[0] == 'G' && type[1] == 'E' && type[2] == 'T')
apHeader->type = eHTTP_GET;
index += type_length + 1;
sscanf(&apstrRequest[index], "%s", apHeader->path);
}
if(type_length == 4) {
if(type[0] == 'P' && type[1] == 'O' && type[2] == 'S' && type[3] == 'T')
apHeader->type = eHTTP_POST;
index += type_length + 1;
sscanf(&apstrRequest[index], "%s", apHeader->path);
printf("zrequest:\n");
}
}

void send_massage(int aSock, const char *apstrMessage) {
char buffer[65536] = { 0 };

strcat(buffer,"HTTP/1.1 200 OK\n\n");
strcat(buffer,"<h1>");
strcat(buffer,apstrMessage);
strcat(buffer,"</h1>");

int len = strlen(buffer);
send(aSock, buffer, len, 0);
}

void send_404(int aSock) {
const char *buffer = "HTTP/1.1 404 \n\n";
int len = strlen(buffer);
send(aSock, buffer, len, 0);
}


int main() {
int sock;

sock = create_socket(SERVER_PORT);
if(sock<0) {
fprintf(stderr,"error create socket\n");
return -1;
}

printf("server created!\n");

struct sockaddr_storage client_addr;
int client_d;
//char client_ip
while(1) {

socklen_t s_size = sizeof(client_addr);
client_d = accept(sock, (struct sockaddr*)&client_addr, &s_size);

if(client_d == -1) {
fprintf(stderr,"error accept\n");
return -1;
}

// char ip[INET_ADDRSTRLEN];
char ip[46];
inet_ntop(client_addr.ss_family, get_client_addr((struct sockaddr *)&client_addr), ip, sizeof ip);
printf("server: got connection from %s\n", ip);

// read
http_request(client_d);

close(client_d);
}
return 0;
}



Исправленная ошибка -

//   char ip[INET_ADDRSTRLEN];
char ip[46];
[Ответ][Цитата]
гость
85.26.183.*
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 13:41
Цитата:
Автор: IvanVlaskin1976
моя прога работает с иерархиями и их ветвями, вплоть до того что даже виртуальные файловые системы есть для иерархий и ветвей, ещё работает с массивами и текстом, есть даже определитель русской кодировки текста, ну и прочие функции, в главной программе есть зачатки менеджера задач, поскольку я не смог найти функцию опроса клавиатуры без остановки работы программы я опрос клавиатуры вынес в отдельный процесс

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


Цитата:
Автор: IvanVlaskin1976
тебе объясняют - если сделать динамические массивы, то для каждой функции которая их использует пришлось бы динамические массивы прописывать в аргументах функций, а это лишний геморой
а поскольку у меня глобальные массивы то они видны и из главной программы и из любой функции


куй его знает, на чем ты там пишешь и на каком языке (вроде с), я последний раз писал на билдере, там такой хуйни нет, просто глобально обвляешь точно так же массив: только вместо mass[100] будет mass*, при работе проги, ты используешь оператор new, и задаешь нужную размерность (N например) и всё, никакие остальные функции переделывать не надо, там всё будет отображаться по прежнему, как mass[N].
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 14737
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 13:46
Цитата:
Автор: гость
А подробнее, с иерархиями чего и с массивами чего, нихрена ведь не понятно?. И общая идея какая, это типа как файловый менеджер ты задумал, если с файлами работает?

Ты лепень, если xNIX с файлами работает он файловый менеджер? Он сервер
Цитата:
Автор: гость
куй его знает, на чем ты там пишешь и на каком языке (вроде с), я последний раз писал на билдере, там такой хуйни нет, просто глобально обвляешь точно так же массив: только вместо mass[100] будет mass*, при работе проги, ты используешь оператор new, и задаешь нужную размерность (N например) и всё, никакие остальные функции переделывать не надо, там всё будет отображаться по прежнему, как mass[N].

бла бла бла
ты похоже так и не понял что я написал
аргументы функций приходится менять под динамические массивы
а у меня минимум аргументов у функций, все массивы глобальные
[Ответ][Цитата]
гость
85.26.183.*
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 13:54
Цитата:
Автор: IvanVlaskin1976


Ты лепень, если xNIX с файлами работает он файловый менеджер? Он сервер

бла бла бла
ты похоже так и не понял что я написал
аргументы функций приходится менять под динамические массивы
а у меня минимум аргументов у функций, все массивы глобальные


ну и не смог ты ничего объяснить толком, это не твоя походу прога вообще, ты на конкретный вопрос не ответил, с иерархиями чего работает прога.
[Ответ][Цитата]
гость
85.26.183.*
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 13:56
Цитата:
Автор: IvanVlaskin1976
аргументы функций приходится менять под динамические массивы

чо за бред?
[Ответ][Цитата]
гость
85.26.183.*
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 13:59
Цитата:
Автор: гость


чо за бред?


а, бля я кажется догадался, но я твой код не смотрел. Ну так возьми да пропиши, даун, три конопки нажать ведь
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 14737
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 14:04
Цитата:
Автор: гость
ну и не смог ты ничего объяснить толком, это не твоя походу прога вообще, ты на конкретный вопрос не ответил, с иерархиями чего работает прога.

ой бля, всё разжёвывать
Иерархии это базис смысловых графов окрашенных категориями, место где хранится смысл Информации
У меня есть даже функция полного обхода дерева(хранящегося на языке иерархий)
[Ответ][Цитата]
daner
Сообщений: 4605
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 19:29
Цитата:
Автор: daner



Начнём с того, что я просто не понимаю, что такое эта ваша УЭС и какие задачи она решает. соответственно, я не могу оценить того КАК вы это решаете и подходит ли такой подход для решения поставленных вами задач.

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

Делать это "своим проектом" я тоже не хочу, но проконсультировать и помочь, не проблема.

На "С" я не пишу в принципе. Так что, если варианта перехода на "С++" вообще нет, я не собираюсь касаться реализации вообще (впрочем с дизайном все-равно можно было бы помочь).

без GIT я тоже код трогать и обсуждать не собираюсь. Могу помочь вам с организацией гита (если хотите)
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 14737
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 19:56
УЭС (Универсальная Экспертная Система) это типа СИИ, но попроще
Даешь ей запрос - какой исходный код лучшей Операционной Системы с обработкой всех популярных стандартов файлов и с обработкой всех популярных протоколов Интернета, в скомпилированном виде инсталятор которой умещается на DVD диск - и вуаля, виндовс отдыхает
Можете программировать на С++, я всё равно один этот проект похоже не потяну, тем более если кто-то его изменяет по своему усмотрению
Предстоит ещё трудный этап реализации 19+40 функций самообучения
GIT я как то пробовал, насколько я понял он требует своего сервера, а я не могу комп сутками включённым держать
[Ответ][Цитата]
daner
Сообщений: 4605
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 20:59
Цитата:
Автор: IvanVlaskin1976

УЭС (Универсальная Экспертная Система) это типа СИИ, но попроще
Даешь ей запрос - какой исходный код лучшей Операционной Системы с обработкой всех популярных стандартов файлов и с обработкой всех популярных протоколов Интернета, в скомпилированном виде инсталятор которой умещается на DVD диск - и вуаля, виндовс отдыхает
Можете программировать на С++, я всё равно один этот проект похоже не потяну, тем более если кто-то его изменяет по своему усмотрению
Предстоит ещё трудный этап реализации 19+40 функций самообучения
GIT я как то пробовал, насколько я понял он требует своего сервера, а я не могу комп сутками включённым держать



можете привести пример того как в идеале по вашему мнению ваша экспертная система решает какую-нибудь простую задачу.
давайте начнём просто с описания входных данных этой задачи и того как экспертная система представит решение. пока без описания того как она пришла к этому решению.

git не требует сервера. только когда синхронизировать нужно.
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 14737
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 21:13
Цитата:
Автор: daner
можете привести пример того как в идеале по вашему мнению ваша экспертная система решает какую-нибудь простую задачу.
давайте начнём просто с описания входных данных этой задачи и того как экспертная система представит решение. пока без описания того как она пришла к этому решению.

git не требует сервера. только когда синхронизировать нужно.

Сначала она анализирует другие Операционные Системы, составляя энциклопедии для Анализа и учебники решений для Синтеза, потом она по запаху кристаллов абзацев Анализа составляет дерево решений, затем выбирает лучшую ветвь по весам звеньев иерархий, затем следуя этой ветви по учебникам Синтеза составляет Решение Задачи, затем сравнивает Решение с Запросом, и если оно не удовлетворяет Запрос, ищет другую ветвь, и так пока Решение не удовлетворит Запрос
Вроде так, хотя может я с запахом что-то напутал, может весь смысл абзаца нужен, а не только запах
[Ответ][Цитата]
IvanVlaskin1976
Сообщений: 14737
На: Кароч решил я снова заняться программированием
Добавлено: 29 июл 22 21:54
Илья Геллер придумал звон кладки абзаца, а я придумал запах кристалла абзаца
[Ответ][Цитата]
 Стр.28 (40)1  ...  24  25  26  27  [28]  29  30  31  32  ...  40<< < Пред. | След. > >>