Bitrix swift что это
Функциональный Swift
Что объединяет «каррирование», «монады», «алгебраические типы данных»? Не только тот факт, что часть разработчиков старается обходить эти слова стороной, но еще и функциональное программирование. Под заботливым руководством Евгения Елчева мы погрузились в функциональную парадигму и почти все поняли. Не пугайтесь раньше времени, смело читайте расшифровку десятого выпуска подкаста AppsCast.
Даниил Попов: Всем привет. Сегодня у нас в гостях Евгений Елчев из солнечного Красноярска. Женя, расскажи, чем ты занимаешься и как пришел в функциональное программирование?
Евгений Елчев: Всем привет. Я iOS-разработчик в Redmadrobot, как и все остальные крашу кнопки, иногда пишу бизнес-логику.
С функциональным программированием я сначала познакомился через статьи. Я, не совсем понимая суть, думал, что это вроде процедурного программирования, без классов. Когда прочел одну из статей повнимательнее, осознал свою неправоту и начал копать. Нельзя сказать, что я прямо-таки пришел в функциональное программирование, так как настоящие адепты костьми за него лягут и пишут на Haskell, используя монады где только можно. Я же просто погрузился и использую только в продакшене.
Даниил Попов: Так, уже монады пошли.
Евгений Елчев: Уже сложно?
Даниил Попов: Я пытался пройти такой же дорогой, но открывал статью, видел слова «каррирование», «монады» и сразу закрывал, думая, что пока не достоин. У меня вообще есть шансы?
Евгений Елчев: Конечно. Этого можно вообще не знать.
Простыми словами про функциональщину
Даниил Попов: Давай для тех, кто никогда не слышал о функциональной парадигме, дадим простое определение.
Евгений Елчев: Парадигмы каждый понимает по-своему. Если брать объяснение из Википедии, то это использование математических функций, где вся программа трактуется как математическая функция.
Функциональный подход (ФП) — это когда ты используешь в своей работе функции, в которых есть только входные аргументы и выходное значение. Если вся программа состоит из таких функций, то это функциональная программа.
Даниил Попов: ООП было логическим продолжением обычного процедурного программирования и решало вопрос инкапсулирования данных в классы. Какие проблемы призвано решить функциональное программирование?
Евгений Елчев: Функциональное программирование изобрели математики. Собрались ребята и решили создать парадигму, где все можно доказывать. Есть код, он еще не запущен, но уже весь доказуем. Любую точку программы можно рассчитать, понимая, куда мы придем, когда допустим какое-либо действие.
Это звучит абстрактно, поэтому разберем на примере чистой функции. Пишем функцию sum, которая принимает два аргумента, передаем ей 2 и 3, получаем 5 и можем это доказать. Это всегда истина. Если вся наша программа состоит из таких функций, то она вся доказуема.
При создании языков, базовых функций стало не хватать, и появились дополнительные возможности: лямбды, функции высшего порядка, монады, моноиды.
Функциональная парадигма не решает отдельную проблему, это все то же желание написать хороший код как можно проще, чтобы программы были стабильными и их было легко поддерживать.
Если присмотреться, многие вещи, которые мы используем в ООП, нашли свое отражение в функциональном подходе. В ОПП есть классы, которые инкапсулируют набор полей. В ФП тоже можно так сделать с помощью type-классов. Как любит говорить Виталий Брагилевский: «Если ты смотришь на табличку, где по строкам идут данные, а по колонкам функции, то ФП идет по колонкам, ООП по строкам». Вот и все.
Даниил Попов: Как ФП соотносится с другими парадигмами? Могу ли я на ООП-языке писать функционально? Как миксовать парадигмы, и есть ли в этом смысл?
Евгений Елчев: Парадигма ограничивается тем, что ты пишешь функции с данными. Одна из особенностей ФП — отсутствие изменяемых состояний. Если твои данные — это класс, то проблем нет. Если класс полностью иммутабельный, то его можно использовать. Класс — это просто тип, как строка или число, только более сложный, состоящий из нескольких значений.
Даниил Попов: Ты ранее сказал, что можно доказать математическую корректность программы, если писать исключительно функционально. Тогда шутка про «скомпилировалось — работает» для функциональных языков перестает быть шуткой, так?
Евгений Елчев: Если смотреть на ошибки ввода/вывода, то да. Раньше программисты боролись с проблемой: подключился к сети, сети нет, вернулся nill, и все упало. Для решения проще всего было проверить, что пришло — nill/не nill, но, так как оставался риск, что не все учтено, программа могла скомпилироваться и упасть.
В современных языках это решено. В Haskell можно написать программу, которая будет работать и не падать, но насколько корректно она работает, никто не скажет. Конечно, там строгие типы, и нельзя совершить ошибку, сложив число со строкой, но всегда можно оставить в приложении баги, а оно будет работать.
Место функционального подхода в Swift
Алексей Кудрявцев: Насколько Swift можно назвать функциональным языком?
Евгений Елчев: Можно. Функциональщина позиционируется как stateless, но на Swift можно писать, избегая таких состояний. При этом Swift — это не то же самое, что писать под iOS, где везде есть состояния. Конечно, в Swift нет специальных инструкций как в Haskell, где все функции чистые по умолчанию и компилятор не разрешит обратиться к состоянию и изменить его. Если же пометить функцию как «грязную», то изменения становятся доступны.
Алексей Кудрявцев: Во втором или третьем Swift был модификатор pure, но он действовал только на уровне компиляции, чтобы глобальные значения не изменялись. Ты в них что-то записывал, но компилятор все вырезал.
Евгений Елчев: Да, в iOS компилятор за таким следить не будет. Все целиком на нашей совести: как напишешь, так и будет.
Алексей Кудрявцев: Ты говоришь, что в iOS-приложениях много состояний, а где какие и что с ними делать, если ты пишешь в функциональном стиле?
Евгений Елчев: Самое главное состояние — это UI, например, поля ввода. Сделать с ними практически ничего нельзя. Можно попробовать от них абстрагироваться, собрать в одном месте и писать как можно больше кода без их учета. Например, пишешь одну грязную функцию, которая получает все данные из UI.
В своей статье я приводил пример формы авторизации, где важно, чтобы пользователь ввел логин/пароль. Пишем одну грязную функцию, которая возвращает структуру с авторизационными данными, а затем пишем на нее чистый код. Получили эти данные, провалидировали, если результат валиден, отправляем запрос на сервер. Запрос на сервер — тоже грязная функция, а его обработка целиком может быть чистой. «Получили, распарсили» — это линейная функция: на вход data, на выход — наша структура. Дальше преобразовали, отфильтровали и можно снова показать на экране.
Алексей Кудрявцев: В Haskell компилятор сильно помогает. Если откуда-то приходит state, вся цепочка вызовов будет считаться грязной и нужно оборачивать все в монады. Если же функция чистая, то работает кэширование результатов — на одни и те же данные всегда один и тот же выход. В Swift приходится самостоятельно реализовывать мапы и пытаться возвращать результат, если он уже закэширован.
Евгений Елчев: Мне сложно понять, что делает такая аннотация в Java. Если ты имеешь в виду, что имплементируешь этот интерфейс к классу, а потом реализуешь всего один метод, то в Swift таких ограничений нет. Можно создать typealias, назвать его и как тип функции использовать в качестве типа аргументов, типа переменной для того, чтобы присвоить замыкание. Можно определить ограничения — входные и выходные аргументы замыкания. Сами функции высшего порядка, которые могут принимать замыкания — это полиморфизм, и в Swift можно построить полиморфизм на типах, не ограничиваясь объектами.
А вот конкретных функциональных вещей я не знаю. Когда-то в первом Swift было каррирование, но его выпилили. Сейчас мы можем сами написать функцию для каррирования, либо написать функцию так, чтобы она возвращала замыкания одно в другом, но это не совсем то.
У нас нет никаких коробочных функторов или монад. Их даже нельзя написать. Новые фишки в Swift 5.1 должны помочь это сделать, но я пробовал написать такой код, и xCode упал.
В принципе, в Swift при желании несложно все сделать самому. Есть уже из коробки монада optional (в Haskell — maybe). У нее есть map и flatmap для построения линейного вычисления.
В Swift мощный pattern matching. Switch, который есть почти в каждом языке и в большинство случаев сопоставляет integer с единицей, может сопоставлять переменную с конкретным образцом, диапазонами, типами, извлекать значения из связанных типов. Есть carthage — составляешь новый тип, передавая в него несколько других. На их основе тоже можно делать pattern matching. Есть перечисление, которое может ограничивать типы, подвязывать к ним связанные типы.
Алексей Кудрявцев: Уточню, что связанные типы похожи на котлиновские sealed-классы. Это enum внутри кейса, в который можно положить связанное значение. В switch можно написать: вот case, разверни, внутри объект. Например, кейсы user и company с соответствующими объектами могут быть enum и можно свитчиться. Только sealed-классы расширяемы, а switch конечен.
Зачем мобильщику функциональщина?
Даниил Попов: Чем же функциональный подход полезен для мобильной разработки? Есть ли проблемы, которые он решает?
Евгений Елчев: Нет конкретной проблемы, которую можно решить именно с помощью функционального программирования.
Самое важное, что следуя этим принципам, даже если не получается, мы должны отказываться от состояний, потому что именно они — главная боль.
Отказываясь от них, ты делаешь свой код более понятным. Я не говорю, что будет меньше ошибок, потому что это надо как минимум замерять. Тем не менее, когда ты начинаешь что-то внедрять, код меняется. Часто бывает, что смотришь на код и в нем все по делу, а начинаешь переписывать, менять местами, убирать лишнее и читается легче.
Следуя функциональной парадигме, получаешь дополнительный источник вдохновения.
Даниил Попов: Если я начну писать в ООП-языке такие иммутабельные классы и использовать иммутабельные методы, можно будет сказать, что я пишу функционально?
Евгений Елчев: Да, при этом ты начинаешь видеть плюсы. Становится проще тестировать методы из-за отсутствия глобального состояния, проще составлять из методов цепочки вычислений.
Даниил Попов: В своей статье ты объясняешь, что такое чистая функция и side-эффекты. Ты приводишь пример с суммированием, где функция еще и модифицирует внешнее состояние. Проблема в том, что когда ты читаешь такой код, сложно держать в голове все изменения: нужно посмотреть на эту глобальную переменную, кто еще в нее читает, кто еще в нее пишет, что может произойти. Зато функциональный подход позволяет тебе держаться в потоке, не ходить в соседние классы, ты просто читаешь код.
Алексей Кудрявцев: Если ты в функциональном языке, то с одной стороны тебе легче код писать, но с другой, приходится понимать, в какой ты сейчас монаде.
Евгений Елчев: Да, но когда ты начинаешь писать все на чистых функциях, возникают другие проблемы. Например, как выстроить длинную цепочку вычислений. В обычном стиле ты, не задумываясь об этом, легко докидываешь данные, которых не было изначально. В функциональном подходе этого делать нельзя: приходится дробить цепочки, все вычисления, используемые в нескольких методах, соединять в состояния. К этому нужно привыкать.
С другой стороны, в отличие от классов в ОПП, которые делают код закостенелым и мало поддающимся композиции, функции могут быть более гибкими. Можно написать одну функцию, добавить свободы с помощью замыкания, накидать таких функций и объединять их в цепочки.
Алексей Кудрявцев: Это похоже на идеологию Unix: есть bash, terminal и можно передавать данные из маленьких программ, которые делают одно небольшое действие, в другие.
Даниил Попов: Мне это напомнило Rx-подход, где пишут гигантские цепочки.
Евгений Елчев: Вы оба правы. И Unix-way про это, а Rx — это сплав идеи биндинга и реактивщины. В ФП мы биндимся на источник события и в цепочке вычислений изменяем его, подвязывая результат на конечное состояние.
Даниил Попов: Хороши ли вообще мультипарадигменные языки, насколько это удобно и полезно, что язык умеет и так, и сяк?
Евгений Елчев: Если четко следовать какой-то парадигме, всегда будут вещи, которые делать неудобно. Есть вещи, которых сложно добиться в функциональном стиле, например, хранить state и сделать cache.
Когда есть возможность выбрать инструмент, который больше подходит под конкретную задачу — это круто.
Можно создать класс, внутри него сделать несколько методов в функциональном стиле и организовать код лаконично цепочками, или отказаться полностью от класса, наделать нужных функций и использовать их.
Минус в том, что возникает дилемма выбора и чем больше вариантов, тем сложнее выбирать. Разобраться тоже становится сложнее: чем больше вариантов, тем сложнее читать код.
Про варенье из монад
Алексей Кудрявцев: Вернемся к функциональщине, что такое монада?
Евгений Елчев: Я бы назвал это контейнером, в который можно объединять цепочки вычислений. Самый просто способ — это контейнер, к которому можно применить функцию и преобразовать в новый контейнер с измененным значением.
Представьте коробку, в которой лежит клубника, и есть прибор, которая позволяет из клубники делать варенье, но ты не можешь в него положить коробку с клубникой, ее надо высыпать. Монады — эта та самая вещь, которая позволяет засунуть в прибор коробку.
Это не state в прямом понимании, так как state хранится отдельно, а здесь контекст (коробка) со значением и ты передаешь из одного в другое. Это передача информации от одного вычисления к другому.
Алексей Кудрявцев: Получается, что в функциональном подходе для того, чтобы сделать варенье, нужно залезть внутрь коробки…
Евгений Елчев: Прелесть в том, что в коробку лезть не надо. Можно кидать коробку.
Функциональщина для избранных?
Даниил Попов: Бытует мнение, что функциональным программированием нельзя заниматься без докторской степени по математике. Правда ли это?
Евгений Елчев: Это неправда. Знание математики, конечно, делает все лучше, но я забыл математику после окончания университета и нормально живу. По сути все это инструменты, которые воплотились в языках в решение конкретных задач. Их можно использовать, не пытаясь доказать математически. Пока ты будешь составлять уравнение с математической точки зрений, быстрее и проще будет накидать методом тыка парочку строк кода, и они будут работать.
Алексей Кудрявцев: Насколько увлечение функциональным подходом может мешать продуктовой разработке? Если часть кода уже написана функционально, нет ли сложности в работе с ним?
Евгений Елчев: Вообще нет. Если ты не маньяк и не будешь писать огромную экосистему с декораторами, то можно использовать тот же pattern matching.
Сложнее будет, если захочешь перейти на новый элемент функциональщины. Например, недавно появился пятый Swift и монада result, раньше ты ей не пользовался, а теперь решил, что все будет на ней. Берешь функцию запроса в сеть и пишешь, что ее результат теперь result (либо данные, либо ошибка), и решаешь объединить со следующим запросом, а там у тебя отдельно замыкание со значением и error, и это нужно переписать. Начал так писать в одном месте, очнулся через два дня, когда переписал половину кода, еще и новые обертки для библиотек сделал, чтобы красиво объединялось.
С чего начать?
Даниил Попов: Что почитать новичку, чтобы понять функциональное программирование?
Евгений Елчев: Надо взять чисто функциональный язык, например, Haskell и попробовать на практике. Берешь учебник и делаешь самые простые примеры. Тут ты и понимаешь подход — когда нет for, нельзя создать переменную, в которой можно поменять значение. Лично я в свое время взял книжку «Изучай Haskell во имя добра», где все описано простым языком. После можно начать читать статьи в интернете: про то, как выглядят монады в Swift, про алгебраические типы данных. Пара статей, и становится понятно, что этого не стоит бояться.
Даниил Попов: Самое сложное, это сломать парадигму в собственной голове.
Евгений Елчев: Не надо резко погружаться в функциональное программирование. Многие считают, что как сядут, так и начнут функционально писать — это неправильно.
Алексей Кудрявцев: Самое классное, что я видел — это курс на Stepic по Haskell от Дениса Москвина. Начинаешь с того, что пару чисел складываешь, а заканчиваешь тем, что монады в монады заворачиваешь. А если хочется совсем сломать голову, то есть книжка «Структура интерпретации компьютерных программ» — это курс на Lisp от простых примеров до того, что ты пишешь интерпретатор Lisp на Lisp.
Если первичный страх перед функциональщиной прошел, то гляньте еще доклад Виталия Брагилевского с весеннего AppsConf. Впрочем, в осеннем сезоне AppsConf мы затронем темы не менее интересные — iOS-сообщество с нетерпением ждет доклад Даниила Гончарова по реверсинженирингу Bluetooth, а android-разработчики вместе с Александром Смирновым обсудят актуальные подходы к построению анимаций
VMBitrix 7.4.0 в релизе
я добавил в Crontab
но «весёлые картинки» так и не стали появляться в папке, и всё так же выдаётся:
403 Forbidden
Цитата |
---|
макс серг написал: я добавил в Crontab Код* * * * * munin /usr/bin/munin-cron перезапустил CronDно «весёлые картинки» так и не стали появляться в папке, и всё так же выдаётся:403 Forbidden |
макс серг, откатываем правку для crontab)
После выполняем две команды
munin.timer будет генерировать картинки и отчеты каждые 5 минут. Если не нужно так часто, а нужно, например, раз в 15 минут, то в файле /usr/lib/systemd/system/munin.timer меняем строку
Цитата |
---|
макс серг написал: я добавил в Crontab Код* * * * * munin /usr/bin/munin-cron перезапустил CronDно «весёлые картинки» так и не стали появляться в папке, и всё так же выдаётся:403 Forbidden |
После выполняем две команды
Как то теперь можно пакет это восстановить без rollback? yum install bitrix-env как пройдет? конфиги не затронуться? Подцепит существующие сайты?
Error downloading packages:
Percona-Server-server-57-5.7.32-35.1.el7.x86_64: [Errno 256] No more mirrors to try.
2020-12-13T06:35:29: 18751 : Error installing package: bitrix-env
2020-12-13T06:35:29: 18751 : Log file path: /tmp/bitrix-env-BUGv5.log
и как теперь поставить окружение на нулевый сервак?
попытка поставить в ручную перкону приводит так же к ошибке
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : Percona-Server-server-57-5.7.32-35.1.el7.x86_64 1/1
Error unpacking rpm package Percona-Server-server-57-5.7.32-35.1.el7.x86_64
error: unpacking of archive failed on file /usr/lib64/mysql/mecab/dic/ipadic/sys.dic;5fd60bda: cpio: read
Verifying : Percona-Server-server-57-5.7.32-35.1.el7.x86_64 1/1
Failed:
Percona-Server-server-57.x86_64 0:5.7.32-35.1.el7
Коллеги, подскажите, пожалуйста, как можно 7.4.3 установить?
При установке окружения через bitrix-env.sh выдает ошибку:
Вчера пробовал обновить VM с 7.4.1 до 7.4.4.
Пытался по тем же шагам, когда успешно обновлял с 7.3.0 до 7.4.1 (вначале «bitrix-env», потом «all»).
Но сейчас задание по обновлению «all» заканчивается статусом «error».
Установка через «bitrix-env.sh» тоже завершается ошибкой.
В логах «/tmp/bitrix-env-EN2YF.log»:
Обновление через «yum update» дает:
Выполнение «yum clean all && yum update» ситуацию не меняет.
Выполнение «yum install percona-release-latest.noarch.rpm» дает:
Загружены модули: etckeeper, fastestmirror, merge-conf
Проверка percona-release-latest.noarch.rpm: percona-release-1.0-25.noarch
percona-release-latest.noarch.rpm: не обновляет установленный пакет.
Ошибка: Выполнять нечего
С чем это может быть связано?
Спасибо.
Что такое Bitrix
Этой статьей я завершаю цикл, посвященный 1С. В статье Что такое 1С. О сложной системе простыми словами я обещал посвятить программным продуктам “1С-Битрикс” отдельную статью, и сейчас я выполняю это обещание. Статья является обзором, в ней я не буду углубляться в технические детали и особенности применения программного кода, для этого существует подробная документация, доступная всем желающим на официальном сайте компании.
Здесь я расскажу о важных особенностях платформы Bitrix Framework, а также о программных продуктах, созданных на этой платформе. Статья предназначена, прежде всего, для пользователей, которые стремятся понять, нужны ли для их бизнеса те или иные разработки Битрикс, и в чем их особенности. Также информация из этой статьи может оказаться полезной разработчикам, которые работают с другими CMS, но хотят также получить некоторое представление о Битрикс.
В последнее время я часто сталкиваюсь с интеграцией сайтов с системами CRM и программами учета движения товаров и денежных средств. Чаще всего в нашей стране интеграция требуется с разными версиями и конфигурациями 1С. Также часто заказчики к моменту обращения ко мне либо уже успели создать Битрикс-сайт, либо интересуются возможностью перехода на этот движок, так как компания 1С рекомендует его как систему, в которой имеется все необходимое для автоматизации обмена данными. Многочисленные вопросы и накопленный практический опыт работы с Битрикс-сайтами стали теми факторами, благодаря которым я вспомнил о давнем обещании подробно поговорить о Битрикс и все же написал эту статью.
Что такое Битрикс?
Начать я предлагаю с определения самого понятия Битрикс. Обычно это название используют в двух вариантах:
Немного истории
Для начала поговорим о компании, чтобы понимать, откуда взялся программный продукт «Битрикс» и почему его название оказалось именно таким. Основана компания «Битрикс» была еще в 1998 году сразу после финансового кризиса как веб-студия, специализирующаяся на разработках интернет-сайтов под заказ. В начале 2000-х компания создает и начинает развивать собственную CMS-систему, которую также называет «Битрикс». Первые версии CMS Битрикс ничем принципиально не отличались от множества других движков сайтов, пока в 2007 компания 1С не выкупила контрольный пакет акций «Битрикс», после чего система управления сайтом получила название «1С-Битрикс».
Важно понимать, что после такое слияние компаний и последующее изменение названия продукта произошло на уровне бизнеса и маркетинга, т.е. объединились компании, объединился бренд, а технические решения по большей части остались прежние – у каждого программного продукта (1С и Bitrix) свои.
Очень часто пользователи, ориентируясь на название и на рекламу от компании 1С, приходят к выводу: если компания пользуется 1С и стремится создать интернет-магазин, значит, лучше всего выбрать для этого CMS Битрикс, ведь это продукты под одним брендом и разработчики 1С также рекомендуют именно этот движок как наилучший для обмена данными с программой 1С.
Аналогично и наоборот, если имеется интернет-магазин на Битрикс и владелец приходит к выводу о необходимости автоматизации продаж, то из всех вариантов учетных систем он, скорей всего, выберет программные продукты 1С.
На самом деле, Битрикс и 1С – это разные продукты, созданные разными компаниями, и разработчики этих продуктов работают абсолютно независимо друг от друга. Нельзя даже сказать, что разработчики 1С ориентируются при своей работе на потребности пользователей Битрикс или наоборот, что разработчики Битрикс учитывают в своей работе какие-то нововведения от 1С. А объединение названий является исключительно маркетинговым ходом, надо признать, очень удачным. То есть этот ход можно считать удачным ходом именно с маркетинговой стороны, c технической стороны положительных примеров от объединения я привести не смогу.
Битрикс как программный продукт
Все программные продукты Битрикс созданы на базе Bitrix Framework. Если обратиться к разделу помощи на сайте 1С-Битрикс, то можно увидеть такое определение:
Bitrix Framework — это созданная на основе PHP платформа для разработки веб-приложений. На этой платформе компанией «1C-Битрикс» созданы два популярных продукта: «1C-Битрикс: Управление сайтом» и «1С-Битрикс: Корпоративный портал».
Такое определение понятно для веб-разработчиков, но ничего не говорит пользователям. А потому я попробую пояснить упрощенно, о чем идет речь.
Framework – это некий «каркас», платформа для создания программных продуктов.
PHP – это язык программирования, на котором написан этот «каркас».
На основе этого «каркаса», этой платформы компания Битрикс создала программные продукты «1C-Битрикс: Управление сайтом» и «1С-Битрикс: Корпоративный портал». Это уже готовые CMS, которые можно установить на хостинг, настроить и работать с ними, как и с любой другой системой управления сайтом.
С технической точки зрения программные продукты Битрикс (сайты и мобильные приложения) создаются на основе собственной платформы Bitrix Framework.
Разработкой программных продуктов на платформе Bitrix Framework занимается узкий круг программистов, состоящий из специалистов компании. Это коммерческий продукт, а потому такое ограничение можно считать преимуществом. Обновления программных продуктов предсказуемы и понятны, подход к работе практикуется комплексный, а новые функции обычно работают именно так, как заявлено.
Также компания очень ответственно подходит к работе своего магазина надстроек и приложений MarketPlace. Предложить разработку для этого магазина могут не только сотрудники компании, но и сторонние разработчики. Но любой предложенный продукт проходит строгую премодерацию, решение тестируется специалистами компании “Битрикс”, и только после их одобрения появляется в публичном доступе.
Из минусов подобного подхода необходимо отметить то, что количество расширений (модулей) намного меньше чем у продуктов с свободной лицензией, и они намного менее разнообразны. Оно и понятно — количество разработчиков не ограничено размерами компании.
Что такое «каркас»? Подробнее о Bitrix Framework
Bitrix Framework – это некий набор готовых модулей и компонентов, т.е. «кирпичиков», из которых программисты Битрикс создают программные продукты. В принципе, платформу Bitrix Framework любой программист может при желании использовать для создания собственных программных решений, также и готовые продукты Битрикс вполне возможно доработать так, как это нужно пользователю.
Bitrix Framework – решение с открытым кодом, т.е. программист может доработать ваш программный продукт Битрикс как угодно, ограничений по доступу к программным модулям и их коду в этой системе нет. Но при этом Bitrix Framework – решение, поставляющееся на основе лицензий. Т.е. установить и пользоваться программными продуктами на основе Bitrix Framework вы сможете на таком количестве компьютеров, какое количество лицензий вы купили.
Для сравнения: программные продукты 1С также поставляются с лицензированием, но в них доработать можно только конфигурацию, ядро (основа программного продукта) для программистов недоступно. В Битрикс программист может вносить любые изменения, в том числе, в ядро. А, например, DRUPAL — это система с открытым кодом, но без лицензирования.
Для того чтобы понимать, как работают программные решения Битрикс, нужно знать, что каждое из них состоит из ядра (платформы) и модулей-надстроек. Т.е. существует язык программирования (php), на котором написано ядро. В ядре прописаны определенные возможности, правила, созданы инструменты, которыми может пользоваться разработчик. При создании программного продукта необходимые инструменты подключаются и настраиваются, в случае необходимости, ядро также может быть доработано. А при работе с готовым программным продуктом можно также корректировать платформу, но чаще она остается неприкосновенной, а доработки вносятся при помощи различных внешних модулей.
Также нужно учитывать, что платформа уже включает в себя некий перечень базовых модулей, которые могут подключаться или отключаться при необходимости. А потому, например, в корпоративном портале имеется модуль «корзина покупок», казалось бы, совсем там ненужный. Но, так как он вошел в базовый набор, он присутствует во всех программных продуктах Битрикс.
Далее с готовыми уже инструментами может работать пользователь (модератор, администратор сайта и т.д.), и с их помощью создавать контент, выкладывать товары и так далее.
Программные продукты Битрикс
Программные продукты Битрикс отличаются друг от друга преимущественно набором модулей, которые вошли в готовое решение, и делятся на категории по типу сайта, который может потребоваться в том или ином случае:
1С-Битрикс: Enterprise – решение для крупных интернет-проектов.
Также в отдельное направление стоит выделить продукт «1С-Битрикс: Мобильное приложение», которое используется для создания мобильных версий сайтов или интернет-магазинов, а также других видов приложений для мобильных устройств, которые после создания можно выкладывать для скачивания или продажи в App Store или Google Play. Этот программный продукт также является готовой платформой, благодаря чему создание мобильных приложений происходит намного быстрее и проще, чем работа программиста с нуля.
Также еще раз напомню, что любой продукт 1С-Битрикс после покупки можно дорабатывать на любом уровне, начиная от привычных всем внешних модулей и надстроек и заканчивая доработками ядра.
1С-Битрикс. Управление сайтом
«Управление сайтом» — это программный продукт, предназначенный для создания и управления интернет-магазинов, сайтов-визиток и т.д. Существует огромное количество редакций этого программного продукта, но все они предназначены для одной цели – создания сайта и дальнейшего его обслуживания (наполнения, редактирования и пр.).
Изначально «Битрикс» создавался как движок (CMS) для создания интернет-магазинов, а потому «Управление сайтом» имеет очень широкий перечень возможностей и богатый функционал. С другой стороны, всем богатством возможностей этого движка пользуются нечасто. Редко можно увидеть на битрикс-сайте несколько каталогов, практически не используются возможности маркетинга, так как для большинства интернет-магазинов не нужны все эти функции, но все же они имеются в числе возможностей программного продукта и при возникновении потребности их можно подключить в любой момент.
При создании интернет-магазина с использованием продукта «Управление сайтом» необходимо:
Важно! Система «1С-Битрикс. Управление сайтом» требует широкого перечня возможностей хостинга, некоторые хостинг-компании даже вводят специальные тарифные планы для «интернет-магазинов на Битрикс», это важно помнить при выборе хостинга и расчете стоимости поддержки сайта.
1С-Битрикс: Корпоративный портал
Корпоративный портал (англ. Enterprise portal) — это, в общем случае, веб-интерфейс для доступа сотрудника к корпоративным данным и приложениям. Википедия
1С-Битрикс: Корпоративный портал – это некая площадка, где собирается информация, информационный центр компании. Это многофункциональный продукт, где можно объединить информацию по самым разным направлениям. Например, бухгалтерские данные компания ведет в 1С. Бухгалтерии, движение товаров по складам и продажи – в 1С. Торговля и склад, работу с потенциальными и реальными клиентами – в CRM-системе, техническую поддержку осуществляют в специализированном сервисе поддержки клиентов.
А корпоративный портал позволяет вести все эти направления в одном месте, собирать данные для управленческой отчетности, получать общую развернутую картину работы компании с разных точек зрения. В чем-то корпоративный портал Битрикс напоминает швейцарский нож: никакой специализации у этого инструмента нет, но с его помощью можно выполнять самые разные действия, так как в составе продукта есть инструменты для реализации работы с клиентами, с пользователями, и многое другое, пусть и на минимальном уровне.
1С-Битрикс: Корпоративный портал позиционируется также как продукт, который позволяет руководителю контролировать весь рабочий процесс компании, для чего используется разнообразная отчетность, также руководитель может выставлять функции, например, начала и завершения рабочего дня, ставить перед подразделениями задачи (проекты), устанавливать для них сроки и основные этапы реализации. Также с порталом может быть интегрирована CRM-система, телефония, бухгалтерские, учетные программы и т.д.
Существует два продукта от компании Битрикс, предназначенных для корпоративной работы:
Отраслевые решения
Специализированные отраслевые решения – это система «Управление сайтом» со всеми имеющимися в базовой версии функциями, дополненная предустановленными надстройками для организации работы в той или иной отрасли. Например, такие решения очень популярны для организации работы медицинских учреждений, бюджетных организаций, образовательных учреждений и т.д.
Здесь уже имеются специальные анкеты для создания медицинской карты пациента или регистрации предпринимателя, плательщика налогов, будущего владельца недвижимости и т.д. и т.п. Реализованы варианты последовательности действий при записи на прием к специалисту, оплате государственной пошлины, счетов за услуги, а также другие модули, необходимые для создания удобного сайта для той или иной отрасли.
1С-Битрикс: Enterprise
Это решение, предназначенное для реализации крупных и сложных проектов, продается по очень высокой цене (от 1 499 900 руб.) Битрикс позиционирует этот продукт как решение для компаний, готовых максимально использовать возможности интернет и электронной коммерции. В продукт включены все существующие модули и надстройки и реализация самых разных возможностей, которые только можно представить. Разработчики утверждают, что продукт одновременно с огромным числом возможностей имеет также невероятную степень масштабируемости и гибкости и гарантируют расширенную техническую поддержку.
Стоит ли использовать столь дорогостоящий и мощный продукт, решать только вам. Некоторые крупные торговые сети успешно работают с этим решением, другие предпочитают реализовать работу на основе обычного функционала «Управления сайтом». Все зависит от масштабности проекта и востребованности того широкого перечня возможностей, которые предлагают разработчики за указанную выше цену.
Несколько слов о MarketPlace
При желании вы также можете также купить или скачать готовые решения для любого из программных продуктов через собственный магазин приложений 1С-Битрикс MarketPlace. Здесь выложено очень много разнообразных шаблонов, решений для интеграции с разными программными продуктами и системами, дополнительных модулей для реализации самых разных функций. Эти решения также поставляются с открытым кодом, т.е. при желании их можно доработать под собственные нужды. Но важно понимать, что после внесения любых изменений в код техническая поддержка для этих решений не предоставляется.
Важно: ядро Битрикс, как и ядро 1С, также регулярно нужно обновлять. Хоть эти обновления не столь критичны, как для программных продуктов 1С, но и здесь есть свои нюансы.
При обновлении ядра программного продукта любые надстройки и приложения из MarketPlace могут перестать работать, а потому после обновления понадобится повторное тестирование этих возможностей и, в случае необходимости, скачивание и установка для них обновлений отдельно. Также обновление становится недоступным или проблематичным в случае внесения изменений в код программного продукта.
Композитный сайт
Композитный сайт – это еще одна технология, которую активно рекламируют разработчики 1С-Битрикс. Они позиционируют композитные сайты как возможность объединить высокую скорость загрузки со всеми функциями современного динамичного сайта.
Как это работает:
Т.е. при первом обращении к композитному сайту проходит обычный вариант загрузки страницы
Из браузера пользователя к сайту на хостинге проходит обращение. Сайт формирует ответ, т.е. полноценную страницу вместе со всеми изображения и другими видами контента. Пользователь дожидается загрузки всей информации на компьютер и видит полноценную страницу.
Композитные сайты после этого большую часть страницы (изображения, видео, другую статичную информацию) сохраняют в кэше системы. И при повторном обращении учитывается наличие в кэше копии статичной части страницы, а потому формируется и передается только динамичная часть, остальное загружается из кэша. За счет этого скорость загрузки значительно возрастает.
Юзабилити продуктов 1С-Битрикс
Юзабилити программных продуктов Битрикс очень своеобразно. Изначально разработчики “Битрикс” для своей CMS применяли особый подход, во многом не совпадающий с другими популярными системами управления контентом сайтов. Количество возможностей, которые заложены в программные продукты Битрикс очень велико и с каждым релизом еще больше увеличивается. И если многие другие CMS устроены по принципу — есть небольшое и относительно простое ядро, к которому можно подключать самые разнообразные решения по мере необходимости, то Битрикс старается вложить в программный продукт “все и сразу”.
В результате наблюдается такое явление, как оверкодинг, в программных решениях “1С-Битрикс” слишком много кода и возможностей, которые чаще всего не используются. Это, в свою очередь, приводит к повышению сложности всей системы. Как итог, не только пользователям, но очень часто даже программистам сложно разобраться в юзабилити программных продуктов и понять, где какая возможность настраивается. К сожалению, этот недостаток является оборотной стороной мощных и многофункциональных решений, что важно учитывать при выборе продукта для создания сайта или корпоративной (совместной) работы.
Резюме
Программные продукты компании 1С-Битрикс – это очень мощные современные инструменты для создания сайтов, корпоративных порталов и мобильных приложений. Но надо понимать, что эти технологии — только один из вариантов решений, имеющихся на современном рынке. Битрикс имеет высокий уровень вхождения и определенную специфику. А потому прежде, чем принять решение об использовании того или иного программного продукта, очень важно ознакомиться с различными предложениями на рынке, а также посоветоваться со специалистами.
Из плюсов помимо перечисленных выше возможностей также стоит отметить, что программные продукты и вся документация русскоязычные, а также наличие множества партнерских решений для интеграции Битрикс с другими системами.
Минусами являются сложность программных продуктов для пользователей (самостоятельное администрирование сайтов сложно, а настройка без помощи специалистов практически невозможна), а также не самая доступная цена.
Работать или нет с этими программными решениями – личный выбор каждого. Я считаю, что даже для интеграции с 1С использование Битрикса не является необходимым, есть и другие методы организации обмена данных. С другой стороны, для сложных и крупных проектов эта мощная система с широкими возможностями может стать подходящим решением.