Как стать автором
Обновить
0
0
Григорий @Kozha

Пользователь

Отправить сообщение

Схематично, простыми словами о внутреннем устройстве PHP (Zend Engine, OPCache, JIT)

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров11K

Данный пост нацелен на неопытных PHP-специалистов. От этой информации лучше программировать вы не станете. Ожидаемая польза:

Мне когнитивно и морально легче, когда уменьшается «магия» того, с чем работаешь. Может тебе тоже

Возможно чуть-чуть реже статьи на хабре будут тебя отпугивать

Объясню на 4 примерах — каждый лишь немного сложнее предыдущего.

Пример 1: запуск программы, написанном на компилируемом языке (Go): в полной статье

Пример 2: Запуск скрипта PHP без OPCache и JIT

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

Это означает, что при каждом запуске программы система должна проанализировать исходный код и преобразовать его в понятный код для процессора (т.е. в машинный код).

Вот схематично представил всю последовательность работы PHP скрипта без включенных OPCache и JIT (каждый из них по отдельности рассмотрим в следующих двух примерах).

У нас привычный «исходный код» PHP (файл hello-world.php):

<?php echo "Hello world";

Опять идем по порядку, рассмотрим какие процессы происходят запустив команду:

php hello-world.php

Процесс №1 — Компиляция в байт-код
Сначала исходный код обрабатывается Zend Compiler — это PHP компилятор. Первый из двух основных компонентов Zend Virtual Machine.

В отличие от рассмотренного выше компилятора Go:

задача PHP компилятора — преобразовать исходный код не в машинный код, а в код-посредник - байт-код;

процесс компиляции происходит при каждом запуске программы (вместо лишь единоразового - до запуска программы, как в примере с Go)

В случае PHP этот байт-код назвали PHP OPCode.

Байт-код — является более низко-уровневым, чем исходный код. Он содержит набор команд для интерпретатора (об интерпретаторе в следующем пункте). Байт-код не может выполняться процессором напрямую.

Чтобы посмотреть результат работы компилятора — сам байт-код — выполним команду:

php -d opcache.opt_debug_level=0x20000 -d opcache.enable_cli=1 hello-world.php

Получим:

$_main: ; (lines=3, args=0, vars=0, tmps=1) ; (after optimizer) ; /hello-world.php:1-2 0000 EXT_STMT 0001 ECHO string("Hello World") 0002 RETURN int(1)

Вначале видим $_main: — обозначает, что следующие строки относятся к функции main. Появление такой функции в байт-коде для глобальной области видимости PHP — занятная историческая особенность, дошедшая из других языков;

Следующие 3 строки начинаются на ; — так обозначаются комментарии. Одна из целей — для дебаг-информации;

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

Процесс №2 — Выполнение байт-кода

Читать далее
Всего голосов 36: ↑35 и ↓1+43
Комментарии12

9 алгоритмов сортировки и поиска для JS, о которых вас спросят на собеседовании

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров60K

Привет, Хабр!

Меня зовут Илья, я frontend-разработчик SimbirSoft. Долгое время вопрос изучения алгоритмов был холиварным. Со я временем убедился, что ни одно современное собеседование в крупную компанию не обходится без вопросов про алгоритмы, и в последний год их всё больше.

Даже если ты frontend-разработчик и решаешь прикладные задачи, тебе в любом случае придётся знать алгоритмы хотя бы на базовом уровне. Но статей на русском с объяснением алгоритмов и тем, как их реализовать на JavaScript, крайне мало. Поэтому хочу поделиться некоторыми алгоритмами сортировки и поиска, и немного рассказать про структуры данных. Знание алгоритмов и структур данных поможет вам в оптимизации приложений.

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

Читать далее
Всего голосов 8: ↑5 и ↓3+3
Комментарии19

Первый взгляд на MoonShine

Время на прочтение3 мин
Количество просмотров6K

