Битмап / словарь разработчика
510 subscribers
71 photos
1 video
71 links
Всё, что должен знать настоящий сеньор — короткие, но ёмкие заметки о разработке, инструментах, практиках, бизнесе. Выходят каждый день. Подписывайся!
加入频道
hash в python позволяет получить хэш любого неизменяемого объекта, например, int, float, строки или tuple.

Скажем, hash('@bitmap18 лучше всех') == -952311228443755449.

🎯 Используется в словарях (dict), чтобы определить, где хранится значение (в каком bucket) для ключа, и множествах (set), чтобы понять, есть ли в нём данный ключ.

Также можно определить дандер-метод __hash__ для любого класса.

📖 Скажем, у нас есть класс Customer, и хочется создать список пользователей без дубликатов.

Для этого отлично подойдёт set():
class Customer:
def __init__(self, id, email):
self.id = id
self.email = email

def __hash__(self):
return self.id

customers: Iterable[Customer] = get_customers()
unique_customers = set(customers)

Без заданного Customer.__hash__ получилось бы создать set, только используя идентификаторы напрямую:
unique_customers = set(c.id for c in customers)

Что, конечно, менее элегантно.

🔗 https://www.programiz.com/python-programming/methods/built-in/hash
👍5
Мне кажется, это очень хорошо!

А вы говорите "на русском"?
🏆9😁5
IBM PC (5150) — легендарный персональный компьютер, выпущенный IBM в 1981 году.

📝 Спецификации:
• Процессор Intel 8088 с частотой 4,77 МГц
• Оперативная память: 16 или 64 Кб, с возможностью расширения до 640 Кб
• Постоянная память: 1 или 2 дисковода для 5,25" дискет

Несмотря на существование других ПК (например, Altair 8800 или Apple I), именно IBM PC завоевал рынок и стал тем устройством, которое массово покупали для бизнеса и дома.

🎖️ Для сравнения, IBM продавала по 200 тысяч компьютеров в месяц уже во второй год его существования, в то время как Apple I купили всего около 200 раз.

Завоевать рынок удалось, вероятно, по нескольким причинам:

Открытая архитектура, благодаря которой появилось огромное количество комплектующих и клонов
• Простота и доступность MS-DOS, которую IBM продавала под названием PC-DOS, а Microsoft в то же время могла продавать конкурентам IBM
Сильный маркетинг и сам бренд IBM

❤️ Посмотрите интересную документалку про IBM PC:

🔗 https://www.youtube.com/watch?v=0PceJO3CAGI
👍52
🌟 Вот что было на прошлой неделе:

- Де­сериализация
- Суррогатный ключ
- Пивот
- Stack overflow
- sort
- hash() в Python
- IBM PC

🔥 А вам что понравилось?
🔥4
А тем временем, канал уходит на каникулы!
До связи 👋
👍11🎉91
Media is too big
VIEW IN TELEGRAM
Попробовал в качестве редактора кода Zed, рекомендую!
Летит с полпинка с удобной AI-интеграцией, есть REPL-режим для многих языков, всё быстро-краcиво.

PS Обычно пользовался VSCode, но что-то он начал утомлять своей монструозностью.
👍3🤔1
Помогаю классному UK стартапу найти фулстек-разработчика в команду. Ребята делают AI-помощника в сфере employment law.

- Удалённая фултайм-позиция на долгий срок.
- Современный стек: Next.js, Strapi и MySQL, DigitalOcean, интеграции в несколько сервисов вроде Pipedrive CRM.
- В команде ещё один фулстек, несколько разработчиков на контракте.
- Работать можно откуда угодно, получать деньги в фунтах банковским переводом. В РФ платить не смогут.
- Общение в команде на английском
- До £80k в год для подходящего кандидата

Дальше слово Дмитрию, Head of Operations:

Мы делаем революционный продукт, который потенциально изменит employment law в ЮК и Европе через пару лет. У нас хорошая команда с правильной культурой. Мы слушаем всех, не ругаем за ошибки, если они признаются и служат почвой для выводов, не держим в команде токсичных людей, приветствуем инициативы и хотим, чтобы каждый человек делал вклад в конечный продукт.

У нас год преимущества над всеми ИИ-legal стартапами для физических лиц, не SaaS для корпораций. За спиной юридическая компания с 10-летним опытом, разработка ИИ решений с 2019 (мы пробовали разрабатывать модели сами). Мы четко понимаем свой product-market fit.


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

Пересылайте сообщение знакомым, которым позиция может подойти.

Резюме шлите мне в личку: @oleggromov 🙏
🔥1
Этот простой способ поможет вам...

Думаю каждый раз, когда пишу код:
- А тут взять существующий тип или создать новый?
- А вдруг в базе NULL, потому что я схему без гарантий сделал, а мне нужно значение?
- Вернуть ошибку или как-то обработать?

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

Теперь в начале работы я пишу себе небольшой TODO. Прям буквально по пунктами, что нужно сделать. Особенность каждого из этих пунктов в том, что я отлично понимаю, как его сделать. Достать ID из payload — да пожалуйста. Дифнуть 2 слайса — util.SliceDiffRight наготове.

Кайф в том, что такой подход позволяет работать по "прогрессивному джипегу". В задаче обычно 80-90% очевидных шагов, а над оставшимся нужно поразмышлять. Но если сразу схватиться кодить, то есть шанс перепутать одно с другим и потратить кучу времени на какую-то ерунду.

И вот, всего каких-то полтора десятилетия — и я допёр до работающего процесса.

👍 всегда так делаю
❤️ кайф, полезно
🌚 код пусть агенты пишут
4👍1
Кстати. Заметки про код в формате как было пока выходить не будут, как вы уже догадались. Поэтому подписывайтесь на основной канал t.me/gromov_com
Чего не могу создать, того не понимаю — так Ричард Фейнман говорил.

John Ousterhout, автор курса CS 190: Software Design Studio в Стенфорде и прекрасной книги A Philosophy of Software Design, учит студентов на своём курсе так же: даёт задание написать реализацию протокола Raft или текстового редактора, проводит код-ревью и отправляет дорабатывать.

Для меня с детства наибольшим удовольствием было разобраться, как что-то в компьютере работает. Наверное именно поэтому я вообще в программирование и полез. И уже в 15 лет умничал на открытых лекциях на мехмате о ядре линукса. Неправильно, разумеется! 😂

Пару лет назад, когда у меня был перерыв в работе, я решил вспомнить C и написать простейшую хешмапу, динамические массивы и парсер JSON (ссылка). До этого баловался и "свой реакт" делал, HTML-парсеры всякие.

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

Решил поделиться размышлениями, т.к. попалась хорошая статья с десятком идей для реализации: ядро ОС, виртуальная машина, компилятор, async-рантайм, эмулятор NES и проч. Правда, написать эмулятор Нинтендо за 3 недели (автор даёт свою оценку каждому проекту) кажется нереальным.

Может только кажется? Как только появится время, обязательно попробую ❤️
🔥3
AI-революция в разработке софта

Все только и твердят о ней. Половина новостей на HackerNews про AI/LLM, деньги поднимают только AI-cтартапы, причём какими-то неприличными раундами. Агенты и копайлоты повсюду. Я согласен с оценкой "AI изменит разработку софта"; вероятно, даже уже изменил. И сам очень стараюсь победить формировавшиеся десятилетиями привычки и использовать LLM для всё большего количества тупых или неинтересных мне задач. Это всё-таки процентов 80-90 программирования.

Но мои наблюдения как менеджера и консультанта, помогающего с наймом, всё-таки отличаются. Пока на примере чуть более десятка человек, но почему-то мне сложно представить, что тренд развернётся.

🫣 Пример с работы: разработчик несколько дней подряд говорит, что работает над задачей, в последний день отсылает PR, где десяток комитов на полторы тысячи строк сделаны за 2 часа. Глаз цепляется за сообщения об ошибках с эмоджи (этого мы не делаем) и на русском (это провал, проект полностью англоязычный). Говорит, что "курсор написал", а русский язык "перевести забыл".

Да, хорошо, курсор написал — но он не проверил, а на ревью отправил. Мне, как техлиду, такой код зачем? Я и сам так написать могу.

🫠 Пример с собеседований: парень достаточно бодро начинает решать задачку, исследует доки на API, в это время копайлот в режиме агента создаёт ему шаблон проекта, добавляет всякие зависимости. Я впечатлён: выглядит как очень толковый, разумный подход.

Шаблон создан, какие-то кусочки кода написаны, разработчик тем временем путается в синтаксисе destructuring в JS (найм на JS/TS позицию) и, что ещё смешнее и печальнее, долго возится с отладкой ошибки от его собственной (ну, копайлотом написанной) ручки. Потому что там ответ от внешнего API обёрнут в ответ от cобственного бэкенда, и ошибка где-то по пути потерялась. Интуиции посмотреть именно туда, разумеется, нет, потому что код-то писал не он!

Закончить задачу он не успел, интервью не прошёл. Хотя люди, которые пишут код сами, успевают.

Это ли не иронично, что AI-помощники не помогли, а только помешали в этих ситуациях? Я вижу, что разработчики начинают больше лениться, теряют остроту ума, навыки отладки и декомпозиции задач. Не набивают свои нужные шишки и не учатся новому.

Если допустить — а это гигантское допущение!, — что код писать будут только машины, нам всё-таки придётся его читать, ведь ответственность не может быть на машине. А если самому не писать, то скоро и понимать разучишься. Причём происходит это, видимо, с той же пугающей скоростью, с какой Т9 убил орфографию, а телефоны — пунктуацию в сообщениях.

Что думаете об AI-революции в нашей профессии?
👍5