Посты | OTUS
Как предотвратить повторный запуск приложения

l5zR6K7zKzQ-5020-dd8ed2.jpg

Бывают ситуации, когда должна выполняться строго одна копия приложения. Например, это связано с авторизацией на некотором сервисе или работой с внешними устройствами.

Приложение для получения данных из Instagram на C#

С__Deep_9-5020-ec1525.10_site.png

Для чего может потребоваться получать данные из социальных сетей? Эти данные могут быть полезны маркетологам и специалистам по продвижению, для анализа и сбора статистики. Да, конечно существуют специальные сервисы (например, livedune.ru), но также существует и множество задач, которые нельзя решить в облаке.

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

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

uFRcryNsoZ8-5020-a5ffa1.jpg

Часто бывают необходимы права администратора на выполнение программы. Узнать, обладает ли данная программа правами администратора, можно следующим образом.

Настраиваем Data Guard Broker

SUBD_Deep_27-5020-91bd20.09_site.png

Классическая схема работы Standby меня в принципе всегда устраивала, но появилось желание перенастроить контроль за StandBy через Data Guard Broker.

Итак, на входе у нас стабильно работающий физический StandBy. Настройка осуществляется через инструмент dgmgrl.

Пример выпускного проекта курса «Разработчик C++»

C___Deep_19-5020-892e2c.09_site.png

Проектная работа — заключительная часть любого образовательного курса в OTUS. Она позволяет закреплять полученные знания и реализовывать их на практике. Как правило, проект пишется студентом, успешно прошедшим все этапы, предусмотренные образовательной программой.

Socket backlog

Linux_Deep_21-5020-e6199d.09_site.png

Преамбула: как сервер принимает подключения?

Сервер делает так: listen_socket_fd = socket(AF_INET, SOCK_STREAM, 0) – создаём сокет; setsockopt(listen_socket_fd, _flag_, _value_) – настраиваем его (необязательно); bind(listen_socket_fd, _address_) – привязываем адрес, где будем слушать; listen(listen_socket_fd, **_backlog_size_**) – говорим, что это «слушающий сокет»; int connected_socket_fd = accept(listen_socket_fd, NULL, 0) – садимся и ждём клиентов.

Миграция NONCDB в PDB

SUBD_Deep_14-5020-6ebc59.09_site.png

По итогам апгрейда с 11 на 12 логичным показался шаг превращения базы в pluggable. Казалось бы, три простых действия — и проблема решена. Но во время миграции вылез ряд нетривиальных ошибок.