Перейти к содержимому
Технологии IT обновлён 14.07.2023

Код на салфетке

Канал для тех, кому интересно программирование на Python и не только, процесс создания сайта на Django с нуля, создание Telegram-бота, ну и просто кто желает расширять кругозор в компании таких же жаждущих знаний.

Публикации канала

Знаете ли вы, почему typeof null возвращает "object"? В JavaScript null обозначает намеренное отсутствие значения. При этом оператор typeof выдает для него тот же результат, что и для объекта: console.log(typeof null); // "object" console.log(typeof {}); // "object" Причина – в ранней реализации JavaScript для Netscape. Тип значения определяли по специальной метке в его двоичном представлении, для объектов эта метка состояла из нулей. Сам null тоже кодировался нулем, поэтому попадал под ту же проверку и получал результат "object". Это поведение сохранили ради совместимости с уже написанными скриптами – теперь результат закреплен в спецификации: для null оператор typeof должен возвращать строку "object", даже если современный движок хранит значения совсем иначе. Поэтому для проверки null используют прямое сравнение. А к проверке через typeof добавляют отдельное условие: const value = null; console.log(value === null); // true console.log(value !== null && typeof value === "object"); // false Первое выражение проверяет само значение. Во втором условие value !== null отсеивает null до проверки типа, чтобы код дальше мог работать со свойствами объекта. Код на салфетке x Кусочки кода

Открыть в Telegram

Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 19.10.2026 — Дайджест ⚙️ Среда, 21.10.2026 — Знаете ли вы, почему в путях Windows – обратный слеш? 🎬 Пятница, 23.10.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode

Открыть в Telegram

Приветствую! «Гонка» (2013) «Гонка» — спортивная драма о соперничестве двух легенд Формулы-1: обаятельного англичанина Джеймса Ханта и расчётливого австрийца Ники Лауды. Они начинают как непримиримые соперники в Формуле-3 в 1970 году и продолжают грызться на всех уровнях, доводя друг друга до предела. Их контраст — основа фильма: Хант живёт на адреналине, женщинах и риске, Лауда — на расчёте, дисциплине и холодной логике. Кульминация — сезон 1976 года, где Лауда попадает в страшную аварию, но возвращается на трассу всего через несколько недель, а Хант борется за чемпионский титул. Фильм не просто про гонки, а про два разных взгляда на жизнь и на то, что значит быть «лучшим». Подойдёт, если любите драмы о соперничестве, где победа важна, но цена её — иногда слишком высока. Приятного просмотра!

Открыть в Telegram

Знаете ли вы, почему в путях Windows – обратный слеш? В Unix каталоги в пути разделяют символом /, а в Windows привычно писать C:\Users\Public. Обратный слеш достался ей от DOS, где его выбрали ради совместимости с уже существующими командами. В DOS 1.0 все файлы на диске лежали в одном корневом каталоге, а / использовали перед параметрами команд. В DOS 2.0 добавили поддержку жестких дисков и вложенных каталогов – теперь их имена нужно было чем-то разделять. По рассказу разработчика Microsoft Ларри Остермана, структуру путей решили взять из Unix. Но / уже обозначал параметры, а точка отделяла имя файла от расширения. Поэтому просто выбрали похожий символ \. При этом в саму DOS заложили поддержку обоих слешей в путях. В Питоне с ними тоже умеет работать модуль ntpath, который обрабатывает пути по правилам Windows: import ntpath print(ntpath.normpath("C:/Users/Public")) # C:\Users\Public print(ntpath.normpath(r"C:\Users\Public")) # C:\Users\Public Оба пути приводятся к привычному виду с \. Windows API при обычной нормализации тоже преобразуют / в \, а в командной строке поведение зависит от самой программы: она может принять / за начало параметра еще до обращения к файловой системе. Код на салфетке x Кусочки кода

Открыть в Telegram

Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 12.10.2026 — Дайджест 👀 Вторник, 13.10.2026 — САЛФЕТКА ВСЁ! ⚙️ Среда, 14.10.2026 — Знаете ли вы, как опечатка стала частью HTTP? 🎬 Пятница, 16.10.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode

Открыть в Telegram

Всем привет! «Автостопом по галактике» (2005) «Автостопом по галактике» — абсурдная космическая комедия по культовому роману Дугласа Адамса. Обычный британец Артур Дент в один день узнаёт, что его дом снесут ради дороги, а затем выясняет, что и всю Землю уничтожат инопланетяне-вогоны ради постройки межзвёздного шоссе. Его спасает друг Форд Префект, который оказывается инопланетянином, работающим над «Путеводителем для путешествующих автостопом по галактике». Вместе с ними в путешествие отправляются президент галактики, двуглавый эксцентрик Зэфод Библброкс, девушка Триллиан и депрессивный робот Марвин. Фильм полон британского юмора, абсурда и философских шуток о смысле жизни, Вселенной и всего такого. Подойдёт, если хочется лёгкой, но умной фантастики, где главный вопрос — не «как выжить», а «зачем вообще всё это». Приятного просмотра!

Открыть в Telegram

Знаете ли вы, как опечатка стала частью HTTP? Браузер передает адрес страницы, с которой пришел запрос, в заголовке Referer – но в английском, в слове referrer есть еще одна r, которую при выборе имени потеряли. Ошибку обнаружили и обсуждали в рабочей группе HTTP еще в марте 1995 года. Тогда Рой Филдинг, один из авторов протокола, отшутился, что в этом виноваты французы, намекая на французское написание référer. В спецификации HTTP/1.1, опубликованной в 1997 году, рядом с Referer поставили [sic] и прямо пояснили, что слово написано неправильно. Но его сохранили: переименование потребовало бы согласовать изменения в браузерах и серверах. Поэтому исправленная в заголовке орфография даст такой результат: const headers = new Headers({Referer: "https://example.com/article"}); console.log(headers.get("Referer")); // https://example.com/article console.log(headers.get("Referrer")); // null Дополнительная буква делает Referrer отдельным полем. При этом более поздний заголовок Referrer-Policy, который управляет передачей Referer, уже пишется правильно. Код на салфетке x Кусочки кода

Открыть в Telegram

Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 05.10.2026 — Дайджест ⚙️ Среда, 07.10.2026 — Знаете ли вы, что браузер всегда ходит за favicon? 🎬 Пятница, 09.10.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode

Открыть в Telegram

Всем доброго вечера пятницы! «Форд против Феррари» (2019) «Форд против Феррари» — спортивная драма по реальным событиям о том, как американская компания Ford решила победить итальянскую Ferrari на престижной гонке 24 часа Ле-Мана. После унижения на переговорах о покупке Ferrari Генри Форд II даёт команду построить машину, которая сможет обойти «скакующую лошадку» на трассе. Для этого нанимают легендарного конструктора Кэрролла Шелби, который, в свою очередь, настаивает на гонщике Кене Майлзе — гениальном, но «трудном» в общении механике. Вместе они создают знаменитый Ford GT40, но постоянно сталкиваются с корпоративной бюрократией, которая больше заботится об имидже, чем о победе. Фильм отлично балансирует между драйвовыми гонками и человеческой историей: это про дружбу, упрямство и цену, которую приходится платить за то, чтобы доказать, что ты прав. Подойдёт, если любите реальные истории, автоспорт и истории о людях, которые идут против системы ради своей мечты. Приятного просмотра!

Открыть в Telegram

Знаете ли вы, что браузер всегда ходит за favicon? Чтобы пользователь не путался в одинаковых закладках, в 1999 году разработчики Internet Explorer 5 решили визуализировать "Избранное" и добавлять к сайтам их логотипы. Но возник затык: как браузеру узнать, где лежит картинка, если сайты тогда делались как пойдет? Microsoft не могла заставить весь интернет переписать HTML-код, поэтому просто захардкодила путь к фавиконке и показывала ее, когда та находилась. from http.server import HTTPServer, BaseHTTPRequestHandler class Handler(BaseHTTPRequestHandler): def do_GET(self): print(self.requestline, self.headers.get("Sec-Fetch-Dest")) body = b"<!doctype html><title>test</title>hello" self.send_response(200) self.send_header("Content-Length", str(len(body))) self.end_headers() self.wfile.write(body) def log_message(self, fmt, *args): pass HTTPServer(("127.0.0.1", 8766), Handler).serve_forever() В коде отдается чистая HTML-строка без тега link. Но при переходе на 127.0.0.1:8766 консоль выведет два обращения: GET / HTTP/1.1 document GET /favicon.ico HTTP/1.1 image Первый запрос возвращает сам документ, а второй браузер отправляет самостоятельно, указывая в заголовке Sec-Fetch-Dest: image, что ищет картинку. В IE5 этот запрос уходил только при добавлении страницы в закладки. Нагрузка выросла позже, когда иконки стали отображать на самих вкладках. Проверка стала срабатывать при каждом посещении сайта, генерируя те самые 404 на фавиконки, которые вы видете в консоли по умолчанию, если иконки нет на сервере. В конце 1999 года W3C стандартизировал указание иконки через тег <link>. Только к этому моменту фоновый поиск в корне уже поддерживали другие браузеры: иначе их интерфейс выглядел бы пустым на фоне IE5. Код на салфетке x Кусочки кода

Открыть в Telegram

Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 28.09.2026 — Дайджест ⚙ Среда, 30.09.2026 — Знаете ли вы, что tar до сих пор пишет архивы под магнитную ленту? 🎬 Пятница, 02.10.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode

Открыть в Telegram

Приветствую! «Грязь» (2013) «Грязь» — мрачная, циничная драма о шотландском полицейском Брюсе Робертсоне, который готов на всё ради повышения до инспектора. Ему поручают расследовать зверское убийство японского студента, но вместо работы он занят интригами, подставами коллег, алкоголем, наркотиками и манипуляциями. Брюс — социопат, расист, наркоман и алкоголик, который при этом умудряется оставаться обаятельным в своей испорченности. По мере того как расследование движется вперёд, его психическое состояние ухудшается, а грань между реальностью и бредом стирается. Фильм не пытается оправдать героя, а скорее показывает его как продукт системы, где выживает самый беспринципный. Подойдёт, если вам нравятся жёсткие character study с сильной актёрской игрой, чёрным юмором и ощущением, что ты смотришь в бездну, которая смотрит в тебя. Приятного просмотра!

Открыть в Telegram

Знаете ли вы, что tar до сих пор пишет архивы под магнитную ленту? На магнитной ленте между записями оставались промежутки, которые занимали место. Поэтому tar объединял блоки в крупные записи. След этого решения виден даже в пустом архиве: import tarfile, os with tarfile.open("empty.tar", "w") as tar: pass print(os.path.getsize("empty.tar")) # 10240 print(open("empty.tar", "rb").read() == b"\x00" * 10240) # True В архиве нет ни одного файла, но на диске он занимает десять килобайт – все они заполнены нулями. Эти размеры зашиты в стандартную библиотеку Питона константами: print(tarfile.BLOCKSIZE) # 512 print(tarfile.RECORDSIZE) # 10240 BLOCKSIZE – это блок формата, минимальная единица, которой оперирует tar. RECORDSIZE – размер ленточной записи, в нее входит двадцать блоков. Число двадцать называется blocking factor, и в утилите командной строки оно меняется флагом -b. Нули появляются и там, где данные есть: with open("a.txt", "w") as f: f.write("hi") with tarfile.open("one.tar", "w") as tar: tar.add("a.txt") print(os.path.getsize("one.tar")) # 10240 Два байта текста дают архив того же размера. Заголовок файла занимает один блок, содержимое – второй, дальше идет маркер конца архива из двух нулевых блоков, а остаток записи добивается нулями до 10240. Смысл этой механики описан в мануале GNU tar: записи на ленте разделялись промежутками, которые тратили место впустую, и чем крупнее запись, тем экономнее расходуется лента. Двадцать блоков – это компромисс, выбранный под железо семидесятых. Код на салфетке x Кусочки кода

Открыть в Telegram

Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 21.09.2026 — Дайджест ⚙️ Среда, 23.09.2026 — Знаете ли вы, почему в Git у master никогда не было slave? 🎬 Пятница, 25.09.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode

Открыть в Telegram

Всем привет! «Облачный атлас» (2012) «Облачный атлас» — масштабная фантастическая драма, где шесть историй из разных эпох переплетаются в одну большую мозаику о свободе, любви и последствиях поступков. От дневника адвоката XIX века, спасающего беглого раба, до далёкого постапокалиптического будущего — каждый сюжет показывает, как один человек может повлиять на других, даже спустя столетия. Одни и те же актёры играют разных героев в разных временных линиях, подчёркивая идею связи душ и повторяющихся паттернов в истории человечества. Фильм нелинейный: сцены постоянно переключаются между эпохами, и только к концу всё складывается в единую картину. Это кино-головоломка, которое требует внимания, но даёт ощущение, что ты смотришь не просто фильм, а огромную притчу о том, как наши решения эхом отзываются в будущем. Подойдёт, если любите сложные, многослойные истории и готов потратить почти три часа на погружение в чужие миры и судьбы. Приятного просмотра!

Открыть в Telegram

Знаете ли вы, почему в Git у master никогда не было slave? Слово master по умолчанию кажется половиной от пары master/slave. Такую терминологию используют в системах репликации, где master означает ведущий узел, а slave – ведомый. Но история этого имени в Git совсем другая: master была обычным названием начальной ветки, и никакой парной сущности slave в Git не существовало. У этого имени нет никаких особых свойств: repo=$(mktemp -d) git -C "$repo" init -q -b banana git -C "$repo" symbolic-ref --short HEAD # banana cat "$repo/.git/HEAD" # ref: refs/heads/banana Ветка в Git – всего лишь ссылка на коммит. Начальную ветку можно назвать как угодно, хоть main, – файл HEAD будет указывать на соответствующую ссылку в refs/heads. Отдельного типа или роли master в модели данных у Гита нет. Низкоуровневую основу Гита в 2005 году написал Линус Торвальдс и почти сразу Петр Баудиш, один из первых контрибьюторов в экосистему Git, создал поверх нее git-pasky – набор патчей и shell-скриптов, который превращал внутренние команды Git в привычную сегодня систему контроля версий с командами для коммитов, истории, слияний и работы с удаленными репозиториями. Именно в git-pasky впервые появились знакомые нам имена master и origin. Добавляя поддержку веток, Баудиш сделал HEAD ссылкой на текущую ветку, а первую ветку назвал master. Следом он добавил команду git clone: исходный репозиторий получал имя origin, а локальная ветка master начинала его отслеживать. Позже git-pasky переименовали в Cogito. Его код не влился обратно в Git, но больше года он служил основным интерфейсом для ранних пользователей и площадкой, на которой складывались привычные нам способы работы с Git. Вместе с ними закрепились и выбранные Баудишем имена. Позже Баудиш объяснил, что имел в виду master-recording – термин, пришедший из звукозаписи – то есть оригинал, с которого делают копии. При этом он оговорился, что уже не помнит точную причину выбора и не исключает влияние BitKeeper – системы контроля версий, которую использовали для разработки ядра Linux до появления Git и в которой встречалась терминология master/slave. Торвальдс же влияние BitKeeper считал маловероятным – по его мнению источником могло быть выражение master repository из CVS. Какой бы ни была исходная ассоциация, в самом Git master появилось как название первой ветки. Связанной с ней роли или ветки slave в Git никогда не существовало. Код на салфетке x Кусочки кода

Открыть в Telegram

Привет, друзья! 👋 Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе: 📋 Новое на канале: 🔄 Понедельник, 14.09.2026 — Дайджест 🐳 Среда, 16.09.2026 — И снова немного про DeepSeek — но на этот раз не мем, а плагин 😎 ⚙️ Среда, 16.09.2026 — Знаете ли вы, что /bin и /usr/bin разделили, потому что у авторов Unix кончилось место на диске? 📓 Четверг, 17.09.2026 — #Почему_IT | Выпуск №9 🎬 Пятница, 18.09.2026 — Пятничный кинорелакс 🔗 Будьте ближе к нам: 🌐 Читайте полные статьи на сайте 💬 Присоединитесь к обсуждению в чате Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀 #дайджест #код #python #полезное #код_на_салфетке 😼 @napkincode

Открыть в Telegram

Комментарии

0

Комментарии пишут вошедшие — так видно, кто автор.

Войти

Комментариев пока нет

Будьте первым, кто расскажет о канале другим.

Пожаловаться на канал

Расскажите, что не так: модератор проверит канал и примет решение. Подпись не нужна, но почту можно оставить — тогда ответим.

Причина Что не так (необязательно) Почта для ответа (необязательно)
Открыть в Telegram