Полезные ссылки: блоги

Полезные блоги:

  • Start Android “Учебник по Android для начинающих и продвинутых”
  • TRETYAKOV.NET “О веб разработке и IT”
  • Ivan Grishaev’s blog “Writing on programming, education, books and negotiations.”
  • lisakov.com “Лисаков и макромир”
  • Ivan Velichko “Серверная разработка с Иваном Величко”
  • mkyong java tutorials

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

MongoDB: aggregate

Пример aggregation в Mongo:

db.targets.aggregate([
{$sort:{"processing":1}},
{$lookup:{
from:"campaigns",
let:{campaign:"$campaignname"},
pipeline:[
{$match:{$expr:{$and:[
{$eq:["$campaignname","$$campaign"]},
{$eq:["$enabled",true]}
]}}}
],
as:"campaign"}
},
{$unwind:"$campaign"},
{$limit:1},
{$set:{
date:Date.now(),
processing:{
$ifNull:[{$add:["$processing",1]},1]
}
}},
{$merge:"targets"}
]);

Соответствующий UPDATE в MySQL выглядел бы примерно так:

update targets 
inner join (
select targets.id from targets
inner join campaigns
on targets.campaignname=campaigns.campaignname
where campaigns.enabled
order by processing
limit 1
) t
on targets.id = t.id
set processing=IFNULL(processing,0)+1, date=now()

Второй вариант короче, проще, понятнее, и напишу я его в разы быстрее. В общем, по-моему, Mongo - это сильно на любителей заморочиться…

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

Полезные ссылки (Best Practics)

Как-то я начал коллекционировать “Полезные ссылки“. В настоящий момент они разбиты на 10 тем:

Новая 11-я тема называется “Best Practices”:

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

Manage Web Site with Git: switch default branch

GitHub настоятельно рекомендует использовать не master а main. Не буду давать эмоциональную оценку этому, она очевидна…

В общем, есть последствие если git использовать для деплоя сайта/приложения на веб сервер.  Описание тут: Using Git to Manage a Live Web Site. Хук post-receive не будет работать. Точнее, не будет работать чекаут:

GIT_WORK_TREE=/path/to/webroot/of/mywebsite git checkout -f

Вылетает ошибка: fatal: You are on a branch yet to be born

Короче, надо сменить дефолтный бранч в bare репозитории на веб сервере с master на main, после чего все будет работать как надо:

cd mywebsite.git
git symbolic-ref HEAD refs/heads/main

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

Install php-mongodb for PHP 7.3 on CentOS 7

yum install -y php73-php-devel php73-php-pear
sudo /opt/remi/php73/root/usr/bin/pecl install mongodb
cp /opt/remi/php73/root/usr/lib64/php/modules/mongodb.so /usr/lib64/php/modules/
chmod +x /usr/lib64/php/modules/mongodb.so
echo extension=mongodb.so > /etc/php.d/20-mongodb.ini

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru