Рубрика «никто не читает теги» - 17

Современный PHP без фреймворков - 1

У меня есть для вас непростое задание. Когда в следующий раз начнёте новый проект, постарайтесь обойтись без PHP-фреймворка. Я не собираюсь перечислять недостатки фреймворков, и это не проявление синдрома неприятия чужой разработки: в этом руководстве мы будем использовать пакеты, написанные разработчиками нескольких фреймворков. Я всецело уважаю инновации в этой сфере.

Читать полностью »

Моё внимание привлекли работы американского художника Энди Боча (Andy Bauch) в виде картин из блоков Lego. В них, по заявлению автора, зашифрованы приватных ключи к кошелькам разных криптовалют, в том числе и биткоина. Стоимость активов и адреса кошельков находятся на странице newmoney.andybauch.com

Вызов принят

Для примера возьмём наиболее наглядную картину Bitcoin Initially Valued at $60.

Как взломать картину и (не) получить BTC - 1

В ней зашифрован приватный ключ к адресу 1HvEJG5JR84MVpncXcDVBqx65uY5odr6fP на котором находилось ~0.14 биткоина (~$1200).
Читать полностью »

Функциональное программирование с PHP-генераторами - 1

Генераторы классные. Они облегчают написание итераторов, определяя функции вместо создания целых классов, реализующих Iterator. Также генераторы помогают создавать ленивые списки (lazy list) и бесконечные потоки. Главное отличие функции-генератора от обычной функции в том, что обычная может возвращать только один раз (после этого её исполнение прекращается), а функция-генератор в ходе исполнения способна выдавать несколько значений. При этом в перерывах между возвратами исполнение генератора ставится на паузу до следующего запуска. Поэтому генераторы могут использоваться для создания списков с лениво генерируемыми значениями, то есть каждый элемент в списке вычисляется только в момент востребованности.

Читать полностью »

image

В этой статье мы с нуля разработаем React-приложение, обсудим домен и его сервисы, хранение, сервисы приложения и представление (view).

Читать полностью »

Профилирование: оптимизация - 1

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

Читать полностью »

Профилирование: измерение и анализ - 1

Привет, я Тони Альбрехт (Tony Albrecht), инженер в Riot. Мне нравится профилировать и оптимизировать. В этой статье я расскажу об основах профилирования, а также проанализирую пример С++-кода в ходе его профилирования на Windows-машине. Мы начнём с самого простого и будем постепенно углубляться в потроха центрального процессора. Когда нам встретятся возможности оптимизировать — мы внедрим изменения, а в следующей статье разберём реальные примеры из кодовой базы игры League of Legends. Поехали!

Читать полностью »

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

Что касается Python, то в нём есть почти всё.

  • Динамический массив — встроенный тип list. Он же поддерживает и стековые операции: .append() и .pop().
  • Хэш-таблица — встроенные типы set и dict, а также неизменяемый брат сета frozenset.
  • Куча — list со специальными операциями вставки и удаления, реализованными в модуле heapq.
  • Двусторонняя очередь — это описанный в модуле collections тип deque.

Но вот самобалансирующегося дерева поиска, как такового, в стандартной библиотеке нет. А жаль!

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

Хуки жизненного цикла Vue.js - 1

Хуки жизненного цикла (lifecycle hooks) — важная часть любого серьёзного компонента. Нам часто нужно знать, когда компонент был создан, добавлен в DOM, обновлён или уничтожен. Хуки жизненного цикла показывают нам, как работает «за кулисами» выбранная библиотека. Они часто вызывают у новичков трепет или беспокойство. К счастью, понять принцип работы хуков несложно, см. схему:

Читать полностью »

Здравствуй, читатель!

Тема, которую я хочу поднять, выглядит настолько странной, так что я затруднился, в какие хабы ее отнести. Начну с вопроса: в чем отличие табуретки от смартфона? В сложности? Нет, не про то. Поставим вопрос несколько иначе: в чем отличие твоей собственной руки как инструмента от автомобиля?.. Я хочу выделить некоторое свойство предметов, программ или, более общо, изделий, которое характеризует то, как вещь служит своему владельцу. После этого мы обсудим, полезно ли это свойство, то есть улучшает ли оно потребительские характеристики, и в каких случаях. И если решим, что польза есть, то подумаем, как сделать, чтобы больше вещей обладало этим свойством.

Читать полностью »

Исчерпывающие бенчмарки PHP 5.6, 7.0, 7.1, 7.2 и HHVM (2018) - 1

Каждый год мы стараемся тщательно измерять производительность разных версий PHP и HHVM на различных платформах. В этом году мы измерили четыре версии PHP и HHVM на 20 платформах/конфигурациях, включая WordPress, Drupal, Joomla!, Laravel, Symfony и многие другие. Также мы протестировали популярные решения для электронной коммерции вроде WooCommerce, Easy Digital Downloads, Magento and PrestaShop.

Мы всегда рекомендовали пользователям WordPress не пренебрегать преимуществами свежайших поддерживаемых версий PHP. Не только ради безопасности, но и ради повышения производительности. Причём речь идёт не только о WordPress, это по большей части справедливо для всех платформ. И сегодня мы продемонстрируем, как PHP 7.2 одерживает сокрушительную победу!

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js