Страница 2 из 5 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 21 по 40 из 91

Тема: Вопрос форумным экспертам(программировани

  1. #21
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Именно это я и хочу. Только нужно чтобы эти базы не сохраняли на диск сами ничего.
    Я говорю про одну общую базу для двух программ. Чтоб тягать из одного места и не хранить две копии. А хранить данные in memory, это утопия, если там много гигов. Или все таки нужна потоковая обработка информации? А откуда она тогда идет для обработки?

    У меня складывается ощущение, что неправильно вопрос сформулирован.
    Последний раз редактировалось DieMust; 21.08.2014 в 15:13.

  2. #22
    DieMust, И я про нее тоже говорю. Только я говорю про написать самому эту базу данных. Чтобы ее последовательно обрабатывали разные программные модули.
    Там идет последовательная обработка инфомрации. Одна программа формирует данные, другие их последовательно модифицируют. 3 -4 программы.

  3. #23
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    DieMust, И я про нее тоже говорю. Только я говорю про написать самому эту базу данных. Чтобы ее последовательно обрабатывали разные программные модули.
    Там идет последовательная обработка инфомрации. Одна программа формирует данные, другие их последовательно модифицируют. 3 -4 программы.
    воу-воу, что вообще значит "написать базу данных" качаешь монго, постгрес или качаешь с торрентов оракл какой-нибудь и вот тебе база
    а уж как ты таблицы распределять будешь, зависит от самих программ

  4. #24
    DieMust, Ну это универсальные базы данных, оин как бы расчитаны на хрен знает что. А мне нужно просто массив чтобы был общим и все.

  5. #25
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    DieMust, Ну это универсальные базы данных, оин как бы расчитаны на хрен знает что. А мне нужно просто массив чтобы был общим и все.
    тогда Microsoft Access. Но советую разобраться как поставить хотя бы MySQL и работать с ним.

  6. #26
    Новичок
    Регистрация
    06.01.2013
    Адрес
    Симферополь
    Сообщений
    0
    прочитал все посты, мозг сломал, так и понял чего именно хочет ТС. первое что в голову пришло это клиент-серверное соединение, про которое уже выше написали, настроить его можно практически как угодно

  7. #27
    Megaherz, Давай прощескажем.

    Есть две программы. Одна программа заполняет большой массив чисел. А другая программа суммирует их. Я хочу сделать чтобы программы работали с одной областью памяти в компьютере. Без сохранения на диск, и без копирования этих данных(по возможности).

  8. #28
    Активный участник Аватар для Dargi
    Регистрация
    17.05.2010
    Сообщений
    10,631
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Megaherz, Давай прощескажем.

    Есть две программы. Одна программа заполняет большой массив чисел. А другая программа суммирует их. Я хочу сделать чтобы программы работали с одной областью памяти в компьютере. Без сохранения на диск, и без копирования этих данных(по возможности).
    Может тебе переделать твои программы и слепить их в 1? Ну грбо говоря если у тебя есть программа для складывания массива чисел, переделать ее в дллку скорее всего несложно.
    Подключил дллку к программе которая поставляет массив чисел и работай себе с ее результатами, зачем извращаться то так.

  9. #29
    Dargi, Так исторически сложилось. Ну вот что эти модули были реализованы автономно. Еще в те времена когда памяти было 640 кб и они просто не влезали в память одновременно. По этому они и общались с помощью диска. И развивались так.

    Может быть и можно. Но даже и чисто из любопытсва инетерсно разобраться в этой области.

  10. #30
    Новичок
    Регистрация
    06.01.2013
    Адрес
    Симферополь
    Сообщений
    0
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Megaherz, Давай прощескажем.

    Есть две программы. Одна программа заполняет большой массив чисел. А другая программа суммирует их. Я хочу сделать чтобы программы работали с одной областью памяти в компьютере. Без сохранения на диск, и без копирования этих данных(по возможности).
    а вариант чтоль не канает, например данные запилить на сервер. с помощью клиента получать доступ к данным, у меня например бд(не особо большая правда) закидывается в оперативу и в зависимости от клиента можно работать несколькими способами: работаешь-работаешь, устал, сохранил работу на сервере или локально на компе, или можно работать в "онлайн" режиме, любое изменение в клиенте будет заноситься на сервер сразу, тогда все изменения будет видеть второй клиент в режиме "онлайн". но в таком случае нагрузка на сервер больше будет. в общем, как клиентскую часть настроишь - так и будет, способов уйма. я использую адо+mssql, правда для не особо больших проектов, хз подойдет тебе или нет

  11. #31
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Megaherz, Давай прощескажем.

    Есть две программы. Одна программа заполняет большой массив чисел. А другая программа суммирует их. Я хочу сделать чтобы программы работали с одной областью памяти в компьютере. Без сохранения на диск, и без копирования этих данных(по возможности).
    Ну массив чисел у тебя все ранво где-то будет же.
    Еще вариант с потоками (если пользоваться терминологией java). Программа с числами формирует исходящий поток, другая принимает. В итоге получается, что первая программа кидает числа, вторая их поочередно обрабатывает.
    Гугли stream, pipe или чего-то еще, не знаю на чем ты пишешь и как вообще.

    Цитата Сообщение от Megaherz Посмотреть сообщение
    а вариант чтоль не канает, например данные запилить на сервер. с помощью клиента получать доступ к данным, у меня например бд(не особо большая правда) закидывается в оперативу и в зависимости от клиента можно работать несколькими способами: работаешь-работаешь, устал, сохранил работу на сервере или локально на компе, или можно работать в "онлайн" режиме, любое изменение в клиенте будет заноситься на сервер сразу, тогда все изменения будет видеть второй клиент в режиме "онлайн". но в таком случае нагрузка на сервер больше будет. в общем, как клиентскую часть настроишь - так и будет, способов уйма. я использую адо+mssql, правда для не особо больших проектов, хз подойдет тебе или нет
    ms sql для небольших проектов - это конечно круто
    Последний раз редактировалось DieMust; 21.08.2014 в 16:07.

  12. #32
    Новобранец
    Регистрация
    28.11.2013
    Сообщений
    43
    Коль работает на файлах, то прямая дорога Creating Named Shared Memory

  13. #33
    Активный участник Аватар для Dargi
    Регистрация
    17.05.2010
    Сообщений
    10,631
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Dargi, Так исторически сложилось. Ну вот что эти модули были реализованы автономно. Еще в те времена когда памяти было 640 кб и они просто не влезали в память одновременно. По этому они и общались с помощью диска. И развивались так.

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

  14. #34
    Megaherz, Такой варриант работает да. Но при нем происходит копирование данных в базу данных, и пи извлечении их из базы данных.
    А мне хочется узнать можно ли сделать так чтобы разные программы могли напрямую редактировать одни и те же данные.

    https://ru.wikipedia.org/wiki/Object...edding#ActiveX Я вот такое пока нашел.

    - - - Добавлено - - -

    Apktyc, Спасибо обязательно прочитаю.

  15. #35
    Новичок
    Регистрация
    06.01.2013
    Адрес
    Симферополь
    Сообщений
    0
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Megaherz, Такой варриант работает да. Но при нем происходит копирование данных в базу данных, и пи извлечении их из базы данных.
    А мне хочется узнать можно ли сделать так чтобы разные программы могли напрямую редактировать одни и те же данные.

    https://ru.wikipedia.org/wiki/Object...edding#ActiveX Я вот такое пока нашел.
    ну такое возможно, только копирование так или иначе будет происходить, хотя бы для отображение этих самих данных. работать одновременно несколькими клиентами с одним сервером - вообще без проблем. ну это если не вникать в техническую часть вопроса

  16. #36
    Освоившийся
    Регистрация
    10.11.2010
    Сообщений
    212
    Спалланцани
    Ты слишком усложняешь себе задачу излишними рассуждениями.
    Вариантов сделать то, что тебе нужно, достаточно много. И не нужно пол года сомневаться и выбирать самый лучший, да самый подходящий. Сделай просто чтобы работало, если не разбираешься в тонкостях.

    http://msdn.microsoft.com/ru-ru/libr...(v=vs.85).aspx

  17. #37
    забанен навсегда
    Регистрация
    13.12.2011
    Сообщений
    4,325
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Одна программа формирует данные, другие их последовательно модифицируют. 3 -4 программы.
    Ну так и в чём проблема использования сокетов? Рассмотрим на примере двух программ. Допустим, первая считает данные. Допустим, на выходе мы должны получить какую-то матрицу n x m. Посчитала она первый ряд n, у неё в памяти это держится в виде массива. В то же самое время, вторая программа сидит с socket listener и слушает соединения. Как только первая программа досчитала первый ряд, она в отдельном потоке (чтобы не отвлекать основную) создаёт соединение со второй программой. Каким-то образом производит маршализацию данных (подсказка: более-мене быстрым в данном случае вариантом будет использования потока байт). Ну, например, первые x байт, в которые это гарантированно влезет, описывают количество элементов в массиве, вторым значением определённой длины описываются слайсы последующего байт-потока. Допустим, каждое число гарантированно влезет в 8 байт. Ну и дальше каждое числе представляется в виде массива из 8 байт (надеюсь, ты знаешь о представлении данных в оперативной памяти). Вторая программа их забирает, демаршаллизует и пользует. К слову, в конце можно какой-нить хэш отправлять для проверки чего-нить.

    Если тебе действительно важно, чтобы использовалось одно адресное пространство, пиши библиотеку, в которой эти данные будут храниться/писаться/забираться. Чревато большими проблемами и хаковыми методами. ActiveX — это страшно.

    Если тебе нужно что-то более сложное, работающее одновременно, пиши асинхронный многопоточный сервер и изменяй имеющиеся программы (которые будут, по сути, клиентами). Но учти, что там, где появляется слово асинхронность (и чуть реже — многопоточность), в случае использования решений из коробки человеком без опыта и особого понимания процесса (а я припоминаю, что ты, вроде как, пописываешь на C++), практически сразу начинаются анальные боле и муки страданий. Это ещё не говоря о скрытых способах выстрелить себе в ногу. Хотя ты ещё на тысячах memory leaks себе всё лицо ногтями до кости изрежешь.

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

    «а лисички взяли спички, к морю синему пошли, море синее в говно...»

  18. #38
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Объем данных может измерятся гигобайтами.
    На мой взгляд, если не прибегать к велосипедам, варианта 2:
    1) Переписывать на нормальную СУБД. Сколько данных будет храниться в памяти, сколько на диске, кэши, блокировки, транзакции, насколько это будет устойчиво к отключению питания, по каким протоколам будет идти обмен и тип подключения решается просто настройками СУБД и простановкой галочек в нужных местах. Легко все меняется в зависимости от нужд и мощностей, без необходимости лезть в логику программы. Буст относительно файла будет большим, технология универсальна.
    2) Ставится RAM-диск, файл кидается на него и норм

  19. #39
    Активный участник
    Регистрация
    14.05.2014
    Сообщений
    2,459
    Само сетевое взаимодействие передачи делай через tcp, команды программе\ам можно ( и нужно ) через udp.

  20. #40
    Новобранец
    Регистрация
    18.02.2011
    Сообщений
    61
    ППЦ у нас на ск2тв, все пекари превратились в программистов.

    Цитата Сообщение от Спалланцани Посмотреть сообщение
    И так вопрос: есть несколько программ обменивающихся данными между собой. Сейчас обмен происходит через запись файла на диск. Есть предложение сделать обмен без сохранения на диск. То есть каким-то образом нужно передавать данные из одно программы в другую. Объем данных может измерятся гигобайтами.
    Ответь на следующие вопросы:
    1) Сколько лет ты занимаешься программированием?
    2) Какие технологии ты бы хотел использовать (какие удобнее) (язык программирования)
    3) расскажи конкретнее что из себя представляют данные (видео ? звук? или справочники?)
    4) Открой завесу тайны, не бойся, скажи какие задачи решают эти программы, не нужно тут шифроваться писать про нелепые массивы и их сложение. Ты не на военном объекте работаешь.
    Последний раз редактировалось AlienRus; 21.08.2014 в 21:05.

Страница 2 из 5 ПерваяПервая 1234 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вопрос экспертам(MFC)
    от Спалланцани в разделе Софт
    Ответов: 12
    Последнее сообщение: 23.07.2014, 22:24
  2. Ответов: 6
    Последнее сообщение: 26.03.2014, 16:51
  3. Ответов: 18
    Последнее сообщение: 01.02.2012, 11:25

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •