This media is not supported in your browser
VIEW IN TELEGRAM
Один из популярных способов денормализации для счётчиков это вынести в отдельную таблицу количество прочитанных и не прочитанных сообщений. И когда мы открываем сообщение бросается ивент, который отнимает у счетчика прочитанные сообщения. В случае отсутствия атомарности данной транзакции (а это нормально, ведь вы хотите прочитать сообщение, а не уменьшить счётчик непрочитанных, и в случае неудачи отнятия прочитанного у счетчика фейлить открытие неразумно) можно наблюдать эффект, когда сообщение прочитано, а счётчик не обнулился. Теперь ждать когда будет запущен контрольный пересчёт, который профиксит эту проблему...
Forwarded from THINGS PROGRAMMERS DO
This media is not supported in your browser
VIEW IN TELEGRAM
Когда джун просит дажть ему доступ к базе данных продакшена.
История одного бага и комитта, где все объясняется https://github.com/alphagov/govuk-puppet/commit/63b36f93bf75a848e2125008aa1e880c5861cf46
Теперь я видел все 😆
Теперь я видел все 😆
GitHub
Convert template to US-ASCII to fix error · alphagov/govuk-puppet@63b36f9
I introduced some tests in a feature branch to match the contents of
`/etc/nginx/router_routes.conf`. They worked fine when run with `bundle exec
rake spec` or `bundle exec rspec modules/router/spe...
`/etc/nginx/router_routes.conf`. They worked fine when run with `bundle exec
rake spec` or `bundle exec rspec modules/router/spe...
HTTP Response 418 #УкрТґ 🇺🇦
Читаю одну крутую книгу по хайлоад, нашёл очень крутое объяснение разницы декларативного и императивного подхода. Будет ли интересен такой контент?
Telegraph
Декларативные запросы в Интернете
Преимущества декларативных языков запросов не ограничиваются использованием только в базах данных. Чтобы проиллюстрировать это утверждение, сравним декларативный и императивный подход в совершенно другой среде: браузере. Допустим, у нас есть сайт, посвященный…
Forwarded from PHP Digest
Чёрная магия PHP
https://github.com/lisachenko/z-engine
Как замокать финальный класс или переопределить финальный метод? Ну допустим, для этого есть badoo/soft-mocks. А как насчёт добавить интерфейс к существующему классу в рантайме? Или, например, изменять тип объекта.
Новая библиотека от Александра Лисаченко потенциально позволяет делать вообще всё что угодно.
В PHP 7.4 добавлена новая возможность – FFI, которая позволяет подгружать сишные модули (.dll or .so), и вызывать функции из них или использовать структуры данных из C на чистом PHP.
Библиотека Z-Engine использует FFI, чтобы получить доступ к внутренним структурам самого PHP! Z-Engine читает нативные структуры PHP, например, zend_class_entry, zval, и подобные и может изменять их в рантайме.
https://github.com/lisachenko/z-engine
Как замокать финальный класс или переопределить финальный метод? Ну допустим, для этого есть badoo/soft-mocks. А как насчёт добавить интерфейс к существующему классу в рантайме? Или, например, изменять тип объекта.
Новая библиотека от Александра Лисаченко потенциально позволяет делать вообще всё что угодно.
В PHP 7.4 добавлена новая возможность – FFI, которая позволяет подгружать сишные модули (.dll or .so), и вызывать функции из них или использовать структуры данных из C на чистом PHP.
Библиотека Z-Engine использует FFI, чтобы получить доступ к внутренним структурам самого PHP! Z-Engine читает нативные структуры PHP, например, zend_class_entry, zval, и подобные и может изменять их в рантайме.
// Сделаем абстрактный класс обычнымОсторожно! Библиотека предоставляет практически неограниченный доступ к памяти самого PHP и работает со структурами на низком уровне. Поэтому вполне возможны сегфолты, утечки памяти и другие неприятные последствия. Так что, только для тестов.
$refClass = new ReflectionClass(TestClass::class);
$refClass->setAbstract(false);
assertFalse($refClass->isAbstract());
$instance = new TestClass();
assertInstanceOf(TestClass::class, $instance);
GitHub
GitHub - lisachenko/z-engine: :zap: PHP Engine Direct API
:zap: PHP Engine Direct API. Contribute to lisachenko/z-engine development by creating an account on GitHub.
Forwarded from oleg_log (Oleg Kovalov)
Нашел отличную и официальную организацию от AWS с кучей примеров. В общем-то а как еще втянуть людей в свою секту? Но вещь полезная.
https://github.com/aws-samples?type=source
https://github.com/aws-samples?type=source
Я поражён этой инициативой.
Вдруг у человечества будут проблемы. Например много умрет. Или техногенная катастрофа. Современное программное обеспечение законсервируют как святой грааль с инструкциями о восстановлении данных.
https://archiveprogram.github.com/
Вдруг у человечества будут проблемы. Например много умрет. Или техногенная катастрофа. Современное программное обеспечение законсервируют как святой грааль с инструкциями о восстановлении данных.
https://archiveprogram.github.com/
GitHub Archive Program
Preserving open source software for future generations
В моем опенспейсе работает от 40 до 50 человек. Стал задываться о покупке вот такой штуки
Пользовался кто-нибудь? Может есть советы? Пишите в личку @omentes
Пользовался кто-нибудь? Может есть советы? Пишите в личку @omentes
ROZETKA
Наушники противошумные защитные 3M Peltor Optime III (12529)
ROZETKA ⚡️ Купить Наушники противошумные защитные 3M Peltor Optime III (12529) от продавца: Traveller | Низкие цены, гарантия, скидки, кредит или оплата частями
Forwarded from Sysadmin Tools 🇺🇦
Никак не умрет этот ваш php...
https://www.opennet.ru/opennews/art.shtml?num=51944
https://www.opennet.ru/opennews/art.shtml?num=51944
www.opennet.ru
Релиз языка программирования PHP 7.4
После года разработки представлен релиз языка программирования PHP 7.4. Новая ветка включает серию новых возможностей, а также несколько изменений, нарушающих совместимость.
Forwarded from Sysadmin Tools 🇺🇦
Давеча попросил человека перенести полностью репы с одной VCS в другую, к примеру с github в gitlab. Сейчас смотрю, а там не перенос, а просто коммит без веток и всего прочего. Думаю сделаю пост:
Как сделать полный перенос репозитория на другой сервер #vcs #git #github #gitlab #bitbucket
Как сделать полный перенос репозитория на другой сервер #vcs #git #github #gitlab #bitbucket
# Клонируем исходный репозиторий без рабочего каталога (--bare)
git clone --bare https://github.com/exampleuser/old-repository.git
cd old-repository.git
# Делаем mirror-push(будут скопированы все ветки и тэги) в новый репозиторий
git push --mirror https://github.com/exampleuser/new-repository.git
cd ..
# Удаляем папку с репозиторием
rm -rf old-repository.gitИспользование
.git/hooks/commit-msg
Копируем пример в рабочий хукcp .git/hooks/commit-msg.sample .git/hooks/commit-msgРедактируем содержимое файла
~/test(TEST-BRANCH) » cat .git/hooks/commit-msgТеперь при коммите будет следующее поведение - к вашему сообщению в начале будет добавлено название бранчи в квадратных скобках.
#!/bin/sh
COMMIT_EDITMSG=$1
NAME=$(git branch | grep '*' | sed 's/* //')
echo "[$NAME] $(cat $COMMIT_EDITMSG)" > $COMMIT_EDITMSG
cat $COMMIT_EDITMSG
git commit -am 'text'
даст текст коммита[TEST-BRANCH] text#git
Forwarded from IT Юмор
This media is not supported in your browser
VIEW IN TELEGRAM
Когда действительно заботишься о надеждности пароля своих пользователей