Pull to refresh
27
0
Алексей @alverspb

Разработчик

Send message

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

Level of difficultyMedium
Reading time17 min
Views24K

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

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

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments26

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

Reading time14 min
Views23K

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

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

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments7

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

Reading time4 min
Views8.9K

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

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

Читать далее
Total votes 17: ↑7 and ↓10-3
Comments1

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

Reading time7 min
Views26K

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

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

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

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

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

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

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

Читать далее
Total votes 50: ↑47 and ↓3+44
Comments43

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

Reading time4 min
Views9.1K

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

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

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments12

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

Reading time10 min
Views74K


Peace, Хабр!


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


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


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


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

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


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


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

Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments63

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

Reading time3 min
Views18K

Введение

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

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

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

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

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

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

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

Читать далее
Total votes 14: ↑13 and ↓1+12
Comments8

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

Reading time7 min
Views43K


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

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

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

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

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

Reading time2 min
Views5.4K

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

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

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments7

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

Reading time9 min
Views26K

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

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

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

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

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments16

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

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

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

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

Reading time6 min
Views4.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).
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments3

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

Reading time16 min
Views108K
image

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

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

Reading time15 min
Views2.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
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments13

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

Reading time6 min
Views30K

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


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

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

Reading time8 min
Views34K
В этой статье собрано девять советов о том как повысить производительность вашего приложения на Vue, увеличить скорость отображения и уменьшить размер бандла.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments19

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

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


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

Читать дальше
Total votes 28: ↑17 and ↓11+6
Comments16

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

Reading time3 min
Views86K
Всем привет! Недавно столкнулся с простой на первый взгляд задачей — увеличить «на горячую» размер диска на сервере Linux.

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


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

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

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

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

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

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

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity