Как стать долларовым миллионером за 30 лет, лежа на диване

Часть 1: почему не существует богатых трейдеров Кто и почему рекламирует трейдинг Гид, показывающий приезжему финансовый район Нью-Йорка, обращает его внимание на несколько красивых судов на якоре у берега.— Посмотрите, – говорит гид, – это яхты брокеров и банкиров.— А где же яхты их клиентов? — спрашивает наивный гость Со всех сторон на нас льются потоки рекламы с улыбающимися людьми, держащими в руках пачку долларов, и рассказывающими как они жутко разбогатели сидя дома на диване, Read more

Кое-что об inode

Периодически, с целью переезда в ЦРС собеседуюсь в разных крупных компаниях, в основном Питера и Москвы на должность DevOps. Обратил внимание, что во многих компаниях (во многих хороших компаниях, например в яндексе) задают два сходных вопроса: что такое inode; по каким причинам можно получить ошибку записи на диск (или например: почему может закончиться место на диске, суть одна). Как часто бывает, я был уверен, что эту тему знаю хорошо, но как только начал объяснять — Read more

Хаки при работе с большим числом мелких файлов

Дело в том, что внутренней спецификой работы наших сервисов является хранение огромадного числа мелких файлов. На данный момент у нас порядка сотен терабайт таких данных. И мы натолкнулись на некоторые очевидные и не очень грабельки и успешно по ним прошлись.Поэтому делюсь нашим опытом, может кому и пригодится. Проблема первая: «No space left on device» Как упоминалось в вышеупомянутой статье, проблема в том, что свободные блоки на файловой системе есть, а вот inode закончились.Проверить число использованных Read more

Raw Queries in Laravel

Business logic is often complicated. Because of this, we often need to write our own SQL queries. Luckily, Laravel‘s query builder has the tools we need to safely run such queries. A key concern when writing our own queries is protecting our application from SQL injection attacks. Normally, the query builder does this for us. However, when we write our own SQL, we need to make sure we don’t inadvertently remove this protection. Here’s what Read more

Write string slice line by line to a text file

The bufio package provides an efficient buffered Writer which queues up bytes until a threshold is reached and then finishes the write operation to a file with minimum resources. The following source code snippet shows writing a string slice to a plain text file line-by-line. package main   import ( "bufio" "log" "os" )   func main() { sampledata := []string{"Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "Nunc a mi dapibus, faucibus mauris eu, fermentum ligula.", Read more

Указатели в Go Lang

Когда мы вызываем функцию с аргументами, аргументы копируются в функцию: func zero(x int) { x = 0 } func main() { x := 5 zero(x) fmt.Println(x) // x всё еще равен 5 } В этой программе функция zero не изменяет оригинальную переменную x из функции main. Но что если мы хотим её изменить? Один из способов сделать это — использовать специальный тип данных — указатель: func zero(xPtr *int) { *xPtr = 0 } func main() Read more

Правильная регистрация консольных команд Symfony в DI

Как добавить такую команду в DI? <?phpdeclare(strict_types=1);namespace App\Console;use Symfony\Component\Console\Command\Command;final class DoStuffCommand extends Command{ protected function configure(): void { $this ->setName('app:do:stuff') ->setDescription('This command does stuff') ; } // ...} Неправильный способ services: _defaults: autoconfigure: true App\Console\DoStuffCommand: ~ # tags: [ console.command ] # с тегом, если не используется автоконфигурация В чем тут проблема? Symfony DI не знает имя вашей команды при компиляции! Если в проекте есть такие команды, консольное приложение будет все их инициализировать при каждом Read more

Symfony State Machines and Domain Driven Design

It has been just over 2 years since Symfony released their Workflow component. I was of course thrilled by the news and started to work on multiple PRs to make the component support state machines. It was a really cool experience working with the Symfony community and discussing everything from Petri nets to minor code optimizations. I often get questions how to work with the Workflow component and questions like “what should I do in Read more

Работаем с MySQL в Go

Сегодня хочу рассказать о небольшом опыте работы с MySQL (хотя тут можно использовать и любую другую БД) в Go. Я нашел для себя отличный способ работать с БД из Go и спешу им поделиться. Вообще в Go есть несколько важных вещей для того, чтобы делать запросы. Например database/sql и github.com/go-sql-driver/mysql. А для того, чтобы мапить результат запроса в структуру — будем использовать github.com/jmoiron/sqlx sqlx — это набор экстеншнов поверх database/sql которые позволяют сделать минимальную “орм” Read more

Pessimistic vs Optimistic Locking in Laravel

Introduction When two or more clients want to update the same record, a conflict may occur which is known as a race condition. To prevent such a conflict, a pessimist system assumes the worst, i.e., the updates always occur at the same time. Thus, it eliminates the race condition by locking the record. Pessimist systems typically rely on the database locking facilities; for example InnoDB’s row-level lock. On the other hand, an optimistic system assumes Read more


Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть