Pull to refresh
53
Karma
0.1
Rating
Дмитрий @bogolt

User

Прекращайте оправдываться

Reading time 5 min
Views 94K
Programming *IT career
Opinion

Привет, человек, %хабраюзер%, %юзернейм%, программист.

Этот пост является оплотом ненависти. Так уж вышло. Но тебе, как программисту пора перестать оправдываться.

Разрешите объясниться.
Total votes 379: ↑324 and ↓55 +269
Comments 361

Зачем тебе, бабка, тестовое

Reading time 4 min
Views 50K
IT career Reading room

Это не было работой мечты - просто приличный вариант, где обещали развитие. И я откликнулась в полной уверенности, что подхожу по навыкам под требования вакансии процентов на 90. Я позвонила даже - поговорили, и Александр спросил, готова ли я выполнить тестовое. Я очень нехотя уточнила, что тестовое я посмотрю, ну а потом как выйдет. Тестовые как раз обсуждались в моей предыдущей статье, я там дискуссию перечитывала раз десять.

Но. Я рассматривала только эти варианты: мне присылают тестовое, и я решу его выполнить - или решу не выполнить.

Читать далее
Total votes 164: ↑150 and ↓14 +136
Comments 388

Заблуждения программистов о картах

Reading time 12 min
Views 48K
Global Positioning Systems *Programming *Geoinformation services *


Дизайн систем быстро выявляет ошибки в восприятии закономерностей функционирования мира. Те правила, которые кажутся непреложными истинами, могут ими не оказаться.

Списки подобных заблуждений составлялись про имена или телефонные номера. Настало время карт и систем навигации.

Заблуждение 1. Форма Земли — это просто


Шар — множество точек в пространстве, удалённых от центра на расстояние не выше радиуса. Однако хотя бы из-за суточного вращения форма нашей планеты отличается от идеального шара. Планета сплюснута у полюсов и утолщена на экваторе, а также обладает рельефом и испытывает циклы приливов и отливов.
Читать дальше →
Total votes 314: ↑310 and ↓4 +306
Comments 114

О бедненьком NULLе замолвите слово

Reading time 5 min
Views 7.9K
SQL *Data storage *

Есть вещи, которые не нравятся, есть вещи, которые бесят, есть вызывающие жгучий гнев, и есть ситуация с NULL в SQL.

Давайте немножко похоливарим по этому поводу.

Читать далее
Total votes 15: ↑12 and ↓3 +9
Comments 152

Разработчик с мозгом груга

Reading time 14 min
Views 75K
Programming *Perfect code *Designing and refactoring *
Translation

Введение


это сборник мыслей о разработке программ собранный разработчиком с мозгом груга

разработчик с мозгом груга не очень умный, но разработчик с мозгом груга программирует много лет и научился кое чему, хоть всё равно часто запутывается

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

разработчиков с большим мозгом много, некоторым страница не понравится, скривят кислая рожа

Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится

(груг раньше думал груг с большим мозгом, но потом всё понял)

это ладно!

груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Читать дальше →
Total votes 261: ↑235 and ↓26 +209
Comments 81

Баллада о долгоживущем софте

Reading time 11 min
Views 48K
«Лаборатория Касперского» corporate blog Old hardware
Увлекаясь коллекционированием старого хлама винтажной электроники, я научился ценить долгоиграющие проекты. Конечно, в моей коллекции часто попадаются экспонаты противоположного типа. Вот клавиатурный коммуникатор Nokia, аналогов которого больше нет. Вот минидисковый плеер, проигрыватель музыки с мертвого формата. А вот телевизор с трубкой: таких больше не делают! Все рано или поздно заканчивается, и с возрастом иногда хочется остановить, эм, неумолимую поступь прогресса.



С железками это сделать трудно, зато можно с программами. Уже более четверти века я занимаюсь развлечением под условным названием «переустановка Windows». В последнее время чаще я устанавливаю ОС либо на новый ПК, либо на один из своих ретроэкспонатов. Как у многих из вас, у меня есть список софта, который при каждой такой операции устанавливается в первую очередь. Некоторые из этих программ я регулярно устанавливаю, и пользуюсь ими лет 15 или даже больше. Все это время создатели обновляют и развивают их, это не заброшенные проекты. В этой статье я хочу отдать должное этим разработчикам-долгожителям в субъективном хит-параде древнего, но актуального софта.
Читать дальше →
Total votes 161: ↑160 and ↓1 +159
Comments 431

Что есть sshto?

Reading time 4 min
Views 11K
Self Promo
✏️ Technotext 2022

Многие, если не все, кому приходится подключаться по ssh к серверам начинают использовать ssh aliases(конфиг файлы), когда этих серверов становится больше одного. А если их больше двух наступает время автоматизации. Так появился sshto.

Узнать sshto это
Total votes 15: ↑15 and ↓0 +15
Comments 13

Вымышленные языки как способ построения мира игры

Reading time 11 min
Views 8K
Game development *Game design *
Translation
image

Каждый серьёзный разработчик игр знает, что построение мира — неотъемлемая часть процесса, создающая геймплей с истинным погружением. Для его реализации есть множество разных техник: от изложения предыстория игрока стеной текста, до продуманных трюков с дизайном уровней, называемых environmental storytelling («повествование через окружение»). Второй вариант часто предпочтительнее. Распутывание лора мира по нескольким намёкам, разбросанным по уровням, де факто является игрой внутри игры. И хотя большинство игроков может их игнорировать, прочие смогут получить большое удовольствие от разгадывания этой мета-головоломки.

Игры наподобие Dark Souls известны своим богатым и довольно загадочным лором, который можно воссоздать благодаря продуманному environmental storytelling и различным подсказкам, скрытым в описаниях предметов. Некоторые другие игры заходят ещё дальше и создают для своих выдуманных цивилизаций совершенно новые языки.
Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 7

Удивительное приключение в стране оптимизирующих компиляторов

Reading time 17 min
Views 23K
Python *Programming *C++ *Lisp *C *

Приглашаю вас в небольшое приключение выходного дня, в котором никто никому ничего не будет доказывать. Мы просто будем реализовывать один и тот же несложный алгоритм, разыскивающий простые числа в некотором диапазоне, на нескольких языках программирования: C, C++, Scheme и Python - и смотреть, что этим кодом могут сделать современные оптимизирующие компиляторы. В процессе приключения мы увидим, что «динамический» не означает «совсем уж медленный», и посмотрим на приёмы программирования на Scheme, что, как мне кажется, можно сравнить с путешествием на экзотический остров.

Читать далее
Total votes 66: ↑64 and ↓2 +62
Comments 82

Невидимый Javascript-бэкдор

Reading time 4 min
Views 27K
билайн бизнес corporate blog Information Security *JavaScript *
Translation

Несколько месяцев назад мы увидели пост в сабреддите r/programminghorror: один разработчик рассказал о своих мучениях с поиском синтаксической ошибки, вызванной невидимым символом Unicode, скрывавшемся в исходном коде на JavaScript. Этот пост вдохновил нас на мысль: что если бэкдор в буквальном смысле нельзя было бы увидеть и таким образом он бы избежал тщательных проверок кода?

Как раз когда мы завершали написание этого поста, команда из Кембриджского университета опубликовала статью с описанием такой атаки. Однако её подход сильно отличается от нашего — в нём упор делается на механизм двойного направления текста в Unicode (Bidi). Мы реализовали подход, который в статье называется Invisible Character Attacks и Homoglyph Attacks.

Без лишних предисловий перейдём к бэкдору. Сможете его найти?
Читать дальше →
Total votes 105: ↑102 and ↓3 +99
Comments 55

ONKALO: чудо света на все времена, забудьте о нём…

Reading time 25 min
Views 76K
Timeweb Cloud corporate blog Reading room Popular science Energy and batteries The future is here
… или как захоронить свои ядерные отходы навсегда.



Многие уверены, что век монументального строительства прошёл. Пирамиды, мегалиты и загадочные гробницы лежат старыми игрушками в песочнице человечества. Мы выросли из них и живём сегодняшним днём, ярким и мимолётным. Когда нас не станет — от нас останутся только колоссы древности… и ONKALO.
Читать дальше →
Total votes 482: ↑477 and ↓5 +472
Comments 99

Транскрибация в Linux + lifehack

Reading time 4 min
Views 4.2K
Programming *Freelance Software Sound

Нет, это не ругательное слово (для тех, кто не в курсе). Транскрибация это перевод голоса в текст.

На протяжении нескольких лет я подрабатывал этим делом. Титры для видео (использовал subtitle editor), интервью, доклады, проповеди и т. п. По заказам речь переводил в текст.

Долго пытался автоматизировать этот процесс. Сейчас существует много сервисов, которые могли бы в этом помочь. Но, как выяснилось, в реальной работе эти сервисы не могут быть полезны. На записях шум, необычный выговор докладчика, качество самой записи не позволяли применить методы автоматического распознавания голоса и перевода речи в текст.

Тем не менее существенно облегчить труд может творческое отношение к процессу.

Во время транскрибации можно использовать любой аудио проигрыватель, который управляется с клавиатуры и показывает тайминг.

При записи текста обычно требуется указывать этот самый тайминг.

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

Это существенно помогает ориентироваться в тексте и в аудио записи.

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

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

Оказалось, что в Linux есть простое средство позволяющее создать небольшой скрипт, который может просмотреть аудио файл, определить его продолжительность и создать текстовый файл с указанием интервалов по 15 секунд. В конце файла может быть указана цена работы.

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 4

Как айтишнику получить визу зарубеж на основании удаленной работы в 2022 году

Reading time 11 min
Views 33K
Freelance IT-emigration Remote work

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

Читать дальше →
Total votes 39: ↑37 and ↓2 +35
Comments 28

Как кушать вилкой

Reading time 27 min
Views 15K
System Programming *C *

...или о fork() в двух словах.

Как люди решают задачи

Обычно у каждой задачи есть одно простое решение, которое воспринимается всеми как правильное. Люди воспринимают такое решение правильным либо исходя из личного опыта¹; исходя из опыта других людей² или просто не задумываясь о правильности³. И самое удивительное, что мир не взорвался, никто (массово) от этого не умер, код работает и приносит деньги.

¹ "всегда так пишу код, никто не умер"
² "копирую код из stack overflow который набрал больше всех плюсов"
³ "копирую первый попавшийся код из stack overflow"

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

Однако мы отвлеклись. Поставим перед собой задачу:

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

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

Содержание статьи

* Как кушать пингвина вилкой?
Общие знания о запуске процессов под LINUX-системами
*
Как кушать корову если есть вилка?
Copy-on-write, что это и зачем? vfork и почему он не лучше
*
Как кушать икру?
posix_spawn и почему он не замещает fork()
*
Как кушают клоны?
clone() под капотом у fork()
*
Почему когда ешь суп вилкой он утекает?
Утечка дескрипторов после fork() и как этого избежать
*
Почему у вилки три зуба?
Важность обработки всех вариантов возврата fork()
*
Как кушать демонов вилкой?
Запуск демонизирующихся процессов при помощи fork()
*
Как наложить вилкой в другую тарелку?
Переназначение дескрипторов вывода для нового процесса
*
Как сигналить вилке?
Взаимоотношения обработки сигналов и fork()
*
Как пользоваться вилкой когда сломалась ручка?
Самоликвидация дочернего процесса после завершения материнского
*
Как подготовиться к использованию вилки?
Сценарии использования pthread_atfork()
*
Как поцарапать окно вилкой?
Запуск дочернего процесса под Windows-системой
*
Как систематически пользоваться вилкой?
Почему вам не стоит пользоваться system()
*
Заключение
Благодарности и выводы

Читать далее
Total votes 74: ↑74 and ↓0 +74
Comments 24

Питон против Безумного Макса, или как я посты на Хабре замораживал

Reading time 8 min
Views 30K
Information Security *Website development *Habr Python *Programming *

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

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

Что из этого вышло
Total votes 395: ↑383 and ↓12 +371
Comments 193

Необычный дуалбут: ноутбук с «двойным дном»

Reading time 15 min
Views 75K
RUVDS.com corporate blog Information Security *Reverse engineering *Computer hardware UEFI *
Tutorial
✏️ Technotext 2021

Не так давно на Habr Q&A я наткнулся на интересный вопрос — как сделать, чтобы два жестких диска не видели друг друга? Чтобы вирус, попав на одну систему, никоим образом не мог заразить другую. В ответах предлагали достаточно стандартные способы — использовать полнодисковое шифрование, отключить диск в диспетчере устройств и даже поставить переключатель на питание. Но что если взглянуть на задачу совершенно с другого угла и сделать всё средствами самого HDD? Да-да, сегодня мы снова погружаемся в пучины модификации прошивок и реверс-инжиниринга!
Узнать подробности
Total votes 361: ↑357 and ↓4 +353
Comments 122

Имена людей и интерфейс

Reading time 13 min
Views 45K
Interfaces *
Пространство рассуждения статьи затрагивает вопросы различия имен людей во всем мире, и то, как это влияет на дизайн форм ввода, баз данных, онтологий информатики и др. в контексте Всемирной Паутины.

image

Заинтересованная аудитория: авторы HTML-контента, разработчики скриптов серверных приложений (PHP, JSP и т.д.), менеджеры веб-проектов и любые другие люди, так или иначе связанные с дизайном форм ввода данных, дизайна баз данных и онтологий, которые затрагивают личные имена людей.

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

Читать дальше →
Total votes 314: ↑301 and ↓13 +288
Comments 121

Как пирамида Пола Грэма помогает отделять конструктивный фидбэк от токсичных комментариев

Reading time 5 min
Views 15K
Project management *Reading room Health
Sandbox

Всем привет! Я занимаюсь разработкой и управлением проектами, а поэтому постоянно изучаю все, что прямо и косвенно может пригодиться в работе. Многими полезными находками, работающими принципами и собственными выводами хочется поделиться - когда-то мне самой конструктивных советов и внятной теории очень не хватало, о чем я жалею.

Сегодня делюсь очень полезным инструментом - пирамида аргументации от основателя YCombinator Пола Грэма, которая помогает работать с критикой, избегать бессмысленных споров и не грустить из-за существования хейтеров.

Пирамида аргументации Грэма, описанная им в эссе «Искусство возражать» — хороший инструмент, помогающий вырваться из этого порочного круга. Она четко структурирует возможные варианты критических комментариев – и связывает их с истинными намерениями оппонента. Теперь вы всегда можете идентифицировать "ступень" и понять: стоит ли критика вашего внимания — или это грязь под ногами, которую просто надо перешагнуть.

Читать далее
Total votes 25: ↑19 and ↓6 +13
Comments 7

Как Deus Ex едва не оказался слишком сложным, но это пошло ему на пользу

Reading time 7 min
Views 10K
Game development *Games and game consoles
Translation

Привет, я Уоррен Спектор, дизайнер и режиссёр Deus Ex. Однажды я вознамерился создать игру своей мечты, гибрид из шутера, RPG и стелса, и мне это удалось.

Мне позвонил Джон Ромеро и сказал: создай игру своей мечты, в твоё творчество никто не будет вмешиваться, тебе дадут бюджет на разработку и маркетинг, которого у тебя ещё не было. Я размышлял об этом примерно три с половиной секунды, а затем сказал: «Я в деле». Кто бы отказался от такой возможности? Поэтому я подписал договор с Ion Storm, и так началась история Deus Ex. Это игра, в которой важен стиль прохождения. Твои ощущения определяются тем, как ты играешь. Иными словами, мы позволяем игрокам выбирать, как играть, находить удовольствие для себя, проходить игру так, как они хотят, становясь авторами собственного уникального опыта.
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Comments 5

Теплая ламповая безопасность

Reading time 4 min
Views 20K
Information Security *Data storage *History of IT
Sandbox

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

Поэтому полагаю что все очень прогрессивные молодые люди будут огорчены моей статьей - ведь в ней нет ни ссылок на гитхаб, ни облаков, ни даже строчки питона. Всего лишь описание способа, который позволил мне не потерять нисколько моих работ и данных за 15 лет, несмотря на не менее 10 ситуаций, когда жесткий диск с этими данными либо выходил из строя, либо терялся.

Всем фанатам светодиодов дальше лучше не читать.

Читать далее
Total votes 59: ↑58 and ↓1 +57
Comments 164

Information

Rating
2,584-th
Registered
Activity