Как стать автором
Обновить
-5
@cosmolevread⁠-⁠only

Пользователь

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

alias g=git

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

Дратути!

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

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

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

Читать далее

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

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

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

Начнем с базы

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

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

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

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

Что такое DHT?

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

Читать далее

Научная фантастика в ЕКА

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

 После публикации статьи об использовании научной фантастики в Национальном управлении по аэронавтике и исследованию космического пространства (NASA) мне стало интересно, а существует ли нечто подобное в Европейском космическом агентстве? Оказалось, специалисты европейской аэрокосмической отрасли, как и их коллеги американцы, регулярно и успешно перечитывают научную фантастику.

Читать далее

Немодальное окно коммита в IntelliJ IDEA: шаг вперёд или спорное нововведение?

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

В свежих обновлениях IntelliJ IDEA разработчики JetBrains внедрили немодальное окно коммита, отказавшись от классического модального диалога. Команда Spring АйО не обошла стороной активное обсуждение среди пользователей, которые разделились на два лагеря: одни приветствуют нововведение, другие считают его неудобным. Разберёмся, какие плюсы и минусы выявили пользователи и что по этому поводу думают представители JetBrains.

Читать далее

Serverless-трекер поездов метро

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

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

График поездов метро Нью-Йорка можно посмотреть на mta-trmnl.pages.dev. Исходный код моего проекта выложен на GitHub: фронтенд, бэкенд.

▍ Я безголовый


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

Мне показалось, что идеально было бы, чтобы эта информация была видна всегда, находилась в одном и том же месте (посередине квартиры), чтобы на разблокировку и забывание тратилось меньше времени и внимания.
Читать дальше →

Дикая Java

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

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

«Ибо JVM темна и полна ужасов». (ц)

Погрузиться

Стримы в Java: Как перестать бояться и полюбить filter-map-reduce

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

Когда-то я считал, что священный грааль итераций — это старый добрый цикл for. Да, тот самый, с индексами, который шагал по массивам как бравый солдат по полю. Я обожал мои циклы и охотно избегал всего, что могло их заменить. Но потом появился он — Stream API. Новомодный, загадочный, пугающий, словно неведомый зверь из функционального леса. И вот я, стоя по колено в коде, задумался: "Как перестать бояться и полюбить filter-map-reduce?"

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность