Pull to refresh
0
0
Ласкин Дмитрий @eshimischi

Fullstack разработчик

Send message

Подключение к AD из PHP по протоколу LDAPS

Reading time3 min
Views4K
Прочитав пост Создаем пользователя AD через веб-интерфейс, вспомнил, что около года назад занимался с аналогичной задачей. Проблема была в том, что не удавалось создать пользователя при соединении по протоколу LDAP, а получилось только по протоколу LDAPS.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments5

Использовать unwrap() в Rust — это нормально

Level of difficultyEasy
Reading time26 min
Views8.3K

Сравнительно недавно на Хабре была опубликована статья "Rust: ни в коем случае не используйте unwrap() в продакшене". Мягко говоря, тезисы, высказываемые в данной статье, спорны и содержат мало обоснования. Предлагаю читателям взглянуть на альтернативную точку зрения: почему использовать unwrap() в Rust — это нормально (в том числе и в продакшене). Автор оригинальной статьи — Эндрю Галлант.

Читать далее
Total votes 21: ↑19 and ↓2+22
Comments15

Переходим на Go: 16 материалов для самостоятельного изучения языка

Level of difficultyEasy
Reading time5 min
Views45K

Привет! Меня зовут Владислав Попов, я автор курса «Go-разработчик» Яндекс Практикума. Когда-то я сам был студентом — хотел учиться Go, но такого курса в Практикуме не было, поступил на Python. Прошёл вводную часть — и тут стартовал желанный курс по Go. В тот же вечер оформил возврат и перепоступил. Попал в первый поток, прошёл его, и после сдачи итогового проекта мне предложили стать тестером курса «Продвинутый Go-разработчик».

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

За время работы с Go я понял, что сам язык не очень сложный и подходит даже в качестве первого, но нужно выучить синтаксис и погрузиться в некоторые особенности, которые отличают Go от других языков: например, интерфейсы и особенности встраивания. А ещё важно на старте хорошо знать Git и ориентироваться в работе SQL (причём любого).

Эта подборка составлена менторами нашего курса по Go-разработке для практикующих программистов. Она родилась благодаря коллективному разуму наших наставников, которые занимают позиции синьор-разработчиков на Go в разных компаниях.

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

6 простых принципов написания приложения на Vue, которое легко поддерживать (часть 1)

Reading time8 min
Views25K

Привет! Меня зовут Наташа Калачева. Я Frontend-разработчик в компании AGIMA. Vue — один из самых популярных фреймворков JS, его используют для разработки SPA и PWA. А его главные плюсы — это понятная, четкая документация, готовая структура и низкий порог входа.

Тем не менее, Frontend сегодня — это сложные приложения, которые содержат не только красивые элементы интерфейса, но и большую часть логики и функциональности всего продукта. Это требует от нас тщательного планирования и организации проекта, чтобы сделать его масштабируемым и простым.

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

Следуя этим рекомендациям, вы сможете создавать более эффективные проекты.

Читать далее
Total votes 47: ↑42 and ↓5+40
Comments70

Боевой прокси-сервер Squid 5.2 с нуля ч.3

Level of difficultyMedium
Reading time5 min
Views9.3K

Конфигурируем Squid 5.2 и включаем в работу.

Часть 3. Настройка доступов и скоростей

Теперь мы настроим доступы по пользователям (или группам пользователей, принцип одинаковый). Например, у нас есть три пользователя:

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

Знакомство с Velociraptor

Level of difficultyMedium
Reading time5 min
Views5.4K

Если такие понятия как DFIR, Threat Hunting, Security Monitoring, для вас не пустой звук, то эта статья будет вам интересна. Я расскажу про утилиту Velociraptor, которая часто помогает мне в работе. К моему удивлению, на Habr даже нет упоминания про нее, попробую это исправить. 

Velociraptor (github, docs) - согласно официальной документации это утилита для выполнения Digital Forensics and Incident Response (DFIR) задач. Но из практики можно сказать, что это настоящий швейцарский нож для сбора и анализа информации с конечных устройств (серверов и рабочих станций). 

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

Как настроить OpenVPN на Debian 11. Часть 1

Reading time11 min
Views32K

Когда вы настраиваете удалённый доступ, важно не только предоставить всем сотрудникам подключение к нужным сервисам, но и позаботиться о безопасности. В этом помогает VPN — виртуальная частная сеть. VPN-сервер действует как единая точка входа: он аутентифицирует пользователей и создаёт зашифрованный туннель между их устройствами и частной сетью. А ещё он считается более гибким решением, чем, например, SSH Jump Server. 

Вы можете использовать платный VPN или создать и администрировать собственный. В этой статье разбираем, как настроить OpenVPN на Debian 11.

Читать далее
Total votes 13: ↑11 and ↓2+11
Comments18

Заметка о хуке useSyncExternalStore

Level of difficultyHard
Reading time7 min
Views8.6K


Hello, world!


Представляю вашему вниманию перевод этой замечательной статьи.


useSyncExternalStore — это один из хуков, представленных в React 18. Наряду с хуком useInsertionEffect, он считается хуком для библиотек (library hook):


Следующие хуки предназначены для авторов библиотек для глубокой интеграции библиотек в модель React. Как правило, они не используются в коде приложения


В списке изменений React 18 речь также идет о библиотеках:


Добавлен useSyncExternalStore для помощи в интеграции с React библиотек внешних хранилищ (external store libraries)

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments4

Как я приложение с Go на Rust переписывал

Level of difficultyEasy
Reading time8 min
Views18K

О Rust я слышал ещё несколько лет назад и все его либо хвалили, либо порицали, по различным причинам, но сам как-то не брался за него - мне, неподготовленному к подобному синтаксису и не знакомому с подобными языками хотя бы на базовом уровне, в то время он казался совершенно непонятным.

Не так давно решил написать для себя небольшое приложение-бенчмарк для теста HTTP API серверов и написал его на Go. Но размер в 5 с лишним Мбайт, несоблюдение целевого RPS и некоторые другие проблемы заставили посмотреть в сторону более производительного Rust + Tokio + Hyper.

Эта статья о коде Rust-приложения, переходе с Go на Rust, преимуществах и недостатках обоих языков и сравнении двух сферических коней в вакууме.

Читать далее
Total votes 42: ↑27 and ↓15+20
Comments56

Создание модуля WebAssembly с помощью Emscripten, AssemblyScript и Rust

Level of difficultyMedium
Reading time57 min
Views5.6K

В этой небольшой заметке предлагается рассмотреть несколько способов компиляции модуля для WebAssembly, используя три разных подхода. Мы реализуем решение одной и той же задачки на трёх языках и скомпилируем полученный код в модуль WebAssembly. Будем использовать:

Emscripten для компиляции кода, написанного на С++

AssemblyScript для компиляции кода, написанного на, собственно, AssemblyScript

wasm-pack для компиляции кода, написанного на Rust

План такой:

Во введении мы обсудим постановку задачи и немножко поговорим о технологии WebAssembly

В программной части мы реализуем функциональность модуля на трёх языках: c++, AssemblyScript и Rust. Поговорим о том, какие при этом возникают сложности и как их можно обойти

Подведём небольшой итог. Станет видно, какая технология хорошая, а какая не очень

В конце планируется два бонуса. Первый бонус - это пример простого web-приложения, использующего один из скомпилированных нами модулей. Второй бонус - демонстрация того, как этот модуль можно использовать в программе на Python.

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

Итоги третьего ежегодного опроса PHP-сообщества (и по традиции — слон)

Reading time7 min
Views7.8K

Привет! В декабре вновь прошел опрос русскоязычного PHP-сообщества. Помогали составлять его и распространять ребята, которые развивают городские и региональные PHP-комьюнити, а также руководят каналами и подкастами про PHP.

Удалось собрать 1215 ответов. Расспросили сообщество, на какой версии PHP сидят в командах, какой фреймворк выбирают для рабочих, а какой для личных проектов, многие ли посматривают на Go. И не только.

- Итоги 2021

- Итоги 2020

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

VueEnt — сложные формы на Vue и не только

Level of difficultyMedium
Reading time45 min
Views4.9K

Примерно полтора года назад вышла моя статья про библиотеку валидации v9s. Благодаря конструктивной критике в комментариях, удалось серьезно переработать библиотеку, уже год как вышла вторая более дружелюбная версия. В тексте публикации было сказано о том, что появилась необходимость осуществлять динамическую валидацию больших и сложных форм на Vue, а еще хотелось добавить индикацию к отдельным частям страницы во время загрузки и сохранения данных. После серии экспериментов сложился общий концепт новой библиотеки и нескромное название VueEnt, намекающее на сферу ее применения. Итак, если у вас возникают те же проблемы при разработке на Vue, что изложены в моей предыдущей публикации по ссылке выше, то заварите чайку и приготовьте бутерброды, ведь, несмотря на обзорный характер публикации, в двух словах все не описать.

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

Оптимизация доступа к элементам слайса в Go

Level of difficultyMedium
Reading time4 min
Views6.4K

Привет Хабр!

В своей предыдущей статье про разбор кода победившего в VK Cup'22/23 я описывал как мне удалось ускорить копирование одной картинки в другую в 30 раз с помощью чёрной магии unsafe. Однако я не переставал задаваться вопросом, можно ли увеличить скорость еще больше. Я даже привлёк OpenAI в поисках решения, но он мне помог только с картинкой для обложки статьи. В итоге я нашел способ улучшить код еще в 2 раза. Чем и хочу поделиться.

Читать далее
Total votes 14: ↑11 and ↓3+9
Comments12

Развертывание копий Zabbix на Ansible

Level of difficultyMedium
Reading time5 min
Views7.7K

Недавно выпала задача по развертке копий основного Zabbix-server на несколько машин, дабы хранить конфиги на разных серверах, да и еще всунуть это в CI/CD GitLab.

В общем, подробно описал свое решение со ссылкой на репозиторий.

Читать далее
Total votes 7: ↑5 and ↓2+5
Comments8

Разворачиваем MySQL: репликации и секционирование

Level of difficultyHard
Reading time6 min
Views5K

В этой статье сначала настроим репликацию данных на второй сервер, а затем рассмотрим различные варианты секционирования.

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments1

Что может быть проще (сложнее), чем упорядочивание чисел?

Reading time9 min
Views6.9K

Предположим, вы программист и у вас есть два числа. Вы хотите узнать, какое из чисел больше. Если оба числа имеют одинаковый тип, то почти в любом языке программирования решение будет тривиальным. Для этой операции обычно даже есть специальный оператор <=. Вот пример на Python:

>>> "120" <= "1132"
False

Сравнение двух чисел на Brainfuck оставим в качестве упражнения для читателя.

Ой. Ну, строго говоря, это строки, а не числа, а строки обычно сортируются лексикографически. Но это всё-таки числа, хотя и представленные в виде строк. Это может показаться глупым, но такая проблема очень распространена в интерфейсах пользователя, например, в списках файлов. Именно поэтому нужно отбивать числовые имена файлов нулями (frame-00001.png) или использовать описания, сохраняющие лексикографический порядок, например, ISO 8601 для дат.

Впрочем, я отклонился от темы. Предположим, числа действительно представлены числовыми типами. Тогда всё просто и <= отлично работает:

>>> 120 <= 1132
True

Но так ли это?
Читать дальше →
Total votes 20: ↑19 and ↓1+25
Comments21

Зарплата по результатам собеседования — лучший способ сократить отклики на вакансию, а тестовые задания — избыточны

Reading time7 min
Views75K

Почему ИТ специалисты на самом деле не любят выполнять тестовые задания? Почему меньше откликов на вакансии без указания зарплаты? Простые ответы на сложные вопросы.

Читать далее
Total votes 130: ↑105 and ↓25+103
Comments387

Как написать расширение браузера для замены шрифтов на Quasar и Vue 3

Reading time4 min
Views2.6K

Одни расширения добавляют в браузер новые функции, а другие предоставляют данные о посещаемых веб-страницах:


  • Wappalyzer расскажет о технологиях, которые применялись в разработке сайта.
  • Similar web показывает трафик и ранжировании сайта.
  • Momentum изменяет содержание страниц или заменяет домашнюю страницу.

Я расскажу о разработке расширения для Chrome на Vue 3 и Quasar. Это расширение которое будет изменять размер шрифта на посещаемых веб-страницах. Подробности — к старту нашего курса по Fullstack-разработке на Python.

Читать дальше →
Total votes 6: ↑2 and ↓4-2
Comments1

YAML из Ада

Reading time9 min
Views64K

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

Данный пост является нытьём и он более субъективен, чем мои обычные статьи.
Читать дальше →
Total votes 172: ↑169 and ↓3+215
Comments186

Information

Rating
Does not participate
Location
Калининградская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Web Developer