пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В одной из статей мы рассказывали Вам, что такое Hadoop и с чем его едят. В этой статье мы подробно разберем, как развернуть кластер Hadoop с помощью сборки Cloudera. Почему Cloudera? Почему мы выбрали именно этот дистрибутив? Дело в том, что на текущий момент он является самым популярным и широко распространенным набором инструментов для работы с большими объемами данных. Кроме того, данный дистрибутив имеет в составе такое решение как Cloudera Manager этот инструмент позволяет без лишних телодвижений развернуть новый кластер, а также осуществлять управление и наблюдение за его состоянием. Стоит отметить, что распространение элементов данной сборки осуществляется в виде так называемых парселов пакетов информации в бинарной кодировке. Преимуществами такого решения являются упрощенная загрузка, взаимная согласованность компонентов, возможность единовременной активации всех необходимых установленных элементов, текущие (не кардинальные) обновления без прерывания рабочего процесса, а также простота восстановления после возникновения неполадок. Также важно представлять, для каких целей Вы будете использовать кластеры Hadoop. Это связано с тем, что для выполнения различных задач Вам потребуются разные варианты по аппаратной мощности. Как правило, конфигурации, используемые для хранения данных, имеют повышенную мощность, а значит, и более высокую стоимость. Требования к железу Проработав вопросы с железом, нужно подготовить для развертки кластера программную часть. Для установки и работы потребуется любая система на основе Ubuntu, а также популярными вариантами являются различные версии CentOS, RHEL и Debian. Эти сборки находятся в открытом доступе на сайте разработчика, поэтому с подготовкой сложностей возникнуть не должно. При установке на серверах будущего кластера при разбивке дисков стоит выделять около 70Гб под программную часть, около 1Гб для внутреннего участка памяти для выгрузки данных из кэша, остальную емкость можно оставить непосредственно для хранения данных. Установка Подготовив почву для установки, можно приступать непосредственно к процессу. Проверив соединение с серверами, их доступность и синхронизацию, а так же имеют одинаковые пароли root, а так же убедившись, что все сервера имеют доступ к сайту разработчика для обновления программной части, можно устанавливать непосредственно Cloudera Manager. Далее наше участие в процессе установки будет минимальным программа сама установит все необходимые компоненты. По ее завершению, можно запускать стандартную базу данных, и собственно саму программу. Далее приступим к, собственно, развертыванию кластера. Это удобнее делать через веб-интерфейс. В строку браузера вводим адрес сервера, затем войдем в систему по умолчанию логин и пароль admin и admin разумеется, первым делом меняем пароли. Далее выбираем версию дистрибутива. Есть бесплатный вариант с ограниченным функционалом, 60-дневная пробная версия и платная лицензия, предоставляющая наиболее полный набор функций, включая поддержку от производителя. При выборе базовой бесплатной версии можно будет в будущем активировать любую из оставшихся. Это актуально в случае, если программа Вам понравится, и вы приобретете базовые навыки работы с кластером. В процессе установки Cloudera Manager устанавливает соединение с серверами, входящими в кластер. По умолчанию используется root и одинаковое имя пользователя, поэтому важно чтобы пароли root на всех серверах были одинаковы. Следующим шагом станет указание хостов, куда будут устанавливаться рабочие элементы Hadoop, а также проверим, все ли сделано верно, и нет ли потерь. Затем выберем репозиторий, из которого будут скачиваться данные для установки, а также выберем вариант с использованием парселов, как и рекомендуется. Можно еще выбрать установку дополнительных инструментов актуальных версий поисковика SOLR и базы данных на основе Impala. Вводим параметры доступа по SSH и запускаем процесс установки. По окончании установки получаем отчет о всех установленных элементах и их актуальных версиях, после его изучения переходим к следующему этапу выбору вариантов установки дополнительных компонентов Hadoop. Начинающим специалистам рекомендуется выбирать полную установку со временем конфигурацию программных инструментов можно будет менять, удаляя неиспользуемые компоненты и добавляя необходимые. Также программа установки предложит выбрать, какие элементы будут установлены на серверах. Если все сделано правильно вариант "по умолчанию" будет наилучшим выбором. Далее нас ждет этап настройки базы данных. Настраиваем базу по умолчанию, либо выбираем альтернативный вариант, а также обязательно проверяем, как она работает. После этого настраиваем отдельные элементы в составе нашего кластера и запускаем процесс настройки по выбранным параметрам. По завершению настройки можно переходить к экрану мониторинга кластера, куда выводятся все данные по входящим в кластер серверам.
img
В этой статье произведем настройку туннеля IPSec между Palo Alto и Cisco ASA Firewall . Далее будет использован брандмауэр Palo Alto с прошивкой PANOS 8.1.10 . Хотя, конфигурация почти такая же и в других версиях PANOS . Для понимания этой статьи вам необходимы базовые знания по IPSec VPN. Для настройки этой конфигурации вам не нужна дополнительная лицензия на обоих устройствах. Для настройки туннеля IPSec необходимо иметь статический маршрутизируемый IP- адрес. Итак, давайте начнем настройку!   Как настроить IPSec VPN между Cisco ASA и брандмауэром Palo Alto Что нужно сделать - настроить туннель IPSec между Cisco ASA и брандмауэром Palo Alto Как выше говорилось, вам понадобиться статический маршрутизируемый IP-адрес как в Palo Alto, так и в брандмауэре Cisco ASA. В этом примере я использую два маршрутизируемых IP- адреса на обоих брандмауэрах Palo Alto и Cisco ASA (между ними настроена связь, и они доступны друг другу). IP-адрес 1.1.1.1 настроен на брандмауэре Cisco ASA и 2.2.2.2 настроен на брандмауэре Palo Alto как показано ниже: Как вы заметили, подсеть LAN 192.168.1.0/24 связана с Cisco ASA, а с другой стороны, подсеть LAN 192.168.2.0/24 связана с брандмауэром Palo Alto. Прежде чем перейти к части конфигурации, просто проверьте доступность обоих устройств с помощью утилиты ping . admin@PA-220> ping host 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data 64 bytes from 1.1.1.1: icmp_seq1 ttl=64 time=0.177 ms 64 bytes from 1.1.1.1: icmp_seq2 ttl=64 time=0.157 ms Шаги по настройке туннеля IPSec на брандмауэре Palo Alto Во-первых, мы настроим туннель IPSec на брандмауэре Palo Alto. Для настройки фазы 1 и фазы 2 туннеля IPSec в Palo Alto необходимо выполнить следующие действия. Создание зоны безопасности на брандмауэре Palo Alto Во-первых, нам нужно создать отдельную зону безопасности на брандмауэре Palo Alto. Для того чтобы настроить зону безопасности, вам нужно перейти Network >> Zones>> Add . Здесь вам нужно указать название зоны безопасности. Вы можете ввести любое удобное имя. Создание туннельного интерфейса на брандмауэре Palo Alto Вам необходимо определить отдельный виртуальный туннельный интерфейс для туннеля IPSec. Чтобы определить интерфейс туннеля, перейдите в раздел Network >> Interfaces>> Tunnel . Выберите виртуальный маршрутизатор, который в моем случае используется по умолчанию. Кроме того, в файле зоны безопасности необходимо выбрать зону безопасности, определенную на Шаге 1. Хотя для этого интерфейса вам не нужно указывать IP-адрес IPv4 или IPv6. Кроме того, вы можете прикрепить профиль управления на вкладке Advanced , если вам это нужно. Определение IKE Crypto Profile [Фаза 1 туннеля IPSec] Теперь вам нужно определить фазу 1 туннеля IPSec. Вам нужно зайти Network >> Network Profiles >> IKE Crypto >> Add . Здесь вам нужно дать дружественное имя для IKE Crypto profile . Затем определите DH группу, метод шифрования и аутентификации. По умолчанию срок службы ключа составляет 8 часов. Вы можете изменить его в соответствии с вашим требованием. Определение Crypto Profile IPSec [Фаза 2 туннеля IPSec] Теперь вам нужно определить фазу 2 туннеля IPSec. Вам нужно перейти Network>> Network Profiles >> IPSec Crypto >> Add . Здесь, вы должны дать понятное имя для профиля шифрования по протоколу IPSec. Выберите протокол IPsec в соответствии с вашими требованиями. У вас есть ESP (Encapsulation Security Protocol) и AH (Authentication Header) протокол для IPSec. Затем определите группу DH , метод шифрования и аутентификации. По умолчанию срок службы ключа составляет 1 час. Вы можете изменить его в соответствии с вашим требованием. Определение профиля шлюза IKE Теперь вам нужно перейти Network >> Network Profiles >> IKE Gateways >> Add . На вкладке Общие (General) необходимо определить имя профиля шлюза IKE . В поле Interface вам нужно ввести/определить свой интернет-интерфейс, в моем случае ethernet1/1 , который имеет IP-адрес 2.2.2.2 . Установите переключатель в поле Peer IP Address Type в IP . Укажите адрес в поле Peer address , в моем случае 1.1.1.1 . Выберите метод аутентификации в поле Authentication , т. е. выберите или общий ключ ( Pre Shared Key ) или сертификат ( Certificate ). В этом сценарии я использую предварительный общий ключ ( Pre-shared Key ). Затем определите предварительный общий ключ ( Pre-shared Key ) и запишите его, потому что он нужен для определения в FortiGate Firewall . Введите в поля Local Identification и Peer Identification локальный и удаленный IP-адреса. Нажмите на Advanced Option , в IKEv1 выберите Ike Crypto Profile , который определяется на Шаге 3. Создание туннеля IPSec Мы определили шлюз IKE и IPSec Crypto profile для нашего туннеля IPSec. Теперь мы должны определить туннель IPSec. Перейдите в раздел Network >> IPSec Tunnels >> Add . Определите удобное имя для туннеля IPSec. Затем выберите туннельный интерфейс, который определен в шаге 2. Выберите профили для Ike Gateway и IPsec Crypto Profile , которые определены в шаге 3 и шаге 5 соответственно. Перейдите на вкладку идентификаторы ( IDs ) прокси-серверов и определите локальные и удаленные сети. В этом сценарии я использую подсети 192.168.1.0/24 и 192.168.2.0/24 в LAN. Создание политики безопасности для туннельного трафика IPSec Теперь вам нужно создать профиль безопасности, который позволяет передавать трафик из зоны VPN в зону доверия. Вам нужно перейти Policies >> Security >> Add , чтобы определить новую политику. Настройка маршрута для одноранговой частной сети Теперь вам нужно предоставить статический маршрут для частной сети. Просто перейдите в раздел Network >> Virtual Routers >> Default >> Static Routes >> Add . Выберите имя для этого маршрута и определите целевую сеть для этого маршрута, т.е. 192.168.1.0/24 в данном примере. Выберите следующий переход к туннельному интерфейсу, который определен в шаге 2. Мы закончили настройку туннеля IPSec в брандмауэре Palo Alto . Теперь мы настроим туннель IPSec в FortiGate Firewall . Этапы настройки туннеля IPSec в брандмауэре Cisco ASA Теперь мы настроим туннель IPSec в брандмауэре Cisco ASA. Здесь, в этом примере, я использую программное обеспечение Cisco ASA версии 9.8 (1) . Хотя конфигурация туннеля IPSec такая же и в других версиях. Ниже показаны основные шаги настройки IPSec на Cisco ASA: Настройка фазы 1 (IKEv1) Определение туннельной группы (Tunnel Group) и предварительного общего ключа (Pre-Shared Key) Настройка фазы 2 (IPSec) Настройка расширенного ACL (Extended ACL) и криптографической карты (Crypto Map) Итак, давайте начнем настройку с настройки фазы 1 Cisco ASA. Перейдите в режим глобальной конфигурации Cisco ASA и начните с приведенных ниже команд Настройка фазы 1 (IKEv1) на Cisco ASA ciscoasa(config)# crypto ikev1 enable outside ciscoasa(config)# crypto ikev1 policy 10 ciscoasa(config-ikev1-policy)# authentication pre-share ciscoasa(config-ikev1-policy)# encryption 3des ciscoasa(config-ikev1-policy)# hash md5 ciscoasa(config-ikev1-policy)# group 2 ciscoasa(config-ikev1-policy)# lifetime 7200 Теперь давайте быстро разберемся в значении каждой команды. Encryption: 3des – используется для шифрования трафика фазы 1 Хэш: md5 – это алгоритм хеширования. Он аутентифицирует наши данные с помощью хэша Group: 2 – Диффи Хеллман группа 2 Authentication – в этом примере мы используем предварительный общий ключ в качестве аутентификации Lifetime: 7200 – 86400 срок службы по умолчанию для Фазы 1 В Cisco ASA нам нужно включить криптографию IKEv1 к интерфейсу, обращенному к интернету. Итак, мы можем сделать это с помощью приведенной ниже команды: ciscoasa(config)# crypto ikev1 enable outside Настройка туннельной группы и предварительного общего ключа на Cisco ASA Теперь нам нужно определить туннельный интерфейс и предварительный общий ключ. В этой статье я использую сеть GNS3 в качестве предварительного общего ключа. ciscoasa(config)# tunnel-group 2.2.2.2 type ipsec-l2l ciscoasa(config)# tunnel-group 2.2.2.2 ipsec-attributes ciscoasa(config-tunnel-ipsec)# ikev1 pre-shared-key GNS3Network Настройка IPSec IKEv1 (Фаза 2) Здесь нам нужно определить методы шифрования и аутентификации для IPSec Фазы 2 ciscoasa(config-ikev1-policy)# crypto ipsec ikev1 transform-set ESP-AES-SHA esp-3des esp-md5-hmac ciscoasa(config)# crypto ipsec security-association lifetime seconds 7200 А теперь давайте быстро разберемся в каждой команде. ESP: ESP означает инкапсулирование полезной нагрузки безопасности, и это протокол IPSec 3DES: 3DES – это один из алгоритмов шифрования MD5: MD5 – это алгоритм хеширования, который используется для поддержания целостности данных 7200 секунд: срок службы ключа IPSec Phase2 Настройка криптографической карты (Crypto MAP) и расширенного ACL (Extended ACL) для разрешения трафика IPSec на Cisco ASA Это заключительный этап нашей конфигурации. Здесь нам нужно определить расширенный ACL , чтобы разрешить трафик. Кроме того, здесь нам нужно настроить криптокарту и вызвать настроенную криптокарту на внешний интерфейс. Я настраиваю два адресных объекта для упрощения списка управления доступом (ACL). Адресный объект и расширенный ACL для разрешения трафика ciscoasa(config)# object-group network local-network ciscoasa(config-network-object-group)# network-object 192.168.1.0 255.255.255.0 ciscoasa(config-network-object-group)# object-group network remote-network ciscoasa(config-network-object-group)# network-object 192.168.2.0 255.255.255.0 ciscoasa(config-network-object-group)# access-list asa-paloalto-vpn extended permit ip object-group local-network object-group remote-network Настройка криптографической карты ciscoasa(config)# crypto map outside_map 10 match address asa-paloalto-vpn ciscoasa(config)# crypto map outside_map 10 set pfs group2 ciscoasa(config)# crypto map outside_map 10 set peer 2.2.2.2 ciscoasa(config)# crypto map outside_map 10 set ikev1 transform-set ESP-AES-SHA Включение криптокарты на внешнем интерфейсе ciscoasa(config)# crypto map outside_map interface outside Инициирование туннеля IPSec и проверка трафика с помощью Wireshark На этом этапе мы просто должны инициировать трафик по туннелю IPSec. Если обе фазы туннеля IPSec работают, то ваша настройка идеальна. Итак, давайте получим доступ к CLI брандмауэра Palo Alto и инициируем туннель IPSec: admin@PA-VM>test vpn ipsec-sa admin@PA-VM>test vpn ipsec-sa Теперь давайте получим доступ к туннелям Device >> IPSec и проверим состояние только что созданного туннеля IPSec! Если оба фазовых туннеля находятся в состоянии UP , то они будут выглядеть так, как показано на рисунке ниже: А теперь давайте запустим трафик с одного из брандмауэров. Я инициирую движения в направлении Palo Alto межсетевой экран от Cisco ASA. ciscoasa# ping 192.168.2.1 Type escape sequence to abort Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds: ?!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 30/30/30 ms Первый пакет отбрасывается только из-за запроса и ответа ARP. Больше никакой пакет не будет отброшен. Необязательно: если вы пытаетесь инициировать трафик от IP интерфейса Cisco ASA (т.е. в данном примере), вам нужно разрешить доступ управления к подсети. ciscoasa(config)# management-access inside Устранение неполадок в туннеле IPSec В этой части этой статьи мы обсудим некоторые основные команды, которые помогут вам устранить неполадки туннеля IPSec, настроенного между Cisco ASA и маршрутизатором Cisco. Устранение неполадок туннеля IPSec на брандмауэре Cisco ASA ciscoasa# show running-config ipsec ciscoasa# show running-config crypto ikev1 ciscoasa# show running-config crypto map Устранение неполадок IPSec-туннель на брандмауэре Palo Alto Давайте откроем Monitor >> System и воспользуемся фильтром "(subtype eq vpn)" . Здесь вы найдете все журналы, связанные с VPN. Если у вас возникли проблемы с туннелем IPSec, вы можете использовать следующие команды для запуска туннеля IPSec: admin@PA-CM>test vpn ipsec-sa admin@PA-CM>test vpn ipsec-sa Анализ трафика IPSec через Wireshark Во время настройки туннеля IPSec мы определили ESP (Encapsulating Security Payload) как протокол IPsec, поэтому весь реальный трафик, который идет к одноранговому концу, будет зашифрован с помощью этого протокола. Таким образом, вы найдете только ESP- пакеты в захвате пакетов, как показано ниже Резюме В этой статье мы настраиваем туннель IPSec между брандмауэром Cisco ASA и брандмауэром следующего поколения Palo Alto. Мы также обсудили алгоритмы шифрования и аутентификации. Однако для настройки IPSec VPN между двумя удаленными сетями необходимо использовать статические маршрутизируемые IP-адреса.
img
Объектно-реляционное отображение (ORM - Object Relational Mapping) – это метод, который используется для создания «моста» между объектно-ориентированными программами и, как правило, реляционными базами данных.  Иначе говоря, ORM можно рассматривать как слой, который соединяет объектно-ориентированное программирование (ООП) с реляционными базами данных. Когда вы взаимодействуете с базой данных с помощью языков ООП, то вы выполняете различные операции, такие как создание (creating), чтение (reading), обновление (updating) и удаление (deleting) (CRUD) данных. По умолчанию для выполнения этих операций в реляционной базе данных вы используете SQL. Хоть использование SQL для данной цели не считается плохим вариантом, но ORM и его инструменты все же могут помочь упростить взаимодействие между реляционными базами данных и различными языками ООП. Что такое инструмент объектно-реляционного отображения? Инструмент объектно-ориентированного отображения (ORM) – это программное обеспечение, которое было разработано для того, чтобы помогать разработчикам ООП взаимодействовать с реляционными базами данных. В связи с этим, вместо того, чтобы создавать свое собственное программное обеспечение, вы можете воспользоваться этими готовыми инструментами.  Ниже приведен фрагмент кода, написанный на SQL, с помощью которого можно извлечь информацию о конкретном пользователе из базы данных: "SELECT id, name, email, country, phone_number FROM users WHERE id = 20" Приведенный выше программный код возвращает определенную информацию о пользователе –  name (имя),  email (электронную почту),  country (страну проживания),  phone_number (номер телефона) – из таблицы под названием  users  (пользователи). Мы использовали оператор  WHERE и, тем самым, указали, что нам необходима информация о пользователе,  id (идентификационный номер) которого равен 20.  При этом, с помощью инструмента ORM можно выполнить аналогичный запрос, и здесь подход будет более простой: users.GetById(20) Итак, приведенный выше код выполняет ту же функцию, что и SQL-запрос. Имейте в виду, что каждый инструмент ORM построен по-разному, поэтому и методы у них разные, но их назначение одно и то же.  Инструменты ORM могут вызывать методы, подобные тому, который мы использовали в последнем примере. Большая часть языков ООП имеют огромное количество инструментов ORM. Вы можете выбрать тот, что вам больше понравится. Ниже приведен список некоторых популярных инструментов для разработки на Java, Python, PHP и .NET: Популярные инструменты ORM для разработки на Java: Hibernate Hibernate позволяет разработчикам создавать классы постоянного хранения согласно концепциям ООП, таким как наследование, полиморфизм, ассоциация и композиция. Этот инструмент является высокопроизводительным и масштабируемым.  Apache OpenJPA Apache OpenJPA также является инструментом Java для поддержки постоянного хранения данных. Его можно использовать в качестве самостоятельного уровня поддержки постоянного хранения данных простого объекта языка Java.  EclipseLink EclipseLink – это общедоступное технологическое решение Java для поддержки постоянного хранения данных для реляционных данных, XML-элементов и веб-служб баз данных.  jOOQ jOOQ создает Java-код на основе данных, которые хранятся в базе данных. Этот инструмент можно использовать для написания безопасных SQL-запросов.  Oracle TopLink Инструмент Oracle TopLink можно использовать для создания высокопроизводительных приложений, которые хранят данные постоянного хранения. Данные могут быть преобразованы в реляционные данные или в XML-элементы. Популярные инструменты ORM для разработки на Python: Django Django – это замечательный инструмент для быстрой разработки веб-приложений.  web2py web2py – это полномасштабная среда Python с открытым исходным кодом. Она используется для разработки быстрых, масштабируемых, безопасных веб-приложений с управлением данными.  SQLObject SQLObject – это объектно-реляционная программа управления, которая предоставляет интерфейс объекта для вашей базы данных.  SQLAlchemy SQLAlchemy предоставляет шаблоны постоянного хранения данных, которые необходимы для эффективного и высокопроизводительного доступа к базе данных.  Популярные инструменты ORM для разработки на PHP: Laravel Laravel идет совместно с объектно-реляционной программной управления, известной как Eloquent, которая упрощает взаимодействие с базами данных.  CakePHP CakePHP предусматривает два типа объектов: репозитории, которые дают вам доступ к набору данных, и сущности, которые представляют собой отдельные записи данных.  Qcodo Qcodo предоставляет различные команды для взаимодействия с базами данных, которые можно запускать в терминале.  RedBeanPHP RedBeanPHP – это средство объектно-реляционного отображения без настройки.  Популярные инструменты ORM для разработки на .NET: Entity Framework Entity Framework – это модуль сопоставления объектной базы данных с несколькими базами данных. Этот инструмент поддерживает SQL, SQLite, MySQL, PostgreSQL и Azure Cosmos DB. NHibernate NHibernate – это средство объектно-реляционного отображения с открытым исходным кодом. У него есть огромное количество подключаемых модулей и инструментов, которые упрощают и ускоряют процесс разработки. Dapper Dapper – это микро-ORM. Преимущественно его используют для сопоставления запросов с объектами. Этот инструмент не способен выполнять большее количество функций, которые бы осилил обычный инструмент ORM, например, генерация SQL-запросов, кэширование результатов, отложенная выборка данных и т.д.  Base One Foundation Component Library (BFC) BFC – это платформа для разработки сетевых приложений баз данных с помощью Visual Studio и СУБД от Microsoft, Oracle, IBM, Sybase и MySQL. А теперь давайте обсудим некоторые преимущества и недостатки использования инструментов ORM. Преимущества использования инструментов ORM Ниже приведен список некоторых преимуществ использования инструментов ORM: Ускоряет время разработки. Снижает стоимость разработки. Выполняется обработка логики, которая необходима для взаимодействия с базами данных. Улучшает безопасность. Инструменты ORM созданы для того, чтобы избежать возможности SQL-инъекций.  Если вы используете инструменты ORM, то количество кода, который вам надо написать, уменьшается в сравнении с тем, если бы вы использовали SQL. Недостатки использования инструментов ORM Изучение принципов работы инструментов ORM может занять много времени. Есть вероятность, что они не сильно помогут, если вы будете использовать слишком сложные запросы. Как правило, ORM медленнее, чем SQL. Заключение В этой статье мы с вами говорили об объектно-реляционном отображении (ORM). Этот подход используется для подключения объектно-ориентированных программ к реляционным базам данных. Мы перечислили некоторые популярные инструменты ORM, которые могут работать с различными языками программирования.  И завершили мы все это списком некоторых преимуществ и недостатков использования инструментов ORM.  
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59