• Как сделать разделение кнопок в сообщении телеграм бота?

    nastya97core
    @nastya97core
    Начинающий программист
    $mata["reply_markup"] = json_encode([
    			"keyboard" => [
    				[["text"=>"Кнопка в одну строку"]],
    				[["text"=>"левая кнопка"], ["text"=>"правая кнопка"]], // вторая строка
    				[["text"=>"Кнопка в одну строку"]],
    			]
    		]);


    Дело в массивах. Есть массив, в котором каждый массив - строка. В этом каждом массиве - каждый другой массив - кнопка

    В твоём случае:
    $inline_keyboard_questions_account = [
        [
            ['text' => '№1', 'callback_data' => 'question 1'],
            ['text' => '№2', 'callback_data' => 'question 2'],
            ['text' => '№3', 'callback_data' => 'question 3']
        ],
        [
            ['text' => '№4', 'callback_data' => 'question 4'],
            ['text' => '№5', 'callback_data' => 'question 5']
        ]
    ];
    Ответ написан
    Комментировать
  • Можно ли сделать картографический сервис с SVG файлом более 20 мб?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Там 20 мегабат векторных данных? Не такая уж и большая проблема, если она у вас быстро рендерится и по содержанию устраивает. Вы бы показали сам svg. тогда было бы понятнее. Может там обычный растр, но каждый пиксель цветным прямоугольником свёрстан в svg, мало ли...
    В любом случае, что-то мне подсказывает, что вам не требуется именно в векторе вся физическая карта. Что вы там показывать предлагаете? Реки? Моря? Горы? Может быть отрендерить карту в растр всю или отдельные слои, а сверху положить контуры областей для интерактивного взаимодействия.

    Посмотрел упомянутый SVG и да, это долго и больно ждать пока он отрендерится браузером весь. В любом случае придётся его как-то либо сегментировать, либо расслаивать.
    Я бы вам порекомендовал посмотреть в сторону NextGIS Web. Исходники есть на гитхабе.
    Но ребята барыжат и данными, и советами, и помощью в импорте геоданных из OSM, хотя там ничего особо сложного и нет.
    Из полезного вам, там есть поддержка растровых и, вроде бы, векторных подложек, можно настроить свой сервер рендера тайлов. Кроме того они поддерживают слои и выделения. В том числе геоданные в слоях вполне могут быть невидимы, а минимальным кодом можно сделать свою выдачу подсвеченных объектов по клику на карте. При этом данные будут запрашиваться с сервера, а не храниться полным набором локально что делает работу с картами быстрее в плане первичной загрузки и рендера.

    Ещё из полезного. НекстГИС умеет подключаться к Postgres (postgis) и брать геоданные оттуда напрямую. Позволяет делать несложный рендер объектов (контуры, заливки), боее сложные стили я не пробовал. но этого достаточно. чтобы подсветить полупрозрачным выделением какой-нибудь бассейн Амазонки или Кордильеры. Добавляя слои вы без дополнительного программирования и специальной обработки данных сможете добавлять на свою карту новые объекты. Конечно всё это можно реализовать и на чистом лифлете.

    В общем выбросьте свою svg-шку, предварительно нстроив в том же QGIS стиль, который будет копировать оформление этой карты. Может ыть стоит поискать готовый стиль, ведь наверняка уже кто-то озадачивался уже этой идеей. Потом настойте талйовый сервер, который будет генерить вам подложку в этом стиле и вы получите быстрый просмотрщик карты. Использовать ли NextGIS или пилить своё на leaflet'e (либо аналогах) - дело ваше, по райней мере можно подсмотреть что у них там как.
    Импортируйте снапшот OSM себе в локальную БД, можно отфильтровать ненужное, а можно и не фильтровать, если есть место. Я бы пофильтровал, у вас задача довольно узкая, но нужен весь шарик. К чему вам тогда детальная геометрия улочек и домов всех отрисованных захолустий планеты?
    Наверно весь необходимый вам объём влезет в пару сотен метров, если не упарываться сильно с фильтрацией, а может и меньше.
    Старайтесь использовать стандартные протоколы передачи гео-данных. NextGIS поддерживает WMS из коробки, но можно найти и плагин для лифлета. Можно, кстати, остановитьс яи на голом GeoJSON, если не использовать NextGIS пилить свой бэкенд к вашей карте. то искат, агрегировать и выдавать нужную геометрию в GeoJSON умеет postgis из коробки посредством чистого SQL.

    Итак. Резюмируем варианты:
    1) NextGIS - и вы получаете:
    - работу с геоданными и слоями на пользовательском уровне,
    - достаточно понятное место в исходниках бэка, куда можно вписать свою логику выборки данных,
    - лютый гемор (если ребята не доилили свои фронтовые решения) с модификацией фронтенда некстгиса под свои задачи;
    - профессиональну подготовку данных и консультации (правда платно, но не дорого), у них в портфолио есть задачи и похлеще вашей.
    2) Бэк на каком-нибудь Flask или ноде, который будет отрабатывать API клика по карте и отдавать при необходимости geojson, доставая его из postgis через SQL. Растровые тайлы рендерить стандартными сревисами рендера. благо их много. Единственное. что повозитесь с подгонкой стиля, но если онне критичен, то можно взять сторонние сервисы.
    3) Порежьте ваш svg на векторные или растровые тайлы, но с уменьшением детализации на мелких масштабах, чтобы показывать на фоне через лифлет, а сверху кладите отдельный GeoJSON с реками, с горами или с чем вам там надо для каждого конкретного случая. Это самый трудоёмкий, на мой взгляд, вариант, и самый труднорасширяемый в дальнейшем.
    Ответ написан
    4 комментария
  • Как сопротивление может влиять на напряжение?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А мне нравится другая метафора.
    Представьте, что у вас в школе есть длинный коридор (это проводник).
    Коридор полон слоняющихся в нём туда-сюда школьников (это электроны). В среднем в коридоре ток равен нулю.
    Вдруг (прозвенел звонок) и в коридор с одного конца стали ломиться новые школьники, движимые желанием идти нахрен подальще от класса (минус "батарейки"). Напор школьников - это потенциал. Он разный в начале и в конце коридора.
    Школьники давят с одного конца, а второй конц коридора открыт на улицу (плюс).

    Разница потенциалов (напоров) между началом и концом коридора - это напряжение.
    Представьте, что перед звонком в коридоре хаотично расставили стулья.
    Стулья мешают - это сопротивление. Школьники спотыкаются, ломают стулья, накаляют обстановочку (часть энергии желания школьников погулять тратится на это).
    Чем больше стульев, тем больше разница давления школьников между началом и концом коридора.

    Это был закон Ома для участка цепи.
    На примере школьников проще объяснять, чем на примере гидравлики. Так можно рассказать и про полупроводники, транзисторы, правило Кирхгофа... да что угодно.
    Ответ написан
    16 комментариев
  • Позволит ли OpenStreetMap реализовать данный функционал?

    @pfg21
    ex-турист
    1. да полностью.
    но осм система общедоступная, а в вашей системе думаю все таки будет закрытая информация. тут заранее надо будет продумать что куда.
    2. допилить опенсорсный движок навигации, тот же ОСРМ, условиями с вашими кпп и разграничениями.

    есть коммерческие гис-компании - постучать им.

    п.с.: опенстритмап это только набор геоданных и более ничего :)
    вокруг этого набора создано огромное количество различных инструментов, назовем ее "Вселенная Опенстритмап". но к осм они впрямую не относятся :)
    Ответ написан
    7 комментариев
  • Где получить координатные границы городов?

    @Sadless74
    Чтобы получит полигоны городов из OpenStreetMap можно воспользоваться overpass-turbo.eu (api сайта заблокирован, используйте VPN)
    Запрос для Московской области:
    [out:xml];
    
    area
      (area.region)
      ["boundary"="administrative"]
      ["name"="Московская область"]
    ->.a;
    
    (
      node
      	(area.a)
      	["place"~"city|town"];
      way
      	(area.a)
      	["place"~"city|town"];>;
      relation
      	(area.a)
      	["place"~"city|town"];>;
    )->.b;
    .b out meta qt;

    Результат можно экспортировать в geojson. Эти данные о полигонах загружать в свою базу и там искать.

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

    Если требуется искать ближайший центр населённого пункта, то есть ответ на похожий вопрос. Это задача поиска ближайшего соседа. Есть готовые архивы с координатами населенных пунктов.
    Ответ написан
    Комментировать
  • Где взять и как работать с базой графов карты OSM?

    Moskus
    @Moskus
    Используйте OSRM или GraphHopper. Читайте документацию по ним.
    Ответ написан
    Комментировать
  • Карты для сайта на основе opensource?

    Zverik
    @Zverik
    Специалист по OpenStreetMap
    Это слишком общий вопрос. Наподобие «мой сайт перестал укладываться в лимиты RuVDS, подскажите, какую альтернативу выбрать». Всё зависит от требований: насколько кастомизирован интерфейс Maps API, сколько пользователей, какой величины компания и сколько можете позволить платить в месяц, какие свойства карты важны и какие нет, насколько умелы ваши программисты в JavaScript.

    Для веб-карты начального уровня советую Mapbox JS или Mapbox GL JS: там неплохая документация, много полезных компонентов из коробки и цена ниже, чем у Google. Если пользователей сотни тысяч и денег нет, можете попробовать найти человека, чтобы поставил локальный тайл-сервер и обойтись LeafletJS.

    Все слова в ответе легко гуглятся.
    Ответ написан
    1 комментарий
  • Какие существуют сервисы для построения сложных маршрутов, включая жд и морские пути?

    t-alexashka
    @t-alexashka
    Сразу пишу legacy код
    Если вам не подходит гугл, то попробуйте Project OSRM, когда-то давно пытались его использовать для службы такси. Я не уверен что там есть морские пути, но потестите, там есть демка. Если и этот не подойдет - скорее всего вы не найдете в открытом доступе подобных проектов.

    UPD:
    Supports car, bicycle, walk modes; easily customized through profiles.
    Ответ написан
    Комментировать
  • Что нужно знать для создания ботов?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Смотря под что ты пишешь ботов.
    У систем есть API, смотри их реализации в официальной документации.
    Также есть фреймворки под любой язык программирования, даже для php есть, к примеру botman.io
    Зайди на github и вбей по поиску для языка, который знаешь, реализацию готовых классов, они часто красивее и лучше официальных примеров. Аминь.
    Ответ написан
    Комментировать
  • Как создать бота в телеграмм, который бы брал инфу из xмl-файла, и отсылал данные на почту?

    @nllm
    Напишите все на том же языке, на котором сделали бота.
    Если знаете js и вам интересно с ним работать, то смотрите в сторону nodejs и развивайтесь в этом направлении.

    На js сможете и с xml работать (первая задача), и отправку на почту делать (вторая задача).
    А так все можно решить на любом языке, который сможете запустить на сервере с вашим ботом.
    Ответ написан
    Комментировать
  • Почему многиие ИТ компании в основном из США?

    Moskus
    @Moskus
    Почему-то очень многие люди уверены, что для успешного бизнеса нужна замечательная идея и какой-нибудь талант вроде программирования или умения вытачивать деревянных слоников.
    На самом деле, успешный бизнес всего этого не требует вообще: если есть относительно неплохой организатор, он может построить "муравейник" компании из вполне обычных людей, которые просто добросовестно делают свой участок работы, а вместе получается нормальный продукт, который, может, звезд с неба не хватает, но продается. При этом важно, чтобы этому организатору не приходилось тратить все свои силы (а часто - и деньги) на то, чтобы противодействовать системе, которая либо пассивно вредит ему своей неповоротливостью или активно вредит всякими вещами типа вымогательства со стороны контролирующих органов. В США почта не разорит вас потерянными посылками, пожарный инспектор не будет вымогать взятку, местный интернет-гигант не "отожмет" у вас доступ к данным о местоположении городских автобусов неведомо каким образом, поставщик комплектующих не скажет "я не подниму задницу со стула ради партии меньше контейнера". А когда бизнес выйдет на некий уровень прибыли, не придется трястись по поводу того, что успешный бизнес может приглянуться кому-то из местного управления полиции или ФБР, и вас посадят по сфабрикованному делу (или будут этим угрожать), а бизнес отберут.
    Ответ написан
    Комментировать
  • Есть ли программа для работы с картой мира, где можно вносить изменения на карте, и с этими изменениями сохранять?

    @trolleway
    QGIS.
    nextgis.ru/nextgis-qgis

    Нужно будет найти векторную карту мира, потом создать новый слой, обводить в нём участки, и сохранить его.
    Ответ написан
    Комментировать
  • Можно ли убрать лого Яндекс в фоне карт?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Даже если технически это и можно реализовать, это совершенно точно будет нарушением правил использования.

    2.3.7.2. Удалять, изменять порядок или сортировку, скрывать или модифицировать Данные, а также любую содержащиеся в Сервисе или Данных информацию, включая, но не ограничиваясь, рекламно-информационные материалы, товарные знаки, логотипы, ссылки или иные указания на Правообладателей, равно как и любые другие уведомления и/или информацию, передаваемые Сервисом вместе с Данными.
    https://yandex.ru/legal/maps_api/
    Ответ написан
    1 комментарий
  • Порекомендуйте англоязычный подкаст с IT тематикой и хорошим произношением у участников?

    @FoxInSox
    Говорят два британца на очень хорошем английском: BBC Click. Обсуждают IT и что хотя бы хоть как-то касается IT.

    Но вообще я бы вам не советовал привыкать к первоклассному английскому произношению, а наоборот слушать все подряд и не только на IT тематику. В реальной жизни, даже если вы переедете жить в Лондон, то вам с большой долей вероятности придется общаться с людьми которые имеют массу разных акцентов: начиная от азиатского, индийского и заканчивая американским, который бывает хуже первый двух.
    Ответ написан
    1 комментарий
  • Существуют ли standalone-версии или аналоги Яндекс/Google карт для использования на своем сайте?

    ksider
    @ksider
    Я сварщик не настоящий
    Ответ написан
    Комментировать
  • Как бесплатно установить google maps или яндекс карты?

    forgotten
    @forgotten
    Руководитель разработки API Яндекс.Карт
    Использование API Карт (что Яндекс, что Гугл) запрещено в закрытых и/или коммерческих системах. Переживать, что вычислят, стоит.
    Лучше использовать OpenStreetMap.
    Ответ написан
    4 комментария
  • Можно ли получить скриншот google карты по координатам?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Не знаю как у Гугля, но можно у Спутника
    api.sputnik.ru/maps/static_api
    А вот есть визуализатор osmz.ru/bbox/sputnik.html
    ?width=340&height=224&z=16&clng=40.35327
    Ответ написан
    Комментировать
  • Как получить координаты административных районов города в Open street Map?

    @pfg21
    ex-турист
    В опенстритмап есть отличный инструмент overpass-turbo позволяющий искать в boundarybox объекты с определёнными тегами.
    Для районов города это будет boundary=administrative adminlevel=*
    Уровень adminlevel смотри в wiki.openstreetmap.org/wiki/RU:Tag:boundary%3Dadministrative
    Оверпасс выдаст набор объектов наподобии www.openstreetmap.org/relation/1299106
    В outer которых лежат линии, содержащие точки с нужными координатами. Отсеивать ненужные районы по тегу name
    Ответ написан
    Комментировать
  • Как отображать свои объекты на карте?

    Лучше встройте карту OpenStreetMap - у неё детализация лучше. Для этого можно использовать библиотеку Leaflet. Как её подключить и как использовать дополнительные функции (например, маркеры) подробно описано на официальном сайте:
    leafletjs.com/examples/quick-start.html
    Ответ написан
    2 комментария
  • Какие технологии использовать для отрисовки своих слоев поверх OSM?

    Moskus
    @Moskus
    Как-то из вас клещами подробности тащить приходится - какое количество объектов у вас планируется: сто, пятьсот, или пятьсот тысяч? Это ведь тоже важно, и ответ нужен вам, а не тем, кто вам будет отвечать...

    Если речь о том, чтобы выложить в сеть интерактивную карту с десятком объектов, то вам будет абсолютно достаточно взять Leaflet, начертить где угодно (например - в Google Earth) вашу схему, сохранить, подключить к карте на Leaflet (в случае KML понадобится плагин для Leaflet, их есть несколько, я пользовался тем что отсюда https://github.com/shramov/leaflet-plugins ) И будет вам счастье - маркеры, стили, popup-ы. Больше ничего не надо. Можно даже еще проще - выложить все на share.mapbbcode.org (аналогично старому гугловскому функционалу My Maps, только лучше).

    А вот если вам нужна система, где вы сможете хранить кучу данных в БД, переключать слои, видеть списки объектов и так далее, вот тогда вам понадобится хранить слои в PostgreSQL, держать установленный WMS-сервер (скажем, GeoServer), возможно - тайловый кэш к нему (TileCache) и чтобы за написанием веб-морды не повеситься, взять, например, https://geoext.github.io/geoext3/ (это OpenLayers интегрированный со всякими другими удобными вещами).

    Короче, определяйтесь с масштабом безобразия, а там можно будет и уточнить детали.
    Ответ написан
    7 комментариев