Еще из интересного - пока копался в файлах REST API, нашел небольшой баг. В одном из классов свойства, которые должны быть объявлены как protected, объявлены как public, хотя для них написаны геттеры и сеттеры. Решил создать issue на сайте вордпресса и создал.
Ответили мне быстро, но, как я и думал, исправлять это будут с малой вероятностью, потому что это сломает обратную совместимость - многие плагины используют эти свойства напрямую, а WP дорожит обратной совместимостью.
Жалко конечно, но чувство причастности к разработке ядра WP появилось 😎
Ответили мне быстро, но, как я и думал, исправлять это будут с малой вероятностью, потому что это сломает обратную совместимость - многие плагины используют эти свойства напрямую, а WP дорожит обратной совместимостью.
Жалко конечно, но чувство причастности к разработке ядра WP появилось 😎
Пока копался в баг трекере WP, нашел гайд на тему того, как стать контрибьютором ядра, что звучит очень интересно и привлекательно, хотя пока нереально. Если начну продвигаться по этой теме, то расскажу об этом подробнее. А пока пара интересных ссылок:
About "Make WordPress Core" - тык
FAQ for New Contributors - тык
About "Make WordPress Core" - тык
FAQ for New Contributors - тык
Завтра будет интересный пост о моих раскопках в ядре WordPress, а на утро предлагаю вам интересную статью о неуловимом баге в svelte
https://css-tricks.com/what-i-learned-by-fixing-one-line-of-css-in-an-open-source-project/
https://css-tricks.com/what-i-learned-by-fixing-one-line-of-css-in-an-open-source-project/
CSS-Tricks
What I Learned by Fixing One Line of CSS in an Open Source Project
I was browsing the Svelte docs on my iPhone and came across a blaring UI bug. The notch in the REPL knob was totally out of whack. I’m always looking to
Уже ровно неделю я разбираюсь в ядре WordPress, точнее в той его части, которая относится к разработке плагинов. Мне нужно решить три задачи:
0) На каких событиях (хуках) завязана разработка плагинов
1) Как создавать свои страницы в админке
2) Как выводить/редактировать контент на этих страницах
3) Как работать с бд через WordPress
И хотя я уже проходил все эти этапы примерно полтора года назад, я решил разобраться во всём заново и актуализировать свои знания
На данный момент я решил 0-1 вопросы, так как они оказались самыми простыми. Почти всё что нужно описано в документации, кроме юзкейсов. Для того чтобы узнать какие методы применяют опытные разработчики расширений, я начал читать исходники пары плагинов, которые по функционалу примерно мне подходят. Разбор кода прошел успешно, я нашел много примеров использования функций и хуков ядра и перенес их к себе
Сейчас я на втором этапе и продолжаю совмещать чтение доков с чтением исходников. Разбираюсь с классом
А третий этап наступит для меня уже завтра, нужно будет разобраться с классом
Всеми полезными материалами поделюсь к концу своих "раскопок", чтобы точно знать какая ссылка полезная, а какую лучше не открывать
0) На каких событиях (хуках) завязана разработка плагинов
1) Как создавать свои страницы в админке
2) Как выводить/редактировать контент на этих страницах
3) Как работать с бд через WordPress
И хотя я уже проходил все эти этапы примерно полтора года назад, я решил разобраться во всём заново и актуализировать свои знания
На данный момент я решил 0-1 вопросы, так как они оказались самыми простыми. Почти всё что нужно описано в документации, кроме юзкейсов. Для того чтобы узнать какие методы применяют опытные разработчики расширений, я начал читать исходники пары плагинов, которые по функционалу примерно мне подходят. Разбор кода прошел успешно, я нашел много примеров использования функций и хуков ядра и перенес их к себе
Сейчас я на втором этапе и продолжаю совмещать чтение доков с чтением исходников. Разбираюсь с классом
WP_List_Table, который позволяет создавать таблицы с контентом, которые, каждый кто работал с WP, видел на странице со всеми постами и страницами. Этот класс включает в себя большое количество методов, поэтому я завел для него отдельную диаграмму, но она еще в процессе написания, поделюсь как буду уверен в её готовностиА третий этап наступит для меня уже завтра, нужно будет разобраться с классом
wpdb и вспомнить основные команды (My)SQLВсеми полезными материалами поделюсь к концу своих "раскопок", чтобы точно знать какая ссылка полезная, а какую лучше не открывать
Подключение css и js в WordPress.png
231.1 KB
Небольшая шпаргалка по подключению/отключению js и css файлов в WordPress
Wordpress - wpdb.png
175.2 KB
Еще одна небольшая шпора, на этот раз по wpdb - встроенному в WordPress классу, отвечающему за работу с базой данных. Здесь самые нужные методы API, остальные функции думаю разобрать как-нибудь потом, потому, что класс wpdb слишком обширный (3666 строк)
Совсем забыл написать, что мой первый коммент на хабре всё таки прошел модерацию спустя две недели. Но это не значит, что я теперь могу писать сколько захочу комментариев - еще 9 должны пройти модерацию. Но комментировать записи мне хочется редко, поэтому, думаю, добью я эту девятку не скоро
Меня все больше огорчает ситуация с контентом по WordPress для разработчиков, найти что-то стоящее очень сложно. Зато существует куча дублирующего друг друга контента для новичков (как установить wp, как поставить тему, как поменять строчку css). На двух каналах по WordPress на ютубе вышел разбор новой версии 5.5 и оба они настолько поверхностные, что даже сами авторы говорят об этом: "Кому надо глубже, посмотрите сами, большинству зрителей это не интересно"
И эта фраза показывает источник всех проблем. Большинство каналов/курсов/блогов созданы чтобы набрать подписчиков и конечно же потом продавать рекламу, несмотря на то, что основная профессия этих авторов приносит им гораздо больше денег: "Нужно больше золота"
Что же до меня, я считаю WordPress конкурентоспособным инструментом для разработки сайтов различного уровня. Поэтому заткнуть эту дыру в материалах по WordPress я попробую самостоятельно, выпуская статьи и видео и делясь с вами достойными, по моему мнению, авторами
P.S. Если у вы знаете достойных ru/en авторов контента по разработке WP или наткнулись на интересную статью/видео, кидайте мне в личку - всё будет опубликовано на канале
И эта фраза показывает источник всех проблем. Большинство каналов/курсов/блогов созданы чтобы набрать подписчиков и конечно же потом продавать рекламу, несмотря на то, что основная профессия этих авторов приносит им гораздо больше денег: "Нужно больше золота"
Что же до меня, я считаю WordPress конкурентоспособным инструментом для разработки сайтов различного уровня. Поэтому заткнуть эту дыру в материалах по WordPress я попробую самостоятельно, выпуская статьи и видео и делясь с вами достойными, по моему мнению, авторами
P.S. Если у вы знаете достойных ru/en авторов контента по разработке WP или наткнулись на интересную статью/видео, кидайте мне в личку - всё будет опубликовано на канале
Вот такой контент я люблю, быстрый разбор небольшого плагина под WordPress
YouTube
Обзор и разбор кода плагина Display Active Plugins First от Сергея Бирюкова - сортировка плагинов
Бывало ли у вас желание, заходя в раздел плагинов, сразу видеть активные плагины на первых местах, а неактивные плагины ниже активных? Если Да, то встречайте плагин Display Active Plugins First от Сергея Бирюкова. Поговорим не только о функционале плагина…
WordPress - options.png
172.1 KB
Сегодня мини шпора по основным четырем функциям, которые позволяют работать с опциями в WordPress
Так же хочу указать, что шпоры составлены на основе материалов с сайта wp-kama.ru и чтения phpdoc в коде ядра
Так же хочу указать, что шпоры составлены на основе материалов с сайта wp-kama.ru и чтения phpdoc в коде ядра
Пока я продолжаю разбираться в создании WordPress плагинов и собираю материал для будущих постов, поделюсь с вами самыми интересными закладками из моего браузера:
JS
* Немного про написание JQuery плагинов ТЫК и ТЫК
* Unit тесты без фреймворков ТЫК
* Создание веб-компонентов на вальном js ТЫК
WebGL
* Краткий гайд по WebGL в 75-ти строчках кода ТЫК
* Серия гайдов по WebGL ТЫК
CSS
* Супер объяснения css свойства flex (flex-grow, flex-shrink и flex-basis) ТЫК
* Как создать магнитные кнопки с hover-анимацией ТЫК
* Немного про фильтр css фильтр drop-shadow ТЫК
* И хотя я уже три года сижу на игле scss, интересно посмотреть, как там дела в нативе - Статья о конфликтах scss и новых возможностей css ТЫК
* Супергеройская CSS сетка на современных технологиях ТЫК
Анимации
* Правильное использование анимаций в UX ТЫК
* Таймлайн css анимаций ТЫК
* Анимированный фавикон ТЫК
C++
* Серия уроков о создании своего блокнота на C++ ТЫК
* Немного о работе ОСей ТЫК
Разное
* Краткий гайд и визуализация работы CORS ТЫК
* Создание правильного кастомного тега select ТЫК
* Доклад из яндекса про использование noscript ТЫК
* Как использовать Web Share API ТЫК
* Оптимизация загрузки сайта ТЫК
JS
* Немного про написание JQuery плагинов ТЫК и ТЫК
* Unit тесты без фреймворков ТЫК
* Создание веб-компонентов на вальном js ТЫК
WebGL
* Краткий гайд по WebGL в 75-ти строчках кода ТЫК
* Серия гайдов по WebGL ТЫК
CSS
* Супер объяснения css свойства flex (flex-grow, flex-shrink и flex-basis) ТЫК
* Как создать магнитные кнопки с hover-анимацией ТЫК
* Немного про фильтр css фильтр drop-shadow ТЫК
* И хотя я уже три года сижу на игле scss, интересно посмотреть, как там дела в нативе - Статья о конфликтах scss и новых возможностей css ТЫК
* Супергеройская CSS сетка на современных технологиях ТЫК
Анимации
* Правильное использование анимаций в UX ТЫК
* Таймлайн css анимаций ТЫК
* Анимированный фавикон ТЫК
C++
* Серия уроков о создании своего блокнота на C++ ТЫК
* Немного о работе ОСей ТЫК
Разное
* Краткий гайд и визуализация работы CORS ТЫК
* Создание правильного кастомного тега select ТЫК
* Доклад из яндекса про использование noscript ТЫК
* Как использовать Web Share API ТЫК
* Оптимизация загрузки сайта ТЫК
Пролетела еще одна веселая неделька, а вместе с ней и лето. Обо всем постепенно расскажу, сейчас же краткий обзор
За это время я закончил плагин для бронирования времени под WordPress - самое непонятным для меня оказалась работа со временем, в частности с часовыми поясами. Юзать готовую либу я не стал, но теперь интересно посмотреть на подобные
Прибрался на GitHub'е - удалил/заархивировал старые проекты, собрал список незаконченных и посмотрел интересные проекты, которым ставил звездочку за этот год, чтобы разобрать их поподробнее. Честно - не уверен, что займусь проектам на GH вскоре, потому что много времени уходит на WordPress раскопки
Так же много думал о современном вебе - что стоит изучать и использовать, а на что лучше забить. Пришел к интересным, хотя, возможно, и банальным выводам, подтвержденным моим опытом и более закоренелыми разработчиками
Всем удачи и добра этой осенью👍😎
За это время я закончил плагин для бронирования времени под WordPress - самое непонятным для меня оказалась работа со временем, в частности с часовыми поясами. Юзать готовую либу я не стал, но теперь интересно посмотреть на подобные
Прибрался на GitHub'е - удалил/заархивировал старые проекты, собрал список незаконченных и посмотрел интересные проекты, которым ставил звездочку за этот год, чтобы разобрать их поподробнее. Честно - не уверен, что займусь проектам на GH вскоре, потому что много времени уходит на WordPress раскопки
Так же много думал о современном вебе - что стоит изучать и использовать, а на что лучше забить. Пришел к интересным, хотя, возможно, и банальным выводам, подтвержденным моим опытом и более закоренелыми разработчиками
Всем удачи и добра этой осенью👍😎
Начнем с мыслей о современном вебе. Сейчас я вижу его как гонку хайпа и логики, а точнее новых технологий с устоявшимися. Многие разработчики или целые команды после получения заказа на очередной веб проект бегут выбирать стек, и, конечно же, он состоит из кучи зависимостей на фронте и бекенда на самом модном фреймворке. "Хорошо ли это?" - Не совсем верный вопрос. "Нужно ли это заказчику?" - вот правильный вопрос
Если заказчику нужен сайт для продаж где-нить в Пензе, то ему не нужен навороченный SPA и REST API, ему нужно как можно быстрее начнет продавать и приносить прибыль. И тут на сцену как раз выходит WordPress и многие другие "устарелые" технологии, у которых все нужное есть под капотом, что позволяет запускать проект в короткие сроки
Конечно если у заказчика много денег и в проекте заказчику нужна гибкость, то уже имеет смысл задуматься о более гибком стеке. Часто к таким задачам относят e-commerce, но многие интернет магазины отлично функционируют на связке WP + Woo, а главное поддержка и доработки стоят недорого
Итак, мораль. Не гонитесь за хайповыми технологиями, если вашему клиенту это не надо - всем станет легче. "А в индустриальную разработку пусть играют индустриальные гиганты — у них это отбивается."
А теперь пара статей, которые подкрепляют мои мысли:
Мы тратим годы на то, что делается неделю — потому что все ларьки заигрались в IT-гигантов
Разработка WordPress: в чем плюсы и минусы?
Если заказчику нужен сайт для продаж где-нить в Пензе, то ему не нужен навороченный SPA и REST API, ему нужно как можно быстрее начнет продавать и приносить прибыль. И тут на сцену как раз выходит WordPress и многие другие "устарелые" технологии, у которых все нужное есть под капотом, что позволяет запускать проект в короткие сроки
Конечно если у заказчика много денег и в проекте заказчику нужна гибкость, то уже имеет смысл задуматься о более гибком стеке. Часто к таким задачам относят e-commerce, но многие интернет магазины отлично функционируют на связке WP + Woo, а главное поддержка и доработки стоят недорого
Итак, мораль. Не гонитесь за хайповыми технологиями, если вашему клиенту это не надо - всем станет легче. "А в индустриальную разработку пусть играют индустриальные гиганты — у них это отбивается."
А теперь пара статей, которые подкрепляют мои мысли:
Мы тратим годы на то, что делается неделю — потому что все ларьки заигрались в IT-гигантов
Разработка WordPress: в чем плюсы и минусы?
Небольшой рассказ, о том как я плагин писал 😉
Перед тем, как начать разрабатывать собственный плагин, я искал стартовые шаблоны. У ребят из roots (разработчиков sage) есть такой шаблон - Clover. Ну как есть, он в закрытой альфе, и о нем ничего не слышно. Поэтому я отправился в гугл, где нашел нужные мне вещи, правда не в том количестве и состоянии (об этом позже). Поэтому я, как обычно, полез в исходники небольших, но хорошо работающих плагинов и стал разбираться
Из этих плагинов я узнал основные принципы работы с бекендом на WordPress и самое главное получил информацию о том, что мне нужно гуглить. С помощью codex, wp-kama и phpdoc собрал кодовую базу для написания плагина и на ее основе написал плагин для бронирования времени
Сейчас он на препродакшене, тестируется контент-менеджером. Так как ТЗ у было в одну строчку "Нужно добавить бронирование времени", не удивлюсь, что какие-то фичи добавлены зря, а какие-то еще предстоит дописать. Но уже готовый код достаточно гибкий, и его можно спокойно править. Так что не думаю, что это займет больше пары дней
Теперь моя цель написать свой собственный стартовый шаблон на основе собранной информации. Чтобы можно было быстро создавать плагины под разные задачи. Но этим займусь немного позже, скорее всего, после того, как доделаю свои проекты на гитхабе (о которых также расскажу попозже)
Перед тем, как начать разрабатывать собственный плагин, я искал стартовые шаблоны. У ребят из roots (разработчиков sage) есть такой шаблон - Clover. Ну как есть, он в закрытой альфе, и о нем ничего не слышно. Поэтому я отправился в гугл, где нашел нужные мне вещи, правда не в том количестве и состоянии (об этом позже). Поэтому я, как обычно, полез в исходники небольших, но хорошо работающих плагинов и стал разбираться
Из этих плагинов я узнал основные принципы работы с бекендом на WordPress и самое главное получил информацию о том, что мне нужно гуглить. С помощью codex, wp-kama и phpdoc собрал кодовую базу для написания плагина и на ее основе написал плагин для бронирования времени
Сейчас он на препродакшене, тестируется контент-менеджером. Так как ТЗ у было в одну строчку "Нужно добавить бронирование времени", не удивлюсь, что какие-то фичи добавлены зря, а какие-то еще предстоит дописать. Но уже готовый код достаточно гибкий, и его можно спокойно править. Так что не думаю, что это займет больше пары дней
Теперь моя цель написать свой собственный стартовый шаблон на основе собранной информации. Чтобы можно было быстро создавать плагины под разные задачи. Но этим займусь немного позже, скорее всего, после того, как доделаю свои проекты на гитхабе (о которых также расскажу попозже)
Нашел для себя интересный способ погружения в программирование, возможно он банальный, но вполне эффективный - чтение чатов по программированию в телеге и, конечно же, общение в них
В конце дня я просто пролистываю чаты и запоминаю/выписываю интересные для себя темы, приемы, аргументы из дискуссий. И это, оправдывающий затраченное время, опыт, потому что, хотя и часто всплывают банальные темы, встречаются достаточно интересные факты из разряда "Я бы такое не загуглил"
Ну и конечно, присутствие в чатах позволяет развивать собственный бренд, что очень важно в наши дни. Потому что программиста, которого знают даже не в самых широких кругах, охотнее берут на работу, точно зная о его хорошем уровне софт-скилов
Если у вас есть интересный чат на примете, скидывайте мне его в личку, а я поделюсь своиим набором👍
В конце дня я просто пролистываю чаты и запоминаю/выписываю интересные для себя темы, приемы, аргументы из дискуссий. И это, оправдывающий затраченное время, опыт, потому что, хотя и часто всплывают банальные темы, встречаются достаточно интересные факты из разряда "Я бы такое не загуглил"
Ну и конечно, присутствие в чатах позволяет развивать собственный бренд, что очень важно в наши дни. Потому что программиста, которого знают даже не в самых широких кругах, охотнее берут на работу, точно зная о его хорошем уровне софт-скилов
Если у вас есть интересный чат на примете, скидывайте мне его в личку, а я поделюсь своиим набором👍
Как я уже упоминал, я прибрался на своем аккаунте на GitHub'е. Есть у меня несколько проектов, которые я не завершил, но вскоре думаю это исправить:
Машина Тьюринга - онлайн машина Тьюринга, которая должна была помочь со сдачей дискретной математики, но карантин убил в этом проекте смысл. Надо допилить функционал и переделать этот вырвиглазный дизайн.
DSR practice - моя провальная практика в DSR. Провалилась она потому, что у меня не хватило знаний по стеку react + express и я хотел сделать все идеально - в итоге перегорел. Полностью переделаю этот проект, когда вернусь к стеку react + express.
Tic tac toe - на крестики нолики я забил, потому что нашел проект, который полностью реализует весь функционал, который я хотел добавить. Поэтому пока нолики лежат крестиком на моей совести.
Canvas chaining method - небольшая либа, упрощающая работу с canvas. В принципе она закончена, но не хватает документации и пары полезных функций.
В свободное время займусь машиной Тьюринга, потому что это самый интересный мне проект. Остальное стоит в сторонке
Машина Тьюринга - онлайн машина Тьюринга, которая должна была помочь со сдачей дискретной математики, но карантин убил в этом проекте смысл. Надо допилить функционал и переделать этот вырвиглазный дизайн.
DSR practice - моя провальная практика в DSR. Провалилась она потому, что у меня не хватило знаний по стеку react + express и я хотел сделать все идеально - в итоге перегорел. Полностью переделаю этот проект, когда вернусь к стеку react + express.
Tic tac toe - на крестики нолики я забил, потому что нашел проект, который полностью реализует весь функционал, который я хотел добавить. Поэтому пока нолики лежат крестиком на моей совести.
Canvas chaining method - небольшая либа, упрощающая работу с canvas. В принципе она закончена, но не хватает документации и пары полезных функций.
В свободное время займусь машиной Тьюринга, потому что это самый интересный мне проект. Остальное стоит в сторонке
Последние пару дней занимаюсь разработкой на плюсах. Не серьезными проектам конечно, а решением универовских лабораторных😥.
Словарь на основе однонаправленного списка - ООП
Рекурсивная генерация последовательностей - ААС (Алгоритмы и анализ сложности)
Работа с однонаправленным списком - ЯМП
Попутно попробовал написать свой стартовый шаблон для написания лаб. Основная фича, которую я все еще хочу добавить - это unit тестирование. Но я так и не разобрался как работать с зависимостями на плюсах и cmake, поэтому подключить либу для тестирования не вышло.
Но, несмотря на небольшие загвоздки в изучении, плюсы мне нравятся все больше и больше. Сейчас продолжаю получать знания из курса, который скинул на склад. Посмотрим насколько можно прокачаться в Cpp за пару месяцев.
Словарь на основе однонаправленного списка - ООП
Рекурсивная генерация последовательностей - ААС (Алгоритмы и анализ сложности)
Работа с однонаправленным списком - ЯМП
Попутно попробовал написать свой стартовый шаблон для написания лаб. Основная фича, которую я все еще хочу добавить - это unit тестирование. Но я так и не разобрался как работать с зависимостями на плюсах и cmake, поэтому подключить либу для тестирования не вышло.
Но, несмотря на небольшие загвоздки в изучении, плюсы мне нравятся все больше и больше. Сейчас продолжаю получать знания из курса, который скинул на склад. Посмотрим насколько можно прокачаться в Cpp за пару месяцев.
Уже говорю о лабах, но совсем забыл написать, что я успешно перешел на второй курс, чему очень рад. Учеба на моем факультете (ПММ) начинается с гор математики и плавно, к третьему курсу, переходит в изучение программирования
Из математики я распрощался с линейной алгеброй, дискретной математикой и геометрией в пользу математической логики и теории вероятности - новые предметы мне нравятся больше. А математический анализ со мной еще семестр
С программированием все уже становится лучше. Вместо одной "Информатики и программирования" у меня теперь ЯМП, ООП и ААС. Полноценные предметы с лекцией, практикой и лабами - возможно я начну полноценно изучать программирование уже со второго курса, а не с третьего, как думал раньше, но надо еще месяц другой присмотреться к преподавателям и правильно совместить пары с самостоятельным изучением
Так что не жалею сейчас, что поступил на вышку и потерпел первый курс, и надеюсь не пожалею потом
Из математики я распрощался с линейной алгеброй, дискретной математикой и геометрией в пользу математической логики и теории вероятности - новые предметы мне нравятся больше. А математический анализ со мной еще семестр
С программированием все уже становится лучше. Вместо одной "Информатики и программирования" у меня теперь ЯМП, ООП и ААС. Полноценные предметы с лекцией, практикой и лабами - возможно я начну полноценно изучать программирование уже со второго курса, а не с третьего, как думал раньше, но надо еще месяц другой присмотреться к преподавателям и правильно совместить пары с самостоятельным изучением
Так что не жалею сейчас, что поступил на вышку и потерпел первый курс, и надеюсь не пожалею потом
"C++ и учеба это конечно хорошо, а как дела на работе?"
На работе всё хорошо, закончил и отправил в прод два своих плагина для бронирования времени и подписки на новости. Возможно мне нужно будет написать еще один плагин для работы с instagram'ом, но клиент пока не решил, надо ли оно ему. И осталось выполнить несколько тикетов с мелкими правками - в общем этот проект можно считать законченным
Дальше я перейду, а точнее вернусь, к разработке интернет магазина на WP+Woo. Верстка там уже готова, а вот с логикой еще надо хорошенько поработать
Чтобы работалось лучше, попутно читаю статьи, общаюсь в чатах, повышая свой уровень знаний. На выходных будет достаточно времени, чтобы доработать отложенные проекты и собрать демку на canvas с необычными эффектами и функционалом, а то уже не применял свои знания для нестандартных проектов
На работе всё хорошо, закончил и отправил в прод два своих плагина для бронирования времени и подписки на новости. Возможно мне нужно будет написать еще один плагин для работы с instagram'ом, но клиент пока не решил, надо ли оно ему. И осталось выполнить несколько тикетов с мелкими правками - в общем этот проект можно считать законченным
Дальше я перейду, а точнее вернусь, к разработке интернет магазина на WP+Woo. Верстка там уже готова, а вот с логикой еще надо хорошенько поработать
Чтобы работалось лучше, попутно читаю статьи, общаюсь в чатах, повышая свой уровень знаний. На выходных будет достаточно времени, чтобы доработать отложенные проекты и собрать демку на canvas с необычными эффектами и функционалом, а то уже не применял свои знания для нестандартных проектов