Меня зовут Данил Щуцкий, я автор проекта CutCode. В этой статье я хотел рассказать вам о MoonShine — панели для администрирования для ваших проектов на Laravel.

Над MoonShine я работаю с участниками комьюнити CutCode. Это open‑source проект, основная задача которого — сделать админ‑панель максимально простую (для начинающих разработчиков) и в тоже время функциональную и кастомизируемую (для опытных).

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

В качестве стека был выбран TAL (Tailwindcss, Alpine.js, Laravel), на мой взгляд и функционально и перспективно.

На момент написания статьи актуальная версия MoonShine 1.62. Для работы MoonShine необходимо:

php >= 8.0

laravel >= 9.0

Для комфортного применения MoonShine написана документация, а также снят подробный видеогайд.

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии13

Основы Linux (обзор с практическим уклоном)

Время на прочтение14 мин
Количество просмотров323K

Привет, Хабр!

В последние несколько лет все больше и больше людей ищут возможность войти в ИТ или поглубже изучить Linux, повысив уровень своей квалификации. Вместе с тем полноценных обзоров с практическом уклоном по типу «все и сразу» написано не так уж и много (особенно на русском языке).

Главная задача данной статьи – указать начинающим специалистам направление развития, дать ключевые понятия для дальнейшего изучения и показать несколько простых практических приемов. По этой причине (а еще, безусловно, вследствие недостаточной квалификации автора) теоретический материал достаточно сильно упрощен.

Читать далее
Всего голосов 59: ↑55 и ↓4+68
Комментарии44

Как написать сапера на Phaser и выполнить тестовое задание HTML5 разработчика

Время на прочтение29 мин
Количество просмотров13K
Добрый день, уважаемые коллеги!

Меня зовут Александр, я разработчик HTML5 игр.

В одной из компаний, куда я отправлял свое резюме, мне предложили выполнить тестовое задание. Я согласился и, спустя 1 день, отправил в качестве результата разработанную по ТЗ HTML5 игру.



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

Данная статья даст представление об объеме работ, достаточном для успешного выполнения среднестатистического тестового задания на позицию HTML5 разработчика. Материал также может быть интересен всем, кто хочет познакомиться с фреймворком Phaser. А если вы уже работаете с Phaser и пишете на JS — посмотрите, как разработать проект на TypeScript.

Итак, под катом много кода на TypeScript!
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии15

ChatGPT повсюду. Но откуда он взялся?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров16K

Комментарий переводчика.

Я AI энтузиаст, плотно занимаюсь нейросетевыми языковыми моделями с ноября 2022 года, за это время прочитал десятки публикаций об истории их создания, статья Дугласа Хевена лучшая из тех что я видел.

Прорывной хит OpenAI стал сенсацией в одночасье, но основан он на десятилетиях исследований

Все вокруг говорят о ChatGPT. Чат-бот, выпущенный компанией OpenAI в декабре в виде веб-приложения, практически мгновенно стал мейнстримом. По некоторым оценкам, это самый быстрорастущий интернет-сервис в истории, достигший 100 миллионов пользователей всего через два месяца после запуска. Благодаря сделке OpenAI с Microsoft стоимостью 10 миллиардов долларов, технология теперь встроена в программное обеспечение Office и поисковую систему Bing. Вдохновленный пробудившимся бывшим конкурентом в борьбе за системы поиска, Google ускоряет разработку собственного чат-бота, LaMDA. Все вокруг говорят о ChatGPT.  Даже мой семейный чат в WhatsApp забит разговорами о ChatGPT.

Но успех OpenAI не появился из ниоткуда. ChatGPT - это самая совершенная на сегодняшний день итерация в ряду крупных языковых моделей, созданных много лет назад. Вот как мы к этому пришли.

Читать далее
Всего голосов 15: ↑12 и ↓3+14
Комментарии2

Как ускорить сайт на WordPress за 15 шагов

Время на прочтение12 мин
Количество просмотров27K

Оптимизация скорости сайта на WordPress — одна из тех тем, которые, казалось бы «перекопаны» вдоль и поперек, но продолжают вызывать постоянный интерес. И, если задуматься, это совсем неудивительно. WP остается самой популярной CMS, на которой работает более 43% сайтов. Технически же неискушенный пользователь может легко потеряться в «океане» созданных для WordPress технологий и возможностей настройки.

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

Читать далее
Всего голосов 10: ↑9 и ↓1+9
Комментарии15

Виды анимации на верстке: свойства, особенности, примеры кода

Время на прочтение10 мин
Количество просмотров25K

Frontend-разработчик нашей компании Данила Абрамов рассказывает, как оптимизировать анимации и делать их плавными. В статье разберем CSS Transition, CSS Animation, SVG animation, JS-Анимацию, JS canvas и JS. WebGL / ThreeJs.

Данила объяснит, что происходит в браузере, когда мы запускаем анимацию и каким образом браузер перерисовывает все эти кадры, а также поделится основными правилами для успешной работы анимаций.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Алгоритмы для веб-разработчиков простыми словами

Время на прочтение6 мин
Количество просмотров49K

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

В этой статье мы поговорим о том, зачем вообще их нужно знать веб-разработчикам, и затронем тему оценки сложности алгоритмов и Big O нотации.

Зачем мне алгоритмы? Я фронтендер!

Вы наверняка задумались: «А зачем мне нужно тратить своё время на изучение этих сложных алгоритмов, если я работаю с фронтендом? Как знание графов и бинарных деревьев поможет мне лучше отцентровать одну div-ку внутри другой div-ки?»

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

Многие веб-разработчики на таких форумах, как Reddit и Stack Overflow, отмечали, что, освоив даже на базовом уровне эти фундаментальные основы программирования, чувствовали себя увереннее, профессиональнее и писали более чистый и структурированный код.

Также это помогло им прокачать главный скилл разработчика – умение логически думать и решать сложные технические задачи.

Кстати, именно по этой причине многие крупные IT-компании требуют от своих потенциальных сотрудников знания фундаментальных основ computer science, к которым как раз относятся алгоримты и структуры данных, и с пристрастием спрашивают их на собеседованиях.

Ведь они ищут лучших из лучших, и знание алгоритмов как раз делает вас лучше как разработчика. Тем более, лучше инвестировать свое свободное время в новые знания и навыки, чем в сериалы на Netflix.

И на этой прекрасной ноте давайте перейдем к основной теме статьи.

Читать далее
Всего голосов 23: ↑19 и ↓4+19
Комментарии25

Кратко и просто про геологию от геолога. Строение Земли

Время на прочтение8 мин
Количество просмотров37K
Здравствуйте.

Расскажу-ка я про базовые факты и следствия из них — на основе которых строится вся геология. Ибо нередко у непосвящённых возникает ощущение, что учёные взяли и выдумали все свои теории от скуки и для поддержки чувства собственного величия.


На фото 1983 года Великий Атуин, слоны и Мир на фоне Вселенной — про них ничего не будет

Нижесказанное будет относиться к геологии, но может быть применено к любой области знаний. Чтоб воспринимать дальнейшее нужно условиться (хотя бы сделать вид), что арифметика, евклидова геометрия, физика/химия за 7-9 класс школы нами принимаются как реальность, не требующая доказательств. И, да! – Землю будем считать шарообразной – иначе не интересно. Логика тоже будет использоваться, даже если это оскорбит её противников.

Начнём с базы: Карл Маркс Гегель гравитация.
Читать дальше →
Всего голосов 104: ↑100 и ↓4+120
Комментарии41

Ontol: Лучшие бесплатные онлайн-курсы от MIT

Время на прочтение6 мин
Количество просмотров27K
image

78% профессорско-преподавательского состава MIT ставит знания выше финансовой выгоды и согласились 20 лет назад стартовать инициативу MIT OpenCourseWare — полную оцифровку обучения и выкладывания его в окрытый доступ для всех желающих.

Около 35% поступивших в MIT студентов, говорят, что на их выбор повлияли бесплатные окрытые лекции MIT OpenCourseWare.

Моё личное уверждение — сейчас, впервые за историю, наступило время, когда лучшие знания человечества досупны бесплатно каждому человеку в 1 клик. Я собираю в одном месте лучшие и самые полезные беспланые курсы и лонгриды, которые влияют на судьбу человека.

Компьютернеы науки, математика, физика, этические вопросы ML, система управления истребителя F-22, физика ковида, устройство мозга, кибербезопасность, разработка игр, квантовая и ядерная физика, химия, теория алгоритмов, теория вычислений, линейная алгебра. Добро пожаловать под кат. (осторожно, 100+ мб трафика на превьюшки)

Читать дальше →
Всего голосов 13: ↑6 и ↓7+3
Комментарии9

Создание компонента Sidenav

Время на прочтение5 мин
Количество просмотров6.2K

В данной статье я хочу поделиться одним из способов создания компонента боковой панели навигации (sidenav), являющегося отзывчивым, поддерживающего навигацию с клавиатуры, работающего как при помощи JavaScript, так и без него, и поддерживаемого всеми браузерами.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Спортивное программирование — социальный лифт в IT. Как его использовать школьнику, родителям школьника и разработчику?

Время на прочтение12 мин
Количество просмотров13K

С какого возраста можно обучать ребенка программированию и какой язык лучше выбрать? Как попасть на самые крутые IT-направления в лучшие вузы? Становятся ли дети разработчиков разработчиками? Как попасть на стажировку в Яндекс или на работу в Google?

Обо всем этом нам рассказывает Михаил Рубинчик — лидер и главный тренер по спортивному программированию в Уральском федеральном университете и основатель онлайн-школы по спортивному программированию SPGuide. Подробности под катом

Читать далее
Всего голосов 9: ↑5 и ↓4+2
Комментарии30

Доставить за 30 мс: 5 лучших плагинов для оптимизации работы WordPress в 2021 году

Время на прочтение4 мин
Количество просмотров7.5K

Вы и без нас знаете, что у WordPress есть проблемы. Да, при создании сайтов им пользуются в 40% случаев — на то он и простой, как трёхколёсный велосипед. Но проблема в том, что при желании из этого велосипеда легко можно собрать хоть Франкенштейна социальную сеть с экосистемой встроенных сервисов — достаточно установить десяток-другой, а то и сразу сотню плагинов на сайт. В результате возникают проблемы с безопасностью, совместимостью расширений и скоростью загрузки сайта. Хорошая новость в том, что есть как минимум пять способов заставить WordPress работать лучше — подробней о них в нашей подборке плагинов. О большинстве из них вы уже наверняка слышали, но в списке есть и одна новинка — вместе с другими решениями она позволит вашим пользователям забыть об ожидании загрузки контента на сайте.

Поехали!
Всего голосов 7: ↑5 и ↓2+7
Комментарии9

Как начать понимать на слух английский? Подружиться с умными колонками

Время на прочтение6 мин
Количество просмотров18K
На Хабре было много статей о том, как выучить английский язык. Это — еще одна, однако здесь будут именно лайфхаки для того, чтобы прокачать навык понимания на слух, или аудирования. Причем мой подход претендует на уникальность в рамках Хабра. Навык аудирования исторически очень плохо развит в СНГ, но всё ускоряющаяся глобализация приводит к тому, что он становится понемногу востребован даже среди технических специалистов, от которых раньше требовалось «уровень английского: чтение технической документации».



Я решил, что единственный вариант достичь желаемого — избавиться от постоянного чтения, а для этого нужно отказаться от графического интерфейса, оставив только восприятие на слух, и в этом нам помогут умные колонки. Что можно делать с ними, и как с их помощью прокачать навык аудирования — под катом.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+10
Комментарии25

Собеседование php-developer (вопросы и ответы)

Время на прочтение10 мин
Количество просмотров260K
Так уж получилось, что в этом году я прошел ряд собеседований на позицию PHP разработчика, чего я не делал уже несколько лет. Будучи человеком ленивым практичным, перед собеседованием я попытался найти сборники вопросов-ответов, но все найденное было довольно старым, поэтому я решил сам подготовить список вопросов, которые встречал.

Обычно в статьях такого рода даются полные ответы на вопросы, но если вы собеседуетесь на достаточно серьезную позицию, краткой выжимки будет явно недостаточно и необходимо довольно глубоко понимать сам вопрос, поэтому я в основном вставил ссылки на документацию или статьи по описываемым вопросам.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+26
Комментарии18

Самый легкий способ изучения английского с помощью видео TED

Время на прочтение3 мин
Количество просмотров14K
Это немного адаптированный кросс-пост* статьи Самый легкий способ изучения английского с помощью видео TED с моего персонального сайта (сокращена небольшая часть в конце статьи, непосредственно не касающаяся TED).

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

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

Ниже показаны настройка мобильного приложения TED (iOS или Android) и страницы Youtube с видео TED таким образом, чтобы отображались субтитры на двух языках. Вывод двойных субтитров в мобильном приложении TED настраивается в его опциях.



Теперь реализуем все это на десктопном компьютере в Youtube, например для этого видео (все видео TED также доступны на Youtube каналe TED).
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии12

Что такое CDN, и как это вообще работает

Время на прочтение15 мин
Количество просмотров38K

Сайт Texas Internet Consulting. Жив с 1987 года, страница — 7 Килобайт.

Помните время, когда главная больше 90 Килобайт считалась расточительством? С тех пор Интернет стал жирным. И понадобились инструменты, чтобы правильно раздавать трафик сразу с нескольких узлов. Например, во время очередного обновления Fortnite CDN от Akamai сумел переварить трафик мощностью в 106 Терабит в секунду. Давайте пробежимся по основным принципам этой технологии и потенциальным проблемам.

И о том, почему Minecraft в Казани тормозит, если не развернуть сервер в черте города.
Читать дальше →
Всего голосов 50: ↑48 и ↓2+74
Комментарии30

Лучшие плагины и сервисы для WordPress в 2020

Время на прочтение8 мин
Количество просмотров38K

По версии ресурса W3Techs, под капотом более 62% всех сайтов, построенных на базе CMS, находится Wordpress той или иной версии. Официальный маркетплейс WP содержит огромное количество различных плагинов, модулей и расширений базового функционала и разобраться в этом разнообразии — не самая простая задача. Эта статья призвана ее упростить.

Автор статьи — веб-разработчик с 12-летним стажем работы с WordPress, он подготовил подборку своих любимых инструментов для решения повседневных задач. Большинство приведённых примеров широко известны в WP сообществе, однако, есть и парочка личных открытий.
Читать дальше →
Всего голосов 39: ↑36 и ↓3+52
Комментарии25

Памятка по работе с Canvas API

Время на прочтение2 мин
Количество просмотров15K


Доброго времени суток, друзья!

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

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

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

Код разбит на отдельные блоки-песочницы, которые для удобства чтения помещены под «кат».

Парочка важных моментов.

Ширину и высоту холста лучше определять с помощью атрибутов:

<canvas width="300" height="300"></canvas>

Если мы хотим, чтобы холстом была вся область просмотра, то делаем следующее:

const width = canvas.width = innerWidth
const height = canvas.height = innerHeight

Холст и двумерный контекст рисования я обычно определяю следующим образом:

const canvas = document.querySelector('canvas')
// не путать с объектом jQuery
const $ = canvas.getContext('2d')

Довольно слов.
Всего голосов 13: ↑12 и ↓1+20
Комментарии2

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность