воскресенье, 17 ноября 2019 г.

Получение координат зданий в населенном пункте из источника OpenStreetMap

Получение координат зданий в населенном пункте из источника OpenStreetMap

В открытой базе данных https://www.openstreetmap.org/ содержатся географические координаты множества зданий. Используя эту информацию можно получить базу соответствия:
Адрес Координаты.
Для стран СНГ данные в виде файлов PBF размещены на сайте https://needgeo.com/
Файлы разбиты по областям


Скачиваем себе на ПК файл, который содержит искомый данные нужного города. Я для примера возьму файл по Самарской области для получения координат домов для города Самара.
Создав на жестком диске папку «Координаты», положим туда файл RU-SAM.pbf.
Для извлечения из этого файла координат адресов понадобятся утилиты:
osmconvert (https://wiki.openstreetmap.org/wiki/RU:Osmconvert)
osmfilter (https://wiki.openstreetmap.org/wiki/Osmfilter)
Скачиваем их и помещаем в ту же созданную ранее папку «Координаты». Для ОС Windows 64x файлы будут такие: osmconvert64.exe и osmfilter.exe
Для начала вырезания из файла RU-SAM.pbf данных необходимо указать область координат, которую требуется вырезать. Область координат указывается в виде набор координат полигона. Область координат можно сформировать на сайте http://geojson.io/ с помощью инструмента «Draw a polygon»


Чтобы понять, что выделять можно воспользоваться картами от Яндекс. Здесь при поиске города (населенного пункта на карте выделяются его границы.
Для Самары:


Повторяем что-то подобное на сайте http://geojson.io/. Главное здесь – не захватить данные других городов, где могут повторятся адреса. Улица Ленина, например, есть везде, в каждом населенном пункте.


Набор получившихся координат справа необходимо преобразовать к виду, который поймет программа osmconvert. Для этого создается обычный текстовый файл city.poly в который вписываются координаты полигона города. Пример содержимого файла для Самары:
city
1
              50.1416015625               53.373497900586855
              50.17181396484375           53.30297979468481
              50.15533447265625           53.238920640924974
              50.05096435546875           53.19616119954287
              50.020751953125             53.16324027106289
              50.22125244140625           53.1335898292448
              50.32012939453125           53.19122467094173
              50.34759521484375           53.29641404214567
              50.34210205078125           53.39479437775073
              50.2130126953125            53.46516070239169
              50.07843017578125           53.50438429010248
              50.009765625                53.46025520362287
              50.06744384765625           53.420990805007634
              50.1416015625               53.373497900586855
END
END
Основное здесь – это координаты долготы и широты, взятые с сайта http://geojson.io/ после выделения полигона города.
Файл с координатами полигона города city.poly нужно положить в ту же папку «Координаты».
Переходим в режим командной строки и выполняем последовательно три команды:
osmconvert64.exe -B=city.poly --all-to-nodes RU-SAM.pbf -o=1samara.o5m
osmfilter.exe 1samara.o5m --keep="building AND addr*" --drop-author --drop-version -o=2samara.o5m
osmconvert64.exe 2samara.o5m -o=3samara.csv --csv-headline --csv-separator=; --csv="@id addr:street addr:housenumber @lat @lon"


После этого в папке «Координаты» будут созданы файлы: 1samara.o5m, 2samara.o5m и 3samara.csv
Первые два файла можно удалить. Они промежуточные. Третий файл 3samara.csv содержит нужные нам данные: Его можно открыть в EXCEL. 
Для EXCEL 2016 переходим во вкладку «Данные»  «Получение внешних данных»  «Из текста». Выбираем наш итоговый файл (3samara.csv), Проходим мастер импорта текста. На втором этапе установить галочку «точка с запятой».


Получаем представление адресов и координат, которое можно использовать. В файле есть информация о ID адреса в базе OpenStreetMap, название улицы, номер дома и координаты.



понедельник, 12 августа 2019 г.

Использование GIT

Использование GIT

Установка и первичная настройка на рабочем сервере
Установка git на сервере, где ведется разработка (рабочем сервере)
# yum install git
Настройка базовых вещей – установка автора и раскраска вывода консоли
# git config --global user.name "User"
# git config --global user.email user@yandex.ru
# git config --global color.ui auto
# git config --global color.branch auto
# git config --global color.diff auto
# git config --global color.interactive auto
# git config --global color.status auto

Создаем приватный репозитарий на Github.com. Для конкретики наш проект будет носить имя dosya-client.
1) Заходим под своей учеткой
user@yandex.ru / xxxxxxxxxxx
2) Справа вверху нажимаем на "+" и выбираем "New repository"
3) Вписываем название репозитария dosya-client,
выбираем тип репозитария - Private
4) Нажимаем кнопку "Create repository"

Создаем рабочую директорию на рабочем сервере и заходим в нее:
# mkdir /home/dosya-client
# cd /home/dosya-client
Инициализация проекта на рабочем сервер выполняется командой:
# git init
В данной рабочей директории будем вести разработку.
Сам репозитарий будет создан в скрытой папке /home/dosya-client/.git/
Начало разработки в рабочей директории:
Формирование шаблона файла описания проекта:
# echo "# dosya-client" >> README.md
Добавление удаленного репозитария с именем по умолчанию "origin"
# git remote add origin https://github.com/user/dosya-client.git

Связь между рабочей директорией и удаленным репозитарием


В рабочей директории добавляем файлы, например index.html и style.css.
Для включения файла в коммит выполняем команду:
# git add index.html
Или сразу все файлы в директории добавляем в коммит:
# git add . (git add -A)
Выполняем коммит - после завершения некоторого этапа разработки.
Обязательно пишем комментарий
# git commit -m "Старт разработки. Только html, без Javascript"
Выполняем загрузку текущего состояния в удаленный репозиторий, который создали ранее с именем orign:
# git push origin master
Здесь orign - имя, которое мы дали удаленному репозитарию, master - имя ветки.
По умолчанию считается, что ветка master - основная.
После этой операции на сервере github.com на страничке https://github.com/user/dosya-client
будут содержаться файлы нашего текущего состояния разработанного кода

Ведя разработку в домашнем каталоге нужно видеть код в браузере.
Для этого можно запустить тестовый web-сервер с утилитой browser-sync
Установка утилиты:
# npm install -g browser-sync
Утилита browser-sync создает нам web-сервер на 3000 порту
Запускается командой:
# browser-sync start --server --files "*"

Настройка продакшен-сервера и рабочего сервера для обновления с помощью GIT.
Продакшен сервер несет рабочую версию программы, которой пользуются юзеры.


На продакшен сервер будем закачивать код обновления с рабочего сервера.
Для этого на продакшен сервере разместим git репозитарий типа bare (голый).
При создании такого репозитария папка с файлами проекта находиться отдельно от репозитария,
и мы може не светить директорию .git в корне web-сервера.
Создаем директорию репозитария уровнем выше, чем директория web-сервера:
# mkdir /var/www/dosya-client.git
# cd /var/www/dosya-client.git/
# git init --bare
Данная команда разместит репозитарий прямо в папке /var/www/dosya-client.git/,
без скрытой папки .git
Создаем специальный "хук". Это команда, которая будет выполнятся после какого-то события.
Будем выполнять команду выкладывания рабочих файлов в каталог web-сервера (/var/www/html)
после выполнения процедуры приема обновлений файлов с рабочей машины
# touch /var/www/dosya-client.git/hooks/post-receive
# chmod +x /var/www/dosya-client.git/hooks/post-receive
Содержимое файла:
#!/bin/sh
GIT_WORK_TREE=/var/www/html git checkout -f
Теперь на рабочем сервере добавим еще один репозитарий - продакшен сервер
# git remote add prod ssh://root@IPсервера/var/www/dosya-client.git/
Обновлять данные на продакшен сервере будем командой:
# git push prod master

Файл .gitignore
Файл .gitignore в корне рабочей папки используется для настройки
перечня файлов, которые должны игнорироваться git при индексации
и не закачиваться в удаленный репозитарий
# nano .gitignore
помещает туда маски файлов, которые нужно игнорировать, например:
.gitignore
*.log
*~
style-develop.css
Здесь не будет никуда передавать сам файл .gitignore, а так же файлы имеющие расширение Log, файлы заканчивающиеся ~ и файл style-develop.css

Текущая разработка.
Перед началом разработки вытягиваем изменения с github
# git pull orign master
ТЕПЕРЬ ВЕДЕМ РАЗРАБОТКУ И ВЫПОЛНЯЕМ ПОСЛЕДУЮЩИЕ ОБНОВЛЕНИЯ:
Из рабочей директории рабочего сервера после выполнения этапа разработки
# git add .
# git commit -m "Поменял то-то и то-то"
# git push origin master (загрузка на github)
# git push prod master (загрузка на продакшен сервер)

Откат на предыдущие версии кода
Отмена последнего коммита
# git reset --hard HEAD~1
Отмена до определенного коммита
# git reset --hard HEAD <хэш коммита>
Хеш коммита узнаем из команды git log или из web-интерфейса github.com
Например
# git reset --hard HEAD 50dc282971ed2611370c49e55cbf962d1529584a
Теперь загружаем в удаленный репозитарий, но при этом используем опцию –f
# git push -f origin master
# git push -f prod master
Она необходима для принудительной загрузки. Если ее не использовать, то git будет считать происходящее конфликтом, так как в репозитарии более новая версия и мы пытаемся обновить ее старыми данными.
Если не использовать команду –f, то сначало нужно выполнить
# git pull origin master
И вручную пофиксить ошибки - вручную исправить файл до требуемого состояния

Ветвление кода
Базовая модель ветвления содержит основную ветку master, ветку с фиксирование багов fix и ветку разработки develop:


Создание новой ветки из текущей позиции
# git branch develop
Переключение на новую ветку:
# git checkout develop
Слияние ветки master c develop:
# git checkout master
# git merge develop

И затем:
# git add .
# git commit -m "слил ветки"
# git push origin master (загрузка на github)
# git push prod master (загрузка на продакшен сервер)

Удаление ветки:
# git branch –d develop

Статусы работы в git:
# git status - статус репозитария. Какие файлы есть для обновления, какие изменились.
# git log - лог изменений
# git remote -v - список удаденных репозитариев
# git branch – Список веток проекта
# git log --oneline --decorate --graph --all     – отображение веток в псевдографическом интерфейсе

среда, 3 июля 2019 г.

Выбор ОС, загружаемой по умолчанию при установке на ПК двух ОС: Windows 10 и Linux Ubuntu

Выбор ОС, загружаемой по умолчанию при установке на ПК двух ОС: Windows 10 и Linux Ubuntu

На ПК установлена ОС Windows 10. После на этот же ПК установлена второй ОС Linux Ubuntu.
Во время загрузки компьютера по умолчанию загружается Linux Ubuntu.

Что бы по умолчанию при включении ПК загружался Windows необходимо
1. Загрузиться в Linux Ubuntu
2. Открыть файл /etc/default/grub
$ sudo nano /etc/default/grub
3. В файле поменять директиву GRUB_DEFAULT
По умолчанию стоит 0:
GRUB_DEFAULT=0
Вместо 0 нужно поставить номер операционной системы в списке экране загрузчика
У нас Windows находиться на 3ем месте в списке, счет идет с нуля.


Следовательно необходимо поставить цифру 2:
GRUB_DEFAULT=2
Можно еще сменить параметр, определяющий время, которое загрузчик будет "ждать" выбора пользователя, прежде чем будет выбран пункт по умолчанию. Дефолтные настройки – 10 секунд:
GRUB_TIMEOUT=10


4. После сохранения файла /etc/default/grub выполняем команду, применяющие изменения:
sudo update-grub

суббота, 19 января 2019 г.

Установка последней версии NODEJS

Установка последней версии NODEJS

Текущая версия нас CentOS7, доступная через yum  - версия 6.14.3
# node --version
v6.14.3
Обновимся до последней стабильной версии NodeJS

Подготовка к установке последней стабильной версии NodeJS
# yum install -y gcc-c++ make
Удаляем старую текущую (старую) версию
# sudo yum remove -y nodejs npm

Скачиваем и устанавливаем последнюю версию:
# curl -sL https://rpm.nodesource.com/setup_10.x | sudo -E bash -
# yum install -y nodejs
Проверяем:
# node --version
v10.15.0
Теперь в системе версия 10.15.0

понедельник, 14 января 2019 г.

Kaspersky Endpoint Security для Windows 10. Разрешение работы с ПК через удаленный рабочий стол RDP.

Kaspersky Endpoint Security для Windows 10.
Разрешение работы с ПК через удаленный рабочий стол RDP.

По умолчанию после установки Kaspersky Endpoint Security закрыта возможность подключаться к ПК через удаленный рабочий стол по RDP. Это можно исправить.
1) Открыть панель Kaspersky Endpoint Security

2) Нажимаем кнопку «Настройка» и выбираем пункт меню Базовая защита  Сетевой экран.

3) Выбираем кнопку «Пакетные правила» и в открывшемся окне «Сетевая активность для работы технологии удаленного рабочего стола»

4) Нажимаем кнопку «Изменить» и выбираем в выпадающем списке «Разрешить»

5) Нажимаем два раза «ОК» и «Сохранить»