Конкурсные крупные кошки

Пару месяцев я достал свой фото-архив. Начав раскапывать фотографии нашёл интересные экземпляры и, чтобы добру не проподать, решил участвовать в фотоконкурсах. В качестве площадки выбрал gurushots

Ниже представлены мои Кошачьи работы.

«Припорошенный снежком»
Тигрёнок из Барнаульского зоопарка.
«Эээх, запачкали снова…»
Барнаульский тигр
«Сфотографируй меня ещё так!»
Леопард из Барнаульского зоопарка.
«Достать бы до этого фотографа! Я б его съел!»
Леопард Елисей из Барнаульского зоопарка

PostgreSQL — объединение пересекающихся интервалов

Частенько нужно в PostgreSQL объединить пересекающиеся временные интервалы с учётом уникальных ID или дат.

Условия:
У нас есть регистрация пользователей по их ID, дате посещения и времени активности на сайте. Интервалы посещения пересекаются. Предположительно пользователь находился с несколькими открытыми вкладками в браузере на разных страницах.

Задача:
Найти не пересекающиеся временные интервалы пребывания пользователей по дате.

Решение:

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
  WITH prepared_periods AS ( 
    SELECT 1 AS person_id, '2018-01-01'::DATE AS visit_date, '01:00:00'::TIME AS START, '03:00:00'::TIME AS stop 
    UNION ALL 
    SELECT 1 AS person_id, '2018-01-01'::DATE, '02:00:00'::TIME, '04:00:00'::TIME
    UNION ALL 
    SELECT 2 AS person_id, '2018-01-01'::DATE, '08:00:00'::TIME, '10:00:00'::TIME 
    UNION ALL 
    SELECT 1 AS person_id, '2018-01-02'::DATE, '01:00:00'::TIME, '05:00:00'::TIME 
    UNION ALL 
    SELECT 3 AS person_id, '2018-01-02'::DATE, '10:00:00'::TIME, '23:00:00'::TIME
  ), 
  united_periods_by_person AS (
    WITH definition_of_starting_groups AS (
      SELECT  person_id,
              visit_date,
              START,
              stop,
              CASE WHEN START > INTERVAL '1s' + MAX(stop) OVER (PARTITION BY person_id, visit_date ORDER BY START, stop ROWS BETWEEN unbounded preceding AND 1 preceding)
                THEN 1
              END AS start_groups
      FROM prepared_periods
    ),
    number_the_nested_groups AS (
      SELECT person_id, visit_date, START, stop, SUM(start_groups) OVER (PARTITION BY person_id, visit_date ORDER BY START, stop ) AS group_number
      FROM definition_of_starting_groups
    )
    SELECT person_id, visit_date, MIN(START) AS START, MAX(stop) AS stop
    FROM number_the_nested_groups
    GROUP BY person_id, visit_date, group_number
    ORDER BY person_id, visit_date, START
  )
  SELECT * FROM united_periods_by_person

 

Итоги летних велосипедных покатушек

В конце мая 2018 года я решил поактивнее кататься на велосипеде и  проехать 1000 км.

По итогам лета я проехал 700+ км. Считаю это хорошим результатом!

Leaflet и добавление полигона

Для того, чтобы добавить полигон на карту нужно добавить несколько строк в код от предыдущей статьи. Результат можно посмотреть здесь.

Безымянный2

Во время нажатия будет добавляться новая точка к полигону.

В консольке Developer tools вашего браузера будет отображаться json структура, которую можно использовать в дальнейшем.

var polygon = []
var Poly
var boo
boo = false
 
function onMapClick(e) {
   if (boo == true) {
      map.removeLayer(Poly);
   }
   polygon.push(e.latlng);
   boo = true;
   Poly = L.polygon(polygon).addTo(map);
 
   console.log(JSON.stringify(Poly.toGeoJSON()))
}
 
map.on('click', onMapClick);

Наложение векторного слоя на карту mapbox из geojson

Недавно потребовалось сделать отрисовку векторного слоя на карте openstreetmap на основании данных с этого сайта.

Безымянный1

Данные, представленные в файле данных имеют формат geojson

Для решения данной задачи было решено использовать leafletjs 1.0.0-rc1.

Так же Proj4Leaflet из-за особенностей формата представления координат EPSG:3857.

Для получения результат как здесь, нужно сделать:

  1. Скачать 1.0.0-rc1 и перенести файлы leaflet.css и leaflet.js в корень сайта.
  2. Скачать  Proj4Leaflet для последней версии leaflet, найти proj4.js и proj4leaflet.js, переместить в корень сайта.
  3. Создать index.html и поместить в <head>
    <link rel="stylesheet" href="leaflet.css" />
    <script src="leaflet.js"></script>
    <script src="proj4.js"></script>
    <script src="proj4leaflet.js"></script>
    <style>
       #map {
          width: 100%;
          height: 100%;
       }
    </style>
  4. Зарегистрировать в mapbox и создать карту. Получить там access token и id карты.
  5. В <body> добавить
    <div id="map"></div>
    <script type="text/javascript" src="geojson"></script>
    <script type="text/javascript">
       var map = L.map('map').setView([37.8, 96], 3);
       L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={access_token}
          attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
          maxZoom: 18,
          id: 'ID карты в mapbox'
       }).addTo(map);
       L.Proj.geoJson(state).addTo(map);
    </script>

    6. Добавить в файл geojson в начале строки var state =
    Получиться что-то вроде

    var state = {"crs": {"type": "name", "properties": {"name": "EPSG:3857"}}

    Всё! Карта работает и можно смотреть на карту с векторным слоем!

Панорамы с Каракольского озера

После похода на Каракольские озёра в республике Алтай накопилось большое количество фотографий. И вот, я собрал пару панорам.

10572261_830075900438620_1478680725266555995_o 1277335_828253010620909_7111103354254650000_o

 

Фотография на главной странице газеты «Природа Алтая»

Поздравьте меня мои читатели!

001-01

Моя фотография из Барнаульского зоопарка с канадской пумой попала на главную страницу газеты «Природа Алтая»!

Где же фотографировать?

Здравствуйте мои уважаемые читатели!

И сегодня мы поговорим о важной вещи — где и что снимать?

Представляю вашему взору три фотографии:

Эта фотография сделана в Казахстане, Чарынский каньон

eIyNmja6Aic

Эта фотография сделана в зоопарке города Барнаул, в котором я живу

uF4AqBW4kV8

Эта фотография сделана на авиашоу в городе Барнаул

XmGOBPl9c9U

Основополагающие критерии к фотографии должны быть следующие:

  1. Что должно быть центром внимания, какая идея?
  2. Хотите ли вы остановить мгновение или запечатлеть динамику?
  3. Чистая оптика

При просмотре фотографии должно быть понятно — О это огромный песчаный каньон. А огромный он потому, что там есть маленький ориентир — человек.

На второй фотографии амурский леопард.

uF4AqBW4kV8
Нет нет! Вы не подумайте! Я не заходил в клетку! Это он зашёл ко мне! Но он видимо хочет съесть фотографа! Именно это здесь и запечатлено.

На третей фотографии Изображено авиагруппа во всей красе.

Главная идея — фотографировать можно даже лужу. Но как показать красоту лужи? В чём идея фотографии лужи? Какая история у этой лужи? Что эта фотография с лужей может рассказать?

Так же можно фотографировать на выдержку меньше 1/100, чтобы изображение застыло и больше 1/100, допустим при выдержке 1/2 секунды движения будут смазаны, а при выдержке 1/8000 можно увидеть застывшую пулю.

Ну и главное — Держите оптику в чистоте!

Всем котиков!

NnT3n6q5S0Y

Фотоаппарат и штатив

Здравствуйте мои уважаемые подписчики!

Dr-Et8Ni7_8

Сегодня мы поговорим о пункте номер один!

  1. Взять фотоаппарат и штатив

Какой же взять фотоаппарат? Подороже? Подешевле?

Ответ оказывается прост — любой!

Главное, чтобы выполнялись условия:

  1. Не поцарапанный объектив
  2. Фотоаппарат, способный включаться и работать
  3. Специальные средства для удаления жирных и иных пятен с объектива

Если у вас перед съёмкой и в процессе будет чистая не поцарапанная оптика, тогда фотографии будут чёткие и контрастные. Иначе всё будет в мыле.

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

А теперь одевайте и смотрите! Упс… Кажется всё плохо…

Именно вот так и видит фотоаппарат, если не чистить оптику.

Что ещё нам пригодиться в процессе? Конечно Штатив!

Фотографировать можно на всём. На камне, столе, стуле, дереве. Перевязать фотоаппарат верёвками и хорошо закрепить на ствол…
Придумать можно всё!

Но лучше всего подходит штатив.

Какой покупать? Лучше с шаровой головкой. Но подойдёт и любой!

Главное перед нажатием кнопки фотографировать выставить двух секундную задержку. Для удаления тряски при нажатии.

Ну и всё! Фотографируйте!

Алматы, зоопарк

Фотографирование

Привет мои уважаемые подписчики!

И сегодня мы поговорим о фотографии.

Для того, чтобы сделать классную фотографию нужно сделать три вещи:

  1. Взять фотоаппарат и штатив
  2. Приехать на место
  3. Нажать кнопку спуска

ГОТОВО!

Всем хороших фотографий!

IMG_6964