Fullstack разработчик
Переезд в Австралию 2021-2023
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/c26/1e7/e01/c261e7e01019d8995ca2a00bad69122f.jpg)
Зимой 20/21 я осознал, что не хочу оставаться в России и начал подготовку к переезду. Сейчас весна 2023 и я уже полгода, как живу в Австралии.
Под катом история.
Использовать unwrap() в Rust — это нормально
Сравнительно недавно на Хабре была опубликована статья "Rust: ни в коем случае не используйте unwrap() в продакшене". Мягко говоря, тезисы, высказываемые в данной статье, спорны и содержат мало обоснования. Предлагаю читателям взглянуть на альтернативную точку зрения: почему использовать unwrap() в Rust — это нормально (в том числе и в продакшене). Автор оригинальной статьи — Эндрю Галлант.
Переходим на Go: 16 материалов для самостоятельного изучения языка
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/5d0/eee/f26/5d0eeef2640bfaaa0db0796564273e8e.png)
Привет! Меня зовут Владислав Попов, я автор курса «Go-разработчик» Яндекс Практикума. Когда-то я сам был студентом — хотел учиться Go, но такого курса в Практикуме не было, поступил на Python. Прошёл вводную часть — и тут стартовал желанный курс по Go. В тот же вечер оформил возврат и перепоступил. Попал в первый поток, прошёл его, и после сдачи итогового проекта мне предложили стать тестером курса «Продвинутый Go-разработчик».
Оба курса были ещё не идеальны — что-то требовало доработки, некоторые темы казались мне недостаточно раскрытыми. Я сообщил об этом команде курса и предложил варианты, что можно улучшить. В какой-то момент о них узнал продакт-менеджер — и так я получил приглашение поработать с командой Практикума. Мне предстояло разработать концепцию и внести предложения по рефакторингу курса, но я сделал бросок пантеры и написал несколько уроков с нуля. Команде они понравились. Так я стал работать в Практикуме.
За время работы с Go я понял, что сам язык не очень сложный и подходит даже в качестве первого, но нужно выучить синтаксис и погрузиться в некоторые особенности, которые отличают Go от других языков: например, интерфейсы и особенности встраивания. А ещё важно на старте хорошо знать Git и ориентироваться в работе SQL (причём любого).
Эта подборка составлена менторами нашего курса по Go-разработке для практикующих программистов. Она родилась благодаря коллективному разуму наших наставников, которые занимают позиции синьор-разработчиков на Go в разных компаниях.
6 простых принципов написания приложения на Vue, которое легко поддерживать (часть 1)
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/33b/7c2/f20/33b7c2f20ce7d967147505d3894b1a50.jpg)
Привет! Меня зовут Наташа Калачева. Я Frontend-разработчик в компании AGIMA. Vue — один из самых популярных фреймворков JS, его используют для разработки SPA и PWA. А его главные плюсы — это понятная, четкая документация, готовая структура и низкий порог входа.
Тем не менее, Frontend сегодня — это сложные приложения, которые содержат не только красивые элементы интерфейса, но и большую часть логики и функциональности всего продукта. Это требует от нас тщательного планирования и организации проекта, чтобы сделать его масштабируемым и простым.
В этой статье поделюсь правилами, которых придерживаюсь в работе и которые помогают упростить поддержку и расширение приложения. Мы рассмотрим, как организовать хранение компонентов, стилей и плагинов, когда использовать стор и полезные функции Vue.
Следуя этим рекомендациям, вы сможете создавать более эффективные проекты.
Боевой прокси-сервер Squid 5.2 с нуля ч.3
![](https://habrastorage.org/getpro/habr/upload_files/858/08a/822/85808a82232079c6004f7e7a3784fc74.gif)
Конфигурируем Squid 5.2 и включаем в работу.
Часть 3. Настройка доступов и скоростей
Теперь мы настроим доступы по пользователям (или группам пользователей, принцип одинаковый). Например, у нас есть три пользователя:
Знакомство с Velociraptor
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/10b/739/dea/10b739deace5abd13684278c2c177884.jpg)
Если такие понятия как DFIR, Threat Hunting, Security Monitoring, для вас не пустой звук, то эта статья будет вам интересна. Я расскажу про утилиту Velociraptor, которая часто помогает мне в работе. К моему удивлению, на Habr даже нет упоминания про нее, попробую это исправить.
Velociraptor (github, docs) - согласно официальной документации это утилита для выполнения Digital Forensics and Incident Response (DFIR) задач. Но из практики можно сказать, что это настоящий швейцарский нож для сбора и анализа информации с конечных устройств (серверов и рабочих станций).
Как настроить OpenVPN на Debian 11. Часть 1
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/54b/66b/549/54b66b5498b0462504bc6eae5c49dcae.png)
Когда вы настраиваете удалённый доступ, важно не только предоставить всем сотрудникам подключение к нужным сервисам, но и позаботиться о безопасности. В этом помогает VPN — виртуальная частная сеть. VPN-сервер действует как единая точка входа: он аутентифицирует пользователей и создаёт зашифрованный туннель между их устройствами и частной сетью. А ещё он считается более гибким решением, чем, например, SSH Jump Server.
Вы можете использовать платный VPN или создать и администрировать собственный. В этой статье разбираем, как настроить OpenVPN на Debian 11.
Заметка о хуке useSyncExternalStore
![](https://habrastorage.org/webt/jc/hw/st/jchwst6a3nwlxlscnmuw5tdhmry.png)
Hello, world!
Представляю вашему вниманию перевод этой замечательной статьи.
useSyncExternalStore — это один из хуков, представленных в React 18. Наряду с хуком useInsertionEffect, он считается хуком для библиотек (library hook):
Следующие хуки предназначены для авторов библиотек для глубокой интеграции библиотек в модель React. Как правило, они не используются в коде приложения
В списке изменений React 18 речь также идет о библиотеках:
Добавлен useSyncExternalStore
для помощи в интеграции с React библиотек внешних хранилищ (external store libraries)
Как я приложение с Go на Rust переписывал
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/3e7/fd1/066/3e7fd106637c33b866a70954973267f3.png)
О Rust я слышал ещё несколько лет назад и все его либо хвалили, либо порицали, по различным причинам, но сам как-то не брался за него - мне, неподготовленному к подобному синтаксису и не знакомому с подобными языками хотя бы на базовом уровне, в то время он казался совершенно непонятным.
Не так давно решил написать для себя небольшое приложение-бенчмарк для теста HTTP API серверов и написал его на Go. Но размер в 5 с лишним Мбайт, несоблюдение целевого RPS и некоторые другие проблемы заставили посмотреть в сторону более производительного Rust + Tokio + Hyper.
Эта статья о коде Rust-приложения, переходе с Go на Rust, преимуществах и недостатках обоих языков и сравнении двух сферических коней в вакууме.
Создание модуля WebAssembly с помощью Emscripten, AssemblyScript и Rust
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/6c1/ace/e2d/6c1acee2dd57b057ca7ffb0b33689600.png)
В этой небольшой заметке предлагается рассмотреть несколько способов компиляции модуля для WebAssembly, используя три разных подхода. Мы реализуем решение одной и той же задачки на трёх языках и скомпилируем полученный код в модуль WebAssembly. Будем использовать:
Emscripten для компиляции кода, написанного на С++
AssemblyScript для компиляции кода, написанного на, собственно, AssemblyScript
wasm-pack для компиляции кода, написанного на Rust
План такой:
Во введении мы обсудим постановку задачи и немножко поговорим о технологии WebAssembly
В программной части мы реализуем функциональность модуля на трёх языках: c++, AssemblyScript и Rust. Поговорим о том, какие при этом возникают сложности и как их можно обойти
Подведём небольшой итог. Станет видно, какая технология хорошая, а какая не очень
В конце планируется два бонуса. Первый бонус - это пример простого web-приложения, использующего один из скомпилированных нами модулей. Второй бонус - демонстрация того, как этот модуль можно использовать в программе на Python.
Итоги третьего ежегодного опроса PHP-сообщества (и по традиции — слон)
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/62c/2bf/4de/62c2bf4de901254575a45aa37099fbf5.jpg)
Привет! В декабре вновь прошел опрос русскоязычного PHP-сообщества. Помогали составлять его и распространять ребята, которые развивают городские и региональные PHP-комьюнити, а также руководят каналами и подкастами про PHP.
Удалось собрать 1215 ответов. Расспросили сообщество, на какой версии PHP сидят в командах, какой фреймворк выбирают для рабочих, а какой для личных проектов, многие ли посматривают на Go. И не только.
VueEnt — сложные формы на Vue и не только
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/614/e31/421/614e3142179af9ded63f41cb8686d1b3.png)
Примерно полтора года назад вышла моя статья про библиотеку валидации v9s. Благодаря конструктивной критике в комментариях, удалось серьезно переработать библиотеку, уже год как вышла вторая более дружелюбная версия. В тексте публикации было сказано о том, что появилась необходимость осуществлять динамическую валидацию больших и сложных форм на Vue, а еще хотелось добавить индикацию к отдельным частям страницы во время загрузки и сохранения данных. После серии экспериментов сложился общий концепт новой библиотеки и нескромное название VueEnt
, намекающее на сферу ее применения. Итак, если у вас возникают те же проблемы при разработке на Vue, что изложены в моей предыдущей публикации по ссылке выше, то заварите чайку и приготовьте бутерброды, ведь, несмотря на обзорный характер публикации, в двух словах все не описать.
Оптимизация доступа к элементам слайса в Go
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/bb3/238/b48/bb3238b489d5220af4632be32696ce6c.png)
Привет Хабр!
В своей предыдущей статье про разбор кода победившего в VK Cup'22/23 я описывал как мне удалось ускорить копирование одной картинки в другую в 30 раз с помощью чёрной магии unsafe
. Однако я не переставал задаваться вопросом, можно ли увеличить скорость еще больше. Я даже привлёк OpenAI в поисках решения, но он мне помог только с картинкой для обложки статьи. В итоге я нашел способ улучшить код еще в 2 раза. Чем и хочу поделиться.
Развертывание копий Zabbix на Ansible
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/985/3ba/638/9853ba638794b557cbb36e62e09111f8.jpg)
Недавно выпала задача по развертке копий основного Zabbix-server на несколько машин, дабы хранить конфиги на разных серверах, да и еще всунуть это в CI/CD GitLab.
В общем, подробно описал свое решение со ссылкой на репозиторий.
Разворачиваем MySQL: репликации и секционирование
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/a0d/686/c66/a0d686c66e5eef8c94c6052cd275fc3c.png)
В этой статье сначала настроим репликацию данных на второй сервер, а затем рассмотрим различные варианты секционирования.
Что может быть проще (сложнее), чем упорядочивание чисел?
![](https://habrastorage.org/webt/cf/nl/sw/cfnlswbe_whf7bdejiu7cvo9au8.png)
Предположим, вы программист и у вас есть два числа. Вы хотите узнать, какое из чисел больше. Если оба числа имеют одинаковый тип, то почти в любом языке программирования решение будет тривиальным. Для этой операции обычно даже есть специальный оператор
<=
. Вот пример на Python:>>> "120" <= "1132"
False
Сравнение двух чисел на Brainfuck оставим в качестве упражнения для читателя.
Ой. Ну, строго говоря, это строки, а не числа, а строки обычно сортируются лексикографически. Но это всё-таки числа, хотя и представленные в виде строк. Это может показаться глупым, но такая проблема очень распространена в интерфейсах пользователя, например, в списках файлов. Именно поэтому нужно отбивать числовые имена файлов нулями (
frame-00001.png
) или использовать описания, сохраняющие лексикографический порядок, например, ISO 8601 для дат.Впрочем, я отклонился от темы. Предположим, числа действительно представлены числовыми типами. Тогда всё просто и
<=
отлично работает:>>> 120 <= 1132
True
Но так ли это?
Зарплата по результатам собеседования — лучший способ сократить отклики на вакансию, а тестовые задания — избыточны
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/de6/162/e0b/de6162e0be5d50286daa02c11af3bd19.png)
Почему ИТ специалисты на самом деле не любят выполнять тестовые задания? Почему меньше откликов на вакансии без указания зарплаты? Простые ответы на сложные вопросы.
Как написать расширение браузера для замены шрифтов на Quasar и Vue 3
Одни расширения добавляют в браузер новые функции, а другие предоставляют данные о посещаемых веб-страницах:
- Wappalyzer расскажет о технологиях, которые применялись в разработке сайта.
- Similar web показывает трафик и ранжировании сайта.
- Momentum изменяет содержание страниц или заменяет домашнюю страницу.
Я расскажу о разработке расширения для Chrome на Vue 3 и Quasar. Это расширение которое будет изменять размер шрифта на посещаемых веб-страницах. Подробности — к старту нашего курса по Fullstack-разработке на Python.
YAML из Ада
![](https://habrastorage.org/webt/dg/zg/h4/dgzgh4st6jy2dnkch4j-ugkjm60.jpeg)
Формат данных YAML чрезвычайно усложнён. Он задумывался как удобный для человека, но в стремлении к этой цели сложность настолько увеличилась, что, по моему мнению, его разработчики достигли противоположного результата. В YAML есть куча возможностей выстрелить себе в ногу, а его дружелюбие обманчиво. В этом посте я хочу продемонстрировать это на примере.
Данный пост является нытьём и он более субъективен, чем мои обычные статьи.
Information
- Rating
- Does not participate
- Location
- Калининградская обл., Россия
- Date of birth
- Registered
- Activity