Как стать автором
Обновить
27
0
Алексей @alverspb

Разработчик

Отправить сообщение

Почтовый сервер с нуля. Часть первая

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров24K

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

В этом материале будет представлена связка полноценного почтового сервера в виде Exim4+Dovecot+PostfixAdmin+RainLoop.

Читать далее
Всего голосов 20: ↑19 и ↓1+18
Комментарии26

Настройка ESLint для чистого кода в проектах на Vue

Время на прочтение14 мин
Количество просмотров23K

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

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

В этой статье рассмотрим пример настройки ESLint для разработки приложений на Vue. В итоге мы получим настройки ESLint, которые будут проверять наш код на соответствие большинству правил официального стайлгайда Vue. Материал полезен начинающим разработчикам, которые хотят улучшить свой стиль кода, и более опытным на старте нового проекта в незнакомой или большой распределенной команде. Эти настройки помогут придерживаться кодстайла и отслеживать некоторые ошибки (синтаксические, логические, ошибки, связанные с динамической типизацией) еще на этапе написания кода, повысят его читаемость и упростят код-ревью. В конечном итоге это приведет к сокращению сроков разработки.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии7

Оптимизация конфигурации Dockerfile в PHP

Время на прочтение4 мин
Количество просмотров8.9K

В настоящее время все работает лучше при использовании Docker для настройки локальных сред, а не при локальной установке PHP и других зависимостей. Когда начинаются новые PHP-проекты, Dockerfiles (Docker-файлы) копируются из одной кодовой базы в другую, поскольку для запуска каждого проекта требуются схожие базовые зависимости. Это существенно затрудняет поддержку изменений в контейнерах.

Чтобы избежать этого, в TeleSoftas возникла идея иметь простой базовый образ, который упростил бы разработку и сопровождение наших проектов. Этот образ опубликован на DockerHub, что облегчает запуск нового проекта за счет сокращения объема необходимого кода.

Читать далее
Всего голосов 17: ↑7 и ↓10-3
Комментарии1

Как работает неточное сравнение строк

Время на прочтение7 мин
Количество просмотров26K

https://fakt309.github.io/thisisthewall/

В языках программирования строки сравниваются очень просто, если строка отличается хотя бы на один символ, то возвращает false.

Но вот что если мы хотим не просто получать дискретное значение (true / false), а дифференцированное, например в процентах. Ведь согласитесь строки test и testing гораздо ближе к друг другу, чем test и abcd. Для данной проблемы существует множество решений, мы поговорим о самый популярных алгоритмах (также об их модификациях):

Расстояние Хэмминга

Расстояние Левенштейна

Сходство Джаро — Винклера

Коэффициент Сёренсена

Читать далее
Всего голосов 50: ↑47 и ↓3+44
Комментарии43

Как ускорить выборку в 1с Битрикс в 20 раз

Время на прочтение4 мин
Количество просмотров9.1K

Как ускорить 1С БИТРИКС и снизить кол-во запросов к БД используя ядро D7.

Пример выборки элементов IBlock с пользовательскими свойствами в один запрос.

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии12

Россия 2022: как хранить криптовалюту в условиях санкций?

Время на прочтение10 мин
Количество просмотров74K


Peace, Хабр!


Последние дни много разговоров, что криптовалюта — способ: a) сберечь свои рублевые сбережения от обесценивания, b) вывести из под риска национализации валютные сбережения.


И действительно (хорошая новость): на текущий момент ограничений по покупке и хранению криптовалют для резидентов РФ нет. Ну почти нет. По сравнению с фиатными биржами — нет.


Но (плохие новости):


  • Американские сенаторы уже обсуждают меры по ограничению использованию криптовалют для обхода санкций со стороны России [1],
  • Евросоюз занят тем же самым [2],
  • ФБР появилось подразделение по контролю за оборотом криптовалюты ([3], анонс от 17 февраля 2022, хотя межгосударственные финансовые дела вряд ли в их юрисдикции).

Еще хорошая новость (последняя):
Хрустальный шар/магический кристалл Гарри Поттер еще не подвез, поэтому сценарий с обходом санкций через криптовалютные переводы и с противостоянием этому обходу — это потенциальное будущее.


Снова плохая новость (не последняя):
Если Вам кажется, что риски в этом потенциальном будущем для Вас, как для частного инвестора, высокие, то Вам не кажется.


И что с этим делать?
Правильно — разобраться что, где, как (и надо ли) хранить условиях санкций.

Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии63

Как вести учет криптовалютного портфеля в Гугл Таблицах

Время на прочтение3 мин
Количество просмотров18K

Введение

«Деньги любят счет» - это пословица, как никакая другая, очень точно описывает всю суть успешного распоряжения своими деньгами.

На сегодняшний день существует множество инструментов и сторонних сервисов (Blockfolio, Coinmarketcap, Cryptocompare и т.п.) для ведения учета и контроля своего инвестиционного криптопортфеля.

Также существуют инструменты для работы в Google Sheets. В таблицах есть функция GOOGLEFINANCE("BTCUSD"), которая позволяет учитывать курс биржи в паре доллара к биткоину. А в аддонах к таблицам можно найти CRYPTOFINANCE. Эта функция опирается на данные CoinMarketCap и подтягивает их по API. Данные обновляются всякий раз, как вы открываете или перезагружаете документ.

У вышеуказанных функций есть свои недостатки, например GOOGLEFINANCE имеет сильно ограниченное число криптовалютных пар. У CRYPTOFINANCE есть большинство криптовалютных пар имеющихся на различных биржах, но есть свои ограничения по количеству запросов. Поначалу я сам пользовался сервисом CRYPTOFINANCE на платной основе. Но в процессе эксплуатации понял что нужно делать что-то своё. Чтобы было максимально гибко, просто и доступно каждому.

В этой статье я покажу как в гугл таблицах простым способом и бесплатно можно получать информацию по криптовалютным парам.

Бесплатный скрипт

Для учёта инвестиций я написал свой собственный скрипт. Скрипт циклично собирает нужную информацию с криптовалютных бирж посредством API которые они предоставляют. Сейчас скрипт поддерживает 7 криптобирж:

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии8

Настраиваем свой почтовый сервер в docker-compose

Время на прочтение7 мин
Количество просмотров43K


Недавно мне потребовалось собрать свой почтовый сервер. В принципе, дело-то простое. Берёшь и ставишь сервер. Postfix, dovecot, letsencrypt, roundcube, spamassasin, clamav. Всё это — уже известные дела. Колея проторена. Иди и делай.

Но мне нужно было наплодить этих серверов. И я подумал, а почему бы не настроить всё на контейнерах? Такое можно сделать. Для этого надо скачать все вышеописанные контейнеры и написать .env файл века с более чем сотней разных параметров. Ну и, конечно же, сконфигурировать nginx. Там всё просто. С полдесятка хостов, и система заработает.

Я тяжело вздохнул и решил, что наверняка есть решение попроще. И оно нашлось. Mailu. Всё просто и из коробки, но всё-таки и в нём есть свои подводные мины.

Под катом — подробности того, как установить Mailu без боли и проблем, а также описание компонентов и рассказ о том, что и как можно менять и использовать.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии23

Свободно стилизируемый outline DOM элементов

Время на прочтение2 мин
Количество просмотров5.4K

В последнее время всё чаще и чаще возникает вопрос о доступности, если раньше скрытие outline для элементов страницы было общим правилом, то теперь хороший сайт должен иметь outline у элементов, как минимум :focus-visible.
Основная проблема outline - это их стилизирование.

Я пришел к своему решению, которое изложено в этой статье.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии7

Использование Nginx FastCGI Cache

Время на прочтение9 мин
Количество просмотров26K

FastCGI Cache — это система кэширования данных реализованая на уровне HTTP-сервера Nginx.

Преимущество FastCGI Cache заключается в том, что Nginx вернёт закешированный ответ пользователю сразу, как только получит запрос, при этом слой приложения не будет вовсе обрабатывать поступивший HTTP-запрос, если он имеется в кэше Nginx. 

Использование FastCGI Cache — отличный способ снизить нагрузку на вашу систему.

Если на вашем сайте есть страницы, которые изменяются редко или задержка обновления информации на некоторое время не критична, то FastCGI Cache именно то, что нужно.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии16

Как процессор 8086 работает с питанием и сигналами тактовой частоты

Время на прочтение11 мин
Количество просмотров6.2K
Одна из недооценённых характеристик ранних микропроцессоров – сложность в распределении питания внутри интегральной схемы. У современного процессора может быть 15 слоёв металла с проводниками, но у чипов из 1970-х, например, у 8086, был всего один металлический слой, из-за чего разводка проводников представляла собой проблему. Сигналы тактовой частоты (синхросигналы) тоже нужно доводить до всех частей чипа, чтобы все они работали синхронно.

На фото ниже показан кристалл 8086 под микроскопом. Виден металлический слой сверху чипа, под которым прячутся кремниевая подложка и поликремниевый слой с проводниками. По периметру кристалла снаружи крохотная проволочная разварка соединяет площадки кристалла с внешними ногами. У 8086 площадка питания расположена сверху, а площадки земли – сверху и снизу. У каждой из них есть два проводка проволочной разварки, что удваивает величину поддерживаемого тока. Видны широкие металлические дорожки, идущие от площадок питания и земли. Они распределяют питание по чипу.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии4

Сводные таблицы в SQL

Время на прочтение10 мин
Количество просмотров65K
Сводная таблица – один из самых базовых видов аналитики. Многие считают, что создать её средствами SQL невозможно. Конечно же, это не так.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии9

Простое управление ACL в Symfony

Время на прочтение6 мин
Количество просмотров4.5K
Перевод статьи подготовлен в преддверии старта курса «Symfony Framework».




Не секрет, что ACL (access control lists) могут быть достаточно сложны в использовании. Поскольку Symfony рекомендует избирателей (voters) в качестве альтернативы ACL, я недавно решил, что напишу свой собственный простой в использовании Symfony 5 бандл для управления списками контроля доступа (ACL) в моих приложениях.

programarivm/easy-acl-bundle изначально был написан для использования в JWT-аутентифицированном API для одностраничных приложений (single page applications — SPA), но он также может быть полезен в ряде других сценариев, когда не требуется Security компонент — что в большинстве случаев, по моему скромному мнению, особенно подходит для сеансов обработки многостраничных приложений (multi-page applications — MPA).
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии3

О работе ПК на примере Windows 10 и клавиатуры ч. 1

Время на прочтение16 мин
Количество просмотров108K
image

Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Читать дальше →
Всего голосов 85: ↑78 и ↓7+71
Комментарии412

Помощник по работе с базами данных GreenPig

Время на прочтение15 мин
Количество просмотров2.4K
  1. Вступление
  2. Подключение библиотеки
  3. Класс Where
  4. Класс Join
  5. Класс Query

      ╔═══╗╔═══╗╔═══╗╔═══╗╔╗─╔╗────╔═══╗╔══╗╔═══╗
      ║╔══╝║╔═╗║║╔══╝║╔══╝║╚═╝║────║╔═╗║╚╗╔╝║╔══╝
      ║║╔═╗║╚═╝║║╚══╗║╚══╗║╔╗─║────║╚═╝║─║║─║║╔═╗
      ║║╚╗║║╔╗╔╝║╔══╝║╔══╝║║╚╗║────║╔══╝─║║─║║╚╗║
      ║╚═╝║║║║║─║╚══╗║╚══╗║║─║║────║║───╔╝╚╗║╚═╝║
      ╚═══╝╚╝╚╝─╚═══╝╚═══╝╚╝─╚╝────╚╝───╚══╝╚═══╝

                            5HHHG
                 HH       HHHHHHH
               9HHHA    HHHHHHHH5
              HHHHHHHHHHHHHHHHHH  9HHHHH5
            5HHHHHHHHHHHHHHHHHHHHHHHHHHH
           HHHHHHHHHHHHHHHHHHHHHHHHHHHH
         ;HHHHHHHHHHHHHHHHHHHHHHHHHHA
          H2   HHHHHHHHHHHHHHHHHHHHHH
               HHHHHHHHHHHHHHHHHHHHHHH9
                HHHHHHHHHHHHHHHHHHHHHHH
                AHHHHHHHHHHHHHHHHHHHHHH
                 HHHHHHHHHHHHHHHHHHHHH9  iHS
                  HHHHHHHHHHHHHHHHHHHHHHhh
                   HHHHHHHHHHHHHHHHHH
                  AA HHHHHHHHHHHHHH3
                 &H  Hi         HS Hr
                 &  H&          H&  Hi
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии13

Решение типовых проблем с json_encode (PHP)

Время на прочтение6 мин
Количество просмотров30K

Это краткая статья о наиболее вероятных проблемах с json_encode и их решениях. Иногда при кодировании данных в json, с помощью json_encode в php, мы получаем не тот результат который ожидаем. Я выделил три наиболее частые проблемы с которыми сталкиваются программисты:


  • доступ к полям
  • кодировка текстовых значений
  • цифровые значения
Читать дальше →
Всего голосов 47: ↑40 и ↓7+33
Комментарии55

9 советов по повышению производительности Vue

Время на прочтение8 мин
Количество просмотров34K
В этой статье собрано девять советов о том как повысить производительность вашего приложения на Vue, увеличить скорость отображения и уменьшить размер бандла.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии19

19 полезных возможностей файла .htaccess

Время на прочтение14 мин
Количество просмотров106K
19 полезных возможностей файла .htaccess


Спорим, о некоторых вы не подозревали. Мы собрали варианты применения .htaccess для улучшения работы сайта. Он часто используется оптимизаторами для корректной настройки 301 редиректов. Но этим возможности файла не ограничиваются. Тут и безопасность, и оптимизация, и параметры отображения — с помощью .htaccess вебмастер может сделать много полезного, чтобы сайт работал корректно.

Читать дальше
Всего голосов 28: ↑17 и ↓11+6
Комментарии16

Как быстро увеличить размер раздела диска на сервере

Время на прочтение3 мин
Количество просмотров86K
Всем привет! Недавно столкнулся с простой на первый взгляд задачей — увеличить «на горячую» размер диска на сервере Linux.

Описание задачи


Есть сервер в облаке. В моем случае, это Google Cloud — Compute Engine. Операционная система — Ubuntu, файловая система ext4 (подойдет для всех ext). Сейчас подключен диск размером 30 Гб. База растет, файлы пухнут, поэтому нужно увеличить размер диска, допустим, до 50 Гб. При этом мы ничего не отключаем, ничего не перезагружаем.
Читать дальше →
Всего голосов 48: ↑25 и ↓23+2
Комментарии63

Битрикс в связке Nginx+PHP-FPM, настройка ЧПУ, а так же композитный кэш с отдачей через nginx. Доработанная конфигурация

Время на прочтение4 мин
Количество просмотров35K
Цель: Предоставить конфигурацию виртуального сервера Nginx для работы Битрикс-cms в связке Nginx+PHP-FPM. Который в прочем подойдёт и для связки Nginx+Apache2, с небольшими доработками.

Целевая аудитория: Администраторы серверов, продвинутые администраторы сайтов, программисты.

Cтатей на эту тему достаточно, но если смотреть не официальные, то там как правило содержатся ошибки, а в официальных полно if которые в Nginx использовать не желательно. Надеюсь после того как я выложу данный конфиг к связке Nginx+PHP-FPM станут относиться серьёзнее.

Вот официальный конфиг для работы композитного кэша с отдачей через nginx.

Я покажу реализацию отдачи файлового композитного кэша. В целом отдача с memcached делается по аналогии. В конфигурации отдачи файлового кэша я насчитал 11 if, от которых я и избавился переделав их на map.
Читать дальше →
Всего голосов 26: ↑13 и ↓130
Комментарии17
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность