Общий сап учусь в унике, где особо много ничего не выцепил. Неинтересно учиться в университете. Напросился на стажировку бесплатную, даои задание. Двач выручай. Как посоветуешь решить? Я уверен что есть готовые алгоритмы, которые пормогут решить ее. Назовите их. Почитаю, вникну в тему
В общем, ищю ценные наводящие слова, чтобы начинать изучать вопрос и решать задачу. Решить задачу красиво, не как быдло методом тыка
Решение представить нужно на плюсах Может по ним тоже посоветуете как что реализовать.
>>245315404 а логику всего этого? понимаешь, мне кажется чтио мое решение будет каким-то примитивным аля узбек из деревни что приехал в Россию ну вот, настолько примитивным, как у узбека который даже в склонение по роду не умеет
>>245315769 Логику чего? Ебашиш класс и все делаешь в нем. >>245315909 >Ахуеть как сложно, да? Разве там он предварительно не будет весь файл в память грузить, а потом оттуда линию вытаскивать?
>>245315404 Двачую. Какие-то охуевшие мудаки дают задачу, с которой будешь неделю ебаться, пока оно заработает правильно. В качестве тестового, ага, а потом дадут зарплату баксов 500 и будут ездить по ушам "как же тебе повезло работать у нас". Пошли они нахуй. На собеседовании не только работодатель проверяет тебя, но и ты работодателя. Учись сразу фильтровать долбоебов.
1. Делаем тип - пара адресов, который имеет тупо 2 поля и позволяет сравнивать их в рандомном порядке. 2. Вытаскиваем хидер пакета, делаем из него пару адресов. 3. Закидываем в лист уникального говна (я забыл как он в STL называется - я инвалид эмбеддер). 4. Так делаем со всем файлом. 5. Берем длинну листа уникального говна.
Вообщем всего что можно заюзать. Я вообще ноль вот. Я трогал только язык программирования под свои маленькие идейки и хотелки. Там вот вообще не было сортировки и выборки элементов
>>245316416 >1. Делаем тип - пара адресов, который имеет тупо 2 поля и позволяет сравнивать их в рандомном порядке. >2. Вытаскиваем хидер пакета, делаем из него пару адресов. >3. Закидываем в лист уникального говна (я забыл как он в STL называется - я инвалид эмбеддер). >4. Так делаем со всем файлом. >5. Берем длинну листа уникального говна. Нафиг так сложно? В задании говорится об элементарном парсере. >я инвалид эмбеддер НУ да, сейчас каждый, кто пишет прошивки для стм32 считает себя "эмбедерром" лол.
>>245314905 (OP) > 100 гб фаил ахахаха, пидараха тупая. ФАЙЛЫ БОЛЬШЕ РАЗМЕРА ОПЕРАТИВКИ! ТЕБЕ ПИЗДА! АХАХАХА! ТОЛЬКО ВРАППЕР К ВИРТУАЛЬНОЙ ПАМЯТИ МАП ВЬЮ ОФ ФАИЛ ПИСАТЬ ЧАСА 4! АХАХА БЛЯДЬ! А ТЫ УТОЧНИЛ КАКАЯ ОС? НА ЛИНУКСЕ ЖЕ ММАП! И ПРОСТОЙ ФСТРИМ НЕ ПОКАТИТ! ЛИБО АПИ ВИНДЫ ЛИБО АПИ ЛИНУКСА!
>Напросился на стажировку бесплатную, дали задание
Я кайфую учиться практически НО не без базовой теории. И учась практически психологически проще, ты видишь как твои знания воплощаются в мелкие элементы которые работают и может быть даже используются
>>245316641 Задача на душное байтоебство. Небось, вакансия на ждуниор ембедед разработчика? Вкатывайся лучше в джаву, там платят больше и мозги не ебут хуйней.
>>245315909 >getline В задании сказано, что блоки располагаются последовательно, никаких строк там нет. Если только 0 рандомно не встретится в данных.>>245316066 >Ебашиш класс кек
>А работать ты также собираешься? Ясен пень. Я не буду кучу ебанутых пограничных кейзов обрабатывать, пока такое не будет в ТЗ. Таким образом можно годы писать говно и оно один хуй где-нибудь свалиться.
>>245316867 Че, написал прошивку под СТМ8 и дохуя гордый? Самое забавное, что под СТМ по работе ни разу не пришлось писать. Каждый раз когда спрашивают, а че СТМ хотяб знаешь приходиться кхекать и мнямкать.
>>245316893 > И ПРОСТОЙ ФСТРИМ НЕ ПОКАТИТ Почему? Для решения задачи достаточно одного прохода, знаем тебе мапить файл? Тебе нужен произвольный доступ к данным? Нет.
>>245314905 (OP) >Решить задачу красиво, не как быдло методом тыка Ты че ебнутый? Нахуя? Въебываешь все в структуру или класс и вообще похуй. Ты кого там удивлять то собрался, девочка? Вы порнухой полной занимаетесь, в реальной жизни никто ебаться даже не будет, можете поверить мне. Ты че ардуину что ли ебешь, что так за ресурсы переживаешь? Бред какой-то.
>>245316506 Ага, по тз делается за 2 часа, по перерасчету ну часов 6, в реальности бы за часов 8 успеть, чтобы потом еще дня 3-4 отлаживать на похуй. Знаем, проходили.
>>245317043 >Я не буду кучу ебанутых пограничных кейзов обрабатывать, пока такое не будет в ТЗ. >Таким образом можно годы писать говно и оно один хуй где-нибудь свалиться. Ты наверное 15 лет как миддлом работаешь?
Вроде ничего критичного,начни с этого: считывай файл поблочно/построчно/побайтно хз как он сгенерирован (посмотри сам) и ищи начало и конец пакета в итоге у тебя должно получиться колличество пакетов. Потом прикрутишь всё остальное
>>245317096 fstream на 32 бит ограничен 4гб. На 64 бит 100500Пб. Тоесть не катит. Мапятся куски по 4Kб, а не весь фаил. Зависит от организации виртуальной памяти. Возвращается указатель и чекается каждый ++ по указателю. И если вышел из страницы виртуальной памяти, то брасается исключение и грузятся следующие 4Kб.
>>245317498 >fstream на 32 бит ограничен 4гб Сейчас не 2007, чтобы на 32 бита ориентироваться. Я знаю как мапяться файловые проекции, это не влияет на тот факт, что достаточно тупо прочитать файл стандартными средствами.
>>245317043 >Че, написал прошивку под СТМ8 и дохуя гордый? Когда то давно писал прошивки, но не только под стм8, а и под несколько других семейств микриков. >Самое забавное, что под СТМ по работе ни разу не пришлось писать. Каждый раз когда спрашивают, а че СТМ хотяб знаешь приходиться кхекать и мнямкать. Мань, эмбед это линукс, микропроцессоры, плиски, нейросети и маш.об. А если ты считаешь написание говнокода для микриков в какой-то шаражке "эмбедом", то у меня для тебя плохие новости.
обнадежьте что достаточно будет построчного чтения без влазивания в то что написал этот >>245316893
>>245317170 Хотел донести, что я как 10 классник, который потрогал плюсы ардуино, починил несколько видюх обнаружив пробитый кондей Вот знаний ноль вообще Пришел сюда чтобы тыкнули на что почитать конкретно по решению задачи. Общее теоритическое поле знаний тоже буду качать постепенно
>>245314905 (OP) Твоя задача прочитать заголовок пакета чтобы найти его размер, прочитать пакет, (тут нужно проверить ключевые байты, но не понятно что делать, если они невалидны), вытащить 2 адреса, отсортировать их, положить в мапу из пар адресов и счётчика (или увеличить счётчик, если такая пара есть), сдвинуть голову файла на начало следующего пакета. Повторять так пока не дойдешь до конца файла. В конце распечатать размер мапы.
>>245317863 Нет, там действительно есть сложные случаи и сорта алгоритмов, которые в широком смысле можно назвать нейросетями. Но это настолько редкая хуета и столь зачастуя малая по объему от проекта, что можно не брать во внимание.
>>245317824 >Это можно было бы и уточнить Ящитаю, надо уточнять, если видишь риск. Но в данном случае я вижу больший риск в том, что даже дикшнари пар адресов не влезет в оперативку. Хотя вряд ли авторы задачи сами предлагают такой случай, но если предполагают, непременно засчитают как минус.
>>245317776 Так чел, в этом и прикол, что ебаться не нужно даже с изучениями тем. Берешь и делаешь. Проблемы которые могут встретиться попутно решаешь. Все.
Ты же учишься, нахуя тебе здесь такие советы, тебе же не до конца жизни подсказывать будут. мимо >>245317170
>>245318034 Блин, а я хотел всех забайтить типа я не знаю что движки нейросетей под капотом на плюсах или даже на сях пишут. Типа я такой лох, что думаю что матрицы видеокартами умножаются чисто силами питона
>>245318628 Вот сам задумался. Сначала про sqlite, а потом, что вообще-то базы предпочитают, чтобы индексы помещались в память целиком. Так что надо ещё их документацию про такое требование почитать.
>>245318404 Единственный косяк, который я у себя сам щас вижу - не нужно читать весь пакет, тут достаточно прочитать 40 байт, чтобы понять структуру всего пакета.
>>245319129 но есть перед содержанием блока и после обявления его длины а в одном блоке один пакет
>Windows использует пару символов для завершения строки: возврат каретки (0x0d), за которым следует перевод строки (0x0a). Вы можете записать их в C как '\r' и '\n' соответственно.
У тебя в worst case, будут данные размером в 20+гб =)
Там аноны мне не просто так про АутМемори сказали.
ОПа порядком так подъебали для стажерской задачи лол. ИМХО делай в лоб, не задумываясь о том, что кончиться ОЗУ на адреса, т.к. иным путем там попадаешь на ультраеблю нехилого уровня.
Но можешь заметку про это написать. Я хз, как подобное КРАСИВО разрешить, ну действительно, не БД же поднимать.
>>245319236 Это был сарказм, если что. Нихуя не понимаю вас. Когда пытался в петухон вкатиться, не мог держать концентрации внимания более 5 минут на этом говне.
>>245318682 Это двоичный файл, там строк нет. Тебе нужно сделать структуру, в которую помещается нужная инфа, потом в неё из файла читаешь, и идешь дальше. Главная задача составить эту структуру.
>>245318887 Есть программисты проблем-сольверы, они работают на результат, пользуясь широким арсеналом высокоуровненвых средств. В плюсах ты будешь пердолинг-мастером с узкой спецухой на ебаной галере.
>>245319490 Блять, тебе же сказали, строк нет в твоем файле, забудь про них. Нахуя ты мне пасту про завершение строк в винде пихаешь? Извини, анончик, за мат, но ведь иногда же надо слушать людей, особенно когда ты только вкатываешься?
>>245319824 Если нормальную хэш функцию подберешь, то и бешать не особо часто будет. В любом случае, не вижу смысла спорить. Нравится тебе std::map - ради бога.
>>245319466 20 Гигов - хуйня (на деле будет меньше, кста), Виртуальная память пару раз файл подкачки почешет. Да можно замедло хватануть, но чтобы bad_alloc схватить этого не хватит.
>>245319869 >Есть программисты проблем-сольверы Так я и есть, иначе откуда бы мне знать про sqlite и требование что индексы должны влезать в память. Только меня так заебало это всё. Я хотел бы быть шаманом королём байтоёбом, но решил что не вывезу и пошёл по с#.
>>245320000 Хорошая мысль. Спасиб анон, я и забыл с своим пердолингом, что бывает СВОП.
>>245320066 Это конкретно вот эту проблему не решает никак. Если у тебя будет 100гб уникальных разговоров с 0 байт пейлоада, то ты хоть по байтам их разбей. У тебя будет ебическое число данных в которых тебе придется копаться.
>>245320287 Блять, да оно все равно сикать пойдет тебе на лицо, бгг. Нахуя читать 65 536 байт, когда можно 40? На самом деле, что бы ты там не крутил, винда так и так эти 64 кБайт прочтет, хоть 1 байт читай.
>>245314905 (OP) Оп, в твоем задании нет никаких совершенно подводных камней, оно рассчитано на то, знаешь ли ты синтаксис, умеешь ли ты внимательно читать, и хватит ли у тебя усидчивости на час работы. Никаких алгоритмов для этого знать не надо, как написано - так и делай. В цикле проверяешь заголовоки блока, если заголовок норм - проверяешь заголовок пакета, если он тоже норм - то записываешь в словарь откуда и куда идет пакет и отступаешь нужное количество байт для того, чтобы на следующей итерации цикла проверить следующий блок. С другой стороны, хуй знает насколько этично с их стороны вообще давать бесплатную "стажировку", и насколько этично с твоей стороны клянчить решение в б.
>>245320565 Успокойся. У тебя задание на стажера. Сделай в лоб, без обращения внимания на подкачки, 20гб и прочую шизу что тут насрали.
Просто почитай про это, пойми о чем говорят и почему, добавь это как комментарий. Потому, что ты эти проблемы ты 100% сам не решишь. Вряд ли от тебя этого ожидают, но во если подметишь - будет большой плюс.
>>245320600 так эммм а как иначе, я ведь не пролный листинг кода беру
узнаю про технологии, вот написали тут по маппинг буду читать это.
Что скажешь про это, использовать в решении?
а еще условие, что файл может быть 100гб. Здесь пошли дебаты про программный распил файла, один джун написл по смещение головы файла я не понял что это значит
>>245314905 (OP) Ох уж эта байтоебля-байтоеблечка как они от тебя хотят: нарисуй парсер фаила, нарисуй парсер эзернет пакета, нарисуй парсер ipv4 пакеа, обойди ими весь фаил, заполни сет уникальными парами айпи адресов
Как бы я это решал: tcpdump <хуйня из стаковерфлоу как вычленить src/dst> | awk <хуйня из стаковерфлоу как отсортировать айпи адреса> | sort -u | wc -l
>>245320741 >Сделай в лоб, без обращения внимания на подкачки, 20гб Да, не важно, что там в задаче отдельно указано. Главное ведь суть. И пусть у меня не будет конкурентов.
>>245317855 >Иди попердоль за борщ чего. >Большая часть задач - моргание каким говном. В сложном случае - НАДЕЖНОЕ моргание говном. Маня проецирует. Иди дальше пердоль свои микрики в нии за борщ и считай это "эмбедедом".
>>245320927 Это исходные данные. Которые ты переведешь в некий список, охуевшего размера. Его один хуй тебе надо где-то хранить, как то его ворочать и просматривать постоянно.
Разговор про это. Насколько ты исходные данные не разбей - полученные все равно будут огромные.
>>245320283 Go очень мощная хуйня, но тебе нужен полный стэк чтобы решать задачи, то есть базы данных точно надо знать, сам го, библиотеки, чтобы ты реально могу решить бизнес задачу, а не пердолился с байтами, весь этот пердолинг давно выненесен в готовые высокоуровневые функции, тебе надо просто грамотно применять всё это. А все эти задачи с хакерранк можешь тупо решать на досуге, если есть желание.
>>245320967 Представь что твой файл - это лента. По ней ты можешь читать считывающей головкой. Голова файла - то место которое ты собираешься читать. Его можно двигать, например в произвольную точку по адресу, либо на какое-то количество байт вперед-назад.
>>245320831 Ну камон, тебе не рассказывали (и ты ни разу сам не слышал) про словари что ли? Их и надо использовать. >>245320845 Трудоустройство - это когда тебе платят за труд, а ОП устраивается в какой-то анальный цирк клоуном. >>245320828 Адреса могут (и подразумевается что будут вернуть) совпадать, иначе задачку не решить в принципе (ей надо будет вернуть структуру, которая не помещается в памяти просто). Я так понял, подразумевается что не надо загружать файл в память целиком, а надо читать по одному блоку, вот и всё. Хотя если бы мне на интервью соискатель уточнил бы этот момент, то я бы это хорошо оценил.
>>245321043 Кароче. Открывай файл через fopen(), читай байты заголовков через fread(), перескакивай через данные пакеты (или через пакеты, которые тебе нужно игнорить) через fseek(). В конце не забудь закрыть файл через fclose(). Документацию этих функций смотри на www.cplusplus.com. Всё.
Единственное, могуть приебаться, что fopen/fread/fseek/fclose - это C API, не С++, а в С++ надо файлы читать через потоки. В этом случае отвечаешь им, что ебал ты их всех во все щели вместе с их потоками и съябывай оттуда нахуй.
>>245321210 В реальности просто бы захуярил хешсет на пару src/dst адресов. Если бы не взлетело - прикрутил какой-нить sqlite для того чтоб складировать их туда.
>>245321375 Могут. А можно сказать, мы вам дали файл с уникальными, у вас пограмма не работает мывамперезвоним.
А подразумевается на самом деле то - хочет ли собеседующий анона или нет. Т.к. если он не душный сишник с двачей, он либо проебался с ТЗ, либо решил что ОП не обратит внимания и хуй сним.
То, что ОПу надо просто в лоб решить и забить хуй - уже сказали в самом начале треда.
>>245321322 >С какого минимального размера пк программист считается ембеддером? Эмбед все, что кроме телефона и пк, которым пользуется юзверь. При этом никто не мешает встроить куда нибудь полноценный системный блок от пекари, это тоже будет эмбед. >Я вот для смартфона код писал, хз может 6 дюймов. Я ембеддер? Нет, ты мобильный разработчик.
>>245321619 Если захотят выебываться - то будут выёбываться в любом случае, но тут очевидно что проебались в формулировке задачи. >>245321585 Ты же понимаешь, что невозможно вернуть структуру (кстати сама структура тоже не определено, но подразумевается словарь), которая теоретически имеет не ограниченный размер.
>>245321955 >При этом никто не мешает встроить куда нибудь полноценный системный блок от пекари, это тоже будет эмбед. Так я ещё и для серверов пишу, сервисы там работают. Серверы не для конечного пользователя. Я всё6 ембеддер?
>>245322064 >Ты же понимаешь, что невозможно вернуть структуру (кстати сама структура тоже не определено, но подразумевается словарь), которая теоретически имеет не ограниченный размер. Если это api, то можно вернуть стрим, в котором очень большие данные
>>245322299 >Что мне мешает связаться со 20 000 0000 000 айпишниками через nmap какой-нибудь? Свич у меня историю хранит, например. Я не понял, ты доказываешь, что у твоего свича бесконечный объём памяти или что? Сколько истории он хранит? Какие данные входят в историю?
>>245322178 А мне похуй. Сделаю на крестах ПЬЮР ВИРТУАЛ класс который умеет складировать пары адресов и считать количество уникальных. Имплементирую через анордеред сет, сверху настругаю коммент про то, что можно имплементировать это с помощью базы данных, но мне лень.
Если это не кресты, а Си - то же самое, но только через указатели на функции.
>>245322247 Если отдавать только количество пакетов одного разговора беззнаковым целым (батюшки свет, мы только что ограничили количество пакетов для каждого разговора! В задаче не указано это, надо учесть длинную арифметику!), то всей компьютерной техники Земли не хватит, чтобы хранить вывод этой функции.
>>245322697 Вот это потеря! А как же приятный и молодой коллектив? Как же интересные проекты? Получается, у меня теперь не будет доступа к печенькам на кухне? Ах я совсем забыл! У меня же референц от Николай-Николаича, вот его рекомендательное письмо.
>>245322895 >Получается, у меня теперь не будет доступа к печенькам на кухне? И к спортзалу А ещё ДМС И курсов повышения квалификации >У меня же референц от Николай-Николаича, вот его рекомендательное письмо. Так с этого и надо было начинать. Пойдёте к нам менеджером?
>>245322476 >ВИРТУАЛ Зачем? Виртуал нужен, когда у тебя рантайм полиморфизм. В этой задаче его вроде не надо. Опять же оверхед от вызова виртуальных функций (да если вызов функций через указатели) - ха это ни один опытный программист тебе спасибо не скажет.
>>245314905 (OP) >Как посоветуешь решить? 1. Ну во-первых тебе нужен парсер. Это достаточно очевидно и просто, тебе надо будет вытащить dst и src из каждого пакета 2. Тебе надо захуярить хештейбл, у которого ключем будут две пары адресов - если у пакета dst и src, не важно в каком порядке, принадлежат этой паре - кладешь пакет в этот бин. Получается N пакетов ты ебанешь за O ( N ) с некоторой амортизацией на рехеш (но ты можешь быть умным и избежать этого, но это черезчур для джуна). 3. Хуяришь что-то типа map-reduce разметки для данных и запускаешь молотить std::thread::hardware_concurrency тредов, каждый собирает свою хеш мапу с пакетами. 4. Сливаешь результаты всех тредов, складывая сливая все хешмапы в одну.
>>245323412 > Хуяришь что-то типа map-reduce разметки для данных и запускаешь молотить std::thread::hardware_concurrency тредов, каждый собирает свою хеш мапу с пакетами. Учитывая, что позиция в файле i-того блока известна только после обработки i-1-ого, мап-редьюс тут охуенно поможет, конечно же.
>>245314905 (OP) Хорошая задачка. Определяешь структуры для разбора пакетов. Разбор тупо делаешь через преобразование куска байтов к сутрктуре, но помни про POD паддинг и выравнивание. Сперва тебе надо нарезать входящий поток на фреймы, разобрать, потом найти получателя и отправителя, потом закинуть их в мапу (дерево поиска для 1ГБ будет полезно) с счётчиком и структурой из получателя и отправителя (переопределить оператор < не забудь). Конечно надо всё в конвеер превратить и сделать многопоточным. В идеале mmap поюзать конечно же.
>>245323412 >3. Хуяришь что-то типа map-reduce разметки для данных и запускаешь молотить std::thread::hardware_concurrency тредов, каждый собирает свою хеш мапу с пакетами voobsche_ohuet.jpg
>>245319938 Те ебанат, по моему, хэш в любом случае на порядки сложнее операции, блять, сравнения. Одной, если два uint32 на amd64 архитектуре сравнивать. Я не совсем понял как хешмап тебе поможет не ьегать каждый раз ПО ЁБАНОМУ СВЯЗАННОМУ СПИСКУ, БЛЯТЬ, С КЭШМИСАМИ. На мой вкус и мап тут не необходим. Я бы замутил структуру и аллочил бы массивы этих структур, кусками по 4к. Но я сишник, схемотехник вообще. мимо ахуел как из простой задачи делают сложности
>>245323827 Ты имеешь ввиду те байты, которые могут (и будут) встречаться в содержимом пакета? Для того, чтобы убедиться (с некоторой степенью), что ты вычислил оффсет следующего блока корректно и не более.
>>245323968 >Для того, чтобы убедиться (с некоторой степенью) С абсолютной степенью вероятности, т.к. дальше у меня идет размер пакета со смещением на который должен (если ты не проебался и это не середина данных) еще один блок синхронизации. Число проверок при входе можешь сделать любым (обычно используют 3), но это нихуя не обязательно, т.к. в нормальных пакетных протоколах примитивы синхронизации исключаются из пейлоада с помощью кодов расширения.
>>245323734 Алсо, забыл сказать что всё должно быть zero-copy, т.е. работаешь с буфером который считал из файла. Считываешь файл в буфер 100мб, например, потом скармливаешь в парсер, парсер возвращает набор структур размещённых на той же памяти что и буфер и это уходит в твою считалочку. Конечно, можно подумать про кэш миссы, переключение поток и т.п., но пох наверное. Алсо, буфером может быть больше чем 1 на 100 мб.
Вобще охуеваю с йоба-программистов ИТТ. Потоки, mmap... задачу дали джуну, йопте, ДЖУНУ, который только вкатывается. Решается одним циклом. Похуй, что медленно, простое решение - самое лучшее. Если бы мне студентик без опыта работы решил бы такое с потоками, я б честно засомневался, не "помог" ли ему кто.
>>245323734 >преобразование куска байтов к сутрктуре, но помни про POD паддинг и выравнивание Чет это ссыкотно. Вряд ли угадаешь паддинг, особенно если прогу компилить под разные архитектуры, особенно если кто-нить ушлый будет компилить программу с ключом компилятора, который поменяет порядок полей в структуре. Вроде как и про endianness надо бы не забывать.
>>245324093 > в нормальных пакетных протоколах примитивы синхронизации исключаются из пейлоада с помощью кодов расширения. Интересно, не знал про это хуйню. Но это не отменяет конечно же того, что нельзя размечать данные в слепую по идентификатору блока, надеясь что разработчики конкретного формата файла как-то позаботились об этом.
>>245324255 >Вобще охуеваю с йоба-программистов ИТТ. Потоки, mmap... задачу дали джуну, йопте, ДЖУНУ, который только вкатывается. Решается одним циклом. Это стандартная задача, которую дают дохуя где. Она даже есть на SO в немного измененном виде
Первый вопрос после выполнения "в лоб" - как ее улучшить?
>>245322247 Кекус максумис, тогда смело аллоч 8*2^64 байт, проблема решена! проблем-солюшын программист отряхнул руки, запахнул плащ, и пафосно вышел из треда
>>245324322 >Но это не отменяет конечно же того, что нельзя размечать данные в слепую по идентификатору блока Можно и нужно, это именно так и работает. Но реально даже если кто-то проебался, ты просто проверяешь до нужной процентили надежности схождение пакетов по размерам пакетов и синхронизационным кодам. Они туда, ВНЕЗАПНО, добавлены не для того чтобы двачеров заебать.
>>245324329 >Первый вопрос после выполнения "в лоб" - как ее улучшить? проверить на читаемость кода и не трогать. Пуктимизаторы щас тут напуктимизируют до того, что оно вообще компилироваться не будет.
>>245324255 >Вряд ли угадаешь паддинг Я такое на олдовом проекте QIK видел. Так они парсили всё. Паддинг можно через прагмы настроить или опции компилятора, но я сильно сомневаюсь что там будет что-то отличное от гсс или cl. В любом случае, это самая быстрая реализация из удобных. В ином случае, надо дрочить байты руками, накладывать маски, писать считать офсеты. Возможно, последнее от тебя и ждут, т.к. первое может не всем понравится.
>>245323897 >Я бы замутил структуру и аллочил бы массивы этих структур Ебать, откуда вы вообще нахуй лезете? Что ты собралось аллоцировать в задаче на подсчет?
>>245324418 Я лет пять назад работал в одной прогнившей конторе, которая как рах подобной хуйней занималась. Местный инженер не смог выделить 2^64 байт памяти. Умелец не унывал: он просто поксорил dst и src и выделил 2^32 байт памяти. Иногда это даже работало.
>>245314905 (OP) Тут подвох если только на то, что все пары src-dst в память не влезут. Если предположить что не влезают, то тебе нужно отобразить входной файл в промежуточный где лежат пары <min(src, dst), max(src, dst)>. Потом этот файл нужно обработать любым алгоритмом внешней сортировки (mergesort или radixsort первое что на ум приходит). И уже по сорченному выводить ответ.
Но вообще для бесплатной "стажировки" такие подвохи чето слишком жесткие, чувак который сходу такой подьеб видит в задаче на бесплатную стажировку не пойдёт.
>>245324329 >Первый вопрос после выполнения "в лоб" - как ее улучшить? Скажут улучшить - будешь улучшать. Наворачивать потоки с мутексами и прочей йобой на элементарную задачку на собесеовании для стажера - это такое.
>>245324580 >QIK Че за QIK? Не тот, который Skype QIK? Если ты щас мне скажешь, что ты в Зеленограде лет 10 назад работал, а потом в США съебнул я прям охуею... Не знал, что ты на двачах сидишь.
>>245324255 >Вроде как и про endianness надо бы не забывать. У тебя в задаче про это не говорят, значит байты читаются из файла как написано в спеке, т.е. не думай про эндианесс. Если есть тестовый файл, то просто в хекс эдиторе посмотри как там всё лежит и пойми какой там эдианес.
>>245314905 (OP) > нефиксированный размер пакета > файлы 1-100Гб > сопоставить по таким-то полям Блядь, это пиздец. Тебя выебали в жопу. На проде это целый эпик на 3-4 месяца работы. И да, тебе нужен тут SQLite, как минимум. Читать тебе некуда же. Оперативки не хватит.
>>245325152 >где-то в коде Где? Нахуя std::move? В этом весь С++. Навернут каких-то умных указателей с move semantics, когда можно просто одним raw указателем обойтись.
>>245325372 У тебя такая же структура может быть в пейлоде, у которой после 5б5д - размер, после этого размера - опять 5б5д. Нельзя случайно искать это значение, эта задача - DAG.
>>245325392 Нахуя мне их читать? Все что надо, я уних прочитал. Ты мне простым языком скажи, где ты в плевой задачке для джуна собрался всю эту йобу использовать?
>>245325475 >У тебя такая же структура может быть в пейлоде Окей, тогда ты не можешь вообще читать пакетные файлы, если в них есть паддинги, у тебя ж рекурсивный самовоспроизводящийся пейлоад.
>>245325331 Приходит продакт овнер и спрашивает тебя нахуя ты делаешь то, что не просили. Таску уже другому Васе отдали и он её сделал, а твоя поддержка ipv6 оказалась никому не нужной. Твоя реакция?
>>245325230 Сразу безработного чмоню видно. Итак смотри как работает реальный БИЗНЕС 1) Согласование идеи задачи между отделами разработчиков, QA и продюсером. - 1-2 недели (3 митинга) 2) Передача задачи отделу QA и последующее составление спеков (месяц минимум) 3) Согласование спеков между QA и программистами (+- неделя) 4) Передача задачи на отдел программистов + плановый созвон и выделение кадровых ресурсов на выполнения задачи (3 дня) 5) Собственно решение задачи программистами + откладка и тесты (полтора месяца) 6) Передача задачи обратно отделу QA 7) Тестирование + релизное тестирование (2 недели) 8) Подготовка стейджинга для заказчика/подготовка сторов для релиза (2 недели) 9) Релиз + выделение ресурсов на поддержку (10-15% от команды)
В итоге на реализацию нужно МИНИМУМ 4 месяца, а в идеале хотя-бы пол года. Вот это настоящий БИЗНЕС, а своё говно накостыленное на коленке с тонной багов оставь столетнему преподу до лабы.
>>245325703 Чего? У тебя длина блока определена вторым и третьим байтом блока. То, что внутри ебется само с собой, я так понимаю, размер там тоже определен где-то, где данные помечены как произвольные, но нам до этого никакого дела нет, это никак не поможет определить или не определить где заканчивается блок и начинается новый.
>>245314905 (OP) >Я уверен что есть готовые алгоритмы Лол. 1. ты не владеешь синтаксисом родного языка, но пытаешься влезть в неродной с++ 2. все, что тебе нужно, написано в задании. Какие еще тебе алгоритмы? как второй байт из пакета отличить от третьего?
>>245325912 >У тебя длина блока определена вторым и третьим байтом блока. Окей, у тебя link-layer протокол, он вообще нихуя не знает о целостности данных. Через size байт может ничего не лежать, лежать кусок левого пейлоада, лежать валидный старткод следующего пакета.
Ну, это в реальности, в задаче для джуна и в пейлоад никто синкворды пихать не будет. Более того, вопрос тебе как джуну: что для данной задачи важнее - скорость парса или время на валидацию результата? (делается за N сложений после подсчета всех блоков, где N - число блоков на которые разбивают задачу)
>>245318801 >>245323926 >>245323412 >>245323734 Давайте замажемся, я сейчас в дороге с домофона пишу, через полтора часа дома буду. Каждый напишет свою реализацию, оп скинет кусок файла на обменник, и через пару часов сравним. И опу помощь, и мы письками померяемся, друг друга хуями пообкладываем, можт кто чё новому научится? Оп, я не понял, длинна и тип в каком эндиане? Чё батл, посоны?
>>245316558 >>245316942 Лол, сразу видно изобретателей ИИ на питоне: ни прикинуть размер нужной памяти (пара адресов - 8байт, количество пакетов - еще 4 - сколько у тебя памяти, если тебе ее не хватит?), ни 120 байт из произвольного места файла прочесть.
После прочтения задания я задумался о том, кто в действительности может называться программистом, а кто нет. Это же просто какой-то пиздец: то, что написано в задании, и то, чем занимается веб-разработчик средней руки, это же просто небо и земля. Двач, охуевать от таких заданий-это нормально?
>>245326640 >таких В нормальном вебе просто задачи другие, но они не легче. Бытовой фронт для мелкобиза к программированию относится постольку-поскольку, это да.
>>245326940 1. Изучить как работают основные системы компьютера. 2. Работать в индустрии (лол), можно всякие квизы решать, от Яндекса или Гугла часто подобное бывает.
>>245326640 У каждого своя специализация. Работаю программером лет 15 уже, и то полез в гугел вспомнить, как там из файлов читать. Хоть я и С++ в довольно низком уровне (йоба графон), но и то нечасто приходилось с файловой системой работать (может пару лет назад, когда писал сериализацию ассетов).
>>245327011 Да ясен хер, что почти никто не помнит все на свете наизусть. Просто есть программисты, а есть макаки. Программист знает, что и где ему надо посмотреть, и на что обратить внимание. Макака - просто охуевает.
>>245327004 Валидация данных на аналогичных масштабах ввода (100k - 1kk), интерактивные компоненты во всяких редакторах, да много чего - все что нужно скалировать на большое число людей. Задача из оп-поста тоже на это, только она "вертикальная" по скалированию, а не "горизонтальная".
>>245326883 Проблема с тем, что на гб мы не знаем сколько там разговоров будет. Хэш довольно быстро заполнится до лоад фактора или как оно там называется, после чего попрут коллизии которые увеличат сложность, а с деревом всё просто достаточно logN и нормально, даже на 1кк пар адресов перфоманс будет нормальный.
>>245314905 (OP) Ебать, какая глупость. Кто является целевой аудиторией этого задания? Джун его не вывезет, а мидл и выше просто не будут этой дрочью заниматься, есть миллиард работ, куда тебя заберут без тестовых.
>>245327150 Ты не про веб рассказываешь. А про бэк-енд. От того, что у тебя к бэку подвязана вебморда, он не становится вебом. А в вебе тебе нечего скалировать на миллиарды пользователей. Хотя, очевидно, и там достаточно интересных задач, к которым надо подходить с умом. А не просто формы клепать "все на реакте, и я на реакте"
>>245327111 Не, я ща в финтехе работаю, в хуйвее какие-то охуительные правила мол в 2к21 нужно 24/7 в офисе жить.
>>245327178 Это еще схуяли вдруг? Российскому офису лет 20 уже, там больше 200 человек работает. Практически все хардварное кодирование видео у нас пилилось.
>>245327594 в реальности так бы и реализовали по простому никто бы хуйни не городил без надобности файл то тебе так или иначе прочитать хоть раз придётся, сразу и посчитаешь, время вычисления ничто по сравнению с чтением с диска
Кстати, ОП, а как ты планируешь работать если тебя примут? Я сам бы эту задачу не решил, но просто, если тебя внатуре возьмут и поставят примерно такую же задачу, а может и посерьёзнее, че делать буш?
>>245327185 Search, insertion, and removal of elements have average constant-time complexity. vs Search, removal, and insertion operations have logarithmic complexity
Все, что тебе надо знать. Над реализацией ты не властен, поэтому у тебя есть два варианта: 1. тыкать пальцем в документацию 2. приводить конкретные примеры (после замеров), где твой вариант быстрее
все твои догадки, что там будут коллизии, никого не ебут.
>>245327299 Не считаю нужным джуну уметь эту хуйню выдрачивать. Хах, помню я устраивался работать в укр.нет на косарь баксов джуномидлом. Задали мне реализовать что-то вроде memcached упрощенного, дрочил его неделю, так и в итоге и не взяли. Я плюнул и пошёл в другую компанию, поотвечал на вопросики на собесе и меня взяли на 2к баксов, лол. Годы прошли, теперь я синьёр 4500 баксов в месяц, и до сих пор не уверен, что моё новое решение понравилось бы тем упырям из укр.нета.
>>245326418 Я? картинка с бабкой на телефоне Пусть ОП и создаёт, и какое-нибудь слово использует для простого поиска на б . Например ТИСИПИКАЦИЯ, я понему в пятницу вечером поищу
>>245327677 Если это анализатор реал тайм трафика, то как раз бы делали всё быстро, да ещё и AVX2 впихнули, и кэш толерантно было бы всё и потоки бы гвоздями к ядрам прибивали.
>>245327770 >Бек зато без фронта работает. Да не, там тоже заеб хватает, бек в конечном счете частично перетекает во фронт чтобы разгрузить серваки, тот же GraphQL вроде как пилили ровно за этим. Но если мы говорим о чистом фронтенде - это да, к программированию это имеет не больше чем какие-нибудь игры на unity или на блюпринтах в unreal engine. То есть вроде как идейно где-то близко, но по сути не пересекается.
>>245327825 >AVX2 ключи коньпелятора для этого есть, на любом коде можно >всё и потоки бы гвоздями к ядрам прибивали очень полезное занятие при кручении осью ~1000 потоков в системе
>>245327936 >Потому что этот джун - макака-неосилятор. Какие-то низкие требования к джунам сегодня. А какие тогда задачи он должен решать? Или это сарказм?
>>245327957 >ключи коньпелятора для этого ест В автоматическую векторизацию пока нормально умеет только icc, но и то попердывая и таща за собой waterfall-рантайм на полтора гига. Пока такие вещи чаще пилятся ручками.
>>245328118 Тебе никто не запрещает реализовать тот же хеш с помощью файла, но от осознания подобного у местных сеньеров со скиллами джуна может пердочело потечь.
>>245328052 Да, увы. Я вообще хуею, что для создания лоадера, который чекнет проц и запустит бинарник, скомпилированный под соответствующие расширения нужно сидеть и делать всё ручками, хотя можно было автоматизировать на уровне студии.
>>245328210 >Тебе никто не запрещает реализовать тот же хеш с помощью файла мешает нелюбовь к самоизобретенным велосипедам. Прикрути sqlite если уж так надо тебе в фаил писать - и дело с концом
>>245328044 Да какой же это сарказм, если тебе этот самый джун рассказал, что задачу не решил, а пошел говно разгребать за большую зарплату. Т.е. он доволен тем, что денег дали больше (справедливо доволен) , и тем, что думать и учиться не надо (тут ты сам решай, справедливо, или нет).
Вот ОП, например, не зассал, пришел хотя бы в /б вопросы задавать. У него, думаю, потенциал побольше, чем у неосилятора из укр.нет.
>>245328217 Не нарушил, а взял контейнер под задачу. Я один раз напишу оптимальный код, а ты будешь рефаторить 2-3 раза, ковырять профайлером и переделывать архитектуру.
>>245328298 Я дальше 11 даже не смотрел, испоганили язык вконец. Единственно, притащили restricted, но надо было наоборот, вводить какой-нибудь overlapped для перекрывающихся указателей, а по дефолту считать перекрытия нет.
>>245328458 Лол, нет. Я сделаю и забуду. И мой вариант будет работать быстрее твоего, потому что ты полез в оптимизацию там, где она не нужна. На этом заканчиваю бессмысленный разговор.
>>245328413 Просто я сам только учусь в ВУЗе, 3 курс, даже не джун, но такие задачки как у ОПа вообще проблем не вызывают. В свободное время книги по компиляторам и системщине читаю, пытаюсь свою йобу написать. Вот кстати, спасибо ВУЗу, что математикой и физикой на начальных курсах задрачивал, все лабы по прогерсту так или иначе были связаны с этим, отсюда неплохо знаю численные методы. Вот я и думаю, после выпуска у меня есть какие-то шансы на бытрое нахождение вакансии? Что вообще нужно знать?
>>245328629 Будет не так. После поставки или развёртывания оно будет вставать колом и ладно бы не рушить систему, после чего к тебе придут с кажут что надо разбираться.
>>245315404 >бинарный файл >построчное считывание файла Просто в ахуе с долбоебов задание делается за часа 4 если торопиться, часов за 8 с тестами и документацией.
>>245328876 Нервы нужно крепкие иметь. И никто не знает, чем ты хочешь заниматься. Лендинги на вордпрессе клепать, п2п видеоконференции, или расчет белков.
>>245329050 >1. не знаю. Проверяется только практикой Хуево, тех. собес на мидла ты уже завалил. Занимайся.
>Или что быстрее будет написать и собрать? Одинакого, лол. Ну, в случае в unordered_set тебе еще придется ебаться с лоадфактором и нормальной хешфункцией для пар адресов.
>>245314905 (OP) я все пропустил и тред не читал, но тут 1. из стандартной библиотеки берется функция openfile : file -> stream byte 2. руками пишутся функции parseBytes : stream byte -> stream block parseL1 : block -> ethernetblock parseL2 : ethernetblock -> ipblock
3. собирается труба openfile -> parseBytes -> map (parseL2 . parseL1) 4. делается reduce по minmax (ip.from, ip.to) и считается count
>>245329054 >Кормен, многопоточка, клинкод, и книги по своему языку, ну и фремворки если нужны всё что тебе надо. А какие вакансии искать, примерно, с таким "стеком"?
>>245329123 Проиграл с дауна, который еще ничего не написал, ничего не скомпилил, ничего не запустил, но у него уже одно работает медленнее другого. Такие сразу посылаются на хуй на должность полотера.
>>245329195 >Проиграл с дауна, который еще ничего не написал, ничего не скомпилил, ничего не запустил, но у него уже одно работает медленнее другого. Это называется базовые знания, братишка. Ваннаби-сеньеры-архитехтуры-за-100к вроде тебя и хуярят счетчики имплементированные поверх SQL баз данных. Подобные вопросы не зависят от стека/языка/оси/etc. Если ты на них не можешь ответить - тебе просто ссут на ебало и отправляют обратно в твои сельские перди, где ты сможешь вдоволь компейлировать.
>>245314905 (OP) Что за пидорасы так задание составляют? Что значит младший байт длины блока, что значит кол-во байт равное длине блока.
Я писал несколько парсеров разных файлов: бмп, пнг, обж, ваф и так далее. И нигде таким ублюдочным образом структура файла, который нужно распарсить не описывалась.
Просто харкнуть в ебало долбоёбам давшим тебе это тестовое задание и идти в нормальную контору, где люди работают, а не хуесосы которые будут тебя дрючить за копейки.
>>245329321 >Что значит младший байт длины блока, что значит кол-во байт равное длине блока. Вы не прошли первую фазу собеседования - понимание базового письменного русского. Попробуйте вкатиться в ИТ в Кыргызстане.
>>245329390 Так если б я таких долбоебов как ты через день не выгонял на мороз, охуевая от днищности СНГ-it - вопросов бы к тебе и не было. Так-то понятно, что ты ваннаби-джун-вкатун, но нахуя лезть если у тебя так от этого больно?
>>245329321 >младший байт длины блока, что значит кол-во байт равное длине блока. во втором-третьем байте живет длина, длина равна ptr[2]+(ptr[3]<<8), что непонятного.
>>245329141 Коллега, я бы предложил другой подход: реализовать микросервис с очередью для счетчика и залить его куда-нибудбь на AWS - у Безоса до хуя памяти а уж закидать этот микросервис результатами нашего парсинга - дело ерундовое, любой питонист справится
>>245329477 >асинкавейт и фьючи Ни слова не понял. >это если ты в С++ как тут обсуждаю Конечно С/С++ Ты так и не ответил на вопрос >А какие вакансии искать?
>>245329472 Мммм... эти фантазии... Выгоняет он кого-то. Ты через день только с двача вылазишь каклет мамкиных пожрать, выгонятель. Иди кетчуп с пола подтирай, мизерабль
>>245329619 Любые вакансии по плюсам не от НИИ/ФГУП и прочей параши. Можешь в хуяндекс завернуть. >Ни слова не понял. погугли же. в 20 плюсах тоже завезено.
>>245329434 Да нахуй проследуй, тралятина малолетняя. Никто из погромистов так не выражается: младший байт длины блока. Это что за высер поехавшего из ума один-эссника.
>>245329499 >что непонятного. Вот тебе код обычного рейкастера, что тут непонятного? #include <stdlib.h> // card > aek.ppm #include <stdio.h> #include <math.h> typedef int i;typedef float f;struct v{f x,y,z;v operator+(v r){return v(x+r.x,y+r.y,z+r.z);}v operator(f r){return v(xr,yr,zr);}f operator%(v r){return xr.x+yr.y+zr.z;}v(){}v operator^(v r){return v(yr.z-zr.y,zr.x-xr.z,xr.y-yr.x);}v(f a,f b,f c){x=a;y=b;z=c;}v operator!(){returnthis(1/sqrt(this%this));}};i G[]={247570,280596,280600,249748,18578,18577,231184,16,16};f R(){return(f)rand()/RAND_MAX;}i T(v o,v d,f&t,v&n){t=1e9;i m=0;f p=-o.z/d.z;if(.01<p)t=p,n=v(0,0,1),m=1;for(i k=19;k--;)for(i j=9;j--;)if(G[j]&1<<k){v p=o+v(-k,0,-j-4);f b=p%d,c=p%p-1,q=bb-c;if(q>0){f s=-b-sqrt(q);if(s<t&&s>.01)t=s,n=!(p+dt),m=2;}}return m;}v S(v o,v d){f t;v n;i m=T(o,d,t,n);if(!m)return v(.7,.6,1)pow(1-d.z,4);v h=o+dt,l=!(v(9+R(),9+R(),16)+h-1),r=d+n(n%d-2);f b=l%n;if(b<0||T(h,l,t,n))b=0;f p=pow(l%r(b>0),99);if(m&1){h=h.2;return((i)(ceil(h.x)+ceil(h.y))&1?v(3,1,1):v(3,3,3))(b.2+.1);}return v(p,p,p)+S(h,r).5;}i main(){printf("P6 512 512 255 ");v g=!v(-6,-16,0),a=!(v(0,0,1)^g).002,b=!(g^a).002,c=(a+b)-256+g;for(i y=512;y--;)for(i x=512;x--;){v p(13,13,13);for(i r=64;r--;){v t=a(R()-.5)99+b(R()-.5)99;p=S(v(17,16,8)+t,!(t-1+(a(R()+x)+b(y+R())+c)16))*3.5+p;}printf("%c%c%c",(i)p.x,(i)p.y,(i)p.z);}} Ты пойми что задачу нужно ставить максимально просто и понятно, а не таким образом как будто я подобные вещи каждый день 24/7 пишу. Я забыл например little-big endianess например потому что давно байты не ковырял.
Или же я могу в 200 строк написать софтварный 3д рендерер со светом, тесселяцией и свистоперделками с минимумом стандартных с++ библиотек. Потому что я их десятки написал, но ты нихуя не поймешь, если у тебя нет такого же опыта.
>>245329771 >Никто из погромистов так не выражается: младший байт длины блока. Открой любой телеком стандарт где описывается протоколы, low/high byte там как грязи.
>>245329771 задача поставлена просто и понятно. на каждую простую задачу найдется ленивый тупой исполнитель, которому сложно. его на работу не возьмут. чтобы не объяснять про сетевой порядок байт русским языком написано где какой байт. что тебе еще не нравится. ты все равно эту задачу делать не будешь.
>>245329771 >Или же я могу в 200 строк написать Не удивлен. Характерный признак дауна - оценивать код по количеству строк. Ты уже достаточно о себе написал, можешь не продолжать.
>>245329989 Так я же не с двачерами пытаюсь соревноваться, лол, если у тебя писька длинее, меня это не огорчит. Я пытаюсь обьяснить анонам, что тестовые задания - хуйня для лохов, смело говорите, что времени на них у вас нет, и вас все зауважают. Ну это конечно после опыта работы хотя бы на одном месте, до этого вы пыль на сапогах
>>245329771 и чего? у меня сосед по общаге 20 лет назад на асме в 256 байт писал демки с камерой, сценой, мандельбротами летающими, x ^ y, вот этим всем. оно конечно хорошо, но в твоем примере очевидный minified код, который если написать в нормальном стиле и с разумными комментариями то а) занимать он будет нормально, б) будет вполне понятно. не исходники J, евпочя. к понятности постановки задачи опа отношения не имеет.
>>245330334 >этот даун не знает про "младший/старший байт" Если ты погромист, то ты априори не используешь пидорашкинский хохлосрач объявляю открытым новояз. Младший/старший байт не парсится в моей голове в принципе. Энивей тред почти в бамплимите и ни одного решения кроме вялого попукивания нет.
Я вижу в принципе что это простая задача, тебе нужно распарсить бинарный файл и реализовать простейшую логику. Если бы задача была написана на нормальном языке, а не пидорахинском новоязе, я бы накатал решение за 15 минут. А так сосите хуй, я все сказал.
>>245330575 Все языки погродристанья написаны не на срусском. Кроме адин-эсса, на котором погромируют подскакивающие кабанчики. Поэтому если ты не кабанчик, то пишешь не на срусском, проблемс?
>>245330626 >Все языки погродристанья написаны не на срусском Хорошо, синтаксис на английском написан, но как синтаксис относится к нашему вопросу? Как блядь синтаксис на английском, мешает тебе понимать информацию на русском?
ОП, тебе уже тут накидали кучу решений через парсинг по структурам и хештаблицам, на стажеровку не в ебацца топ000.1%ании тебе этого хватит. По поводу памяти и больших файлов, как я понимаю, там замечание именно о чтении всего файла, так что не парься о краевом случае, где все адрса уникальны, а пейлоад около нулевый. Просто опиши, что на такой случай все будет не ок, а ещё можешь свои мысли к разруливанию данной проблемы написать. Если хочешь красиво, то поработай над историей коммитов, прикрути адекватное read me документашку на доксигене, можешь ещё либы типа gtest и boost для параинга опций, хотя это излишне. Это тестовое даже не на джуна, не парься так. Как вариант можешь почитать по подробнее про сети и OSI и тд. Тут много людей, кто тешит свое самолюбие знаниями в той или иной области. Это не всегда применимо к тем проектам, над которыми ты будешь работать, так что не забивай себе голову. Ну и самое главное пожалуй, отсылай то решение, которое сам отлично понимаешь, успехов !
>>245327209 >Джун его не вывезет, Почему? Что за уровень, блядь, у джунов?
Ну реально не смешно. Эта задача не должна вызывать затруднений, если вызывает, то к программированию значит ещё пока не готов.
Надо понимать что такое бинарные данные, но если не мыслишь этими категориями, то наверное просто направление конкретное не для тебя.
Ещё надо уметь пользоваться чем-нибудь вроде std::map или std::set, вот на голом си эту задачу без прикручивания библиотек или изобретения велосипедов будет сложно сделать.
Читаешь поток, сначала 6 байт, по ним вычисляешь длину пакеты и читаешь пакет. Дальше проверяешь тип пакета и вычленяешь адреса.
Адреса записываешь в виде пары "младший адрес"-"старший адрес", и сохраняешь это в std::map или std::set. Всё. Когда прочитал весь поток, выводишь результат куда надо, у тебя как раз будут уникальные пары.
Это реально лабораторная работа, ещё не тот уровень, чтобы в коммерческое программирование лезть.
>>245331806 >не парься о краевом случае, где все адрса уникальны а в чем проблема, допустим ты потоково распарсил файл и сгенерил поток from to адресов, вызываешь sort обычный из терминала, а потом читаешь подряд и считаешь штуки и опять у тебя поток ответов.
>>245332012 Не понял о чем ты и что за стримы. А про краевой случай - допустим нагрузка очень маленькая (порядка дестяка байт), тогда пакеты, допустим будут по 40Б. Размер пары адресов 6Б. т.е. около 16% (тут очень примерно). Допустим у нас 100 ГБ файл, тогда 16% это 16 гигов уникальных данных. Не факт что у тебя столько оперативы с подкачкой найдется. Сортировать уже после парсинга так себе идея. Можно прямо в процессе распихивать в хеш таблицу (либо инкремент зеркальной пары либо добавление новой и потом итерация по все хеш мапе с подсчеьами) к тому же сортировка большого объема данных да еще и по нестандартному сравнению может занять прилично времени.
>>245332747 Если ты не делаешь олимпиадные задачки, где тебя специально ловить будут, на такую херню не нужно отвлекаться.
Лучше понимать, откуда берутся задачи и что там за проблемы.
Задача очевидная. Я даже сам когда-то давно такое делал, похожее.
Есть провайдер, он дампит весь проходящий трафик. Это делается через специальную команду управляемого свича. Дальше этот трафик надо анализировать. Например узнать, насколько много разных соединений идёт, широта использования сети.
По факту, скорее всего у тебя ограниченное количество IP адресов в твоей сети, и относительно много во внешней. Но при этом всё-таки очень много длительных соединений с большим общим трафиком, скажем пользователи на ютубе ролики смотрят, даже торрент трафик подразумевает, что там куски по 2-8мб в среднем.
То есть реально количество таких пар будет не очень большим, по крайней мере для 100Гб трафика. Десятки тысяч, максимум миллион уникальных пар, это грубая прикидка.
>>245333017 Я в курсе, что в реальности такое маловероятно, что и написал первым сообщениием ОПу, а потом просто пояснил подробнее за этот случай. Просто тут пол треда кулибиных, которые всякий хентай выдумывают, ОПа пугают и друг перед дружкой выпендриваются (двачи, что уж). Поэтому и написал сначала, что типа забей на этот случай.
>>245333053 В практической задаче надо скорее думать, как это дело по скорости оптимизировать. Потому что вряд ли будет история, что все адреса уникальные.
А вот что надо очень много файлов читать и быстро - очень даже.
Но на стажировку с оптимизациями может и не нужно заморачиваться, это уже продвинутый уровень.
То есть по-хорошему надо делать специальный бинарных буфер, подгружать в него, сканировать в нём.
fread(), это, сколько помню, системный вызов. Внутри ОС там конечно всё буферизуется, но сам по себе системный вызов штука дорогая и их надо минимизировать.
Всё можно оптимизировать, но это уже довольно сложный код будет. И надо понять, нужно ли реально в данной задаче это или и так сойдёт.