В этой статье я расскажу как с помощью генераторов можно модифицировать рекурсию так, чтобы она использовала кучу вместо стека и при этом почти не отличалась от обычной рекурсии
User
Кадры не нужны – 6, или спорные ачивки
Для ЛЛ и экспертов Хабра: не читать, сразу минусовать
Вместо предисловия
Никто не хочет вкладываться в людей и делится опытом, все сходу хотят найти сеньора помидора который знает все за пачку риса. Вместо этот статьи лучше бы документацию в конфлюенс написали, наняли джуна и заставили ее читать. Глядишь выйдет спец, не выйдет, не жалко.
У меня сфера специфическая, поэтому присутствует кое какая, но ответственность (не гос). Заметил у новой итерации людей-студентов такую фишку - чем меньше работы и чем больше платят, и при этом меньше ответственности, тем лучше. Я просто считаю, что это ничем хорошим не кончится. Люди не берутся за сложное. (заказчик статьи)
Погружение в DevOps: запускаем GitLab и GitLab Runners локально
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/b73/a30/5e2/b73a305e26a056770588de0e39f02833.png)
В этой статье мы рассмотрим, как развернуть собственный GitLab сервер и GitLab Runners с использованием Docker Compose. Это руководство поможет вам создать локальную среду для изучения и практики GitLab CI/CD. Мы пройдем через все этапы: от настройки контейнеров до регистрации раннеров и создания примера CI/CD пайплайна. Независимо от того, новичок вы в CI/CD или опытный разработчик, этот гайд предоставит вам ценные знания для улучшения вашего процесса разработки.
Интересный пример кода на Go и зашоренность мышления
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/a0c/42c/af1/a0c42caf1104ed5cbac1929a75f67337.png)
История про интересный пример кода на Go и то, что иногда для понимания происходящего в коде полезно смотреть на него под другим углом.
Как стать нормальным системным администратором?
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/1a9/a88/8be/1a9a888beb7595e03ea4b1ba0678fcfe.png)
Для кого эта статья?
Для школьников и студентов ИТ‑направлений, а также просто для людей, занятых в ИТ‑отрасли. Всех остальных вежливо попрошу убраться, если вы не имеете никакого отношения к ИТ. Лучше дальше работайте по тому же направлению и не лезьте в эту прекрасную отрасль. Если вы несколько лет клали плитку, а потом вдруг вам показалось, что, прочитав пару книжек и статей, вы станете системным администратором Linux — вы очень сильно ошибаетесь. Поэтому очень многие специально не берут людей без профильного образования или с наличием существенного опыта работы не по профилю. Вайтишников никто не любит, и здесь 1 год опыта работы по профилю ценится гораздо выше, чем 5 лет не по профилю.
Сисадмин — это профессия, которая требует очень большого интеллектуального труда, усидчивости, высокого уровня понимания подхода и ответственности, потому что в вашем распоряжении будет ИТ‑обеспечение организации, информация и дорогое оборудование. Сисадмин может специально (потому что хочет показать, кто здесь герой) или случайно (потому что просто тупой) остановить деятельность компании полностью и нанести очень существенный ущерб, поэтому в сисадмины берут (в нормальные сисадмины я имею ввиду) очень сильно далеко не каждого, и желательно с двумя почками и мозгами. И да, здесь не будет бреда в стиле «сисадмин — это призвание», потому что никакое это не призвание и не талант, это результат систематического и плодотворного труда, как и во всех профессиях. Но с тем, что эта профессия не для тупых и ленивых, я полностью согласен.
Утилиты на PowerShell для системных администраторов
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/4b7/04b/bc4/4b704bbc45538cf73a23f488e88c604c.jpg)
Работая на первой линии тех.поддержки, я часто сталкивался с рутиной, особенно очень хотелось минимизировать подключение к рабочему столу пользователей для сбора информации и как-то автоматизировать этот процесс, что привело меня к осваиванию языка PowerShell и написанию скриптов, которые в последствии оформились в самостоятельные программы. Некоторые из них я решил выложить на GitHub, возможно для кого-то они будут полезны.
ScanPC
Утилита сканирующая удалённый ПК и показывающяя версию ОС, информацию о дисках, железе, открытых портах из списка (22,445,80,8080,3389,5900,1112,2575,10050), установленных принтерах, пользователях вошедших в систему, список профилей пользователей в папке C:\Users
, размер системных папок и фалов, папки с документами в профилях пользователей размером больше 100МБ.
Пытливый взгляд АНБ: что такое война за Интернет-безопасность (Часть 2)
![image](https://habrastorage.org/getpro/habr/post_images/500/f36/2bc/500f362bcb343e4aae2271ddf5e4698a.jpg)
Предположения о том, что разведывательные агентства опередили нас настолько, что защищаться от них шифрованием бессмысленно, неверны. Как показывает один документ из архива Сноудена, АНБ не преуспело в расшифровке ряда коммуникационных протоколов, как минимум в 2012 году. В презентации для конференции, проведенной в том году, значится список программ шифрования, которые американцам взломать не удалось. В процессе дешифровки криптологи АНБ разделили свои цели на пять уровней согласно уровню сложности атаки и получаемому результату, начиная с «тривиальных» и до «катастрофических».
[первая часть]
Мониторинг пути перемещения документа в Сети классифицируется, как «тривиальная» цель. Запись чата в Facebook – «несложная» задача, в то время как уровень сложности дешифровки писем, отправляемых через российский провайдер интернет-сервисов Mail.ru, рассматривается, как задача «умеренной сложности». Но все три эти уровня классификации не представляют серьезных проблем для АНБ.
Создание Web components на Vue 3
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/0a9/c2d/aff/0a9c2daff9f793f945d3770c3bd84d5b.jpg)
Можно написать на Vue 3 какой-нибудь полезный компонент и захотеть дать возможность использовать его не только в Vue проектах, но и на любых других фронтендах. Сделать это несложно через регистрацию его как web component, или подключение "микро-фронтендом". Оба варианта будут рассмотрены ниже.
О важности гайдлайнов в дизайне иконок
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/500/249/8b4/5002498b44f05a0dadf2686b25366b91.jpg)
Всем привет! Я Алёна Лагойкина, дизайнер в AGIMA. Хочу рассказать вам о роли иконок в улучшении пользовательского опыта. Они служат визуальными подсказками, которые быстро передают информацию и направляют пользователей к ключевым действиям. При добавлении новых элементов на сайт важно поддерживать единый визуальный стиль, который будет перекликаться с фирменным стилем всего сайта.
Создаём виртуальную сеть, как это делает Docker
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/a34/b0f/bb9/a34b0fbb98416d541e27de2e0df6cdc3.png)
Как известно, Docker умеет создавать виртуальные сети для безопасного и удобного сетевого взаимодействия внутри контейнеров. В этой статье мы рассмотрим, как именно он это делает на примере базовых манипуляций с сетью в рамках одного хоста с операционной системой Linux.
Как провести фаззинг REST API с помощью RESTler
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/a42/4a7/553/a424a75530de42870d5ffa9015eefc13.png)
Привет, Хабр! С вами Владимир Исабеков, руководитель группы статического тестирования безопасности приложений в Swordfish Security. Современная разработка программного обеспечения требует не только функционального, но и безопасного API. Сегодня мы расскажем, как провести фаззинг-тестирование API c помощью инструмента RESTler, имея на руках только спецификацию API. Статья написана в соавторстве с нашим инженером по безопасности, Артемом Мурадяном @TOKYOBOY0701.
Как мы заработали 1700000 руб на Telegram-боте для создания фотокниг с помощью нейросети. Фейлы и выводы
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/33c/98e/400/33c98e40024a4ff504ece5c99dc22ee5.jpg)
Решил сэкономить вам 2 года, и разобрать фейлы, которые мы допустили на этапе запуска и продвижения продукта. Будет полезно, если думаете запустить свой IT продукт.
Генератор случайных чисел, который можно запустить в голове
![](https://habrastorage.org/storage2/930/571/c14/930571c142e5a454827cca64cd0855be.png)
Люди ужасно плохо справляются с придумыванием случайных чисел. Я хотел научиться быстро генерировать «достаточно случайные» числа. Мне не нужно было что-то совершенное, просто способ придумывания случайных цифр за полминуты. Поискав онлайн, я нашёл старый пост в Usenet, написанный Джорджем Марсалья:
Выберите двухразрядное число, допустим, 23. Оно будет вашим «порождающим значением» (seed).
Создайте новое двухразрядное число: количество десяток плюс шесть, умноженное на количество единиц.
Пример последовательности: 23 –> (2 + 6 * 3) = 20 –> (2 + 6 * 0) = 02 –> 12 –> 13 –> 19 –> 55 –> 35 –> …
Его период будет порядком множителя (6) в группе остатков, простых относительно модуля, 10 (в данном случае 59).
«Случайными цифрами» будет количество единиц двухразрядных чисел, то есть 3,0,2,2,3,9,5,… то есть члены последовательности mod 10.
Больше всего Марсалья известен своим набором тестов diehard-генераторов случайных чисел (RNG), так что он в этом понимает (здесь и далее под RNG я имею в виду генератор псевдослучайных чисел (PRNG)). Мне стало любопытно, почему это работает и как он выбрал 6.
Мы будем писать на Raku, языке для гремлинов. На случай, если вы тоже гремлин, под спойлерами я буду объяснять все странные особенности.
Знакомство с WebTransport API
![](https://habrastorage.org/webt/ma/po/lv/mapolvqq4uunxfqoaviv3g9km9y.jpeg)
Hello world!
На днях я прочитал статью о WebTransport API как будущей альтернативе или даже замене WebSockets. Мне стало интересно, что это такое и с чем его едят. Давайте разбираться вместе.
As const в Typescript
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/946/42f/a58/94642fa58f04eeb5d6b952512f0b9ab3.png)
Привет, Хабр!
В разработке часто возникают ситуации, когда точность типов и нежелание допускать неясности в коде становятся первостепенными задачами. В таких случаях, разработчикам приходится искать инструменты, предоставляющие максимальную ясность и строгость в определении данных. Один из таких инструментов — ключевое слово as const
. В данной статье мы рассмотрим, как as const
может повысить уровень строгости и предсказуемости, а также рассмотрим практические примеры его использования для создания неизменяемых и точных типов.
О кастомных HTML-тегах по-человечески и как их использовать
Расскажу вам о том, как использовать чудо-юдо под названием «Кастомные HTML‑теги» понятно, но подробно.
Что же такое GitOps? Его свойства и недостатки
![](https://habrastorage.org/webt/jc/dd/hv/jcddhvzirp22y0b82thj4ce7fxu.jpeg)
Полтора года назад мы переводили пару статей о том, что такое GitOps. С тех пор этот термин (и сам подход) набрал ещё большую популярность в среде DevOps-инженеров, особенно эксплуатирующих Kubernetes. В то же время у меня появилось свое видение того, какие у него проблемы и каким он должен быть. Поделиться этими мыслями я решил в получасовом видео — смотрите его либо читайте основную выжимку, если предпочитаете текст:
Как работает протокол X11 на самом нижнем уровне
X11 это тот механизм на чем работает весь графический интерфейс Unix подобных ОС.
Но мало кто знает как он работает на самом деле. Потому что с годами он оброс слоями и слоями библиотек, которые стремятся скрыть саму сущность протокола.
А протокол в своей сути прекрасен. Он лаконичен и почти совершенен.
В Интернете есть полная документация по протоколу. Но дело в том, что эта документация большая, написана не совсем ясным языком и, по сути, является просто спецификацией. Важные моменты никак не обозначены, а как использовать – тоже оставлено на фантазию читателя.
А все книги и статьи по использованию X11 описывают это через библиотеки прокладки типа XLib и XCB, и даже, что хуже, GTK или Qt.
Так что документацию приходится читать всю и самому выделять что важно, а что не очень. Придумывать сценарии использования и писать хотя бы короткие программы чтобы испробовать как все работает на самом деле.
Как бы то ни было, если кому-то интересно как все работает на самом деле, пожалуйста под кат.
Мой вам подарок к Новому году или как наконец запустил то, что надо было давно запустить…
Немножко истории
Начну с истории вопроса.
Очень давно я написал Fresh IDE – навороченнoe IDE для программирования на ассемблере, а точнее на FlatAssembler.
Fresh IDE долгие годы меня полностью устраивал, поэтому я с перерывами выпустил 2 главные версии и начал просто его использовать, время от времени внося какие-то исправления и изредка новые функции.
Когда перешел полностью на Linux, оказалось, что Fresh IDE прекрасно работает под WINE, и я продолжил им пользоваться без угрызений совести. В процессе даже удалось исправить несколько багов WINE (вот, вот и вот).
Как бы то ни было, но я начал писать библиотеку для переносимости ассемблерных программ между Linux и Windows (и KolibriOS). Одновременно с этим задумался и над тем, чтобы сделать Fresh IDE переносимым. Из-за архитектуры библиотеки, огромная часть кода уже и так была переносимой. А точнее все, что не касалось GUI. К сожалению, GUI был полностью написан на Win32 API и его нельзя просто так перенести на другие платформы.
Поэтому и пришлось начинать все сначала. И третья версия Fresh IDE писалась почти с нуля.
«Я его обучу, а он уйдёт». Формула, которая должна остаться шуткой
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/533/155/b35/533155b35ada1307b1dfbd3071b0b1e6.jpg)
«Я его обучу, а он уйдёт». Формула, которая должна остаться шуткой
— Я их обучу, а они уйдут!
— Ты бойся, что ты их не обучишь, а они останутся.
/Старая менеджерская шутка/
Росстат говорит о падении уровня безработицы на 24% с марта 2021 года по январь 2023. Хорошо это или плохо – вопрос дискуссионный, но для HR – это сигнал бедствия. Стоимость найма и удержания сотрудника выросла не только среди рабочих специальностей, но и в IT, где рынок “соискателя” традиционно набирает обороты. Некоторые владельцы бизнеса не хотят вкладываться в развитие сотрудников. Зачем, если типичной стратегией квалифицированных специалистов становится смена работы каждые 2-3 года? Как говорил кот Матроскин: «Мы его, можно сказать, на помойке нашли, отмыли, очистили от очисток, а он нам фигвамы рисует…»
Тем не менее, развитие сотрудников – это действенный способ повышения лояльности и удержания специалистов. Мы поговорили с соучредителем HR-tech компании «Улей» Александром Григоряном, чтобы понять, как сделать сотрудников соратниками, ценными специалистами и не бояться при этом их потерять.
Information
- Rating
- Does not participate
- Registered
- Activity