Как стать автором
Обновить
2
0
Максим @McStar

Тестировщик

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

Установка Arch Linux кратко и (почти) без боли

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

Итак, одним прекрасным утром вы проснулись и решили, что вам нужно попробовать Arch. Вам нравиться всё настраивать под себя, избавляясь от лишнего мусора и вообще вы хотите досконально разобраться в Linux. Но главной проблемой подобных дистрибутивов является то, что нужно уметь с ними работать. Хотя-бы установить. И если изучение самого Arch ложиться сугубо на плечи читателя, то с установкой мы сейчас и разберёмся.

Приступим к установке
Всего голосов 16: ↑12 и ↓4+12
Комментарии75

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

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

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

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

Читать далее
Всего голосов 445: ↑437 и ↓8+489
Комментарии364

Файл дескриптор в Linux с примерами

Время на прочтение14 мин
Количество просмотров109K
Однажды, на одном интервью меня спросили, что ты будешь делать, если обнаружишь неработающий сервис из-за того, что на диске закончилось место?

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

На это я сказал, что всегда можно посмотреть открытые файл дескрипторы, например командой lsof и понять какое приложение заняло все доступное место, а дальше можно действовать по обстоятельствам, в зависимости от того, нужны ли данные.

Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?

«окей», — ответил я, «мы можем выключить дебаг в конфиге приложения и перезапустить его».
Интервьюер возразил: «Нет, приложение мы перезапустить не можем, у нас в памяти все еще хранятся важные данные, а к самому сервису подключены важные клиенты, которых мы не можем заставлять переподключаться заново».

«ну хорошо», сказал я, «если мы не можем перезапускать приложение и данные нам не важны, то мы можем просто очистить этот открытый файл через файл дескриптор, даже если мы его не видим в команде ls на файловой системе».

Интервьюер остался доволен, а я нет.

Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
Читать дальше →
Всего голосов 136: ↑136 и ↓0+136
Комментарии20

Линейная алгебра для разработчиков игр

Время на прочтение19 мин
Количество просмотров777K
Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Читать дальше →
Всего голосов 314: ↑296 и ↓18+278
Комментарии61

Эффективная работа с битами при помощи Go

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров14K

Это статья познакомит вас с использованием возможностей Go для выполнения манипуляций с битами. Здесь мы разберём установку, очистку, инвертирование, сдвиг битов, использование техники SWAR, эффективную обработку Юникода и прочие приёмы, позволяющие повысить продуктивность программирования.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+39
Комментарии8

Пишем на Go как в Google. Лучшие практики — часть первая

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров23K

Рекомендации по стилю для проектов Google с открытым исходным кодом


Лучшие практики Go


Этот документ — часть документации по стилю Go в Google. Он не является ни нормативным, ни каноничным, это дополнение к «Руководству по стилю». Подробности смотрите в Обзоре.


О документе


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


Полная документация руководства по стилю описывается в обзоре.

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

20+ open source утилит для шифрования файлов на (почти) любой случай жизни

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


На самом-самом деле его секреты нафиг никому не нужны. И кстати, такой ключ за 5 баксов ещё надо поискать


Шифропанкам посвящается. Мы собрали тулкит из популярных программ (преимущественно с симметричным шифрованием), которые помогут защитить личные данные от несанкционированного доступа и попросили исследователя криптографии из компании «Криптонит» прокомментировать наш выбор.


Под катом безопасные решения для шифрования файлов при помощи браузера, для быстрой защиты, пересылки, загрузки в облако шифрованных данных, криптографические контейнеры с двойным дном, десяток консольных инструментов для криптографии и комбайн, объединяющий их под единым графическим интерфейсом. А еще ответы на животрепещущие вопросы, например: «Что лучше AES, Кузнечик, Serpent или Twofish»?

Читать дальше →
Всего голосов 34: ↑33 и ↓1+35
Комментарии36

Настройка Firefox в Linux

Уровень сложностиСредний
Время на прочтение127 мин
Количество просмотров93K
Решил написать о настройке Firefox для Linux. В интернете похожие статьи тоже есть, но в основном они по старым версиям браузера. Радикальных отличий в настройке Firefox для Linux или для Windows нет, однако есть свои особенности.
Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии385

Краткий справочник по «всем-всем» командам Linux

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

Периодически меня на начальном курсе просят дать "список всех-всех команд с кратким описанием что делает"... Ну прям "всех-всех". И ведь если искать в интернете "такие" справочники существуют - либо про "20-30 команд, но самых важных", либо с неточностями и устаревшей информацией. Так что предлагаю вашему вниманию свою версию такого "краткого" справочника (на 300, 515, 612, 716, 842, 1005, 1171 команд) с ссылками на wiki-описание и на cheat.sh-примеры наиболее важных команд.

Справочник по всем-всем командам LINUX
Всего голосов 105: ↑102 и ↓3+120
Комментарии114

i18n в Go: работа с переводами — Часть 1

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

Недавно мне впервые довелось создавать полностью интернационализированное (i18n) и локализированное (L10n) веб-приложение, в котором я задействоал набор пакетов Go golang.org/x/text. Я обнаружил, что пакеты и инструменты, собранные в golang.org/x/text, невероятно полезны и очень хорошо спроектированы. Однако мне было довольно сложно понять, как объединить все это вместе в реальном приложении.

В этом руководстве я постараюсь объяснить, как вы можете использовать golang.org/x/text для работы с переводами в вашем приложении.

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

Собеседование Golang разработчика (теоретические вопросы), Часть I

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

Как сейчас проходят собеседования на golang разработчика? Что спрашивают?

Читать далее
Всего голосов 43: ↑42 и ↓1+45
Комментарии23

Обзор Spring-компонентов. Часть 2 – Spring Cloud

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

В обзоре собраны краткие описания каждого компонента экосистемы, чтобы дать понимание – как выглядит мир Spring, и ориентиры – что из этого стоит изучить глубже и применять в проекте.

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

Обзор Spring-компонентов. Часть 1 – Spring Boot и фреймворк интеграции

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

В обзоре собраны краткие описания каждого компонента экосистемы, чтобы дать понимание – как выглядит мир Spring, и ориентиры – что из этого стоит изучить глубже и применять в проекте.

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

Оформляем README-файл профиля на GitHub

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

Летом 2020 года GitHub позволила пользователям создавать персональные README-файлы и с их помощью кастомизировать свои профили. Сама платформа при создании подобного файла предлагает уже готовый шаблон, в который можно вписать свои данные. Но о какой кастомизации может идти речь, если у всех будут одинаково оформленные профили? За почти два года сообщество придумало множество различных способов выделиться и особенно оформить свою страницу на GitHub.

Читать далее
Всего голосов 62: ↑60 и ↓2+73
Комментарии25

Автоматизация тестов на Go + Allure

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

Привет всем. Меня зовут Таня. Я автоматизирую тесты на Go уже около года, до этого занималась 4 года автоматизацией на Java.

В этой статье расскажу:

- Как писала интеграционные тесты на Go + Allure

- С какими проблемами столкнулась

- С какими библиотеками и инструментами работаю

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

Kotlin. Автоматизация тестирования (часть 1). Kotest: Начало

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

Kotest


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



Либо бесконечное кол-во из Java мира: Junit4/5, TestNG, Cucumber JVM или другие BDD фреймворки.
Выбора пал на Kotest с бОльшим кол-вом "лайков" на GitHub, чем у Spek.


Руководств по автоматизации тестирования на Kotlin, особенно в сочетании с Kotest — немного.
Думаю, что написать цикл статей про Kotest, а также про организацию проекта авто-тестов, сборку, запуск и сопутствующие технологии — хорошая идея.


Все части руководства:


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

Вячеслав Смирнов — Ускоряем Apache JMeter

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

Вячеслав Смирнов — Ускоряем Apache JMeter



Apache JMeter не требует рекламы, но нечасто время уделяют скорости работы самих нагрузочных скриптов. Вячеслав рассматривает подходы к оптимальному написанию скриптов, что позволяет сэкономить на нагрузочных машинах и позволяет по-новому посмотреть на JMeter.


Apache JMeter является популярным инструментом тестирования производительности с большим количеством компонентов и возможностей. Одни и те же операции в Apache JMeter можно выполнить несколькими способами.


В проектах, где нужна высокая нагрузка, важным становится вопрос производительности нагрузочного скрипта. И хорошо бы иметь рейтинг производительности компонентов Apache JMeter и подходов к написанию скриптов.


Пользуясь средствами профилирования Java-приложений, такими как Java Flight Recorder, jVisualVM, SJK, имея доступ к исходным кодам инструмента, написав синтетические тесты и взяв примеры из практики, мы подготовили отчёт по тестированию производительности инструмента для тестирования производительности.


Доклад будет интересен инженерам по тестированию производительности, использующим Apache JMeter, как начинающим, так и опытным, а также разработчикам, использующим JVM/JDK в работе и занимающихся профилированием и оптимизацией кода.


Всем привет! Я сегодня расскажу, как ускорить Apache JMeter.


Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии5

Как нарисовать звезду (и не только) в полярных координатах

Время на прочтение6 мин
Количество просмотров33K
Вопрос о формуле для многоугольника в полярных координатах регулярно возникает на тематических ресурсах — и так же регулярно остаётся без внятного ответа. В лучшем случае попадается решение через функцию остатка от деления — что не является «чистым» с математической точки зрения, поскольку не позволяет производить над функцией аналитические преобразования. Видимо, настоящие математики слишком заняты решением проблем тысячелетия и поисками простого доказательства теоремы Ферма, чтобы обращать внимание на подобные банальные задачи. К счастью, в этом вопросе воображение важнее знания, и для решения этой задачи не нужно быть профессором топологических наук — достаточно знания школьного уровня.
Дальше больше картинок
Всего голосов 116: ↑114 и ↓2+148
Комментарии31

Руководство по ассемблеру Go

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


Прежде чем заняться реализацией runtime и изучением стандартной библиотеки, необходимо освоить абстрактный ассемблер Go. Надеюсь, это руководство поможет вам быстро овладеть нужными знаниями.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии8

Как мы оптимизировали наш DNS-сервер с помощью инструментов GO

Время на прочтение19 мин
Количество просмотров8.8K
В преддверии старта нового потока по курсу «Разработчик Golang» подготовили перевод интересного материала.




Наш авторитативный DNS-сервер используют десятки тысяч веб-сайтов. Мы ежедневно отвечаем на миллионы запросов. В наши дни DNS-атаки становятся все более и более распространенными, DNS является важной частью нашей системы, и мы должны убедиться, что мы можем хорошо работать под высокой нагрузкой.

dnsflood — это небольшой инструмент, способный генерировать огромное количество udp запросов.

# timeout 20s ./dnsflood example.com 127.0.0.1 -p 2053

Мониторинг систем показал, что использование памяти нашим сервисом росло так быстро, что нам пришлось остановить его, иначе мы столкнулись бы с OOM ошибками. Это было похоже на проблему утечки памяти; существуют различные причины «похожих на» и «реальных» утечек памяти в go:
Читать дальше →
Всего голосов 26: ↑25 и ↓1+29
Комментарии10

Информация

В рейтинге
5 176-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность