Уютный vps-сервер для маленьких проектов: как настроить

Multiple Descriptions in tnsnames.ora

A file can contain net service names with one or more connect descriptors. Each connect descriptor can contain one or more protocol addresses. shows two connect descriptors with multiple addresses. defines a list of connect descriptors.

Example 6-2 Net Service Name with Multiple Connect Descriptors in tnsnames.ora

net_service_name= 
 (DESCRIPTION_LIST=
  (DESCRIPTION= 
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)))
  (DESCRIPTION= 
   (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=hr2-svr)(PORT=1521)))
   (CONNECT_DATA=
     (SERVICE_NAME=hr.us.example.com))))

3 ответа

Лучший ответ

Исходя из ваших путей, у вас есть два установленных клиента, как вы подозреваете (Toad и dbforge — это инструменты, а не клиенты, поэтому ваша терминология немного неправильная). Один 32-битный, другой 64-битный. Судя по пути установки, Toad 32-битный, но запустите его и перейдите в Help | Support Bundle. Вы увидите, что верхний заголовок будет «ИНФОРМАЦИЯ О ПРИЛОЖЕНИИ (32-разрядная версия)» или «ИНФОРМАЦИЯ О ПРИЛОЖЕНИИ (64-разрядная версия)» для подтверждения. Toad 11.6 был первым, кто представил 64-битную версию.

Жаба будет видеть только клиента Oracle для той же платформы, что и он. Так что ваш 64-битный клиент не имеет значения для Toad. C: \ Windows \ TNS, похоже, является папкой, используемой для папки TNS_ADMIN, учитывая ее странное расположение и тот факт, что Toad ее видит. В командной строке выполните SET TNS_ADMIN и посмотрите, сообщает ли он «TNS_ADMIN = C: \ Windows \ TNS». Если это так, то все инструменты должны использовать этот tnsnames.ora. Если хотите, это глобальное переопределение, указывающее на папку, содержащую ваши файлы сетевой конфигурации. Если у вас нет TNS_ADMIN в качестве переменной среды, найдите ее в корневом реестре Oracle: HKEY_LOCAL_MACHINE \ Software \ Oracle.

Если вы используете общий набор подключений для всех своих инструментов, я бы удалил все ваши файлы tnsnames.ora. Я бы также переместил эту папку C: \ Windows \ TNS в более подходящее место, например C: \ Oracle \ Admin, и создал там ваши tnsnames.ora, sqlnet.ora и ldap.ora (если применимо). Создайте переменную среды TNS_ADMIN, указывающую на это местоположение.

9

Michael S.
2 Фев 2015 в 15:56

Согласно Oracle эти местоположения ищутся для , соответственно. и :

  1. Файлы Oracle Net в текущем рабочем каталоге (PWD / CWD)
  2. определяется сессионно или пользовательским скриптом
  3. определен как глобальная переменная среды
  4. определено в реестре
  5. Файлы Oracle Net в (расположение Oracle по умолчанию)

Однако я не уверен, следует ли этому списку каждое приложение / драйвер. Я получил этот список из документа 111942.1, относящегося к Oracle 9i, поэтому это могло быть устаревшим.

В порядок является

  1. определяется переменной среды
  2. определено в реестре (если переменная среды не указана)
  3. Каталог (если переменная среды не указана)

Я бы рекомендовал определить переменную среды для и использовать только один файл tnsnames.ora. Чтобы быть в безопасности, проверьте также значения реестра.

Если ваши файлы не находятся в , я рекомендую создать для него символическую ссылку — на всякий случай очень , например

Еще одно замечание: вам не нужно «играть» с файлом tnsnames.ora. С помощью Process Monitor от Microsoft Sysinternals вы можете отслеживать доступ к каждому файлу, т. Е. Фильтр будет

Обновить

Когда я запускаю тест на своей машине, я получаю следующий порядок:

  1. Переменная среды
  2. Ключ реестра
  3. Ключ реестра , соотв.

    -> Только если переменная среды не установлена.

  4. Текущий каталог (который может отличаться от каталога, в котором находится ваше приложение)
  5. Папка, в которой находится ваше приложение

Обновление 2

Очевидно, что поиск исправлений отсутствует, он различается для разных провайдеров / драйверов. Может, это тоже зависит от версии Oracle.

Например, Oracle HTTP Server считывает настройку из файла конфигурации .

Другой пример, для версии бета управляемого драйвера ODP.NET (Oracle.ManagedDataAccess), я нашел этот заказ в :

  1. псевдоним источника данных в разделе dataSources в разделе файла конфигурации .NET (т. е. , , ).
  2. псевдоним источника данных в файле в расположении, указанном в файле конфигурации .NET.
  3. псевдоним источника данных в файле , находящемся в том же каталоге, что и .
  4. псевдоним источника данных в файле , находящемся в (где — настройка переменной среды).
  5. псевдоним источника данных в файле , находящемся в (где — настройка переменной среды).

В официальной (12c Release 4 ( 12.1.0.2.4)) он говорит:

  1. псевдоним источника данных в разделе в разделе в файле конфигурации .NET (т. е. , , ).
  2. псевдоним источника данных в файле в расположении, указанном в файле конфигурации .NET. Расположение может состоять из абсолютных или относительных путей к каталогам.
  3. псевдоним источника данных в файле , находящемся в том же каталоге, что и .

Однако на основе некоторых тестов, которые я провел с управляемым драйвером ODP.NET (4.121.2.0), он учитывает переменные среды и . Блокировки, подобные документации, не на 100% правильны.

9

Wernfried Domscheit
21 Авг 2018 в 12:32

Если вы используете Visual Studio v2017, вот файл tnsNames:

32-битная установка:

64-битная установка:

1

david.q
24 Окт 2019 в 10:16

Начало

Ваш первый шаг — загрузить приложение, которое доступно для Windows, macOS и Linux. Вам не нужно платить или регистрировать учетную запись, и по умолчанию ваши заметки хранятся локально.

Стоимость — одно из больших преимуществ Obsidian перед конкурентами. Это совершенно бесплатно для личного использования, но есть ряд возможностей для оплаты:

  • Вы можете финансово поддержать программное обеспечение, став пользователем Catalyst, который стоит от 25 долларов США (единовременный платеж) и дает вам несколько льгот.
  • Стоимость синхронизации с использованием сквозного шифрования и управления версиями составляет 48 долларов в год.
  • Возможность выборочной публикации заметок стоит 96 долларов в год.
  • Коммерческие пользователи платят 50 долларов за пользователя в год.

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

Вы можете жить в этой записке, записывая свои мысли, то, что вы сделали, и что вы планируете достичь. Невыполненные задачи создаются с помощью синтаксиса, — а отмененные задачи — с помощью — . Список задач продолжается при нажатии Enter, а для установки флажка необходимо перейти в режим предварительного просмотра. К сожалению, нет представления, в котором собраны все незавершенные задачи.

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

Если вам нужен легкий доступ к некоторым ключевым заметкам, включите плагин » Помеченные». Это позволяет пометить часто используемые заметки и поисковые запросы, и они появятся на панели навигации, когда вы нажмете значок звездочки в верхней части окна.

Также изучите плагин командной панели (активируется с помощью Command+ P), который позволяет вам исследовать общие команды и сочетания клавиш, и быстрый переключатель ( Command+ O), который позволяет вам открывать или создавать новую заметку, вводя ее имя.

Если у вас есть заметки где-то еще, есть большая вероятность, что вы можете импортировать их в Obsidian. На странице справки представлены инструкции по импорту из Roam Research, Notion, Evernote, OneNote, Apple Notes, Bear, Zkn3 и TiddlyWiki.

Один из лучших способов познакомиться с Obsidian — через хранилище демонстрации и справки, которое активируется путем выбора в меню » Открыть справку». Здесь вы можете узнать, что приложение может делать при работе с интерфейсом. Внизу панели навигации вы найдете заметку под названием » Начать здесь«. Он знакомит вас с некоторыми местами, в которые можно быстро погрузиться, некоторыми идеями рабочего процесса и ссылками на учетную запись приложения и форумы Discord.

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

Шаг 1. Установите базу данных Oracle

При установке базы данных Oracle нужно обратить внимание на следующие моменты:

1) Просто щелкните маленький значок setup.exe в самой внешней части установочного пакета. (Не так, как сказал Ли XX, вы не можете щелкнуть это, чтобы установить)

2) Нет необходимости создавать загрузочную базу данных (дополнительные 720 МБ). Точно так же глобальное имя базы данных и пароль базы данных, соответствующие этой опции, могут быть отменены, пропущены напрямую и не выбираются. Это может снизить нагрузку на собственный процессор. Конечно, если вам нужно использовать локальную базу данных для выполнения некоторых операций на этом компьютере, вам все равно нужно создать и запустить базу данных. Здесь я просто хочу подключиться к удаленной базе данных, поэтому нет необходимости создавать локальную базу данных.

Настройка сервера DLNA с помощью Plex Media Server

Операционная система не включает в себя сервер DLNA, поскольку она предназначена для профессиональных сред, но мы можем установить популярный и мощный Plex Media Server. Если мы перейдем в раздел «Плагины», мы можем щелкнуть Plex Media Server или бета-версию, как только мы щелкнем по нему, мы можем создать тюрьму, где будет храниться все необходимое для ее реализации. Как только мы введем имя тюрьмы и конфигурацию на сетевом уровне, мы будем готовы к ее установке.

TrueNAS CORE автоматически загрузит и установит Plex, и как только он будет загружен и установлен, мы сможем получить доступ к его обычной конфигурации через Интернет, где нам нужно будет указать источник мультимедийного контента.

Gitbook

И вот мы дошли до моего любимого инструмента.

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

Мне, конечно, второй вариант нравится куда больше.

Тут отличное отображение файлов. И вообще сам дизайн у гитбука отличный.

Мне так же очень нравится что тут есть классный фолдинг. Работает просто отлично.

Так же тут есть одна особенность, в отличие от всех остальных инструментов, которые были выше. Тут нет автоматической генерации. Если в предыдущие решения вы просто скидывали маркдаун файлы и все происходило автоматом, то тут есть еще файлик, который называется SUMMARY.md и в нем вы описываете дерево файлов, которое будет отображаться слева.

В этом подходе есть как плюсы так и минусы. Плюсы в том, что вы сами формируете вот эту ветку. А минусы в том, что при добавлении файла надо менять файл SUMMARY.md

Но как я уже сказал, мне этот подход скорее нравится, чем не нравится.

Кстати, файл SUMMARY.md в самом начале можно просто сгенерировать, чтобы не писать все вручную.

В общем-то единственный минус Gitbook, который есть для меня это отсутствие логинки. Приходится как-то городить ее самостоятельно.

Панель управления

Панель управления — это главная страница Miro, на которой вы можете перемещаться между командами, проектами и досками.

Команда — это группа людей, с которыми вы можете совместно работать на доске.

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

Доска — это интерактивное рабочее пространство. На доске вы размещаете все фалы, и создаете фреймы.

Панель управления можно визуально разделить на 7 блоков:

  1. Команды. Если вы являетесь участником или были приглашены на некоторые из досок в команде, вы увидите значок команды на левой боковой панели на панели инструментов. Переключайтесь между командами, щелкая квадратные значки на левой панели.
  2. Возможность настроить профиль команды и добавить проект.
  3. Ваши доски. Здесь вы можете создать новую доску, отсортировать и организовать свои доски удобным для вас способом. Вы можете фильтровать доски по принадлежности кому-либо в команде или вам. Вы можете просматривать доски в алфавитном порядке или по дате их создания, последнего открытия или последнего изменения. Вы можете организовать доски в виде сетки или списка, чтобы их было легче найти. Параметры сортировки на панели инструментов:Помеченные доски. Для быстрого доступа к важным доскам пометьте их звездочкой, чтобы они отображались вверху панели управления. Откройте контекстное меню доски, щелкнув три точки на доске. Здесь список действий, применимых к доске. Вы можете поделиться, переименовывать, переместить, дублировать, удалить доску, изменить обложку и т.д.
  4. Большая кнопка «Создать новую доску» и несколько шаблонов досок.
  5. Строка поиска по существующим доскам. Чтобы найти доску, нажмите «Поиск» вверху страницы или нажмите Ctrl + F и начните вводить название доски, фразу или слово, которое может быть частью описания доски.
  6. Возможность пригласить в проект соавторов, купить платную подписку, настроить ваш личный профиль. Щелкните аватар и выберите «Настройки», чтобы открыть сведения о профиле. Здесь вы можете изменить свое имя, компанию, должность, измените свой адрес электронной почты, пароль и удалите свой профиль.

Запуск коллекций с помощью Collection Runner

Давайте запустим коллекцию с помощью Collection Runner.

Шаг 1: Нажимаем на кнопку «Runner» (находится рядом с кнопкой Import)

Шаг 2: Должна будет открыться следующая страница:

Разберем основные элементы:

2 — Resent Runs: Все предыдущие запуски

3 — Environment: Окружение. Если вы хотите запустить коллекцию в конкретном окружении, вы можете выбрать его в этом поле.

4 — Iterations: Количество итераций

5 — Delay: Задержка. Указывается в миллисекундах. Выполнение тестов без задержки может вызвать ошибки, поэтому всегда указывайте небольшую задержку.

7 — Start Run: Кнопка для запуска коллекции

Шаг 3: В этом окне добавим коллекцию для запуска. Выбираем нашу коллекцию тестов, устанавливаем параметр Iterations в 2, delay в 2500ms и нажимаем кнопку запуска.

Шаг 4: После выполнения откроется отчет. В нашей коллекции были GET и POST запросы, но тесты мы добавляли только для GET-запроса. Поэтому в отчете рядом с POST-запросом показывается текст «This request doesn’t have any tests.» (для этого запроса нет тестов)

Концепции сетевого обмена: работа сетевых средств Oracle

Когда требуется открыть сеанс базы данных с клиента — будь то традиционный клиент или клиент на основе браузера — нужно подключиться к базе данных по сети. Предположим, что по существующей сети устанавливается подключение настольного компьютера к базе данных Oracle, расположенной на сервере UNIX в другой части города. Для этого требуется метод установки соединения между настольным компьютером и базой данных Oracle (предполагающий использование специализированного программного обеспечения), какой-либо интерфейс для проведения сеанса (в данном примере им будет SQL*Plus) и какой-нибудь способ обмена данными со стандартными сетевыми протоколами, такими как TCP/IP.

Для облегчения конфигурирования и управления сетевыми подключениями Oracle предлагает набор служб Oracle Net Services, представляющий собой комплект компонентов, которые предоставляют решения для обеспечения возможности подключения в распределенных гетерогенных компьютерных средах. Набор Oracle Net Services состоит из служб Oracle Net (Сеть Oracle), Oracle Net Listener (Служба прослушивания сети Oracle), Oracle Connection Manager (Диспетчер подключений Oracle), Oracle Net Configuration Assistant (Помощник по конфигурированию сети Oracle) и Oracle Net Manager (Диспетчер сети Oracle). Программное обеспечение Oracle Net Services устанавливается автоматически в процессе инсталляции программного обеспечения Oracle Database Server (Сервер баз данных Oracle) или Oracle Client (Клиент Oracle).

Oracle Net — программный компонент, который инициализирует, устанавливает и поддерживает подключения между клиентами и серверами. Поэтому компонент Oracle Net должен быть установлен как на клиенте, так и на сервере. Oracle Net состоит из следующих двух основных компонентов.

  • Oracle Network Foundation Layer (Базовый сетевой уровень Oracle). Отвечает за установку и поддержание подключения между клиентским приложением и сервером, а также за обмен сообщениями между ними
  • Oracle Protocol Support (Поддержка протокола Oracle). Отвечает за отображение функциональности TNS (Transparent Network Substrate — Прозрачная сетевая среда) на стандартные промышленные протоколы, используемые при подключениях.

Все серверы, содержащие базу данных Oracle, выполняют также службу Oracle Net Listener, слушатель сети Oracle (обычно называемый просто слушателем), основная функция которой — прослушивание запросов клиентов на вход в базу данных Oracle. Убедившись, что служба клиента обладает соответствующей информацией базы данных (протоколом, портом и именем экземпляра), слушатель передает запрос клиента базе данных. База данных позволит клиенту выполнить вход, если, конечно, подлинность его имени пользователя и пароля подтверждаются. Как только слушатель передаст запрос пользователя базе данных, клиент и БД окажутся в непосредственном контакте, не требующем никакой помощи со стороны службы прослушивания.

Oracle предлагает ряд утилит, построенных на основе графического интерфейса пользователя, которые призваны облегчить конфигурирование подключений к базам данных. В число этих утилит входит Oracle Connection Manager (Диспетчер подключений Oracle), Oracle Net Manager (Диспетчер сети Oracle) и Oracle Net Configuration Assistant (Помощник по конфигурированию сети Oracle). Названные программные средства могут помочь в удовлетворении всех потребностей, связанных с работой в сети. По завершении прочтения этой статьи просто щелкните на пиктограммах этих программ и начните экспериментировать с тестовыми подключениями.

Главный процесс и процесс отрисовки

Основное предназначение главного процесса — создание страниц с помощью экземпляра . Экземпляр использует процесс отрисовки для запуска каждой страницы.

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

Также возможно взаимодействие между главным процессом и процессом отрисовки. Однако, я не буду останавливаться на этом в текущей статье.

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

abcd.html показан в качестве второй веб-страницы в приведенной выше архитектуре. Но в нашем коде у нас не будет второй веб-страницы.

Параметризация запросов

Параметризация — одна из самых полезных особенностей Postman.

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

В Postman, параметры создаются с помощью двойных скобок: `test`.

Например, наш base URL — https://testengineer.ru и мы сохраняем это значение в переменной с именем base_url. В этом случае, мы можем обратиться к этой переменной из запроса, написав `base_url`. Для того, чтобы отправить запрос на этот URL, мы подставим эту переменную в запрос. Выглядеть это будет так: `base_url`/get?customers=new. Запрос будет отправлен на https://testengineer.ru/get?customers=new

Шаг 1: Меняем тип HTTP-запроса на GET и вводим URL:

Шаг 2: Меняем URL на параметр `url`. После этого URL запроса должен быть таким: `url`/users

Шаг 3: Теперь нам нужно создать переменную окружения, чтобы использовать ее в качестве параметра. Для этого нажимаем на кнопку с глазом и кликаем на Edit (редактировать), чтобы создать глобальную переменную и затем использовать ее в коллекциях.

Шаг 4: В окне создания переменной задаем имя (именем будет url) и значение (значением будет https://jsonplaceholder.typicode.com). После этого нажимаем Save (Сохранить)

Шаг 5: Возвращаемся к GET-запросу и нажимаем Send (отправить)

Если все сделано правильно, значение переменной, которую мы создали, будет подставлено вместо ее имени и запрос выполнится успешно.

Overview of Local Naming Parameters

The file is a configuration file that contains s mapped to s for the method, or net service names mapped to listener protocol addresses.

A net service name is an alias mapped to a database network address contained in a connect descriptor. A connect descriptor contains the location of the listener through a protocol address and the service name of the database to which to connect. Clients and database servers (that are clients of other database servers) use the net service name when making a connection with an application.

By default, the file is located in the directory. Oracle Net will check the other directories for the configuration file. For example, the order checking the file is as follows:

  1. The directory specified by the environment variable. If the file is not found in the directory specified, then it is assumed that the file does not exist.

  2. If the environment variable is not set, then Oracle Net checks the directory.

Note:

On Microsoft Windows, the environment variable is used if it is set in the environment of the process. If the environment variable is not defined in the environment, or the process is a service which does not have an environment, then Microsoft Windows scans the registry for a parameter.

Конфигурация OpenVPN сервера

Одна из услуг, которые мы больше всего ценим в NAS-сервере, — это включение VPN-сервера, в частности, TrueNAS имеет полный, легко настраиваемый сервер OpenVPN. Это позволит нам получить удаленный доступ к сети или безопасно получить доступ к общим ресурсам NAS. В меню конфигурации сервера OpenVPN мы можем загрузить сертификат сервера, а также центры сертификации, настроить желаемую подсеть TUN, топологию OpenVPN (обычная подсеть), включить алгоритмы аутентификации, шифрования и сжатия, а также возможность настройка TLS Crypt и даже дополнительных параметров.

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

Первое, что нам нужно сделать, это создать CA и связанные с ним сертификаты, необходимо создать новую PKI (Public Key Infrastructure). Мы переходим в раздел «Система / центры сертификации» и создаем новый с конфигурацией RSA 2048 или выше, хотя рекомендуется использовать 4096 или напрямую использовать EC. Мы рекомендуем использовать secp256k1 или brainpoolp256r1 вместо RSA.

После создания ЦС мы должны создать сертификат сервера и подписать его с ЦС, кроме того, мы должны также создать сертификаты клиентов VPN, которые будут подключаться. Параметр типа ключа должен быть таким же, как и в CA. Как только мы создадим сертификаты, они появятся в списке настроенных сертификатов. Если мы допустили ошибку, нам придется удалить сертификат и воссоздать его с новыми измененными данными.

Когда у нас есть сертификаты, мы можем выбрать их в меню конфигурации сервера OpenVPN, как вы можете видеть здесь:

После настройки мы можем нажать «Сохранить» и даже загрузить конфигурацию клиента, хотя мы рекомендуем вам следовать нашему руководству по настройке OpenVPN, чтобы подробно выполнить всю PKI в Linux, а затем импортировать необходимые сертификаты в TrueNAS таким образом. у вас будет максимально возможная безопасность.

Пока что мы пришли с этим руководством по TrueNAS CORE, одной из лучших операционных систем для NAS, которые в настоящее время существуют с ZFS.

Markdown

Некоторые люди ведут свою базу просто в текстовых файлах. Другие в каких-нибудь гугл документах.

И все эти варианты они ужасны.

В текстовых файлах нет форматирования. А какие-нибудь гугл-доки вообще не предназначены для документации. У них даже вид листика. Это значит, что они нужны для бумажных документов. Которые ты собственно будешь распечатывать. Иначе я не понимаю зачем там форма листка.

Можно так же использовать различные сервисы NOTION, Confluence.

Это отличные решения. У них только два минуса:

  • Платные.
  • Отсутствие гибкости. Какой дали тебе интерфейс, такой ты используешь. Ты не можешь ничего поменять.

Поэтому, мне лично нравится вариант, который уже сто лет используют программисты. Он используется как стандарт для описания проектов. Например, вы можете зайти практически на любой проект в гитхабе и увидеть там файл README.md он же отображается когда вы смотрите описание проекта.

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

Можете посмотреть тут как это работает — https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

И мне этот вариант нравится тем, что ты никак не ограничен инструментами. Ты можешь редактировать свою базу знаний в любом удобном лично для тебя редакторе. Я, например, редактирую в редакторах Vim или в Typora.

Мне оба варианта нравятся.

Для отображения базы знаний на локальной машине в принципе ничего не нужно.

Но при этом надо понимать, что во-первых, мы с вами можем захотеть синхронизировать нашу базу знаний между нашими устройствами. Ну, например, мы хотим что-то посмотреть с планшета.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector