Pull to refresh
-2
Karma
0
Rating
Дмитрий @Compolomus

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

Мифы об асинхронном PHP: он не по-настоящему асинхронный

PHP *
Translation

В последнее время было достаточно много обсуждений производительности в PHP. И даже несмотря на то, что у нас есть PHP8, JIT и куча других улучшений, многие по-прежнему продолжают жаловаться на то, что PHP "недостаточно производительный". Что PHP - это язык, подходящий только для модели запрос-ответ. Что PHP слишком медленный и его не нужно использовать для высоконагруженных систем. С одной стороны от части всё это правда. Если мы строим какую-то систему, для которой вопрос производительности критичен, то использовать классический блокирующий PHP явно не стОит. Большая часть функций и библиотек PHP созданы для работы в традиционном блокирующем окружении, что уже подразумевает собой не самую высокую производительность. Однако PHP может работать быстро, более того, он может работать очень быстро. Как? Обычно у нас может быть две причины, из-за чего будет проседать производительность: мы либо совершаем какие-то сложные вычисления, либо у нас есть блокирующй ввод-вывод. Первое к сожалению (или к счастью) мы не можем решить в PHP. Но блокирующий ввод-вывод для PHP совсем не проблема. В PHP-сообществе есть люди, которые пишут асинхронный код уже на протяжении несколько лет. Конечно одновременно с этим бОльшая часть сообщества по-прежнему считает асинхронный PHP - дикостью. Я часто слышал: "Ты наверно совсем отчаянный, если собираешься писать что-то асинхронное на PHP". По правде говоря, у нас у всех есть это предубеждение, что PHP не подходит для подобного рода задач. И в большинстве случаев это предубеждение основано на неверных представлениях о самой "асинхронности". Неверные предубеждения в свою очередь ведут к неправильным ожиданиям, что в свою очередь приводит к разочарованию и обвинениям в том, что PHP "не по-настоящему асинхронный".

Читать далее
Total votes 40: ↑39 and ↓1 +38
Views 11K
Comments 19

Проходим челлендж RegexPlay на 100%

Regular expressions *

Челлендж от Machine Learning Lab Университета Триеста (Италия) предлагает решить 12 задач причём уровень задач сильно варьируется — от супер-лёгкого до сложного.


Конечно, решений может быть больше одного и тест-кейсы в задаче покрывают не все варианты. Тем не менее если набрали 100% — то поздравляю! Тест пройден.


Спойлер: в некоторых задачах (особенно лёгких) подсказка практически и есть решение.

Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 5.1K
Comments 6

Single Responsibility Principle. Не такой простой, как кажется

Programming *Perfect code *ООP *Studying in IT
Tutorial

image Single responsibility principle, он же принцип единой ответственности,
он же принцип единой изменчивости — крайне скользкий для понимания парень и столь нервозный вопрос на собеседовании программиста.


Первое серьезное знакомство с этим принципом состоялось для меня в начале первого курса, когда молодых и зеленых нас вывезли в лес, чтобы сделать из личинок студентов — студентов настоящих.


В лесу нас разделили на группы по 8-9 человек в каждой и устроили соревнование — какая группа быстрее выпьет бутылку водки при условии, что первый человек из группы наливает водку в стакан, второй выпивает, а третий закусывает. Выполнивший свою операцию юнит встает в конец очереди группы.


Случай, когда размер очереди был кратен трем, и являлся хорошей реализацией SRP.

Но почему соображать нужно именно на троих?
Total votes 34: ↑31 and ↓3 +28
Views 35K
Comments 16

10 принципов объектно-ориентированного программирования, о которых должен знать каждый разработчик

Skillbox corporate blog Programming *Java *Studying in IT
Translation


Мне довольно часто встречаются разработчики, которые не слышали о принципах SOLID (мы подробно рассказывали о них здесь. — Пер.) или объектно-ориентированного программирования (ООП), или слышали, но не используют их на практике. В этой статье описываются преимущества принципов ООП, которые помогают разработчику в его ежедневном труде. Некоторые из них хорошо известны, другие — не очень, так что статья будет полезна и новичкам, и уже опытным программистам.
Читать дальше →
Total votes 57: ↑36 and ↓21 +15
Views 49K
Comments 26

Знакомство с Python для камрадов, переросших «язык A vs. язык B» и другие предрассудки

Python *Programming *History of IT

Для всех хабравчан, у которых возникло ощущение дежавю: Написать этот пост меня побудили статья "Введение в Python" и комментарии к ней. К сожалению, качество этого "введения" кхм… не будем о грустном. Но ещё грустнее было наблюдать склоки в комментариях, из разряда "C++ быстрее Python", "Rust ещё быстрее C++", "Python не нужен" и т.д. Удивительно, что не вспомнили Ruby!


Как сказал Бьярн Страуструп,


«Есть всего два типа языков программирования: те, на которые люди всё время ругаются, и те, которые никто не использует».

Добро пожаловать под кат всем, кто хотел бы познакомиться с Python, не опускаясь при этом до грязных ругательств!

Читать дальше →
Total votes 88: ↑83 and ↓5 +78
Views 41K
Comments 145

Участвуй в конкурсе по разгону оперативной памяти — HyperX Memory OC Competition 2019

Kingston Technology corporate blog Computer hardware Old hardware Desktop PC's CPU
Привет, Хабр! Мы ищем таланты, вернее, самых талантливых оверклокеров — для них HyperX совместно с лабораторией оверклокинга OCLab.ru запускает конкурс HyperX Memory OC Сompetition 2019. Если вы начинающий оверклокер, а CAS Latency не отличаете от RAS to CAS Delay, то ничего страшного. С нашей инструкцией вы тоже сможете испытать удачу в конкурсе. Суть конкурса очень простая: HyperX Memory OC Сompetition 2019 посвящен разгону оперативной памяти Kingston и HyperX.


Читать дальше →
Total votes 22: ↑19 and ↓3 +16
Views 9.1K
Comments 4

Некоторые аспекты мониторинга MS SQL Server. Рекомендации по настройке флагов трассировки

SQL *Microsoft SQL Server *Database Administration *
Tutorial

Предисловие


Довольно часто пользователи, разработчики и администраторы СУБД MS SQL Server сталкиваются с проблемами производительности БД или СУБД в целом, поэтому весьма актуальным является мониторинг MS SQL Server.

Данная статья является дополнением к статье Использование Zabbix для слежения за базой данных MS SQL Server и в ней будут разобраны некоторые аспекты мониторинга MS SQL Server, в частности: как быстро определить, каких ресурсов не хватает, а также рекомендации по настройке флагов трассировки.

Для работы следующих приведенных скриптов, необходимо создать схему inf в нужной базе данных следующим образом:

Создание схемы inf
use <имя_БД>;
go
create schema inf;
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Views 22K
Comments 24

Как совместить преимущества ноутбука и стационарного компьютера? Разбор проблемы и идеи решения

Computer hardware DIY
Sandbox
В данный момент ноутбуки и персональные компьютеры сильно отличаются друг от друга. Под системным блоком стационарного компьютера, как правило, понимается «башня» преимущественно стандарта midi-tower, весом килограмм в 15-20 (или больше), занимающий огромное пространство под столом. Чтобы перемещать системный блок с места на место, как правило, требуются большие усилия.

Под ноутбуком понимается решение небольшого веса и размера, мобильное, с которым можно работать и дома, и в офисе, и на отдыхе, и даже по пути из одного места в другое. Вдобавок, в ноутбуке встроена вся та периферия, которую к системному блоку необходимо подключать. К сожалению, ноутбуки почти всегда значительно уступают в производительности стационарным компьютерам, а если и не уступают, то имеют очень высокую цену по сравнению с «большим братом». Но, наверное, самое неприятное — ноутбук почти невозможно сделать «под себя», выбрать те комплектующие, которые по скорости, производительности, цене и внешнему виду актуальны именно тебе и именно сегодня, а через пару лет при желании поменять эти комплектующие на более современные.

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

Для начала давайте скажем, что в этом посте речь зайдет не о переносных мониторах, мышках и другой периферии. В этом посте мы будем говорить практически полностью о корпусе компьютера. Каким должен быть корпус и какие комплектующие он должен в себя вмещать, чтобы при относительно компактном размере обеспечивать высокую производительность, а так же возможность собрать компьютер таким, каким его видит конечный потребитель?
Total votes 44: ↑36 and ↓8 +28
Views 53K
Comments 141

Лучшие и худшие тренды MWC 2019

Pochtoy.com corporate blog Gadgets Smartphones The future is here


Две недели назад в Испании закончилась выставка Mobile World Congress. На Хабре от неё – только анонс Microsoft. Но самое интересное, ради чего в Барселону съезжались 100+ тысяч человек, – всё-таки новинки рынка смартфонов. На этот раз тоже было полно необычных девайсов и крутых технологий, а их тут в полной мере, кажется, даже никто не осветил.


В прошлом году мы делали подборки лучших и худших трендов, людям вроде понравилось, так что попробуем продолжить традицию. Если вкратце: Huawei и Samsung на этот раз большие молодцы, а Sony и LG несёт куда-то не туда. И да, Apple почему-то больше никто не копирует.

Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Views 17K
Comments 81

Используем старые HDD с бэдами

Old hardware
Ещё со студенческих времен у меня стояла куча жестких дисков. Время от времени я их апгрейдил — старые продавал, а вместо них ставил более емкие. Тогда спрос на объем был довольно большой, все приходилось хранить у себя на винтах. Но пришло время интернета, и локалки отпали сами собой. Какое-то время диски использовались как файлопомойка для торрентов. Но надобность в апгрейде из-за нехватки объема постепенно отпала. В итоге я оказался с кучей довольно старых винчестеров, которые начали постепенно умирать. Они еще не трупы, но уже накрылись бэд блоками и поползли в сторону могилы. Естественно, при первых признаках бэдов всё более-менее ценное переносилось на новый винт, а старый…
Читать дальше →
Total votes 69: ↑59 and ↓10 +49
Views 76K
Comments 162

Древности: современный компьютер из старых запчастей

«Лаборатория Касперского» corporate blog Computer hardware Old hardware
В какой момент электроника становится винтажной? Когда в ней пропадает всякий практический смысл, как например сейчас нет смысла в карманном компьютере начала двухтысячных? Когда популярная в свое время железка становится редкостью? Когда большинство людей забыло, как это настраивается и работает, как произошло с модемами?


В моем случае ответ простой: ничто в этом мире не вечно. Собрать информацию об умеренно старой компьютерной технике в тот момент, когда данные легко доступны, и сам еще многое помнишь, проще, чем лет через двадцать копаться в веб-архиве, пытаясь хоть что-то найти. В 2009 году в честь очередного переезда я продал свой последний настольный компьютер, и с тех пор пользовался только ноутбуками. В 2019 году я вновь построил домашний ПК, загрузив сейв десятилетней давности. Старые комплектующие достаточно подешевели, чтобы можно было поэкспериментировать без серьезного финансового риска. Но они еще не до конца устарели, и кажется первый и последний раз я собираю относительно старое железо для повседневных задач. Есть ли в этом смысл? Сейчас расскажу.
Читать дальше →
Total votes 82: ↑76 and ↓6 +70
Views 61K
Comments 176

Точечный обход блокировок PKH на роутере с OpenWrt с помощью WireGuard и DNSCrypt

System administration *Network technologies *
Sandbox

UPD 16.10.2022


  • Исправлены конфиги для Openwrt 22
  • Добавлен community список
  • В скрипт hirkn добавлена проверка загрузки файлов. Которая решает проблему, если при старте устройства не удалось сразу загрузить списки
  • DNSCrypt изменён на DNSCrypt v2

Часть 2: Поиск и исправление ошибок


Чем отличается от подобных материалов?


  • Реализация на чистом OpenWrt
  • Использование WireGuard
  • Конфигурация роутера организуется с помощью конфигов OpenWrt, а не кучей в одном скрипте
  • Предусмотрены ситуации при рестарте сети и перезагрузке
  • Потребляет мало ресурсов роутера: заблокированные подсети содержатся в iptables, а не в таблицах маршрутизации. Что позволяет развернуть это дело даже на слабых устройствах
  • Автоматизация конфигурации с помощью Ansible (не требуется python на роутере)
Читать дальше →
Total votes 62: ↑61 and ↓1 +60
Views 86K
Comments 99

Побеждаем прокрастинацию игровой зависимостью

Game development *GTD *Lifehacks for geeks
Sandbox
Всем вам, безусловно, знакомо явление прокрастинации. Психологическая неспособность покинуть зону комфорта и начать заниматься каким-то делом здесь и сейчас съела немало человеко-часов представителей самых разных профессий. Под её влиянием, не занимаясь ни делом, ни отдыхом, а только каким-нибудь бесцельным занятием вроде сёрфинга сети, мы зарабатываем только лишний стресс. Это история о том, как одна случайная идея позволила мне не только избавиться от этой проблемы, но и повысить свою продуктивность до уровня, о котором я раньше мог только мечтать.

Существует категория проектов, которым прокрастинация наносит, пожалуй, наибольший возможный урон. Речь, конечно же, о собственных проектах, ещё не приносящих, либо вовсе не подразумевающих прибыли. Когда у тебя нет ни дедлайна, ни дохода, ни какой-либо обязанности перед кем-либо, очень легко отложить работу на потом, да так к ней толком и не притрагиваться. Именно таким проектом для меня стала моя попытка удариться в инди-геймдев.
Читать дальше →
Total votes 48: ↑47 and ↓1 +46
Views 28K
Comments 45

Ищем иголку в стоге без использования всем известных алгоритмов

C++ *Mathematics *Developing for Arduino *DIY
Sandbox

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

Считаю, что лучший способ — эксперимент, к сожалению стога сена у меня нет, зато есть базовые знания программирования, микроконтроллер Arduino, удобная среда для написания кода, так что каждый сможет повторить.
Читать дальше →
Total votes 15: ↑11 and ↓4 +7
Views 5.3K
Comments 16

Information

Rating
Does not participate
Location
Калининград (Кенигсберг), Калининградская обл., Россия
Date of birth
Registered
Activity