|
Тяпничная география
|
|||
---|---|---|---|
#18+
Здарова други! Кодеры. Программеры. Арифметики и счетоводы. И сочувтвующие. Значит есть у меня база. В формате csv . И прогружена в БД для удобства. Диапазоны IPv4 адресов и привязка к странам . Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Тоесть скруль к примеру (89.188.113.172) попадает в диапазон [89.188.106.244 89.188.127.255] - Ru/Moscow. Задача - визуализировать ВСЕ адреса на картинке. Каждый пиксел - 1 уникальный адрес. Каждая страна - отдельный цвет.. По сути - получить мозаику из стран. Прошу мозговой штурм. Чо. Как. Трудности. Количественные оценки. Примеры хард-кода. Доп. цифры могу предоставить. Сколько адресов. Сколько диапазонов и стран. (Сформирую отчётики) ----- Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 13:36 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
А смысл? Может взять какую нибудь карту мира и на ней раскрасить? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 14:18 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Смысл - пятничное обсуждение. Чуть позже дам цифирки. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 14:31 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Хопа! А вот и цифирки. Значит так. Количество диапазонов. Код: plsql 1. 2. 3. 4. 5.
Всего аллоцировано IPv4 адресов. Код: plsql 1. 2. 3. 4. 5.
Это чуть меньше адресации 32х бит. Всего стран. Код: plsql 1. 2. 3. 4. 5.
Топ 10 стран по количеству аллоцированных адресов. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 15:34 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Проблема с тем, чтобы понять какие страны граничат друг с другом, и исходя из этого определиться с тем, как их можно раскрашивать. Если я правильно понял. Определить это можно только по географическим координатам. Полный перебор очевидно не подходит. Нужно найти подходящий способ определения контура каждой страны. Определить метрику между контурами, и исходя из этого делать выводы об общей границы. Либо, построить все(либо достаточное количество) точки. Провести триангуляцию области. Сделать выводы о границах, и провести раскраску ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 15:47 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЗадача - визуализировать ВСЕ адреса на картинке.Так на что должна эта картинка походить? Реальная карта стран? Или тупо прямоугольник 64Кх64К? В порядке пятничного бреда - а что если попытаться скормить все или часть адресов кластеризации в яндекс.картах ? Они, помнится, где-то писали, что довольно много точек могут прожевать. Правда, вряд ли 5 миллионов смогут. Кстати, если сделать группировку по координатам, то сколько останется? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 15:57 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftmaytonЗадача - визуализировать ВСЕ адреса на картинке.Так на что должна эта картинка походить? Реальная карта стран? Или тупо прямоугольник 64Кх64К? В порядке пятничного бреда - а что если попытаться скормить все или часть адресов кластеризации в яндекс.картах ? Они, помнится, где-то писали, что довольно много точек могут прожевать. Правда, вряд ли 5 миллионов смогут. Кстати, если сделать группировку по координатам, то сколько останется? вероятно должна получиться реальная карта стран построенная только на основе IP - адресов. Тут больше 3 миллиардов, где вы тут 5 миллионов увидели не понял:) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:01 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
SashaMercuryПроблема с тем, чтобы понять какие страны граничат друг с другом, и исходя из этого определиться с тем, как их можно раскрашивать. Если я правильно понял. Определить это можно только по географическим координатам. Полный перебор очевидно не подходит. Нужно найти подходящий способ определения контура каждой страны. Определить метрику между контурами, и исходя из этого делать выводы об общей границы. Либо, построить все(либо достаточное количество) точки. Провести триангуляцию области. Сделать выводы о границах, и провести раскраску Нет. Никакой географии пока не нужно. В этой базе нет информации о границах государств. А сервисы визуализирующие трафик клиентов на сайте с точки зрения гео-локаций уже существуют. И я не буду их повторять. Мне вообще всегда скушно любое повторение. А вот отобразить over 3 млрд цветных точек на большом квадрате. Каждая из которых - 1 адрес. Это мне кажется задачей любопытной. И вовсе не такой однозначной. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:05 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftmaytonЗадача - визуализировать ВСЕ адреса на картинке.Так на что должна эта картинка походить? Реальная карта стран? Или тупо прямоугольник 64Кх64К? В порядке пятничного бреда - а что если попытаться скормить все или часть адресов кластеризации в яндекс.картах ? Они, помнится, где-то писали, что довольно много точек могут прожевать. Правда, вряд ли 5 миллионов смогут. Кстати, если сделать группировку по координатам, то сколько останется? Думаю - да. Это (предположительно) квадрат со стороной >= 64К пикселов. Разумно будет с точки зрения дизайна заполнить его нейтральным серым цветом. Это будет маркировка не использованых или потерянных адресов. Или адресов локальных сетей. А over 200 стран(государств) раскрасить в цвета радуги от синего до красного. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:07 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonSashaMercuryПроблема с тем, чтобы понять какие страны граничат друг с другом, и исходя из этого определиться с тем, как их можно раскрашивать. Если я правильно понял. Определить это можно только по географическим координатам. Полный перебор очевидно не подходит. Нужно найти подходящий способ определения контура каждой страны. Определить метрику между контурами, и исходя из этого делать выводы об общей границы. Либо, построить все(либо достаточное количество) точки. Провести триангуляцию области. Сделать выводы о границах, и провести раскраску Нет. Никакой географии пока не нужно. В этой базе нет информации о границах государств. А сервисы визуализирующие трафик клиентов на сайте с точки зрения гео-локаций уже существуют. И я не буду их повторять. Мне вообще всегда скушно любое повторение. А вот отобразить over 3 млрд цветных точек на большом квадрате. Каждая из которых - 1 адрес. Это мне кажется задачей любопытной. И вовсе не такой однозначной. А в чём проблема раскрасить каждую точку? Их нужно раскрашивать определенным цветом в зависимости от государства ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:08 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
mayton Задача - визуализировать ВСЕ адреса на картинке. Каждый пиксел - 1 уникальный адрес. Э... Может карта Кохонена ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:09 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
По поводу яндекса - я не вкурсе. Наверное речь идёт о каком-то сервисе кластеризации которого я просто не знаю. Но в порядке пятничного бреда - даже для пикселов в квадрате мне понадобится какой-то инструмент для идентификации диапазона. Например можно сделать приложение. Ты навёл мышкой над цветной областью - и тебе пишут дескыть [89.188.106.244 - 89.188.127.255] - Ru/Moscow. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:09 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЗадача - визуализировать ВСЕ адреса на картинке. Каждый пиксел - 1 уникальный адрес. Каждая страна - отдельный цвет.. По сути - получить мозаику из стран. Так а какова цель визуализации ? Какие параметры нужно визуализировать на картинке? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:11 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
MasterZivmaytonЗадача - визуализировать ВСЕ адреса на картинке. Каждый пиксел - 1 уникальный адрес. Э... Может карта Кохонена ? то есть всё-таки с метриками придётся разобраться ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:12 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
MasterZivmaytonЗадача - визуализировать ВСЕ адреса на картинке. Каждый пиксел - 1 уникальный адрес. Э... Может карта Кохонена ? Ну да, поскольку есть критерий пространственной близости-удалённости (расстояние между коорд., заданными широтой и долготой), то да, можно построить карту Кохонена. p.s. если не секрет, где берёте IPGEODATA ? (можно в приват). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:14 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
SashaMercuryА в чём проблема раскрасить каждую точку? Их нужно раскрашивать определенным цветом в зависимости от государства ? Давай порассуждаем. Какого размера картинки ты вообще встречал в природе? Я знаю что современные зеркалки шлёпают сырые фотки до 16 мегапикселов. Это (примерно) 4000 на 4000 цветных элементов каждый из которых занимает 24/32 бита в зависимости от способа хранения. И это далеко не тривиальная задача даже просто создать подобную картинку 64К на 64К. Это софт - эксклюзивный. Штучный. И думаю что создавать ее придется частями. Панорамой. Это придает задаче определенный трудный старт. Кстати я год назад гуглил сервис который хранит гига-пиксельные фотки. Кажется там было фото Эвереста отснятое большим количеством панорамок. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:14 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonПо поводу яндекса - я не вкурсе. Наверное речь идёт о каком-то сервисе кластеризации которого я просто не знаю.У них свой сервис в составе API яндекс.карт. Но, если географии не надо, то, наверное, и сервис не подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:14 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
MasterZivТак а какова цель визуализации ? Какие параметры нужно визуализировать на картинке? Это должна быть цветная диаграмма. На которой должны быть видны все 200+ стран. В виде прямоугольничков. Или полосок. Или просто каких-то сложных областей. Типа многоугольников. И должно соблюдаться отдельное условие которое я специально сам себе задал. (Только что) - Два соседних IPv4 адреса должны быть двумя соседними пикселами на картинке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:17 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Кстати, наверняка есть смысл "причесать" этот список диапазонов - слить соседние одинаковые, разобраться с пересечениями, удалить мелкие диапазоны, входящие в идентичные более крупные и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:19 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
MasterZivНу да, поскольку есть критерий пространственной близости-удалённости (расстояние между коорд., заданными широтой и долготой), то да, можно построить карту Кохонена. Э.... здесь я зависну на пару недель. Мне знаком термин карта Кохонена. Кажется в универе мы изучали это на курсе нейросетей. Не хочу показаться незнающим поэтому пока поскипаем. Чуть позже я попробую осмыслить предложение и дать ответ. p.s. если не секрет, где берёте IPGEODATA ? (можно в приват). Нет не секрет. ПО находится здесь. Там же торгуют базами или сервисом гео-локаций. https://www.maxmind.com/en/geoip2-services-and-databases Тестовую базу в разрезе крупных городов можно там скачать (так было года 2 назад. Щас не знаю). Моя выборка CSV (более полная я так думаю) легко находися на http://rutracker.org по ключевым словам maxmind, geoip, geolocation Там много бинарей (уже legacy формат) и есть выборка *.csv (файлик размером 400М). Впрочем если что я могу скинуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:25 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonИ должно соблюдаться отдельное условие которое я специально сам себе задал. (Только что) - Два соседних IPv4 адреса должны быть двумя соседними пикселами на картинке.Если это абсолютное требование - то вариант только один - линейное расположение пикселей, т.е. цепочка. А вот укладывать эту цепочку на плоскости можно разными способами - меандром, по спирали и т.п. Я бы для начала предложил не мудрить, а построить прямоугольник 3584х4096. В качестве координат - первые 12 разрядов и следующие 12 разрядов ip-адресов. Младший октет игнорировать. Сильно подозреваю, что, за небольшим исключением вкраплений старых крупных диапазонов, это будет абсолютно хаотичная картинка. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:26 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Марк, как будут раскрашиваться точки ? Цвет точек принадлежащих одной стране одинаковый ? Рядом не должны быть расположены 2 страны с одинаковым цветом ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:30 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftЕсли это абсолютное требование - то вариант только один - линейное расположение пикселей, т.е. цепочка. А вот укладывать эту цепочку на плоскости можно разными способами - меандром, по спирали и т.п. Да я щас думаю над этим. Самое сложное - обеспечить кластеризацию или скопление точек в одном месте. Не хочется диаграмму превращять в полосатый шум. Всё таки визуализация должна быть наглядной. Я подумал вот над чем. Если диапазон адресов перевести в коды Грея то между соседними адресами не будет скачков и если взять 32 битное целое (адрес) и разбить его на 16+16 битов Грея то эта пара координат в (x,y) будет достаточно плотно лежать с соседями. Я бы для начала предложил не мудрить, а построить прямоугольник 3584х4096. В качестве координат - первые 12 разрядов и следующие 12 разрядов ip-адресов. Младший октет игнорировать. Сильно подозреваю, что, за небольшим исключением вкраплений старых крупных диапазонов, это будет абсолютно хаотичная картинка. Мысль инетересная. Думаю что для чернового варианта диаграммы я так и сделаю. Минут через 15 подкину еще цифр по длинам диапазонов. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:33 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
SashaMercuryМарк, как будут раскрашиваться точки ? Цвет точек принадлежащих одной стране одинаковый ? Рядом не должны быть расположены 2 страны с одинаковым цветом ? Ну.... top10 стран ты видел. Надо чтобы хотя-бы эти "толстяки" не пересекались по HSV палитре. А на всякие там республики Тувалу или Мауру мне будет пофигу. Пускай цвета похожи. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:36 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonСамое сложное - обеспечить кластеризацию или скопление точек в одном месте.mayton- Два соседних IPv4 адреса должны быть двумя соседними пикселами на картинке.Имхо, эти два требования несовместимы между собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:37 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
взять прямоугольник любого размера, раскрашенный палитрой пропорционально количеству записей для каждой страны и привязать к перемещению курсора всплывающую подсказку с рандомным адресом из той страны, чей цвет сейчас под курсором ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:41 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonMasterZivНу да, поскольку есть критерий пространственной близости-удалённости (расстояние между коорд., заданными широтой и долготой), то да, можно построить карту Кохонена. Э.... здесь я зависну на пару недель. Мне знаком термин карта Кохонена. Кажется в универе мы изучали это на курсе нейросетей. Не хочу показаться незнающим поэтому пока поскипаем. Чуть позже я попробую осмыслить предложение и дать ответ. Не висни слишком долго, я висел месяца два... Я тебе в помощь там ещё один пятничный топик сделал. Твоя программка очень похожая будет. Единственное, что KNNL не поддерживет т.н. пакетное обучение. Я пока ещё не настоящий сварщик, и не знаю, что это такое, но я знаю, что MATLAB с его поддержкой обучает карты на порядки быстре, а вот KNNL тут проседает. Т.е. медленный он. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:44 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonВпрочем если что я могу скинуть. Не, скидывать не надо, нам нужны официальные и обновляемые данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:45 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
MasterZivНе висни слишком долго, я висел месяца два... Я тебе в помощь там ещё один пятничный топик сделал. Твоя программка очень похожая будет. Единственное, что KNNL не поддерживет т.н. пакетное обучение. Я пока ещё не настоящий сварщик, и не знаю, что это такое, но я знаю, что MATLAB с его поддержкой обучает карты на порядки быстре, а вот KNNL тут проседает. Т.е. медленный он. Спасибо Илья. Посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:46 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
MyNiGooвзять прямоугольник любого размера, раскрашенный палитрой пропорционально количеству записей для каждой страны и привязать к перемещению курсора всплывающую подсказку с рандомным адресом из той страны, чей цвет сейчас под курсором O sancta simplicitas! Но как это сделать? (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 16:49 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftmaytonСамое сложное - обеспечить кластеризацию или скопление точек в одном месте.mayton- Два соседних IPv4 адреса должны быть двумя соседними пикселами на картинке.Имхо, эти два требования несовместимы между собой. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:01 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Подождите, ещё раз. У нас такие объекты: 2.92.0.0,2.95.255.255, -- диапазон IP-адресов. "RU", -- страна "48", -- регион страны ? "Moscow", -- город (название региона ?) 55.7522,37.6156 -- геокоординаты центра региона ? пространственно-соотносимые параметры -- IP-адреса и центры стран. Несоотносимые -- всё остальное. Можно же просто нарисовать ленту IP-адресов (от 1 до FFFFFFFF), и в ней каждую линию поперёк прорисовать в виде цвета страны. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:06 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonMyNiGooвзять прямоугольник любого размера, раскрашенный палитрой пропорционально количеству записей для каждой страны и привязать к перемещению курсора всплывающую подсказку с рандомным адресом из той страны, чей цвет сейчас под курсором O sancta simplicitas! Но как это сделать? (с) Да, у меня та же мысль. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:07 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonMasterZivНе висни слишком долго, я висел месяца два... Я тебе в помощь там ещё один пятничный топик сделал. Твоя программка очень похожая будет. Единственное, что KNNL не поддерживет т.н. пакетное обучение. Я пока ещё не настоящий сварщик, и не знаю, что это такое, но я знаю, что MATLAB с его поддержкой обучает карты на порядки быстре, а вот KNNL тут проседает. Т.е. медленный он. Спасибо Илья. Посмотрю. Я пока и сам не знаю, как это можно сделать и можно ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:08 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonMyNiGooвзять прямоугольник любого размера, раскрашенный палитрой пропорционально количеству записей для каждой страны и привязать к перемещению курсора всплывающую подсказку с рандомным адресом из той страны, чей цвет сейчас под курсором O sancta simplicitas! Но как это сделать? (с) Так вообще просто. Грид. Строка -- запись в этой таблице. Нарисована тем цветом, какая страна. И крутить его туда-сюда прокруткой. Если надо всё сразу, то можно вместо строчки грида рисовать одну линию поперёк грида цветом страны. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:10 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonmiksoftпропущено... пропущено... Имхо, эти два требования несовместимы между собой. Почему?Точнее, совместимы, но только путем сжатия всей картины до одного-двух пикселей, что, очевидно, не то, что нужно. Потому что даже пять кластеров уже невозможно расположить так, чтобы каждый граничил с каждым. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:11 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
MasterZivmaytonпропущено... O sancta simplicitas! Но как это сделать? (с) Так вообще просто. Грид. Строка -- запись в этой таблице. Нарисована тем цветом, какая страна. И крутить его туда-сюда прокруткой. Если надо всё сразу, то можно вместо строчки грида рисовать одну линию поперёк грида цветом страны. Ок, диапазонов много, значит делаем два связанных грида. Один слева -- укрупнённый, по одной линии пикселей поперёк в цвет страны. Второй справа -- при выделении диапазона в первом гриде мышкой показывает записи уже в виде полноценных записей, раскрашенные в те же цвета. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:12 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Это диаграмма диапазонов. Я ее и так могу получить SQL запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:18 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftmaytonпропущено... Почему?Точнее, совместимы, но только путем сжатия всей картины до одного-двух пикселей, что, очевидно, не то, что нужно. Потому что даже пять кластеров уже невозможно расположить так, чтобы каждый граничил с каждым. Есть у меня мысль. Пока еще не уверен что верная. Есть такая загогулина. Кривая Гилберта. Она заполняет квадратное пространство абсолютно плотно и с любой точностью. Причём каждая точка этой кривой отстоит от соседней не более чем на 1 пиксел. Есть у нее и еще одно свойство. Диапазон точек этой кривой будет практически всегда "свёрнут в клубок". Причём - любой диапазон. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:21 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Остальные варианты-примеры осилю чуть позже. Ну вобщем - змейка. Линия слева направо. И кривая. Ну и всё это в масштабе 3 млрд. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:35 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЕсть такая загогулина. Кривая Гилберта. Она заполняет квадратное пространство абсолютно плотно и с любой точностью. Причём каждая точка этой кривой отстоит от соседней не более чем на 1 пиксел. Есть у нее и еще одно свойство. Диапазон точек этой кривой будет практически всегда "свёрнут в клубок". Причём - любой диапазон."Клубок" там будет весьма приблизительный. Причем эта приблизительность будет разная в разных частях. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:46 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Ну всё равно старику Гилберту лайк. Но я еще проверю коды Грея. Они - проще в реализации. Нет рекурсии. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:50 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Ну вот. Для полосатой диаграммы без учёта адресов уже есть данные. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:52 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Значить кому интересне БД-шная часть. Приводу создающие скриптики. Они - самодельные поэтому могут быть некоторые мои ошибки в типах данных или отсутствии констрейнтов. Ну вобщем сами понимаете. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 17:59 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Оракловые функции для трансляции IP-NUM. Выглядят некрасиво но что поделать. Оракл такой. По сабжу они - боян т.к. несколько лет назад я уже их где-то постил. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 18:01 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Контрольный файл для SQL*Loader для импорта. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 18:02 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Да. Опцию 'virtual' из создающего скрипта для таблицы надо убрать нахер. Экспериментировал неудачно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 18:14 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Ну.... по поводу географии. Всмысле карты. Широта. Долгота. Пожалуй это тоже тема. Но я ее подниму отдельным топиком. +Всегда интересно было видеть traceroute в привязке к реальным точкам на планете. P.S. Пошёл читать про географию. P.S. Глобусы... развёртки. Широта. Долгота. Аборигены. Кук.... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 19:43 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonНу.... по поводу географии. Всмысле карты. Широта. Долгота. Пожалуй это тоже тема.Таки повторюсь:miksoftесли сделать группировку по координатам, то сколько останется?Есть подозрение, что координаты прописаны по центрам городов, т.е. конечных точек будет не так уж и много. Кажется, когда-то я даже на эту тему видел исследование на хабре. И если мне не изменяет память, там более менее детально были только США и немного Европа, остальной мир - в основном крупные регионы или даже страны и мегаполисы. maytonВсегда интересно было видеть traceroute в привязке к реальным точкам на планете.Помнится, даже онлайн-сервис такой был лет 15 назад. И программы были - hostinfo.ru/articles/184 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 20:01 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
whois и who.is и прочие им подобные выдают DNS записи по хостингам. Но среди них я не нашёл гео-привязки. Вообще мне кажется что централизованной детальной БД по geoip не существует. Ну... или по крайней мере каждый повайдер ведёт свою собственную БД сродни техучёта или кабельного хозяйства. И эта БД вряд-ли где-то шарится. Поэтому координаты крупных городов это пожалуй наиболее достоверная инфа. Дальше - приватная. И децентрализованная. Насчёт США с их Prism и прочими системами - очень даже верю. Но... это только под силу таким государствам. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2015, 23:28 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
По поводу Country-IP диаграммы. Так я буду называть это. Вобщем я подумал. И решил что делать это удобно через конвейер тулзов. Это даёт больше свободы творчества и экспериментов. Я не буду кодить конкретно реализацию рисовалки картинок. А сделаю нечто вроде набора процессов поставщиков-потребителей. Код: powershell 1.
Причём часть из этих утилит возможно есть в линуксе точнее их аналоги такие как sort, awk/gawk, sqlite, grep, imagemagic. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 00:06 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Pantone Color Tables. Не знаю нахрена она нужна но выглядит красиво. Пожалуй возьму себе. http://www.novact.info/id40.html Там 121 цвет. Надо еще придумать где найти недостающие. Есть варианты. 1) Генерить случайно. 2) Брать две буквы названия страны (RU,US,CA) и каким-то образом получать RGB тройку. И еще не забыть системные 8 цветов (самые насыщееные типа 'red','cyan','magenta') добавить в top 8 стран чтоб ярче и заметнее было. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 11:33 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Значит вот что я придумал. Итак 239 стран. Надо раздать им цвета. Палитру белых-серых-черных я резервирую для системных нужд. Поэтому цвета близкие к FFFFFF, C0C0C0, 000000 будут игнорироваться при маппинге. Top 6 стран должны получить наиболее яркие цвета. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Поэтому вышеуказанные цвета будут удалены из оставшихся. Будут также удалены все "близкие" к ним цвета. По формуле цветового расстояния RGB. С учётом весов. Итак 239 - 6 = 233 Далее у нас есть две палитры. Pantone, HtmlColors. Грубо говоря 121 + 120 (Я удалил градации серых и белых). Это 241 Цвет. Нужно еще что-то выкинуть. Полагаю в двух палитрах будут цвета дубликаты. Или "близкие" цвета. Буду удалять их до тех пор пока не останется 233. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 12:25 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЭто 241 Цвет. Нужно еще что-то выкинуть. Полагаю в двух палитрах будут цвета дубликаты. Или "близкие" цвета. Буду удалять их до тех пор пока не останется 233. Возьми 8 последних стран и дай им такие же цвета как 8 предпоследним. Пусть самые маленькие парами выступают :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 14:24 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Gilbertroute готов. Хехе.... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Терь надо думать над основным алгоритмом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 18:38 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Дальше нужна какая-нить "деревянна" либа для работы с графикой. Желательно несжатой. Т.к. возможно я будут многократно в течение сеанса открывать и закрывать сотни битмапов в режиме update. Кто-нить знает такую? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 18:45 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Немного цЫфирей. Что сосбно упадёт в OUTPUT ? На выходе я ожидаю виртуальную картинку размера 64k x 64k. Или 64 * 1024 на 64 * 1024. Или панораму. Множество картинок. Код: plaintext 1. 2. 3.
Размером 1024 на 1024. При палитровом режиме bmp там вобщем-то будет (прибл) 1 пиксел равен 1 байту. Или грубо говоря каждая картинка по 1 Мб. Итого всё хранилище 64 * 64 = 4096 Mб = 4Гб. Что вобщем-то подтверждает расчёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 19:55 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Но квадратные картинки некрасиво смотреть на мониках 16 на 9. И я решил заложить в спецификацию "выхода" следующие наборы разрешений. Для олд-скульных размеров моников и некоторых планшетов и телефонов. Код: plaintext 1. 2. 3. 4. 5. 6.
Для HD. Для красоты я дал им реальные имена соответвтующие реальным размерам панелей. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Модель с разрешением 1366 на 768 является самой популярной (со ссылкой на http://www.w3schools.com/browsers/browsers_display.asp). Думаю что это связано с тотальным засильем ноутов типа моего HP-ProBook. Буду ориентироваться на этот размерчик как на самый основной. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 20:02 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Для панжорамы популярного дисплея. По горизонтали будет 65536 / 1366 = 48 (с округлением в большую сторону). По вертикали. 65536 / 768 = 86. Тоесть панорама 00..47 и 00..85. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 20:07 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Более менее причёсанный вариант одной утилиты. gilbertroute.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 21:46 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Писать CSV-парсер на "C" - это полная печалька. strtok.... мать его так. Думаю что не буду этого делать. Поищу другой инструмент. Я не спец в Питонах и Go и Rust. Но думаю что смогу накрапать нечто. Всё-тки ближе к сути. Я имею в виду к общепринятому подходу к разработке утилит. А запускать консольные инструменты в java - неудобно. Либо очень долго конфигурить environment либо писать алиасы и баш-скрипты. Всё это сужает аудиторию пользователей. Цена вопроса - оперативно конвертить IP => int32. Вобщем чтоб не было офтопика подниму форк в Программировании там прокашлять все вопросы и вернуться обратно с экзешником. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 21:52 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonквадратные картинкиА почему именно квадратные? Например, если брать в качестве координат части ip-адреса (по 8-16 бит в каждую), то получится прямоугольник с соотношением сторон 0,875. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 21:59 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonПисать CSV-парсер на "C" - это полная печалька. strtok.... мать его так.(f)scanf не справляется?maytonЦена вопроса - оперативно конвертить IP => int32.В WinApi есть такой вызов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 22:03 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftmaytonквадратные картинкиА почему именно квадратные? Например, если брать в качестве координат части ip-адреса (по 8-16 бит в каждую), то получится прямоугольник с соотношением сторон 0,875. Ну... там ниже по тексту я решил что квадратные это удобно для кодинга. Но не юзабельно для пользователя. Преимущества квадратов есть только для заполняющих областей Гилберта. Но об этом - чуть позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 22:10 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftmaytonПисать CSV-парсер на "C" - это полная печалька. strtok.... мать его так.(f)scanf не справляется?maytonЦена вопроса - оперативно конвертить IP => int32.В WinApi есть такой вызов. На WinAPI стараюсь не завязываться. Далее... некоторые штуки с PIPE-s не могут быть изящно реализованы в Windows. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2015, 22:12 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЦена вопроса - оперативно конвертить IP => int32 IP у тебя уже в БД, если не путаю, добавь поле intIP, конвертни один раз (без разницы чем и как) и используй его. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 09:32 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
БД вобщем-то была нужна чтобы обеспечить сортированный порядок beginIp-endIp. Иначе основной алгоритм не сработает. Хотя.. это мысль. Нужно 1 раз отсортировать и просто работать с csv файлом. А функцию ip2num(..) я просто портирую в "C". ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 11:04 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Кстати из БД ничего неизвестно о перекрытии диапазонов. Возможно такие есть. Это надо проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 11:06 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
автор(f)scanf не справляется? Думаю... справится. Изначально я предполагал что fscanf будет узким местом. Но из того что на 1 запись сsv приходится более чем сотня операций рисования цветного пиксела - то он не может быть узким местом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 11:08 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonА функцию ip2num(..) я просто портирую в "C". Все придумано до нас. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
В линуксе также, только хэдеры другие надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 12:16 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Осилил Z-кривую. Z-Рекурсия взлетела с 1 раза. В отличие от Гилберта который был частично украден. Единственный нюанс - автоматическое округление до степени двойки. Позаимствовано у старика Уоррена из книжки. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 12:59 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Приступил собсно к парсеру СSV. Хм... небольшая заминка. Как-бы эти запятые поскипать. Кто знаток fscanf ? ipv4filter.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93.
Output: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Код: plaintext 1. 2. 3. 4. 5.
Илья. Сова. Dima. Помогайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 19:50 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Приаттачу первые 10 тыс строк базы. Чтоб было на чём тренироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2015, 20:12 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
scanf`ы готовить не умею. Обычно так делаю Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 08:41 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Марк, что нужно с запятыми и scanf, приведите пример пожалуйста для особо одарённых :D ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 09:14 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЗначит вот что я придумал. Итак 239 стран. Надо раздать им цвета. Палитру белых-серых-черных я резервирую для системных нужд. Поэтому цвета близкие к FFFFFF, C0C0C0, 000000 будут игнорироваться при маппинге. Top 6 стран должны получить наиболее яркие цвета. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Поэтому вышеуказанные цвета будут удалены из оставшихся. Будут также удалены все "близкие" к ним цвета. По формуле цветового расстояния RGB. С учётом весов. Итак 239 - 6 = 233 Далее у нас есть две палитры. Pantone, HtmlColors. Грубо говоря 121 + 120 (Я удалил градации серых и белых). Это 241 Цвет. Нужно еще что-то выкинуть. Полагаю в двух палитрах будут цвета дубликаты. Или "близкие" цвета. Буду удалять их до тех пор пока не останется 233. А как будет происходить работа с остальными странами ? Вдруг у двух близлежащих стран будут схожие цвета ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 09:17 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
SashaMercuryчто нужно с запятыми и scanf Разобрать строку с разделителем запятая на отдельные строки Например Код: plaintext 1.
Файлик со строками выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 09:23 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Да вот мне miksoft посоветовал fscanf. И я "ринулся".... И как-то оно так вышло. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 09:40 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
SashaMercuryА как будет происходить работа с остальными странами ? Вдруг у двух близлежащих стран будут схожие цвета В данной таблице я просто привёл распределение адресов по странам. В реальности (смотри сsv файл) страны идут в случайном порядке. Как быть с очень близкими цветами - я не знаю. Есть варианты. 1) Раскрашивать страну в один из четырёх цветов полагаясь на теорему о четырех красках. https://ru.wikipedia.org/wiki/Проблема_четырёх_красок Это в случае использования кривой Гилберта которая должна дать для каждого диапазона цельную геометрическую фигуру (квадрат, прямоугольних или множество соприкасающихся квадратов разного размера). Для Z-кривой к сожалению непрерывность областей не обеспечивается. 2) Красить по первому варианту. Самые популярные страны - в системные цвета. А оставшиеся в mapped-порядке брать из таблицы Panton, HTMLColors e.t.c. 3) Красить в произвольный цвет но на границе областей проводить жирную чёрную линию в 1pix толщиной. Последняя задача - аналог фильтра photoshop по выделению границ. И ее можно решать отдельно от общей задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 09:50 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonДа вот мне miksoft посоветовал fscanf. И я "ринулся".... И как-то оно так вышло. Тут не должно быть проблем, меня скоро выгонят из этого компьютера, но я попробую успеть ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 10:09 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Давай дерзай. Я свой лимит времени на fscanf потратил. Займусь пока чем-то другим полезным. К сканфу вернусь чуть позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 10:12 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Пока так, где-то ошибся, вечером ещё посмотрю Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 10:31 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
ОК. Попробую вечером. Если чесно то вариант Димы мне больше нравится. Если взлетит - то возьму его. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 11:56 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЕсли взлетит - то возьму его. Не взлетит - пиши на чем споткнется, поправлю. Пока там проигнорирован один момент стандартного CSV: если значение содержало кавычки, то они превращаются в две двойные кавычки, т.е. ООО "АБВ" запишется как "ООО ""АБВ""". У тебя вроде не должно такого быть. С ходу не придумал как по простому это обработать, вечером время будет, еще подумаю как это полечить. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 12:14 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Конечный автомат-парсер спасёт отца русской демократии меня, но вот какова будет цена вопроса на pure "C" . Выше я задумался о Golang/Python/Rust/D для решения данной узкой задачи. Но коллеги-сишники меня закидают помидорами. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 12:18 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
mayton, только сейчас подумалось - зачем парсить вручную, если Оракл сам умеет СSV грузить как минимум двумя способами - через external tables и через SQL*Loader ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 12:42 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Я делаю софт без привязки к Oracle. БД я использовал просто чтобы посмотреть кое-какие срезы по странам и мини-максные характеристики. Кстати вопрос перекрытия диапазонов остался открытым. Я знаю как его решать алгоритмически но не знаю как он решается в SQL. Подниму-ка топик. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 12:49 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Хотя.... зачем. Щас попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:01 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonне знаю как он решается в SQL.если адреса перевести в числа, то элементарно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:22 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonКонечный автомат-парсер Чего это я сразу про него не вспомнил, с ним проще. Держи версию 2.0 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100.
Первая корявая получилась. Хотел допилить кавычки и в свою библиотеку прибрать, пригодится, потом подумал обычно надо еще знать сколько всего колонок прежде чем парсить. Получилось проще новую написать :) Твой файлик проходит без ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:44 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Я понял. Мой моск лихорадочно ищет оптимизаций. Задача решается в биткарте или в любой структуре которая учитывает флаги. Решая эту задачу реляционно я вынужден делать соединение таблицы самой с собой. Код: plsql 1. 2. 3. 4. 5. 6. 7.
Грубо... для оптимизатора без использования индекса это будет 5748952 * 5748952 = 33 050 449 098 304 или 33 триллиона сравнений. Вот так вот. P.S. 33 коровы.... Ну что. В топике есть SQL-щики оптимизаторы? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:46 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Или.... если-бы таблица была сегментирована к примеру по N_STARTIP то тогда возможно Oracle optimizer сделал-бы не квадрат количества rows а "треугольник" или "квадратичную" оценку с весовым коэффициентиком меньше единицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:51 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonВ топике есть SQL-щики оптимизаторы?Показывайте DDL таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:56 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftmaytonВ топике есть SQL-щики оптимизаторы?Показывайте DDL таблицы лучше с тестовыми данными, типа такого Код: plaintext 1. 2. 3. 4.
тут похожая тема была, только с перекрытием квадратов http://www.sql.ru/forum/1120376-1/karty ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:59 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Я помню эту тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:02 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Делаешь таблицу points(nIP) и туда пишешь каждый IP из каждого диапазона. Будет около 4 млрд. записей. Затем Код: plaintext 1.
:) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:19 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Это та-же биткарта. Но я принципиально не хочу решать задачу в SQL так-же как я и решал бы ее на сях. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:21 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Получил несолько ложных срабатываний. Разобрался. Забыл что отрезки сами с собой пересекаются. Убрал само-соединение. Пока пишу... в процессе. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:35 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Задача не заточена под SQL, подобные проблемы обычно биткартой решают. Например в задачах с диапазонами дат используют вспомогательную таблицу-календарь со всеми датами. Пробуй: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Возможно 4 вида перекрытия отрезков: справа, слева, сверху и снизу. При сравнении всем со всеми можно упростить до проверки только слева и сверху, т.к.: A слева перекрывает B == B справа перекрывает A A сверху перекрывает B == B снизу перекрывает A заодно дубли уберутся. Будут ли использоваться индексы и какие не знаю. Сделай два: (n_startip, n_endip) и (n_endip, n_startip), СУБД сама разберется нужны они или не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:44 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Чуть упростил: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 15:00 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Я надеялся двумя предикатами обойтись. Тоже сидел грыз гранит предикатов max/min и сравнений. Пока плюнул. Работа подвалила. Вечером вернусь к географии. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 15:08 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Этот код по-моему должен работать, но работает некорректно Код: plaintext 1. 2.
Может быть я неправильно его использую в своём контексте, попробуйте у себя ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 02:27 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima TПервая корявая получилась. Хотел допилить кавычки и в свою библиотеку прибрать, пригодится, потом подумал обычно надо еще знать сколько всего колонок прежде чем парсить. Получилось проще новую написать :) Твой файлик проходит без ошибок. Спс. Закоммитил. С небольшими изменениями. Будет как базовый алгоритм. https://sourceforge.net/p/countryipdiagram/code/HEAD/tree/trunk/src/ipv4filter.c ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 10:34 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima TЧуть упростил: Код: plaintext 1. 2. 3. 4.
Попробуй нагенерить 5 млн случайных строк. Потому как я на Оракле не могу дождаться завершения работы этого курсора. Здесь не проблема его написать. А проблема написать оптимально. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 13:04 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
SashaMercuryЭтот код по-моему должен работать, но работает некорректно Код: plaintext 1. 2.
Может быть я неправильно его использую в своём контексте, попробуйте у себя Посмотрю чуть позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 13:27 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonПопробуй нагенерить 5 млн случайных строк. ИМХУ нездоровый тест. Индексы не только сортировка, но и распределение. А также результат: если у тебя пересечений не ожидается, то будет мало, а в рандоме может 100 тыс. пересечься друг с другом и будет 100`000 * 100`000 / 2 = 5`000`000`000 записей ответа. maytonПотому как я на Оракле не могу дождаться завершения работы этого курсора. Ты индексы создал? Я выше писал: Сделай два: (n_startip, n_endip) и (n_endip, n_startip), СУБД сама разберется нужны они или не очень. Затем план выполнения запроса смотри, там будет сразу видно использует индексы или нет. Как в оракле смотреть не знаю. Кстати есть еще одна особенность диапазонов IP: они всегда отвечают условию: начало (т.е. n_startip) сформировано в двоичном виде как число с 8/16/24 ноликами в конце ( ...1000000000), максимальное (n_endip) в конце 8/16/24 единиц. Надо проверить что у как-то эту особенность использовать. Пока не соображу как. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 13:56 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima TТы индексы создал? Чел я же не просто так скрипты привёл. 17382368 Они реальны и работают. По поводу плана исполнения - отпишу чуть позже. Я не привык писать с бухты-барахты и обычно проверяю. Кстати есть еще одна особенность диапазонов IP: они всегда отвечают условию: начало (т.е. n_startip) сформировано в двоичном виде как число с 8/16/24 ноликами в конце ( ...1000000000), максимальное (n_endip) в конце 8/16/24 единиц. Надо проверить что у как-то эту особенность использовать. Пока не соображу как. Ты не поверишь но я над этим думаю. Скорее всего эта БД весьма специфична по сути. Например движок MaxMind и Java-имплементация базы (втроенная) занимала размер многократ меньше чем CSV-файл. Для таких данных обычно юзают префиксное дерево или дерево остатков. Вполне возможно что оно там и заюзано. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 14:48 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima TКстати есть еще одна особенность диапазонов IP: они всегда отвечают условию: начало (т.е. n_startip) сформировано в двоичном виде как число с 8/16/24 ноликами в конце ( ...1000000000), максимальное (n_endip) в конце 8/16/24 единиц. Надо проверить что у как-то эту особенность использовать. Пока не соображу как. Придумал: хранить в двоичном текстовом виде выравненном до 32 c обрезанными конечными ноликами. Формула обрезки: (n_endip - n_startip), проверяем на вид 0000011111 (т.е. сначала нули, затем единицы) или тоже самое на соответствие (2^n - 1), n - сколько младших бит обрезать от n_startip. Пример на 4 битах НачалоКонецХраним07047014501081110121511 дальше сортируем по храним как строки и сравниваем предыдущую с последующей в количестве символов первой - совпало - вторая входит в первую, т.е. "0" == "01" (выкидываем "01"), затем "0" == "010" (выкидываем "010"), затем "0" != "10", затем "10" != "11" Одна сортировка, один проход, без биткарты, но опять не заточено под SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 15:03 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Сделай проверку на валидность: Код: plaintext 1.
Дальше подзабыл, если больше 65535 будет то это ряд (2^n - 1) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 15:12 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima TСделай проверку на валидность: можешь не делать, 10% твоего файла не проходит maytonDima TТы индексы создал? Чел я же не просто так скрипты привёл. 17382368 Они реальны и работают. По поводу плана исполнения - отпишу чуть позже. Я не привык писать с бухты-барахты и обычно проверяю. Залил твой файлик в MSSQL. Мой запрос без индексов 10 сек, с индексами 16 сек ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 16:20 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Придумал! Выстроить цепочку: n_prev_startip = 0 n_prev_endip = 0 1. Взять запись с минимальным n_startip больше n_prev_startip 2. Если n_startip < n_prev_endip значит наложение 3. n_prev_endip = n_endip, n_prev_startip = n_startip 4. если не все пройдены перейти к пункту 1. Имеем 5 млн. поисков макс. по 24 шага каждый, т.е. ~100 млн операций. код на фоксе Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Твои 10 тыс проверились за 20 мс :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 17:16 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima T, минутку. Я всё-тки проверю свои 5 млн. Подожди. P.S. А я всегда хвалил Фокс-Про. И даже поднимал где-то тему по поводу rushmap или как оно там зовётся. Интересовало портирование этого алгоритма в другие DBMS. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 19:15 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Капец. План вообще никчорту! Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
Какого осьминога ему тут нужен PRIMARY key??? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 19:34 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
alter index ... invisible помог. Хорошая шняга в одинадцатом жигуле Оракле... Мдя. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 19:40 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 19:42 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Два мильйона. Это примерно половина всей базы . Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 19:58 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonP.S. А я всегда хвалил Фокс-Про. И даже поднимал где-то тему по поводу rushmap или как оно там зовётся. Интересовало портирование этого алгоритма в другие DBMS. rushmore В данном случае можно ассоциативным массивом обойтись. arr[start_ip] = end_ip. Например <map> в С++ В SQL он не впишется, т.к. противоречит концепции реляционных БД. Через одно место можно попробовать впихнуть, но оно и будет работать соответственно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 20:01 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonДва мильйона. Это примерно половина всей базы . Код: plsql 1. 2. 3.
Забей на проверку масок, идея не взлетела, я же проверил на твоем файлике, выше писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 20:03 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Я замудрено придумал, проще так: сортируем по n_startip идем последовательно если текущий n_startip < предыдущий n_endip значит перекрытие Одна сортировка, один проход. Лучше не будет. это с небольшими извратами можно даже в оракле/мсскул селектом выбрать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 20:12 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima T, +1. Это будет констрейнтом в работе самого приложения. Во врема парсинга будет просто происходить проверка двух соседник строк на перекрытие диапазонов. Так и сделаем. А самую первую (изначальную) сортировку по beginIp можно сделать в оффлайне и пересохранить исходный файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2015, 20:20 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Хм... самопальный IP2num не взлетает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Чортовы сишные сдвиги. Наверное где-то разрядная сетка рубится. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 00:43 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
mayton, не изобретай велосипед Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 06:53 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima T, Код: plaintext 1.
inet_addr возвращает в network order. Поэтому htonl после нее формально неверно вызывать. На практике, конечно, htonl == ntohl, поэтому все будет работать, т.к. нам надо именно host order. Но для порядка надо заменить на ntohl ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 08:13 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima T, ищу где в этом чортовом MinGW есть поддержка inet_addr(...) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 13:00 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
попробуй как в линуксе Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 13:09 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
По каждой шапке - ошибка Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 13:22 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Похоже твой MinGW совсем мини :( http://stackoverflow.com/questions/1517762/sockets-in-mingw http://mingw-users.1079350.n2.nabble.com/sys-socket-h-td3255232.html вроде лечится, но придется погуглить Поставь MS VC Express ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 13:33 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Вобщем всезнающий анонимос мне подсказал что надо добавить линкеру опцию -lwsock32. В шапки подключил Код: plaintext 1. 2.
Интересно что в МинГВе они существуют в двух экземплярах. С опцией WINSOCK_API_LINKAGE и без нее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 13:34 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima TПохоже твой MinGW совсем мини :( http://stackoverflow.com/questions/1517762/sockets-in-mingw http://mingw-users.1079350.n2.nabble.com/sys-socket-h-td3255232.html вроде лечится, но придется погуглить Поставь MS VC Express Спс. У меня на MS VS - аллергия. Но если припечёт - обязательно поставлю. Пока вроде собрал. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 13:35 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Свои каракули я закрыл препроцессором. Пускай будут. Навсякий. P.S. А старуха - за корзину. "Я бельё своё не кину" (c) Дядя Стёпа... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 13:37 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonСпс. У меня на MS VS - аллергия. Но если припечёт - обязательно поставлю. Пока вроде собрал. Можешь сделать виртуалку, в ней линукс, а в нем полноценный GCC. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 13:51 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Ну.. парсер готов. И кстати - приятная новость. Интервалы изначально были отсортированны и не перекрываются. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 14:07 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Далее надо обсудить кейсы. Что будет выходом. Вариант 1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Вариант 2. То-же самое но не-аллоцированные куски просто скипаем. Изначально подразумеваем что софт-получатель знает что их надо красить в нейтрально-серый цвет. Код: plaintext 1. 2.
Коды стран я решил не удалять из потока. Вдруг понадобиться рисовать легенду и отмечать на картинке название страны. Или дальше делать привязку к search системам. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2015, 15:12 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Вобщем ipv4filter и gilbertroute готов. Остались некоторы шероховатости с цветовой раскраской стран. Но более чем половина (2.2млрд) покрывается системными цветами. Пока оставлю так. Для демо этого достаточно. Остальные страны получат (временно) серый цвет. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 09:42 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Далее. Я пока решил не связываться с сложными бинарными форматами картинок. Мой софт - тривиален и написан на сях. И не использует пока никаких библиотек. Вопрос - в чем сохранять? Я тут посмотрел тулзу 'IrfanView'. Это такой себе жлобский просмотрщик картинок. Но у него есть возможность сохранять и открывать картинки в псевдо-текстовом формате (ppm). Пример: (цветная 25 бит. картинка размером 110x110). Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 09:48 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonДалее. Я пока решил не связываться с сложными бинарными форматами картинок. Посмотри BMP, формат не сложный: если в TrueColor`е писать: хэдер и дальше точки пошли по три байта {R,G,B} Если 256 цветов, то хэдер, палитра и дальше точки по одному байту (ID из палитры). У тебя палитра статична, поэтому может есть смысл ее сгенерить один раз, а потом сразу писать твой ID цвета. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 10:03 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Пример генерации BMP на голом С. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 10:16 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima T, ОК. Спс. Лет 12 назад я кодил на Pascal читалку-писалку bmp-картинок. И вроде даже поддержал RLE сжатие. Попробую восстановить что забыто. Но это вобщем-то не в приоритетах. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2015, 12:08 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Значит вот что добавлю. Конвейер STDOUT->STDIN вполне нормально воспринимает бинарный поток. Я еще чуть позже потестирую на краевые моменты. Ситуации с fopen(...,"textmode"), flush, fclose,... и управляющие символы (эскейп последовательности) на Windows и CentOS. Но думаю что на 99.9% всё будет чики-пики. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2015, 13:25 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Нашёл образец того что я хотел получить. Со ссылкой на http://internetcensus2012.bitbucket.org/paper.html ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2015, 23:37 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
mayton, А почему мыргает ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2015, 18:42 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
На сайте пишут Hilbert map of 24 hour relative average utilization of IPv4 addresses observed using ICMP ping requests. Насколько я понимаю, цветом обозначены хосты доступные для ICMP. Что означает серая и чёрная маркировка - не знаю. Возможно это диапазоны локалок и потерянного адресного пространства которое не возможно аллоцировать по правилам масок и классов. Каков смысл цветовой градации от красного до синего - ХЗ. Надо читать легенду на их сайте. Что то типа utilization in %. Вообще в своей постановке я не имел в виду анимацию. Мне-бы хватило статичной картинки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2015, 18:50 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonНашёл образец того что я хотел получить. Со ссылкой на http://internetcensus2012.bitbucket.org/paper.html А воплей-то было, что ip-адреса кончаются! А там еще огромные черные куски. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2015, 20:08 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftА воплей-то было, что ip-адреса кончаются! А там еще огромные черные куски. Они куплены/заняты. Другой вопрос как их использует владалец. Например некоторые провайдеры раздают постоянные IP людям которые комп включают раз в месяц, но за интернет платят регулярно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2015, 20:14 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Dima TmiksoftА воплей-то было, что ip-адреса кончаются! А там еще огромные черные куски. Они куплены/заняты. Другой вопрос как их использует владалец. Например некоторые провайдеры раздают постоянные IP людям которые комп включают раз в месяц, но за интернет платят регулярно.Блоки с 0 по 32 что-то не похожи на выключенные компы дома. Кстати, а что за серые блоки в углах нулевого блока? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2015, 20:24 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
В продолжение сабж http://www.sql.ru/forum/1174767/botnet начал анализировать логи атаки по табличке GeoIpCity от 2010 года. Ограничил выборку в 3_500_000 строк из GeoIp. В качестве исходных данных - все текстовые логи из топика про Ботнет. Предварительно 18192846 . Столбец Rate показывает количество атак из подсети. Далее вследствие самопального софта и спешки если снять ограничение в 3_500_000 у меня проблемы с java.lang.OutOfMemoryError: GC overhead limit exceeded. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 08:13 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonДалее вследствие самопального софта и спешки если снять ограничение в 3_500_000 у меня проблемы с java.lang.OutOfMemoryError: GC overhead limit exceeded. ЕМНИП у тебя GeoIpCity в оракле живет. Тут 18175138 про Spatial индексы было, в MySQL и MSSQL есть. Наверно и в оракле есть, поизучай да заливай лог туда, а дальше select`ом. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 08:22 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Увы Оракл в дауне. К вечеру подниму. А пока - скриптики и memory. Кстати есть мысль - создать форк - Тяпничный анализ ботнета и перенести весь анализ туда чтоб не оффтопить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 08:27 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonИ кстати - приятная новость. Интервалы изначально были отсортированны и не перекрываются. Если так, то на Spartial можно не заморачиваться. Ищем первый интервал начало которого >= проверяемому IP. maytonесли снять ограничение в 3_500_000 Сделай массив структур Код: plaintext 1. 2. 3.
12 байт на запись, 42 Мб на 3,5 млн. maytonКстати есть мысль - создать форк - Тяпничный анализ ботнета и перенести весь анализ туда чтоб не оффтопить. Правильная мысль ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 08:41 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
В настоящий момент адресная сущность выглядит так Код: java 1. 2. 3. 4. 5. 6. 7. 8.
2) Сегодня подумаю над новым топиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 08:48 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
ИМХУ ораклов не надо. Массивов хватит. Думаю надо сначала с твоей GeoIpCity разобраться: сохранить в максимально компактном виде (можно ужать до 8 байт на запись), API сделать (загрузка из файла, поиск и т.д. и т.п.). В принципе это тема данного топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 08:51 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Вроде обсуждали. Производитель (MaxMind) раньше предоставлял сжатые бинарники в своём формате где диапазоны хранились в Radix-Tree в сериализованном виде. Это ИМХО не для экономии места а для префисного поиска. Предоставлял также csv для загрузок в БД. Сейчас - услуга платная и реально можно достать бинари где-то до 2013 года. Кроме того они поменяли формат с GeoLite на GeoLite2 вобщем подкинули головняк. Надо еще разбираться где есть что. По поводу массивов. Я не против. Где-то мы запускали бенчмарки и решили что дихотом-поиск по 1-му адресу рулит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 08:59 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
csv достаточно. Дальше делаем свою структуру хранения, парсим, сортируем как надо, добавляем индексы, сохраняем в бинарник. В итоге получится микро движок СУБД для конкретной задачи. Т.к. данные не меняются, то задача сильно упрощается. Деревья тоже не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 09:05 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
IntervalTree жрёт память как обжора. Повысил Xmx до 4Г и закончил отчотик. Кому интересно - тут 18193163 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 09:24 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Создал 18194303 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 13:30 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
miksoftDima Tпропущено... Они куплены/заняты. Другой вопрос как их использует владалец. Например некоторые провайдеры раздают постоянные IP людям которые комп включают раз в месяц, но за интернет платят регулярно.Блоки с 0 по 32 что-то не похожи на выключенные компы дома. Кстати, а что за серые блоки в углах нулевого блока? Трудно сказать. Дополню своей старой цитатой. Код: plsql 1. 2. 3. 4. 5.
Всего аллоцировано адресов 3 155 268 734. Квадрат (предположительно) брался из расчёта 64К на 64К пикселов или 2^32 = 4 294 967 296 В процентном соотношении аллоцировано 3 155 268 734 / 4 294 967 296 = 0.7346 Тоесть примерно четверть целых чисел формата uint32 в IP адресах не используется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2015, 23:31 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Еще один кабанчик заинтересован https://habrahabr.ru/post/353986/ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2018, 11:03 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonmiksoftЕсли это абсолютное требование - то вариант только один - линейное расположение пикселей, т.е. цепочка. А вот укладывать эту цепочку на плоскости можно разными способами - меандром, по спирали и т.п. Да я щас думаю над этим. Самое сложное - обеспечить кластеризацию или скопление точек в одном месте. Не хочется диаграмму превращять в полосатый шум. Всё таки визуализация должна быть наглядной. вообще странам/городам раздаются IP-диапазоны а IP-адреса в диапазоны легко складываются через CIDR а просто покрасить 3.5 ярда точек это о чём вообще? зы: пофиг что старая тема ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 21:54 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Ну вот. Вбросил и зобанился. Что за народ! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 21:43 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЕще один кабанчик заинтересован https://habrahabr.ru/post/353986/ Мне лишь одно непонятно - занафига нужна эта бесполезная визуализация? Что она нам дает? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 09:33 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
Зачем нужны графики? Диаграммы? Чертежи? Не знаю. Я предложил тему. Народ откликнулся. Вам эта тема скорее всего не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2018, 11:29 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonНу вот. Вбросил и зобанился. Что за народ! тут я ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 10:57 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
полудухmaytonНу вот. Вбросил и зобанился. Что за народ! тут я Красавца! :) Я планировал разработать такой себе ui-чик. Чтоб мышкой диапазоны сеток выбирать. И правила файрвола. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 17:53 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
maytonЧтоб мышкой диапазоны сеток выбирать. И правила файрвола. диапазоны это CIDR в правилах он тоже прекрасно живёт как узнать, принадлежит ли IP к сетке? Код: plaintext 1. 2. 3.
mayton2.92.0.0,2.95.255.255,"RU","48","Moscow","",55.7522,37.6156,, это: 2.92/14 кальк с первоначальной задачей (я поизучал 1, 6 и 7 страницы) не согласен 3.5 ярда разноцветных точек на экране никакой практической пользы не имеют и в обнаружении хоть чего-нибудь никак не помогут сама покраска - тривиальная задача даже для развития сервис, которому можно скормить пул адресов и получить страны - тоже CIDR-конвертеров полно в гугле ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 22:27 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
полудух, Я ещё окончательно не решил нужна мне эта география или нет. Скорее нет чем да. Топик сдох. Поэтому можешь расслабится. Грубо говоря судьба этой задачи меня не парит. Да и пятница... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 22:37 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
а чего ещё ждать от такой задачи зы: вообще суббота ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2018, 23:43 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
полудух, это пятничная тема. По стартовому сообщению. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2018, 00:33 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
полудух Код: plaintext 1. 2. 3.
Всё равно как-то сложно... Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 10:31 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
UP. А разве такие маски бывают? Код: plaintext 1. 2. 3. 4. 5. 6.
С разрывом монотонности внутри? Вроде нет. Тогда как рассматривать диапазон адресов для Честерфорда? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 23:52 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
База - все тот-же MaxMind. Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 23:57 |
|
Тяпничная география
|
|||
---|---|---|---|
#18+
mayton UP. А разве такие маски бывают? Код: plaintext 1. 2. 3. 4.
P.S. В размере маски могу "прокинуться" на единичку. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 19:35 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017270]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
61ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
191ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 302ms |
0 / 0 |