eigrp пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Что такое функциональное программирование? Функциональное программирование (также его сокращенно называют ФП) – это своего рода философия создания программного обеспечения путем создания чистых функций. ФП избегает концепций разделяемых состояний и изменяемых данных, которые есть в объектно-ориентированном программировании.  Языки функционального программирования делают упор на выражениях и объявлениях, а не на выполнении операторов. Соответственно, в отличие от других процедур, которые зависят от локального и глобального состояния, значение на выходе в ФП зависит только от аргументов, которые были переданы функции.  Характеристики функционального программирования Функциональное программирование сосредоточено на результате, а не на процессе ФП делает акцент на том, что должно быть вычислено Данные являются неизменяемыми Функциональное программирование разбивает задачу на «функции» ФП построено на концепции математических функций, которые для вычислений используют условные выражения и рекурсию ФП не поддерживает итерирование, например, операторы цикла и условные операторы, такие как if-else История функционального программирования Основа функционального программирования – это лямбда-исчисление. Оно было разработано в 1930-х годах для функционального применения, определения и рекурсии LISP – первый язык функционального программирования. Его разработал Маккарти в 1960 году В конце 70-х годов исследователи из Эдинбургского университета определили ML (Meta Language - метаязык). В начале 80-х годов язык Hope привнес алгебраические типы данных для рекурсии и эквациональных рассуждений В 2004 году появился новый язык функционального программирования «Scala» Языки функционального программирования Цель любого языка ФП – имитация математических функций. Однако базовая технология вычислений в функциональном программировании все же отличается. Ниже приведены некоторые самые известные языки функционального программирования: Haskell SML Clojure Scala Erlang Clean F# ML/OCaml Lisp/Scheme XSLT SQL Mathematica Основная терминология и базовые концепции функционального программирования Неизменяемые данные Неизменяемые данные подразумевают, что вам нужно просто создавать структуры данных вместо того, чтобы менять уже существующие. Ссылочная прозрачность Функциональные программы должны выполнять операции так, как если бы они это делали впервые. В этом случае вы будете знать, что могло или не могло произойти в процессе выполнения программы, а также ее побочные эффекты. В терминах ФП это называется ссылочной прозрачностью. Модульный принцип организации Модульная архитектура повышает производительность. Небольшие модули быстро пишутся, и есть большая вероятность, что они будут повторно использованы, а это, конечно, приводит к более быстрому процессу разработки программ. Помимо всего прочего, модули можно тестировать отдельно, что помогает сократить время, которое затрачивается на модульное тестирование и отладку.  Удобство сопровождения Удобство сопровождения – это несложный термин, который означает, что ФП-программы легче поддерживать, так как вам не нужно беспокоиться о том, что за пределами функции может что-то измениться.   Полноправная функция  «Полноправная функция» - это определение, которое относится к сущностям языка программирования, которые не имеют ограничений на использование. Как следствие, полноправные функции могут появляться в программе где угодно. Функция-замыкание Функция-замыкание – это внутренняя функция, которая может обращаться к переменным родительской функции даже после того, как та была выполнена. Функции высшего порядка Функции высшего порядка могут либо принимать другие функции в качестве аргументов, либо возвращать их в качестве результата.  Функции высшего порядка допускают частичное применение или каррирование. Этот механизм подразумевает, что функция применяется к своим аргументам по очереди, поскольку каждое такое применение возвращает новую функцию, которая уже принимает следующий аргумент. Чистая функция «Чистая функция» - это функция, входные параметры которой объявляются как входы, и ни один из них не может быть скрыт, а результаты объявляются как выходы. Чистые функции работают со своими параметрами. Это не очень эффективно, когда функция ничего не возвращает. Кроме того, они выдают один и тот же результат для заданных параметров.  Пример: Function Pure(a,b) { return a+b; } Функции с побочным эффектом Функции с побочным эффектом работают прямо противоположно тому, как работают чистые функции. У них есть скрытые входы и выходы; это и называется «с побочным эффектом». Функции с побочным эффектом нельзя использовать и тестировать в изолированной среде, так как у них есть зависимости. Пример: int z; function notPure(){ z = z+10; } Композиция функций Композиция функций – это объединение двух или более функций с целью создать одну. Разделяемые состояния Разделяемые состояния – это немаловажная концепция в ООП. Попросту говоря, это добавление свойств к объекту. Например, если «Жесткий диск» является объектом, то «Емкость запоминающего устройства» и «Размер диска» можно добавить в качестве свойств.  Побочные эффекты Побочные эффекты – это любые изменения состояния, которые происходят вне функции, которую мы вызвали. Самая главная цель ФП – минимизировать количество побочных эффектов, изолировав их от остального программного кода. Для функционального программирования важно, чтобы в остальной логике программы побочных эффектов не было. Преимущества функционального программирования Позволяет избежать ошибок и проблем в коде, которые сбивают в толку ФП-код проще тестировать, для него проще выполнять модульное тестирование и отладку кода Параллельное выполнение и конкурентность Быстрое развертывание кода и устойчивость к сбоям Предлагает лучший модульный принцип организации с более коротким кодом Повышенная продуктивность разработчиков Поддерживает вложенные функции Конструкции функционального программирование, такие как Lazy Map и Lazy List и т.д. Позволяет эффективно использовать лямбда-исчисление Недостатки функционального программирования Парадигма функционального программирования не так уж проста, так что в ней трудно будет разобраться новичку Программы трудны в сопровождении, поскольку очень много объектов дорабатываются в процессе написания кода Требуются частые замены реализации объекта имитированной реализацией, а также серьезная настройка системной среды Повторное использование достаточно затруднительно и требует постоянной реорганизации исходного кода Объекты могут некорректно моделировать задачу Сравнение функционального программирования и объектно-ориентированного программирования Функциональное программирование ООП ФП использует неизменяемые данные ООП использует изменяемые данные Придерживается модели декларативного программирования Придерживается модели императивного программирования Фокусируется на том, что вы делаете в программе Фокусируется на том, как вы пишете код Поддерживает параллельное программирование Не поддерживает параллельное программирование У его функций нет побочных эффектов Функции могут выдавать много побочных эффектов Управление потоками выполняется путем вызовов функций с рекурсией и без нее Управление потоками выполняется с помощью циклов и условных операторов Порядок выполнения операторов не важен Порядок выполнения операторов важен Поддерживает как абстракцию данных, так и абстракцию поведения Поддерживает только абстракцию данных Заключение Функциональное программирование, или ФП, - это своего рода философия создания программного обеспечения, которая основана на некоторых фундаментальных определяющих принципах Концепции функционального программирования делают уклон в сторону результатов, а не самого процесса Цель любого ФП-языка – имитация математических функций Некоторые самые известные языки функционального программирования: 1) Haskell; 2) SM; 3) Clojure; 4) Scala; 5) Erlang; 6) Clean «Чистая функция» - это функция, входные параметры которой объявлены как входы, и ни один из них не должен быть скрыт, а результаты объявлены как выходы Неизменяемость данных подразумевает то, что вы должны просто создавать новые структуры данных вместо того, чтобы менять уже существующие Позволяет избежать проблем и ошибок в коде, которые сбивают с толку Функциональный код не так прост, поэтому новичку будет сложно его понять ФП использует неизменяемые данные, а ООП – изменяемые
img
Профессия Flutter-разработчика набирает популярность. Этот специалист создает кроссплатформенные мобильные приложения для iOS и Android с использованием фреймворка Flutter. Разберемся, какими навыками должен обладать Flutter-разработчик, почему в современном мире они так нужны и с чего начать. Что такое Flutter и как он работает Flutter — это open-source  фреймворк от Google для кросс-платформенных приложений. Его главная особенность — приложения создаются с единой кодовой базой. А это сильно экономит время и ресурсы разработчиков. Flutter использует язык программирования Dart. Он компилируется в машинный код и обеспечивает высокую производительность приложений. Кроме того, у Flutter есть собственный набор виджетов для разработки UI, что делает интерфейсы гибкими и отзывчивыми. Запуск Flutter: идея кроссплатформенности История Flutter начинается в 2015 году, когда Google начала работу над новым проектом Sky. Основная идея было в том, чтобы сделать инструмент для разработки приложений с одинаковым пользовательским интерфейсом и для Android, и для iOS. Позже проект трансформировался в нечто большее: Google создала целый фреймворк для работы с единой кодовой базой для нескольких платформ. Преимущества и недостатки фреймворка  Несмотря на популярность у фреймворка есть преимущества и недостатки, которые важно учитывать при выборе инструмента для разработки. Преимущества Недостатки Кроссплатформенность: с его помощью можно написать приложения под Android, iOS, Windows, macOS, Linux и даже веб-приложения. Высокая производительность: приложения на Flutter работают почти так же быстро, как нативные, благодаря компиляции в машинный код. Открытый исходный код: это open-source проект, что означает доступ к коду, постоянные обновления и множество бесплатных инструментов для работы.  Гибкость интерфейсов: разработчики могут создавать уникальные и сложные пользовательские интерфейсы. Они одинаково хорошо выглядят на разных платформах. Поддержка от Google: крупная компания стояла за разработкой и активно продвигала фреймворк. Функция Hot Reload: инструмент позволяет Flutter-разработчикам мгновенно видеть изменения в коде без перезапуска приложения. Это ускоряет процесс разработки, тестирования и отладки, так как изменения появляются в реальном времени.   Большой размер приложений: по сравнению с нативными приложения весят больше. У фреймворка есть собственный рендеринг и необходимые библиотеки, что увеличивает итоговый вес приложения. Ограниченная поддержка платформ: поддержка Windows, macOS и Linux все еще находится в стадии активного развития. Это может ограничить использование фреймворка для крупных десктопных проектов. Ограниченный доступ к нативным API: некоторые специфические или новые функции могут быть недоступны и требовать написания нативного кода. Это усложняет разработку. Относительно молодое сообщество: у фреймворка меньше готовых решений, библиотек и инструментов для решения узкоспециализированных задач. Кривые обновления фреймворка: иногда обновления Flutter могут ломать совместимость с существующими плагинами или библиотеками. Проблемы с SEO для веб-приложений: для веб-разработки есть ряд ограничений по SEO-оптимизации. Большая часть контента рендерится через JavaScript, что может снизить видимость сайта в поисковых системах. Язык Dart  Для Flutter был выбран язык программирования Dart, который появился еще в 2011 году. До выхода фреймворка он не пользовался широкой популярностью. Основное преимущество Dart — это его производительность, простота и возможность компиляции в машинный код. Поэтому приложения на Flutter максимально производительные. Синтаксис у Dart схож с Java, JavaScript и C#. Это делает его интуитивно понятным для разработчиков. Простота и логичность синтаксиса — одно из ключевых преимуществ Dart и облегчает процесс обучения. Какие навыки нужны, чтобы стать Flutter-разработчиком Flutter-разработчику нужны навыки, которые помогают эффективно работать с фреймворком и создавать качественные кроссплатформенные приложения. Вот основные из них: Знание языка программирования Dart. Глубокое понимание синтаксиса и особенностей языка программирования — основа для работы с фреймворком. Важно освоить статистическую и динамическую типизацию, объектно-ориентированное и асинхронное программирование.  Работа с Flutter SDK. Необходимо уверенно работать с различными библиотеками и плагинами приложения, уметь настраивать окружения для Android и iOS Понимание принципов кроссплатформенной разработки. Важно знать, как оптимизировать код для Android, iOS и веб, особенности пользовательских интерфейсов и UX на каждой платформе и способы работы с нативными функциями и API. Разработка пользовательских интерфейсов (UI). Flutter-разработчик владеет основными виджетами, понимает концепции программирования UI, работает с Material Design (для Android) и Cupertino (для iOS), настраивает анимацию и сложные интерфейсы. Оптимизация и работа с производительностью. Чтобы приложения работали быстро, важно понимать основы работы с рендерингом и отрисовкой UI и уметь решать проблемы снижения скорости.  Знание основ мобильной разработки. Полезно иметь знания по архитектуре мобильных приложений, работе с API и сторонними сервисами и пониманию жизненного цикла приложений на Android и iOS. Работа с базами данных и сетевыми запросами. Многие приложения работают с удалёнными серверами и базами данных. Поэтому важно уметь работать с REST API и JSON, понимать различия SQL и noSQL и использовать библиотеки для сетевых запросов hppt или dio. Контроль версий Git и командная работа. Для эффективной работы в команде необходимо владеть системой контроля версий Git и знать основы CI/CD (непрерывная интеграция и доставка) для автоматизации процессов сборки и тестирования. Тестирование. Flutter поддерживает три уровня тестирования: модульное, интеграционное и тестирование пользовательских интерфейсов (UI). Важно уметь писать тесты проверки и настраивать интеграционные тесты. Сколько зарабатывает Flutter-разработчик Зарплата разработчика Flutter зависит от этапа карьеры и компании:  junior может получать от 100 000 рублей,  middle с опытом от 1 до 3 лет — более 200 000 рублей. Для сеньоров с большим опытом есть вакансии от 300 000 рублей. На хх.ру предложений не так много — по запросу «Flutter» мы нашли 315 вакансий. Источник:  hh.ru Кому стоит рассмотреть Flutter-разработку Flutter — хороший выбор для тех, кто только-только начинает изучать мобильную разработку. Фреймворк интуитивно понятен и имеет огромное количество обучающих ресурсов. Dart легко освоить, особенно если у вас уже есть база из JavaScript или Java. Фреймворк подойдёт и нативным разработчикам. Если вы имеете опыт работы с Android (Kotlin/Java) или iOS (Swift/Objective-C), то сможете легко освоить Flutter и расширить свои навыки, чтобы создавать приложения для обеих платформ одновременно. Итак Flutter-разработка — это перспективное направление для тех, кто хочет создавать кроссплатформенные мобильные приложения. Фреймворк предлагает множество преимуществ. Специалисты, владеющие Flutter имеют отличные перспективы для карьерного роста.
img
Такой большой и интересный инструмент - а разворачивать как? В одной из предыдущих статей мы знакомились с таким инструментом разработчика, как ELK. Сегодня мы разберемся, как правильно подготовить этот комплекс для практической работы. Для начала напомним, что ELK это один из наиболее удобных инструментов разработчика, предназначенный для быстрого выявления неполадок в работе объемных программ путем сбора и анализа логов. Этот комплекс состоит из трех приложений: поисковика Elasticsearch, сборщика данных Logstash и визуализатора Kibana. Весь комплекс разрабатывается компанией Elastic. Ознакомимся с системными требованиями. На каждом из серверов в системе рекомендуется иметь не менее 8 физических ядер и не менее 48 Гб оперативной памяти. Кроме того, если данные планируется собирать с крупной системы, то объем внутренней памяти будем оценивать по принципу "чем больше тем лучше". 8 Тб это рекомендуемые требования, но этот показатель может варьироваться. Ну и, разумеется, чем выше скорость соединения между серверами - тем быстрее будет проводиться обработка информации. Рекомендуемый показатель - 1Гб/с. Система из трех таких серверов позволит обрабатывать до тысячи событий в секунду, собирать и отображать 95% данных за отдельные периоды времени (5 минут, сутки),хранить данные до 90 дней и обслуживать до 10 клиентов по протоколу HTTP одновременно. Поскольку все элементы данного решения реализованы на Java, первым делом нужно установить актуальную версию Oracle Java. Также рекомендуется изучить дополнительную информацию о компонентах ELK на предмет совместимости версий. Если на Вашей рабочей станции установлены Ubuntu или Debian, устанавливаем соединение с репозиторием для скачивания Oracle Java. Если вы пользуетесь CentOS то качаем программную среду на сервер с сайта разработчика. После того, как процесс установки завершится рекомендуется проверить актуальную версию с помощью соответствующей команды консоли. Если все хорошо, то это значит, что почва подготовлена, и можно переходить к следующему этапу А им станет скачивание и установка поискового инструмента Elasticsearch. Это также не вызовет особой сложности достаточно скопировать в систему публичный ключ репозитория, установить с ним соединение (пользователи Debian и Ubuntu могут столкнуться с отсутствием загрузочного пакета apt-transport-https его нужно будет установить дополнительно), скачать актуальную версию Elasticsearch и запустить процесс установки. Чтобы работа приложения была корректной, его стоит добавить в автозагрузку. Затем проверяем, штатно ли прошла установка, запустив программу. Итак, все запустилось нормально. Можно переходить к этапу конфигурирования Elasticsearch. Это не займет много времени нужно будет отредактировать пару строк в файле конфигурации /etc/elasticsearch/elasticsearch.yml. Во-первых, чтобы не собирать лишнюю информацию, указываем хост локального интерфейса, через который будет передавать данные Logstash (по умолчанию, данные собираются со всех сетевых интерфейсов), а во-вторых, указываем путь к хранилищу данных, откуда мы и будем с ними работать. Рекомендуется выделить под хранилище значительные объемы памяти чем сложнее проект, тем больше будут весить собираемые логи. После завершения процесса настройки перезапускаем и проверяем программу. Далее нас ждет установка веб-панели Kibana. Этот процесс почти не отличается от установки Elasticsearch, ключи репозиториев будут одинаковыми. В целом, все то же самое устанавливаем соединение с репозиторием, скачиваем, устанавливаем, добавляем в автозагрузку, запускаем, проверяем. Стоит обозначить, что приложение загружается довольно долго, поэтому проверку лучше осуществить через пару минут после отдачи команды на запуск приложения. Редактирование настроек Kibana можно осуществить через файл /etc/kibana/kibana.yml. Здесь нас интересует строка с указанием интерфейса, который будет "слушать" Kibana. Это могут быть все интерфейса, либо один определенный в данном случае нужно будет указать конкретный ip-адрес нужного сервера. Далее проверим сам веб-интерфейс, для этого указываем адрес - например, http://10.1.4.114:5601. Наконец, перейдем к этапу установки Logstash. Здесь все то же самое, только перед проверочным запуском программу нужно настроить. Можно отредактировать основной файл настроек /etc/logstash/logstash.yml, но рациональнее будет создать несколько файлов конфигурации в директории /etc/logstash/conf.d, чтобы группировать настройки по назначению. Создаем файлы input.conf и output.conf. В первом файле мы указываем порт, на который будем принимать информацию, а также параметры ssl, если в этом есть необходимость. Во втором файле указываем параметры передачи данных в Elasticsearch. Данные лучше передавать под указанным дополнительно индексом, также используя маску в виде даты. Также можно отключить функцию отправки данных в общий лог системы, чтобы не занимать место в хранилище дублированными фрагментами информации. Кроме этого, потребуется создать файл с параметрами обработки данных. Дело в том, что не всегда удобно работать с полным объемом, и приходится делать выборку ключевых данных. Создаем файл filter.confи указываем параметры, на основании которых будут фильтроваться необходимые данные. Также при необходимости можно настроить, например, корректное отображение даты или географического местоположения сервера, с которого будет поступать информация. Завершив конфигурирование, можно проверить работу программы, запустив ее и просмотрев внутренний файл лога /var/log/logstash/logstash-plain.log. Основной пакет программ установлен теперь осталось установить программы, которые будут отправлять данные, на сервера. Компания Elastic предлагает использовать Filebeat, но можно воспользоваться и альтернативными вариантами. Здесь процесс установки аналогичен предыдущим. Файл настроек по умолчанию позволяет сразу работать с программой, но можно и подредактировать его при необходимости. Если все сделано правильно, программный комплекс уже начал собирать логи. Следующим шагом будет открытие веб-интерфейса Kibana и настройка паттерна индекса, чтобы лог открывался в веб-интерфейсе по умолчанию, а в сохраняемых данных не было путаницы.
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59