Search
Write a publication
Pull to refresh
-5
@cosmolevread⁠-⁠only

User

Send message

Пишем код, который можно бегло просматривать

Reading time7 min
Views10K

Писать код, который достаточно бегло просмотреть — не менее важно, чем писать код, который в принципе можно прочитать. Давайте немного поговорим о «форме» кода — такой, чтобы по структуре кода можно было быстро понять, для чего он, и сократить время работы с кодовой базой.

Читать далее

Психология быстрого дофамина: почему мы подсаживаемся на мгновенные удовольствия и это разрушает мозг

Level of difficultyEasy
Reading time5 min
Views3.3K

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

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

Читать далее

Я 10 лет искал причину головной боли, оказалось — чипсы

Reading time4 min
Views46K

Всем привет, хочу поведать свою историю, связанную со здоровьем и самочувствием. Почему Хабр? ну полагаю что она может кому‑то помочь тут, т.к. сам являюсь разработчиком, по 12 часов в день провожу за экраном монитора. Сам образ жизни, и питание наверное как у среднестатистического семейного человека моего возраста (сейчас мне 36).

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

Когда понял, что проблема не случайность а повторяется пару раз в месяц, решил обратиться к врачу. Обследование не выявило каких‑то значимых аномалий и был поставлен диагноз — гипертония 1й степени (легкая). В моменты головной боли врач прописал принимать Андипал (к слову спасибо ему за это, эта штука отлично купирует приступы головной боли, но побочно вызывает сонливость, что всё‑же лучше состояния, когда болит голова).

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

Читать далее

Пока ты делаешь 10 задач в день, кто-то делает одну — и получает больше

Level of difficultyEasy
Reading time5 min
Views50K

Ты закрыл 10 задач за день. Был на созвонах, фикcил баги, даже написал пару тестов. День не прошёл зря?

В это же время кто-то сделал одну задачу — и сэкономил твоей команде два месяца работы.

Читать далее

Устанавливаем свой сервис мониторинга Uptime Kuma в Docker с Nginx и бесплатным SSL-сертификатом

Level of difficultyEasy
Reading time6 min
Views5.1K

Всем привет! Сегодня я хочу поделиться полным руководством по развертыванию на своем сервере замечательного open-source инструмента для мониторинга — Uptime Kuma.

Читать далее

Как я играл с Каспаровым — очерк о истории специализированных шахматных компьютеров

Level of difficultyEasy
Reading time20 min
Views3.3K

Здравствуйте, дорогие коллеги. Меня зовут Илья, я энтузиаст старых компьютеров и сертифицированный школьный инструктор FIDE. И сегодня я хочу рассказать вам о специализированных шахматных компьютерах — об их особенностях, расцвете, закате и немного — о сегодняшнем дне.

Читать далее

Почему (и по чему) мы испытываем ностальгию?

Level of difficultyEasy
Reading time7 min
Views5.4K

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

В статье мы поговорим о ностальгии, некоторых её причинах и интересных проявлениях. Усаживайтесь поудобнее — под катом мы будем препарировать значение слов «теплое‑ламповое», а заодно разберемся в пользе, которую ностальгия может принести в умеренных дозах.

Читать далее

Обход двухфакторной аутентификации в публичной баг-баунти программе: путь к $6000

Reading time4 min
Views2.9K

Находить уязвимости в публичных программах — это одновременно захватывающе и прибыльно. В этом посте я расскажу, как обнаружил и использовал уязвимость обхода 2FA в одной публичной баг-баунти  программе (название скрыто, используется redacted.com из соображений конфиденциальности), что принесло мне в общей сложности $6000. Для лучшего понимания я поделюсь техническими деталями, включая пример HTTP-запроса, а также расскажу о результатах повторного тестирования.

Читать далее

Спасаемся от Spring: есть ли альтернативы репозиторным фреймворкам? Часть вторая. Альтернативы

Level of difficultyMedium
Reading time19 min
Views5.7K

В предыдущей статье мы обсудили недостатки решений Spring в части доступа к данным.

В ходе анализа решений Spring стало очевидно, что оба фреймворка используют радикально разные подходы в работе с данными. Казалось бы, контроль над запросами очень важен для приложений, особенно высоконагруженных. Но Spring Data JPA такого контроля не даёт. Лёгкость и простота изменения кода является залогом его чистоты и работоспособности, однако с этим есть сложности уже у Spring JDBC.

Всего-то нужен фреймворк, предоставляющий полный контроль над запросами со стороны разработчика и не создающий трудностей при развитии, изменении и рефакторинге кода. В этой статье мы разберём две альтернативы, которые, на мой взгляд, в меньшей степени подвержены проблемам Spring Data JPA и Spring JDBC.

Это будут jOOQ и Exposed.

Читать далее

Всё, что вам не рассказали про Shunting Yard

Level of difficultyEasy
Reading time11 min
Views1.6K

Алгоритм сортировочной станции (Shunting Yard) был предложен Дейкстрой ещё в 1961 году и служит для преобразования математических выражений из привычной всем инфиксной записи (где операторы стоят между операндами, как в 1 + 2 * 3) в постфиксную (обратную польскую нотацию, 1 2 3 * +), удобную для дальнейшего вычисления. Однако есть один важный момент, который почти всегда упускается или замалчивается: алгоритм предполагает, что входное выражение уже синтаксически корректно.

Ни в Википедии, ни в большинстве обучающих статей вы не встретите слов о том, что выражения вроде + (1 2, 3 * 4 + ) или sin(+) должны вызывать ошибку. В лучшем случае они просто не вычисляются (что будет понятно лишь на этапе обработки в обратной польской записи), в худшем – дают бессмысленный результат. Алгоритм продолжает работать, даже если выражение изначально некорректно – и мало кто задумывается, почему это плохо.

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

Читать далее

Как я убил свой сайт: детективный триллер про жадность, nulled-плагин и падение с 9000 до 100

Level of difficultyEasy
Reading time3 min
Views4.9K

Когда-то у меня был сайт. Не стартап, не интернет-магазин, не проект с инвесторами. Просто блог. Мой личный уголок под названием setiwik.ru — такая цифровая записная книжка, чтобы не забыть важное. Типичный склерозник, где я писал статьи по IT, переводил интересные материалы, собирал мысли в кучу. Никаких амбиций. Но спустя пару лет что-то пошло не так… в хорошем смысле. Люди начали приходить.

Читать далее

Почему JS (и TS) это плохой язык

Level of difficultyEasy
Reading time5 min
Views18K

Я знаю, что на эту тему уже было сказано много, но настал мой черед. На JS я пишу больше 10 лет, так что терпел я достаточно. Мы называем это “джаваскрипт”, но под капотом скрываются три разные сущности: EcmaScript, среда исполнения и экосистема. Иногда о них стоит говорить отдельно, но сегодня я хочу обсудить всё сразу и объяснить, почему джаваскрипт — это плохой язык. Не в смысле “не работает”, а в смысле “заставляет страдать”.

Читать далее

15 команд Git, которые покрывают 90% повседневной работы разработчика

Level of difficultyMedium
Reading time9 min
Views82K

Git стал стандартом де-факто в мире разработки программного обеспечения. Это мощная система контроля версий, которая позволяет командам эффективно сотрудничать, отслеживать изменения и управлять кодовой базой. Новичку Git может показаться сложным из-за обилия команд и концепций. Однако правда в том, что для выполнения 90% повседневных задач достаточно уверенно владеть небольшим набором ключевых команд.

Читать далее

Почему я не люблю использовать «alias» для создания псевдонимов команд

Level of difficultyEasy
Reading time5 min
Views4.2K

Настройка алиасов (alias, псевдоним команды) была одной из первых задач, которую я решал, редактируя конфигурационные файлы (dotfiles) в Unix-подобных ОС. Вот пример одного из моих очень ранних алиасов:

alias g=git

Благодаря этой конструкции я могу, когда мне это нужно, вызвать, вместо команды git, команду g. Это позволяет сэкономить немного времени при использовании тех команд, к которым я прибегаю десятки раз в день!

# Теперь эти две команды равноценны:
git status
g status

Раньше я задавал псевдонимы команд с помощью команды alias. В конце концов… я ведь создавал то, что называется «alias»!

Но со временем я понял, что мне, похоже, удалось найти лучший способ создания альтернативных версий команд. Он заключается использовании скриптов в переменной окружения $PATH.

Читать далее

Как пузырь доткомов добил Compaq

Level of difficultyEasy
Reading time5 min
Views2.6K

Никто так не доминировал на ранней компьютерной сцене так, как Compaq. Компания даже создала первые в истории IBM PC-совместимые компьютеры и стала второй организацией, которая когда-либо законно провела обратную разработку BIOS. С таким наследием за плечами можно было бы подумать, что Compaq будет процветать. Но в век смартфонов, ноутбуков и мощных компьютеров она осталась в пыли технологической революции. Так что же случилось с Compaq и что привело к её краху?

Читать далее

Коротко и по делу про механизм propagation в OpenTelemetry

Level of difficultyEasy
Reading time3 min
Views2.3K

Всем привет! Сегодня хочется поговорить про механизм распространения контекста трассировки в OpenTelemetry. Разберем, как он работает, и посмотрим простой пример на Go. Всё — коротко и по делу!

Меня зовут Носорев Константин, я backend-разработчик в Яндекс Пей, автор канала "Константин про IT" и просто любознательный инженер.

Читать далее

Проект Колхоз — светлое будущее своими руками

Level of difficultyMedium
Reading time5 min
Views15K

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

Прикоснуться

Как сантехник стал IT-бизнесменом. Моя невыдуманная история на миллион долларов

Level of difficultyEasy
Reading time19 min
Views12K

Когда-то я думал, что успех — это прямая линия вверх. Ты молод, амбициозен, голоден, у тебя горят глаза, и ты искренне веришь, что сможешь всё. Ты начинаешь действовать немедленно. Осваиваешь технологии, создаёшь алгоритмы, пишешь код, запускаешь свои первые онлайн-проекты. Радуешься первым пользователям, первым деньгам, первым успехам — и ловишь себя на мысли: «Вот оно. Кажется, я ухватил бога за бороду!»

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

Ты морально выгорел, твой банковский счёт опустел, а за окном — не Кремниевая долина, а грустное зрелище провинциального серого городка.

Никто не предупреждал, что успех может быть временным, а падение - болезненным и очень личным.

Я не коуч, не инфоцыган и не очередной гений из TikTok, который зарабатывает миллионы, вдохновляя мечтателей на успешный-успех. Я просто любопытный от природы человек, который прошёл длинный путь — от вдохновения и небольших побед до полного провала и эмоционального выгорания, а затем снова вернулся к чистому листу. 

Эта статья — не жалоба и не исповедь. Это письмо тем, кто только начинает свой долгий путь в IT индустрию. Или тем, кто стоит на пороге важного жизненного выбора и не может определиться с выбором специальности. А возможно, вы уже строите своё будущее в мире информационных технологий, как классический карьерист: учёба, работа, рост, высокая зарплата, и, может быть, со временем — кресло директора. Всё может быть именно так. Но быть может, вас ждёт совсем другой путь — например, как у меня: с трудными выборами, сомнительными решениями, перекрёстками, на которых легко свернуть не туда, и дорогами, с которых потом сложно вернуться.

Читать далее

Автоматизация тестирования без программирования: Как я начал строить No-Code тулзу через конфиги

Level of difficultyEasy
Reading time6 min
Views3.7K

Дратути!

Работая в одной финтех компании TL QA, я столкнулся с тем, что уровень моих сотрудников по автоматизации не дотягивает до нужного, а рутину хотелось бы автоматизировать. В компании использовался Python (вроде все легко и просто) и все попытки обучить персонал через четкий индивидуальный план развития заканчивались тем, что у сотрудника «не хватало» времени на обучение и поднятие своего грейда как специалиста.

В какой-то момент времени мне пришла в голову идея создания инструмента автоматизации тестирования через конфигурационные файлы. Делать велосипед на подобии Cucumber особо не хотелось, да и сам инструмент в моих фантазиях не подразумевал писать дополнительный код при расширении функционала.

Итак, приступим к интересному.

Читать далее

Сбор данных из DHT (как работают агрегаторы)

Level of difficultyEasy
Reading time3 min
Views4.5K

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

Начнем с базы

Разберемся, как работает IKnowWhatYouDownload (и подобные агрегаторы).
Вот что говорят его создатели:
Торрент-файлы попадают в нашу базу данных несколькими способами. Во-первых, мы собираем новинки с популярных торрент-сайтов (как зарубежных, так и российских). Во-вторых, у нас есть компоненты, которые постоянно мониторят DHT-сеть. Если кто-то ищет или анонсирует infohash, мы также добавляем его в базу.

Данные по одному торрент-файлу собираются раз в несколько часов. Чем дольше вы находитесь на раздаче, тем выше вероятность попасть в нашу базу. Данные на сайте обновляются с задержкой в сутки.

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

Как вы понимаете, на сайте идеология другая — получить по большому количеству торрент-файлов как можно больше данных, поэтому применяемые методы могут быть неточными. Да, кроме того, на сайте не отображаются данные старше 4х недель.

Что такое DHT?

DHT (Distributed Hash Table) — это технология, которая используется в торрент-сетях для децентрализованного поиска участников раздачи (пиров) без необходимости подключения к центральному трекеру. Вместо того чтобы полагаться на сервер, DHT позволяет каждому участнику сети хранить и обмениваться информацией о пирах напрямую.

Читать далее
1
23 ...

Information

Rating
Does not participate
Registered
Activity