Ноутбук для программирования 2020?

Я бы брал максимально возможный CPU (т.к. он обычно не обновляется) и смотрел на возможность расширения памяти и диска. Т.е. 8Gb на борту и слоты под 32Gb лучше чем 16Gb без возможности расширения. В этом случае вы оставляете себе возможность при необходимости в дальнейшем докупить и поставить больше памяти без необходимости менять весь ноут, что явно обойдётся дешевле.
То же самое и с диском — если его можно менять и / или есть слоты под дополнительные диски — то вы сможете поменять конфигурацию и / или расширить диск когда будет нужно, не упираясь в необходимость взять всё и сразу.
Стоит сразу учесть размер монитора. Конечно все люди разные, но программировать на 13″ без внешнего экрана — так себе удовольствие как по мне, поэтому 15″ явно лучше. HiDPI экраны (4K и Retina) явно дороже чем FullHD, а их необходимость именно для программирования на Python — сомнительна, так что вполне можно сэкономить и взять просто FullHD. Меньше FullHD точно не стоит, информации на экран выводить нужно немало.
В целом в ваш бюджет вполне влезает, к примеру, Lenovo T590 (а то и новый T15 Gen 1), особенно если брать с 8Gb на борту. К нему отдельно можно купить планку памяти на 32Gb и получить 40Gb. SSD тоже меняется не особо дорого если потребуется. В итоге получите машинку с современным процессором, кучей памяти (а 16Gb может легко начать не хватать) и заточенную именно под работу. Как минимум клавиатура у Lenovo точно хорошая 🙂
Ноутбук для программиста. Какой он?
Привет, пикабу. Хочу поделиться своим ответом на этот вопрос. Ключевые характеристики моего ноутбука такие: центральный процессор — Intel Core i3 — 8130U, оперативная память — 4Гб, графика интегрированная — Intel UHD Graphics 620, SSD — 128Гб, диагональ экрана — 14 дюймов. Кому нужно больше информации, вот индекс модели — 81EU00B6RU.
Я изучаю Python, хочу в будущем стать Django разработчиком. И на этапе активного обучения этого железа хватает за глаза. Перед покупкой, я больше волновался из-за небольшой диагонали экрана, чем о количестве оперативной памяти и мощности процессора. Моя прошлая машина была ещё слабее, при таком же объёме оперативки там был процессор intel core i5 — 2410m и на ней я провел много часов за обучением не испытывая особых проблем. А вот с 15.6 дюймов переходить на 14 было страшновато. Но за неимением больших средств пришлось рискнуть. Как оказалось, зря волновался. На 14 дюймовом экране мне вполне удобно работать.
А теперь немного картинок, чтобы не быть голословным. Запускаю машину. Ubuntu 18.04 ест чуть меньше 1 гигабайта памяти.

Запускаю VS Code, стартую локальный сервер и открываю текущий свой проект в Google Chrome. Машина потребляет 2.2 гигабайта памяти.

Открываю свои привычные инструменты в браузере: помодоро таймер, web клиент телеграм, три вкладки stackoverflow, три вкладки документации Python, три вкладки документации Django и вкладка с YouTube. Также запустил нативный клиент Telegram. Машина ест 3 гигабайта оперативки и немного залезла в SWAP.

Для разработки на Django мне больше ничего не требуется, да и большинству начинающих программистов тоже. В интернете есть куча советов с рекомендациями иметь машину с не меньше, чем 16Гб оперативной памяти и процессором линейки не ниже core i5 без привязки к технологиям, с которыми предполагается работать. Раз хочешь программировать — вот тебе минимальный порог, что в корне неверно. Моя машина, в очень редких случаях, когда я работаю с двумя одновременно запущенными браузерами начинает лезть в SWAP, и я замечаю микро фризы. Но повторюсь, бывает это крайне редко с моим сценарием использования ноутбука. Если у вас есть мысль попробовать свои силы в программировании и ваш стек технологий будет похож на мой, то имеющийся ПК в вашем распоряжении, скорее всего, уже готов к работе. Мой прошлый ноутбук, о котором я говорил ранее, был куплен в далёком 2011 году и вполне подходил под мои запросы.
P.S. На Windows системе через WSL моя тачка работает почти на пределе, но всё ещё сносно. В нативной среде работать, всё же, приятнее.

476 постов 10.9K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
Открой 5 сред разработки, нагугли 50+ вкладок, подними пару ssh тоннелей, открой зум, рокет чат, телеграм, запусти большой проект ноды в дев режиме, включи все линтеры, не забудь запустить второй браузер, чтобы наблюдать как в нем поехала верстка.
Добро пожаловать в веб разработку.
К сожалению, под PyCharm (и другими ему подобными IDE) такой сетап умрёт.
с такими запросами и характеристиками можно и на Raspberry Pi 4B учиться/работать. То же самое. 🙂
Кстати, на пи все довольно живенько работает, а на той что 64бит и 8Гб так вообще.
Но я все равно работаю на маке i9/16Gb ))
Оперативки много не бывает. У нас все Python и Go разработчики минимум с 12Гб сидят. И видюха чтобы пару мониторов 4к тянула и встроенный моник на ноуте.
Этот ноубук подходит только для обучения Джанго, для работы его не хватит. Минимально серьёзный проект — это несколько (как минимум) сервисов в докеровских контейнерах и необходимость их локально поднять. Даже 8Гб оперативки — это меньше минималки. ТС, не вводи людей в заблуждение, это не ноутбук программиста, это ноутбук его личинки))

Простыми словами о фреймворках
Всем привет, работаю java разработчиком последние 9 лет, хотел бы пояснить на максимально простом примере зачем нужны фреймворки и в чем их отличие от библиотек.
И те и другие созданы для исключения дублирования часто используемой функциональности: не нужно повторно писать и тестировать код, разработчики знакомы с распространенными решениями, что облегчает вход в проект.
Библиотеки имеют определенный интерфейс, который позволяет вызывать их код из вашего проекта. За интерфейс и его реализацию отвечают авторы библиотеки. Фреймворки же напротив, являются точкой входа и вызывают код вашего проекта. А это значит что теперь уже вы должны реализовать определенный интерфейс, который предлагает автор фреймворка. Это похоже на подключение плагинов в других программах.
Часть кода переезжает в настройки или в иной форме становится декларативной. Приведу пример конфигурации одного из самых популярных java фреймворков Spring. Проект будет загружать из БД список пользователей и отдавать их «как есть» через REST апи:
application.yml — конфигурируем порт для апи и настройку подключения к бд:
server.port: 8080
spring.datasource.url: jdbc:postgresql://localhost:5432/mydb
В формате фреймворка объявляем репозиторий — компонент для получения записей о пользователях из таблицы БД:
interface UserRepository extends CrudRepository<User, Long> <>
В формате фреймворка объявляем эндпоинт — точку для подключения других сервисов к REST апи нашего проекта:
Теперь другие сервисы могут через апи нашего сервиса получить список пользователей из БД:
С минимальными настройками можно подключить и другие необходимые компоненты — для работы с разными БД, очередями, логгированием, можно настроить транзакции, ретраи, авторизацию и всё остальное.
Если вы только начинаете карьеру в it, есть смысл попробовать воспроизвести пару примеров из интернета по вашему фреймворку, а также пройтись по теоретическим вопросам (вроде «жизненный цикл спринг бинов»), но было бы разумней потратить время на общие алгоритмические и технические темы. Всем удачи!

«А если изменить скорость открывания, то можно сделать самолетный движок»


Первый опыт работы в 16 лет в IT
Я хотел изначально написать этот пост на хабре, но это скорее просто личное желание поделиться опытом, радостью и слить накопленное, чем информативная статья с моими анализами и выводами.
Я занимаюсь программированием с детства, а веб разработкой всего пару лет, но тем не менее собрал достаточно знаний, чтобы попробовать найти работку в IT. Оно знаете, было как-то лень и интересно одновременно, я люблю приключения и к тому же я собирался работать удалённо. Мой системник уже проситься на тот свет, иногда просто может не включиться, помогает передёрнуть ОЗУ и почистить от пыли и он снова работает (Кому интересно, p7p55le + i5 750, 8 gb DDR3 и две Radeon HD 5830). Апгрейдить там бессмысленно, нужно с нуля собирать. Не то что бы меня это сильно мотивировало, ну останусь без пк, жизнь же продолжается; но он не ломается к удивлению, заставляя меня угрожать кулаком в монитор и по клавиатуре, когда курсор останавливается, а IDE (От реактивных мозгов) вылетает.
Путь до оффера
Приблизительно начало февраля 2022. Тихонько себе листал вакансии на hh и habr карьере, откликался, получал отказы, решал тестовые (увы, тестовой зарплаты не было), но я остановлюсь на собесах. Хотя и там особо всё просто, коммерческого опыта нет, ты маленький, и вообще что ты тут забыл. Потому я продолжал откликаться уже по приколу, на middle даже, ну прокатит и круто.
Ивент от яндекса.
Осень 2022. Яндекс приглашает поучаствовать в соревновании YaCup 2022. До денежного приза вряд ли дойду, а вот пройти отбор на стажировку по упрощённой схеме, если попал в топ 50 уже не так уж и не возможно. Рвя жопу и нервы, я занял 36 место (в направлении фронтенд) и через неделю меня пригласили пройти удалённо отбор. Подробно не буду. Прошёл первый этап, на том конце были весёлые ребята и прикольные задачи (относительно простые, по этому не нервничал). На втором этапе меня встретил мужик который вероятно давно не ухаживал за своей растительностью на лице. За ним была доска, где я должен был бы решать задачи, но у меня была фора, однако я всё равно завалил. В яндекс я не попал (
Удача?
Февраль 2023. Вечерочком сижу и листаю вакансии на хабре и откликаюсь на «Typescript Lead». Странное название, просто Typescript и просто Lead. В описании написано «в поисках джуна», ну а кто я, чтобы не тригернуться на слово «джун». Через часок, уже полностью сонный, смотрю пишет мужик с этой вакансии, мол, вообще смотришь куда откликаешься. Я подумал, ну бывает, хотя это не hh и на кассира случайно тут не откликнешься. Проверяю отклики и всё ок. Он зовёт поболтать.
Первый разговор был без вебки, так что я не знал кто там. По голосу лет на 20. Попросил выполнить тестовое к завтрашнему дню и втирал какую-то дичь про тёплую атмосферу в команде и что-то ещё, я не помню, хотел спать. Тестовое было простенькое, но я всё равно потратил на него пол дня.
На «собесе» меня встретил бородатый мужик далеко не 20ти лет, а как оказалось почти сорока. Вебку тоже пришлось включить, переборов себя. Это был просто разговор по интересам, был только один тех. вопрос (что такое DI?) на который я нашёл много что ответить (мог бы больше, но моя речь не поспевает за моими мыслями, я вообще довольно не общительный). Потом я ничего не помню, помню только конец. Через полтора часа разговора с меня уже стекли литры пота, пытаюсь сдерживать судороги в ногах и шею, которая тоже вот-вот пойдёт в разнос. Меня он оценил в 50к рублей и объявил испытательный срок — 3 месяца с 75% ставкой. Завершил разговор, требуя готовиться к первому рабочему дню. От меня он потребовал мой плейлист spotify, любимые фильмы, книги и moodboard, дабы «знать мой психотип», чтобы это не значило.
Надо сказать я устраивался на Frontend, он меня направил на FullStack и спойлер работал как Backend.
Первый рабочий день
Было так круто, что я аж в 6 утра подскочил. Меня добавили в телеграм группу по разработке. И к обеду мне прилетела задача (issue) в гитхаб. Единственное, что мне сказал руководитель — «Иди раскуривай».
Кстати про команду: руководитель(он же тот самый мужик), дизайнер(парень где-то лет 20ти) и два фронта, с которыми особо не контактировал.
Так вот возвращаясь к задаче. Я нихера не понял. Задача была наполнена непонятными мне терминами. Я подумал это нормально, капец какого опыта я наберусь (спойлер, это правда).
Чтож. Делать нечего, я пишу, что-то вроде «памагите, я ничего не понимаю». Меня направили почитать про [куча терминов]. «Раскуриванием» задачи я занимался следующую неделю.
Из будущего: задача была в том, чтобы доить базы сети аптек по всей России, готовить данные и кормить ими с ложечки аналитические сервисы. Ведь просто, правда? Как будто я с базами данных не работал или бэкэндом. Но вот данных там на сотни гигабайт и это вполне тянет на биг дату. Обрабатывать их нужно грамотно, чтобы не было утечки памяти. А как это делать, я не знал.
Медленно, но уверенно
Я погружался в новые технологии, местный стек и так любимое в этом месте DDD. И вот первый потребитель данных доволен. Всё работает как надо, спустя сотни исправлений. И прошло уже чуть больше двух недель. Всё время я работал над проектом один, и настраивал его с полного нуля.
А вот и первая ЗП за 2 недели. Что кстати удивило, с самого начало думал, что кинут.
Отношение начинает меняться
На одном из one-to-one
— Ну как там?
— Первый потребитель готов, ещё два осталось
— Замечательно. За этот день добьёш?
— Нууу. Эээ.. Тут я думаю где-то к концу следующей недели доделаю.
— Б*ть, какой следующей недели. У нас уже сроки на этой недели заканчиваются. Чё там делать, то. Ты должен был по моим предположениям ещё на прошлой неделе всё сдать и перейти к следующему проекту.
Дальше на меня льётся куча критики и мата, а с моими то социальными навыками, я просто сижу как камень, слушаю, говорю «ага» и со всем соглашаюсь.
Что-то похожее происходило каждую неделю. «Ну чё за день осилишь», «Так, тогда через час идём в прод, да?», а там работы на неделю.
Затем мне пришло сообщение, что мой испытательный срок нужно продлить на ещё один месяц. Я поинтересовался, как это повлияет на ЗП. Оказалось всё нормально, на ЗП это продление не влияет. Держите это в голове, пригодится.
С проекта на проект
Сроки просрались, меня ведут на другой проект, а там прод лежит, и вообще что-то там наворотили и не работает, иду на следующий, через дня 2 всем говорят бросать этот проект и идти на другой.
Чтож на этот раз это бот для подготовки формы(pdf файла) для миграции в США. Он уже был готов, но там нужно было что-то «поправить». Пока я это правил, появились подробности, что оказывается там вообще сценарий вопросов не правильный. Ну ладно, сел переписывать. Ну и как обычно, я должен был сделать это вчера, а почему-то потратил на это три недели. Ну работает и ладно.
Вообще я много когда узнавал новые подробности в не подходящее время.
Последняя капля
Напоминаю, что частенько меня кроют в чате и one-to-one. Так, что мотивации и настроения, что-то делать у меня нет. Каждый день жду увольнения.
У меня есть такая особенность, что я копирую манеру общения собеседника. Так что отвечать добром на такие сообщения я не мог, а в one-to-one просто говорю «ага» и стараюсь как можно быстрее уйти, потому что такой разговор мне не приятен. Чтобы вы не думали, что я так всегда общаюсь, с дизайнером общаться вообще по кайфу, нет желания уйти, хотя и поддержать разговор также не получается.
На проекте с ботом у меня возникла проблема, с тем, что бот падает при создании pdf, но ошибки нет, точнее она пустая. Я обращаюсь к руководителю (больше не к кому)
— У меня не собирается pdf, падаёт ошибка в виде пустого объекта
. не помню точно, но разговор зашёл к тому, что зачем мне linux, если я им не умею пользоваться, и вообще — купи мак. Вот у тебя docker стартует из под рута, потому и не работает
— Слушай. Ну вот! Да! У меня всё собирается. Это у тебя Docker из под рута стартует.
— Ладно, буду разбираться.
Посидев, я понял в чём ошибка. И тут до меня доходит. Как он мог сгенерировать pdf, если ошибка совсем в другом. Я начал кое что подозревать, что уже давно подметил.
Часто на мои глупые вопросы, я получаю слишком умные(тупые) ответы, по сути это просто каша из умных терминов. Вместо того чтобы переспросить, уточнить, руководитель мне либо посылают такой ответ, либо наезжает.
Ответ на один из моих глупых вопросов
Эти вещи нужно оборачивать в модельные сущности и эксплуатировать в рамках стекового инструментария, приватизация тут ничего не решает
Поняли? Контекст тут не важен, чтобы понять, что это отборный бред. Такие ответы я получал почти всегда.
Так, вот я решил проверить мою теорию(обращаясь к руководителю)
— А можно pdf который вчера удалось сгенерировать?
— [скидывает пустой pdf (бланк для заполнения)]
— Не, это бланк, мне нужно заполненный со вчера.
— Ты сказал не собирается, ну я и собрал. Генерация это уже другая задача.
И да. Я подтвердил свою теорию. Он придрался к термину. Я сказал «собрать», вместо «сгенерировать». Я окончательно сгорел, и назвал его душнилой, а потом не сдержался и ещё жёстче его покрыл. На что он ответил что-то вроде: что ты себе позволяешь, вы(команда), должны целовать мне ноги, я вам тут плачу, я собрал команду, я, я, я.
К этому времени в команде остался только я, приходили иногда новички (с не плохим таким опытом уже), но уходили через день, два. Мне кажеться они сразу понимали, что тут что-то не так.
Саботаж
С этого момента, почти каждый день продолжалась эскалация конфликта. Я больше не задавал вопросов по задаче (поскольку от этого я только теряю время на бессмысленный токсичный разговор), и шёл на one-to-one только со словом «ага» и каменным лицом.
Одним утром, без настроения пытаясь разобрать очередную задачу, уже по другому проекту, я вылетаю из группы в телеграме. Я сначала не понял, что произошло, потом зашёл на github и увидел, что больше не состою в их организации. И я понял — я уволен. Однако в течении дня мне ничего не написали. Так, что это сделал я.
— Это типо увольнение? Тогда уж можно пожалуйста официальную причину и ЗП за 12 дней?
— Официальная причина — некомпетентность, саботаж
— Официально — ты у меня не работал, по документам, благо, не успел тебе контракт оформить. Я рекомендую тебе походить к врачу и начать общаться с людьми, у тебя большие проблемы, которые тебе предстоит решить.
— А зп за 12 дней? Если я получаю 50тр в месяц, то за 12 дней это должно быть 20тр
— Ты не получаешь 50к в месяц, я продлил твой испытательный, ты согласился
Поняли, да? Я там даже и не работал. И что ещё за «саботаж».
Где же обещанное обучение к которому вы так ответственно относитесь, ламповая атмосфера и уважение к неопытным сотрудникам, о чём мне заливали в самом начале?
Вот такие мои весёлые приключения в мире трудоустройства в IT, так ещё и в 16 лет.
P.S. Ах, да. Мне хватило ровно на новый ПК. Так, что я не сильно расстроился.

Опять все забыли про мидлов


Что не так с Шедеврумом и моя попытка это исправить
Недавно прокатилась волна о том, как Шедеврум от Яндекса замечательно рисует флаги США по запросу «наша родина», и меня, как специалиста, это сильно кольнуло. Настолько, что я решил что-то с этим сделать.
Вот пример такого художества, взял у Tagash, потому что уже закрыли костылем конкретно этот запрос, но основной проблемы это не решает:

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

(для названия решил скаламбурить: взял «AI» (Искусственный интеллект на английском), поменял буквы местами и получился ослик Иа. Не кидайте тапками за лого, это лучший осел, которого я осилил нарисовать, да и то через Dall-E 2).
Хочу сказать, что коллективно мы можем подготовить фундамент на котором у нас появится реальный шедеврум, который будет думать на русском!
Плюс в том, что мы уже понимаем, что от этого нужно и можем создать базу данных, которая будет более разнообразной и яркой, чем англоязычные аналоги. Звучит странно, но здесь у нас есть фора, потому что мы точно знаем каким должен быть сервис и можем именно под него собрать и составить информацию.
Итак, как все это работает:
Нажимаем «Предложить ассоциацию». Система даст картинку для описания, которую кто-то ранее загрузил. Опишите одним словом, потом чуть подробнее и какие эмоции вызывает. Нажали на кнопку, описание улетело, получили следующую картинку и плюс в карму.
Там же можно загрузить свою картинку, но она сначала пройдет модерацию, чтобы всякой жути не заливали.

Неплохим примером описания было бы:
— Одним словом: лисы
— Подробнее: мама лиса с двумя лисятками, которые держатся за ее хвост на фоне травы
— Эмоции: милота, любопытсво (можно любой формат эмоций, прямо так как хочется сказать)
Кстати, если у вас есть желание помочь, то мне нужна юридическая помощь, а также с модерацией, разработкой, наполнением, да и вообще предложения приветствуются. Есть пара вопросов о том, как не угодить в «места не столь отдаленные» за инициативность)
Пока все это хранится на Amazon, но как только будут решены юридические вопросы, буду переносить всё на отечественный хостинг. Цель — создать собственную базу, чтобы можно было гордиться отечественным продуктом.
А для братьев технарей — весь код лежит в открытом виде, все как положено.

Топ-25 бесплатных курсов обучения Python 2023 года
Подготовили для вас статью с бесплатными курсами по Python. В некоторых курсах есть тренажеры: можно проходить теории и там же практиковаться.
Покликайте на курсы, выбирайте. Важно, чтобы вам был удобен курс, понятен язык изложения, и ваш уровень знаний подходил для конкретного курса.
Python — это один из наиболее популярных языков программирования в мире, широко применяемый как в создании программного обеспечении, так и в Data Science B Machine Learning.
Тренажеры
Тип: тренажер состоит из блоков теории, после которых сразу идет практика с задачами внутри тренажера. Бесплатный сертификат о прохождении выдается после окончания курса.
Тип: обучающий тренажер.
Тип: обучающий тренажер.
Бесплатные курсы от школ
Курс на платформе Stepik от онлайн-школы BEEGEEK для начинающих и учащихся образовательных учреждений. Программа предлагает изучить основы владения Python, а по окончании участников ждет электронный сертификат.
Бесплатный курс от Мичиганского университета на платформе Coursera предлагает участником набор онлайн-лекций по базовым навыкам владения языком Python. Каждый поток длится 7 недель, в рамках которых профессор Чарльз Северанс преподносит знания из своей книги «Python for Everybody».
Бесплатный курс по Python от Хекслет для начинающих программистов. Материалы, среди которых — 7 уроков в формате текста или видео и тесты, раскрывают основы написания кодов на языке, а также описывают ключевые аспекты работы в его экосистеме.
В рамках этих курсов по Python от Skillbox автор Артем Манченков расскажет обо всем, что пригодится начинающему программисту, используя реальные примеры. Вместе участники пройдут путь от написания интерфейса мессенджера до создания голосового помощника — и все это в формате видео.
Как заявляет автор курса, его программа рассчитана для программистов Python с любым уровнем знаний. По мере прохождения участников ждут 90 видеоуроков и практических заданий. По окончании курса платформа Stepik выдает электронный сертификат.
Бесплатный курс от Академии IT с рейтингом 4,75. Обучение состоит из прохождения 42 уроков, во время которых автор Михаил Тарасов расскажет все об основах программирования на Python, а также поделится ценной информацией о будущей карьере программиста.

Курсы с Youtube
Курс YouTube-лекций по программированию на Python. Вся программа состоит из 123 видео длительность от 5 до 12 минут. При желании можно найти те же видео на языке оригинала.

Что можно писать на Python
Практически как Java, Python находит применение во многих областях программирования. Так, например, язык применяют в:
Создании систем автоматизации;
Математических расчетах и других продуктах.
Сколько приносит знание Python в 2023 году?
Средняя заработная плата Python-программистов, согласно данным портала ГородРабот.ру, составляет 131 478 рублей — лучший показатель на рынке труда. А вот новички, основываясь на информации HH.ru , могут получать оплату от 70 000 рублей.
Ключевой недостаток владения Python — это необходимость конкурировать с другими кандидатами за место в штате. По подсчетам того же ГородРабот.ру, количество вакансий на позицию Python-разработчика достигает до 203 мест ежемесячно, однако и предложение труда уверенно растет: так, команда Skillbox посчитала, что на одно место программиста Python в 2023 году приходятся сразу 20 кандидатов.
Почему Python?
Python — идеальное решение для каждого и предлагает:
Доступность — из-за простого синтаксиса язык понятен даже новичкам;
Кроссплатформенность — интерпретаторы Python поддерживаются большинством операционных систем;
Разнообразие применения — язык нужен везде: от веб-разработки до геймдева;
Интегративность — Python можно применять в сочетании с другими системами и встраивать его коды как компоненты.
Парсим яндекс диск при помощи Python
В данный момент я работаю контент-менеджером в «крупном» интернет — магазине. В моём случае, это больше 100 000 позиций.
Иногда приходится сталкиваться с такой проблемой: поставщик присылает фотографии со ссылками на яндекс диск. Это крайне неудобно, потому что приходится ходить по каждой ссылке и скачивать изображение к себе, а затем уже загружать на сервер и т.д.
Готового решения я не нашел и решил написать свою реализацию работы с яндекс диском. Хорошо, что я знаю python.
У меня было 2 версии программы:
когда по ссылке находится папка с картинками, python скачивает эту папку как зип файл, затем распаковывает. Все манипуляции записываются в csv файл, путь до файла с картинками
когда по ссылке идёт только одна картинка, в данном случаи все немного проще, не нужны лишние действия с распаковкой картинок
p.s. ещё были 2 побочные небольшие программки: 1-я для уменьшения размера картинки, 2-я для переименования картинок (менялся пробел на дефис)
Приступим к реализации
скачать и установить python c официального сайта https://www.python.org/downloads
открыть любимый редактор кода (я использую vscode) https://code.visualstudio.com
подключить следующие стандартные библиотеки: urllib.parse, csv, os, zipfile. Установить библиотеку requests https://pypi.org/project/requests/ (для отправки запроса на сервер)
для полного фен-шуя можно использовать виртуальное окружение, дабы не засорять систему ненужными пакетами. Подробнее о virtualenv можно ознакомится по ссылке https://docs.python.org/3/tutorial/venv.html или же использовать poetry.
Ссылки на яндекс диск имеют вид: https://disk.yandex.ru/d/xNBn7lE1_Y5knQ . Чтобы их можно было скачать, они должны быть публичными.
Обратимся к API яндекс. После ключа public_key=»вставляем_ссылку_на_файл»
В ответе мы получаем json, из которого нам нужно получить значение по ключу href. Полученное значение и будет нашей прямой ссылкой к файлу.

Пожалуй, на этом хватит теории, теперь, постараюсь внятно объяснить, как всё это можно применить в контексте python.
# создаем новый файл и подключаем нужные нам библиотеки
import requests
from urllib.parse import urlencode
import csv
import os
import zipfile
Для начало создадим функцию, которая будет возвращать нам ссылку для скачивания:
final_url = base_url + urlencode(dict(public_key=public_link))
response = requests.get(final_url)
parse_href = response.json()[‘href’]
return parse_href
Файлы могут быть в разных форматах: ссылки могут быть на одну или несколько картинок. В первом случае можно напрямую скачивать картинку по ссылке. Во втором, если по ссылке несколько картинок, то при скачивании мы получаем архив, который требует дополнительных действий (распаковку).
Далее, мы скачиваем файлы и в зависимости от его типа выполняем действия: просто записываем в результирующий файл или же переходим к его распаковке с последующей записью.
В итоге, мы получаем файл result_data.csv со ссылками на фотографии на нашем жестком диске:

В добавок, у нас на жёстком диске появляется папка со скаченными картинками в папке download_files.
Полностью посмотреть код можно в репозитории на гитхаб.
p.s. Официальная документация по API Яндекс. Диска
Братишка с пикабу подсказал готовую библиотеку на питоне. Спасибо b4ro тык.
p.s.s. Немного поразмышляв, я подумал, что неплохо было бы написать, тесты. Пройтись линтером по коду. Добавить функцию переименования файлов. Может быть что-нибудь ещё?)
Спасибо за прочтение! Комментарии, лайки, дизлайки, предложения, пожелания крайне приветствуются.

А я всего лишь пишу калькулятор на Python


Отчёт и благодарность Силе Пикабу
Здравствуйте, нежноуважаемые пикабушники!
Мне очень неловко. Я исчезла, хотя обещала появиться в январе, и, могло показаться, что, получив оперативную и душевную помощь от вас, я слилась в небытие.
Был цейтнот, школьная нагрузка была очень серьёзной. В настоящее время стало полегче. К тому же именно сейчас по проекту есть очень хорошие результаты, и я могу ими поделиться с вами.
С этим проектом наша команда участвовала в двух конкурсах и одной научно-практической конференции:
1. Проект стал победителем в заключительном этапе » Городского конкурса проектов «Юные техники и изобретатели – 2023»;
2. Занял призовое место с Дипломом 3 степени на конкурсе «Новые вершины Поиск НИТ»;
3. Занял призовое место в заключительном этапе городской открытой научно-практической конференции «Инженеры будущего».

Для первого опыта, считаю, что это замечательный результат.
Очень хочу вас всех поблагодарить потому, что именно ваше доброе участие так сильно меня вдохновило и придало уверенности!
Ведь слова поддержки очень важны, а вы предлагали поддержку не только на словах! Я всегда знала, что если в работе случится тупик, если мне не хватит знаний и накатит отчаяние, то я смогу обратиться к пикабушникам @gurux13, @girogor333, @havaec. Я по-настоящему чувствовала, что за моей спиной сила Пикабу! Спасибо вам!
Работа над проектом продолжается и сейчас, т.к. есть некоторые ответственные перспективы на будущее.
Если вам интересно, то можете посмотреть сайт проекта, там, кроме полезной информации, будет немного пруфов наших достижений и наши счастливые лица)
А вот и сам герой, благодаря которому я познакомилась с благородством и силой Пикабу. Встречайте: Тренажёр решения задач по теме графики функций!
Скачать exe-файл (для системы Windows 7/10/11) можно по ссылке https://disk.yandex.ru/d/phzR8yJKwJn9OQ .
Тренажёр был написан на Python, поэтому поиграть в графики функций получится только на компе или ноутбуке.

Топ 5 бесплатных курсов по Python для начинающих
1. Учебники Python — на сайте pythonworld опубликованы уроки для изучении основы Python функции, циклы, кортежи, словари и т.д
2. Курсы от Яндекс-Практикум — тут рассказывают о самых азах бесплатно, а дальше платно.
3. Уроки на сайте academiait — доступный курс для изучении Python. Всего 42 бесплатных курса.
4. «Поколение Python» для начинающих от stepik — знакомит с Python новичков.
5. Инди курс от stepik — этот курс подойдет для программиста с любым уровнем вне зависимости от опыта.

Challenge acepted


HapDoc — утилита для генерации документации
Приветствую.
Хочу поделиться с вами проектом и услышать ваше мнение о нем. Может быть чего-то не хватает? Может быть вы видите его как-то иначе? А может быть вы хотели бы присоединиться к разработке вместе со мной 🙂
Я разрабатываю утилиту для автоматической генерации документации под названием HapDoc. На данном этапе разработке возможно сгенерировать документацию для 3-х типов проектов:
Основными командами являются:
gen — Генерация Markdown файлов документации.
build — Генерация Markdown файлов документации с последующей сборкой в static HTML.
serve — Запускает сервер с помощью FastAPI и uvicorn, для self-host документации.
tmpl-new — Создает новый шаблон для документации
tmpl-list — Возвращает список имен сохраненных шаблонов
В будущем я хочу добавить включение и отключение различных типов файлов для генерации, например при генерации Python документации будет возможность включить также все .js файлы

Байки погромиста. Если кто-то скажет, что программирование — это скучно

Детектив kesn всегда готов помочь!
Вообще я, как правило, нормально программирую. Иногда даже такое заворачиваю, что сам тащусь весь день.
Но если б я писал, какой я красавчик, то никому не было бы интересно. Поэтому сегодня — очередная партия программистских историй от меня любимого, с косяками, багами и болью. Иногда это происходило по запарке, или когда я торопился, или после нудной работы, когда мозг уже плавился, а иногда просто я тупил, потому что я человек. В общем, такие вот типичные будни кодера. Наслаждайтесь!
❯ Функция не выполняется
Попросил меня как-то клиент отладить его скрипт. Говорит, не работает. Невероятно!

Я, когда клиент говорит, что ничего не работает
Скрипт секретный — ну как, для трейдинга на бирже, и принесёт миллионы денег, конечно же, но только когда заработает без ошибок. Поэтому клиент не пересылает мне его, а запускает screen share и делает, что я ему говорю. То ещё удовольствие, но хозяин-барин — оплата почасовая.
Всё шло хорошо, я потихоньку распутывал кривую логику, говорил как лучше сделать, а потом мы дошли до неё. До функции, которая не выполнялась. То есть буквально, чел вызывает функцию, а она ничего не возвращает и ничего не делает.
Смотрим в содержимое функции. Как и положено, это полотно кода на пару экранов, сходу так и не поймёшь, что она делает. Повсюду return что-то там, ветвления всякие итд. То глупое чувство, когда клиент тебя ждёт, а ты ничо не понимаешь и косплеишь рыбу.
Осложнялось всё тем, что отлаживать через клиента — ну такое. Он может запустить скрипт, но вот отладчик для него — страшное слово, и максимум, на что можно рассчитывать — это поставить print() в нужных местах. Разгадка оказалась проста: где-то в середине функции, там, где это было менее всего заметно, вместо return клиент написал yield. А в питоне yield — это магическое слово, которое превращает функцию в генератор, а все return . — в как бы raise StopIteration(. ), и вместо результата возвращается итератор, и выполнение кода останавливается до следующего обращения. Короче говоря, всего-навсего одним ключевым словом клиент полностью раздолбал логику своей программы. Маэстро!
❯ Как ловить эксепшн из генератора
Вообще генераторы в питоне — это и добро, и зло, и я ещё напишу про это в следующей статье (поэтому подписывайтесь, чтобы не пропустить). И хотя я программирую где-то со времён построения египетских пирамид, всё равно я умудряюсь делать ошибки.
Вот, например, кусок кода:


Тут у меня есть функция cache.apply(), которая берет quota_chunks, делает с ними какой-то вжух-вжух и возвращает новые quota_chunks. Я нарисовал диаграмму, чтобы изобразить этот процесс в более понятной форме.

Иногда случается так, что эта вжух-функция не срабатывает, и тогда, как и положено приличному питон-коду, бросается исключение.
Возможно, раньше эта вжух-функция была действительно функцией, но потом она превратилась в генератор (для большей эффективности). Генераторы всем хороши, кроме одного: они откладывают выполнение кода, и в реальности узнать, когда ваш код выполнится, бывает затруднительно. Вы можете создать генератор, отправить его на вход другому генератору, затем передать это в функцию, и уж тогда где-то внутри этой функции вызовется код.
Если проводить аналогию с реальностью, то это как, скажем, банковский чек: вы выписываете чек на сто тыщ мильонов, видите, что чек не сломался и отдаёте его другу, друг заворачивает в декоратор конверт и отдаёт подруге, подруга кладёт в коробку и отправляет по почте бабушке на деревню, бабушка распаковывает коробку, распаковывает конверт, приходит в банк с чеком и ловит эксепшн, потому что на вашем банковском счёте нет такой суммы и никогда не было.
Именно это тут и случилось. Я вызвал этот генератор и проверил, что он отработал без ошибок, но на самом деле генератор отработал совершенно в другом месте — там, где вызывается spy() — и именно там он и упал.
А знаете как я это отловил? В тестах. Поэтому пишите тесты.
❯ Строго по инструкции
Клиенты бывают разные: какие-то умеют немножко в HTML и frontend, а некоторые из наших клиентов умеют в backend. Один из таких клиентов часто сам писал backend логику и давал нам её на проверку, чтобы мы ему исправили баги, а может быть где-то сделали рефакторинг или code review.
В этот раз клиент решил сам попробовать сделать деплой небольшого проекта на сервер. У нас есть стандартный шаблон, который мы используем для всех новых проектов, и клиент взял его. Всё, что ему нужно было сделать — просто следовать шагам, которые там написаны. В идеале такие шаблоны должны сами разворачиваться при помощи скриптов, но мы заленились и просто написали список команд, которые нужно выполнить. Ну например, в каком-то месте нужно было зайти по ssh в машину и запустить какую-то команду.
И вот клиент взял нашу инструкцию и начал следовать тому, что там написано, слово в слово. Надо понимать, что разработчики обычно пытаются понять, что они делают (по крайней мере я на это надеюсь). Соответственно, те, кто читал этот скрипт, понимали, что должно быть сделано, и в случае, если у них, например, вместо pip используется poetry, а вместо apt-get у них pacman (i use arch btw), то они заменяли соответствующие команды.
Клиент же делал всё слово в слово, и он написал нам, потому что на одном из шагов у него случилась проблема. Если быть точнее, у нас в инструкции была описана ветка master, а на гитхабе по умолчанию ветка main, поэтому какая-то команда не находила нужную ветку.
«Изи фикс» — подумал я, созвонился с клиентом объяснил, что нужно делать, и хотел отключаться. когда возникла ещё одна ошибка. Оказывается, в инструкции был косяк, и при выполнении команды шелл делал подстановку, когда видел $SOMETHING — то есть не было экранирования. Мы исправили и это, и буквально через несколько секунд всплыл ещё один косяк. А потом ещё. И ещё.

Где-то через час я сказал клиенту, что пусть он всё бросит и я задеплою всё сам, а потом мы обновим ридми. Было стыдно.
❯ Ответочка
Когда-то я работал на интернет-магазин, и мы заметили, что у нас появляются фейковые заказы каждые утро и вечер. Сначала мы не смекнули, что к чему, но потом поняли фишку: идентификаторы заказа у нас были обычные IDшки из Postgres, поэтому конкурент мог сделать заказ утром (номер заказа 10), сделать заказ вечером (номер заказа 15) и просто вычесть второй номер заказа из первого и получить количество заказов, которые мы получили за день (15 — 10 = 5). Я до сих пор часто нахожу эту ошибку во многих проектах, и примерно могу оценить размер этих проектов.
Эту ошибку легко исправить: достаточно заменить последовательные ID на случайные — например, вместо номера заказа использовать timestamp или UUID.
Но сам факт мониторинга нашего магазина конкурентом меня здорово раззадорил, и я полез к нему на сайт что-нибудь тоже искать.
Мой девиз — «кто ищет тот всегда найдёт» (посмотрите мои статьи про уязвимости на хабре — 1, 2). Так и тут, я искал и обнаружил, что конкурент выкладывает розничные прайсы публично, а вот оптовые — только для зарегистрированных и проверенных партнёров. Сам файл он раздаёт nginx’ом с адреса вроде http://some-site.com/files/розничный_прайс.xls. А если так, то, скорее всего, никакой аутентификации при помощи бэкенда для самого файла нет, а значит, можно попробовать найти оптовый прайс.
Используя весь опыт, накопленный человечеством за все годы его существования, я заменил слово розничный на оптовый в названии файла. и совершенно забесплатно, без регистрации и смс получил ежедневное обновление оптовых цен конкурентов. Соответственно, я мог предлагать оптовикам цены те же или ниже и получать больше профита. Хехе.
❯ Скрапинг со скоростью света
В одном из моих проектов я использовал api ВКонтакте, чтобы анализировать кожаные мешки. Там не нужна была супер-скорость, поэтому я не полез в async, а просто написал функцию и распараллелил её по потокам при помощи ThreadPoolExecutor.
Программа начала просто летать! Вот как это делают сеньоры! Саенс, бич!

Слева направо: саенс, бич
Потом я начал подозревать, что программа работает слишком быстро даже для такого классного парня, как я. Я полез смотреть результаты, а там ничего не было, потому что в каждом из потоков программа очень быстро падала с ошибкой, а так как это потоки, то exception в потоке не «всплывал» в основную программу, и я думал, что всё норм.
Поэтому если всё работает слишком хорошо, то, возможно, всё очень плохо.
❯ Бог рефакторинга
Пришел ко мне клиент и говорит: Саня, давай позумимся и посмотрим, что-то вебхук отвалился и ничего не принимает.
Ну я такой про себя «опять клиент что-то сломал, бывает», полез туда смотреть. Глядел-глядел, глаз вообще ни за что не цеплялся. Ошибок в sentry не было. Потом нашёл вот такой код:

На этом моменте я распушил свой хвост и начал рассказывать клиенту, что нельзя вот так декорировать метод, ибо этот декоратор только для функций, да и вообще аргумент self пропущен. Короче, комбо из двух ошибок.
К несчастью, у меня стоит расширение git lens, которое пишет, кто именно написал каждую строчку кода. Я в основном использую это, когда вижу какую-то хрень: если автор кода — чувак из наших, то, скорей всего, это я тупой и что-то не понимаю в задумке автора; в других же случаях это, как правило, обычный плохой код.
И вот я смотрю, а этот код написал. я сам. Вот так я примерно выглядел:

Самое смешное, что в оригинале клиент написал рабочий код, потом пришёл я всё рефакторить и случайно сломал. Я много раз извинялся перед клиентом. Ух, до сих пор стыдно.
❯ Детектив kesn и тайна ssh
Говорят мне как-то: клиент, с которым мы работали год назад, восстал из мертвых, и теперь ему нужно перенести и обновить проект в AWS. Вон там наш девопс написал какие-то скрипты сто лет назад, возьми их и задеплой.
Я человек простой, мне сказали задеплоить — я и задеплою, хоть на AWS, хоть на тапок.
Запускаю я скрипт, он всё делает, и теперь я хочу зайти на сервер и вручную проверить, что всё работает. И тут всё заверте.
Сначала пробую ssh -i ключ root@ip. Не работает. Потом вспоминаю, что юзер в AWS обычно ec2-user, поэтому пробую ssh -i key ec2-user@ip. Не работает. Может, там авторизация не по ключу? Пробую ssh ec2-user@ip. Не работает. Сделал dig, попробовал подключиться не напрямую, а через load balancer. Согласен, тупая затея.
Пошел в дэшборд AWS смотреть настройки файрволла. Вижу два странных айпишника. Очень странно. Беру первый, проверяю геолокацию по ip. По локации понимаю, что это, кажется, статический ip девопса. Какого хрена? У нас же есть бастион, и все соединения должны проходить через него. Проверяю второй ip из файрволла. О, так это же и есть бастион. Ну отлично, теперь делов-то — добавить всю эту конфигурацию с бастионом в .ssh/config, чтобы в будущем было легко подключиться. Лезу в конфиг, а там уже есть эта конфигурация.

Итого, в поисках настроек доступа я полностью проверил всю инфраструктуру, чтобы обнаружить эти настройки на моем же компе.
❯ Ошибка платежа
На sentry прилетел отчёт об ошибке, попросили посмотреть. Стал разбираться. Мой код двухгодичной давности.
Логика была простая: есть намерение клиента платить за подписку, и есть прикрепленная карта клиента. Пока намерение активно, мы пытаемся списывать деньги с карты. Это логично: даже если на карте нет денег, то раз клиент хочет пользоваться сервисом, мы будем пытаться списать до тех пор, пока это не получится. Если клиенту не нужна подписка — он отзывает намерение.
Единственное, что я не учел — что клиент может просто всё забросить, ничего не отменяя. И вот на протяжении года наш сельдерей-разнорабочий (celery worker) запускался, пытался списать у клиента деньги, получал отлуп, жаловался в sentry, и засыпал, чтобы назватра всё повторилось, и так каждый день, без конца и края.

❯ Лёгким движением руки сэкономить кучу денег
Я заметил, что очень часто клиенты могут сэкономить неплохую такую кучу денег, сделав просто какое-то минимальное телодвижение. Вот несколько примеров:
Чувак хостил видео на aws s3 и раздавал через амазоновский CDN. Выходило $655 в месяц. Потом нашёл BunnyCDN, я перенастроил приложение (заменил где-то 4 строчки минуты за две), и внезапно с новым CDN в месяц стало уходить только $70. Ну не эпично ли за пару строчек кода?
Клиент платил сотни долларов за жирный инстанс Elasticsearch на AWS. Почему — я хз. Потом он заподозрил неладное. Мы замерили реальную нагрузку и перенесли Elastic на одну из самых дешёвых машин в digital ocean, за которую клиент теперь платит $24 в месяц. Профит!
У клиента было много файлов на s3, платил он тоже много. Потом перенесли всё на b2, там даже делать почти ничего не надо — у них интерфейс совместим с s3. Получили экономию раза в 4.
❯ От судьбы не уйдёшь
У нас есть шаблон для новых проектов на cookiecutter. Он удобен тем, что если мы что-то меняем в шаблоне, то можем легко обновить проекты клиентов при помощи cruft.
Как-то меня наняли как раз обновить проект. Проект был старый, отстал от нашего шаблона очень прилично, и когда я попытался его обновить, то обнаружил, что изменилось почти всё. Я начал аккуратно разрешать конфликты, и как раз примерно в этот момент штатные сотрудники клиента начали пилить что-то эпичное в своей ветке.
И вот дело подходит к концу, у них куча изменений, у меня столько же. Мы говорим «ну мы всё», они такие «мы тоже вот уже заканчиваем». Начальник мне пишет: «Заливай быстрее в мастер, пока они не залили своё, а то будем потом всю жизнь конфликты разбирать. одинодин». Ну я на скорости слил наши обновления в мастер-ветку и мысленно пожелал удачи их разрабам: наша работа сделана, мастер мы обновили, а то, что их разработчики отстали от мастера и у них конфликты — ну штош.

Прошло много месяцев, и угадайте, кого они наняли, чтобы разрешить все конфликты и залить их ветку в мастер?
❯ Детектив kesn и поиски пароля
Настраивал я как-то инстанс elasticsearch. Там была отдельная машина, я на ней с помощью docker разворачивал ElasticSearch. Сначала делал всё в ручном режиме, проверял, потом писал скрипт для автоматизации. Для начала просто запустил сервер без всего, потом начал разбираться с авторизацией.
В эластике есть специальный скрипт — elasticsearch-setup-passwords — он настраивает пароли. Ну я его запустил, он мне выдал списки паролей для apm_system, kibana_system, kibana, logstash_system, beats_system, remote_monitoring_user и, собсна, elastic. И хотя мне показалось, что паролей было слишком мало и вообще-то для приличной поисковой системы их должна быть хотя бы сотня, но пароль для elastic был, я его забил в систему автоматизации и пошёл дальше настраивать. Дальше было SSL — не знаю, почему это не встроено (наверно, потому что если не будет https, то и взламывать elastic будет сложнее, а куда без этого!). Ну я пошёл в гугол и говорю: пацаны, сертификаты для эластика привезли? Когда я заикнулся про letsencrypt, они мне сказали, что у нас тут не загнивающий запад и мы сами сертификаты делаем, свои собственные. Короче, прям на официальной странице лежит огроменный docker-compose.yml, в котором вжух-вжух, сертификаты настраиваются, конфиги генерируются. Я его скопировал, применил, всё заработало, и я добавил это в автоматизацию.
Через несколько дней (когда я ужё наполовину всё забыл) мне вдруг понадобилось всё снести и настроить заново (спасибо, digital ocean, за то, что не умеешь даунскейлить диски!). Я запустил скрипт автоматизации, всё развернулось, и тут я вспомнил, что вроде как пароль генерируется сам и его можно узнать, если запустить elasticsearch-setup-passwords. Ну я полез на машину, чтобы запустить эту команду — а она не работает! Сначала был не тот url инстанса, пришлось узнать, что есть опция —url. Окей, теперь не хочет подключаться, т.к. кастомные сертификаты. Как добавить сертификаты? Прописать их в elasticsearch.yml. Читаю доки и там говорится:
All of these settings can be added to the elasticsearch.yml configuration file, .
. with the exception of the secure settings
which you add to the Elasticsearch keystore. For more information about creating and updating the Elasticsearch keystore, see Secure settings
Ну я полез читать, что за Elasticsearch keystore и зачем он нужен, и даже прочитал про bootstrap password и keystore passphrase. Мне показалось, что ещё чуть-чуть, и я дойду до чтения про большой взрыв и основы зарождения вселенной, а ведь я просто хотел узнать пароль от эластика!
Тут я бросаю взгяд на docker-compose.yml, и вижу, что там везде мелькает $ELASTIC_PASSWORD, и оказывается всё это время пароль был у меня в настройках и я сам его задавал!
Сказочный. эээ. патруль!

❯ Как дропнуть продакшен-базу
Клиенты любят нанимать фрилансеров или брать сотрудников в штаты, чтобы они работали над фичами — потому что нанимать нашу компанию достаточно накладно >:)
Ну и вот как-то клиент нанял стороннего разработчика, чтобы он перенёс систему поиска с эластика на postgres full-text search. Он сделал это именно так, как делал я лет 7 назад. Следите за руками:
Огромная ветка с кучей коммитов
В коммитах смешались изменения в БД и рефакторинг логики нескольких почти не связанных приложений
Миграции не откатывались
Бэкапов перед деплоем сделано не было (хотя это одна команда)
Не было переключателя «новая система / старая система», то есть старую систему просто вынесли нафиг и заменили новой
Не было оговорено временное окно для безопасного деплоя
То есть это прям классическая, железная точка невозврата. Угадайте, что случилось.

Конечно, сломалось всё. Система начала жёстко тормозить. Клиент написал нам и сказал, что надо срочно всё оживить. Т.к. это была критическая ситуация, то мы с СЕО залетели туда и стали смотреть. В изменениях было очень много всего — это был тотальный рефакторинг, поэтому локализовать проблему, просто глядя на код, не удалось. Так как прод не работал, то у нас не было времени воспроизводить всё на локалхосте и дебажить, и мы решили просто всё откатить.
Я откатил git revision на сервере на рабочий коммит, а СЕО зашёл в админку Digital Ocean и восстановил снэпшот базы данных, назвав его production-db-backup-Mar-24. Всё запустилось. Из-за использования снэпшота мы потеряли немного новых данных, но ничего критичного.
Потом мы сказали: всё, мы всё откатили, вот текущий коммит, вот текущая база, пусть ваш погромист всё дебажит и чинит или живите дальше в проклятом мире, который сами и создали ©
Через много месяцев (да, много историй именно после этого и начинаются) клиент говорит: а чё это за production-backup-Mar-24, давайте её удалим. Как же здорово, что он спросил у нас. Потому что программист клиента на самом деле ничего не починил, а просто свалил в закат, и вся инфра осталась в этом «пофикшенном» состоянии. И база использовалась резервная. Поэтому удалять нужно было сломанную БД с названием production, а рабочей была именно production-backup-Mar-24.
❯ Детектив kesn и загадочные тормоза
Серьёзно, я уже подумываю написать книгу про похождения детектива kesn’а.
Как-то я отлаживал асинхронный код, он читал бинарные данные с девайса, парсил их и отправлял куда подальше. Конечно, меня позвали, когда этот код начал тупить и кое-как работать, поэтому на входе меня ждала портянка спагетти-кода. Нам не привыкать, и я начал рефакторить и замерять скорость при помощи @funcy.log_durations.
Я кэшировал функции, пропускал ненужные фрагменты данных, уменьшал циклы. Сначала стало быстрее, но потом чем больше я отлаживал, тем медленнее код работал. Может, мой рефакторинг упустил какую-то важную деталь, и поэтому я делаю что-то совсем не то? Я начал логгировать и отлаживать даже самые маленькие функции. В конце концов дошло до того, что я, кажется, всерьёз начал задумываться об оптимизации скорости словарей в питоне (sic!), и в то же время моя версия работала медленнее, чем оригинальный код.
Потом до меня допёрло.

Чем больше я добавлял отладочной инфы, тем больше был оверхед. То есть я делал программу быстрее, но отладочная инфа делала программу медленнее.
Ха-ха. Я выключил отладочную инфу, и всё залетало. Ну и дурак!
Если вам понравилась эта статья, то посмотрите вот эту, она тоже весёлая: Погромист. Мои самые эпичные провалы за всю карьеру.
Если вам понравился я лично, как умная и образованная гиена, то вот моя тележка: Блог погромиста
Подпишись на наш блог, чтобы не пропустить новые интересные посты!

Кодить станет легче
Собрали для вас в одном посте сервисы, которые помогут кодить более комфортно, а где-то даже исправят ваши ошибки и чему-то научат
Adrenaline – нашумевшая тулза, которая вылечит код и подробно расскажет об ошибках
Tabnine – предсказывает следующие строки кода и дописывает их за вас. Поддерживает все популярные языки
CodePal – помощник, который поможет писать код по текстовому запросу, оптимизировать, находить баги и ревьювить код
CodeGPT – решение на основе нейронки от OpenAi, Втыкается прямо в VSCode и сочиняет вам код по текстовому запросу
Autobackend – поможет с бэкендом. Сервису достаточно одного-двух предложений на английском
Codesnippets – генерит код из текстовых запросов. Есть отладка, рефакторинг и сохранение кода для остальной команды
BuildtAI – поисковик для VSCode, который ищет готовый код по общедоступным базам данных
Большая коллекция книг по программированию тут!

Начальник взял в руки лопату

Телеграм канал для тех, кому интересны другие мои приключения руководителя в IT.

Как я написал свою поисковую систему для быстрого поиска личной информации

Предыстория
Все началось с того, что мне стало трудно находить нужную информацию, файлы. Чем больше файлов и папок у меня образовывалось, тем больше времени уходило на поиски нужного. Я понял, что каждый раз искать в бесконечных списках файлов и папок, особенно с условием вложенности это не вариант для больших объемов данных.
Что касается поиска по названию файла, то количество символов, указанных в названии ограниченно и слова при поиске должны быть в строго определенной последовательности. Тем более, если система индексирует другие, не нужные для поиска файла (системные файлы, файлы проектов), то поиск выдает много «мусора».
Поиск по содержанию файла даёт не самый релевантный результат. Может выдать бесполезные результаты с содержанием содержащие ключевые слова, но не относящиеся к тому, что действительно необходимо найти.
Более того по содержанию можно искать только текстовые файлы.
Структура содержания информации
Структура папок представляется собой в виде дерева. Мне это не нравится, потому что каждая папка может содержать только определенные файлы, если не учитывать копирование и ссылки.
Так же это можно представить с примером из реальной жизни, для того, чтобы найти зелёное свежее яблоко сорт «девственный». Необходимо найти отдел с фруктами, затем отдел с яблоками, затем ищем зеленные, затем сорт, ну там ещё их на свежие, не свежие фасуют в этом воображаемом примере и наконец найти нужное apple.
Усложняется ещё все и тем, что я не помню есть ли там вообще яблоки, и если есть, то хранятся ли они в отделе фрукты там продаются.
А почему бы об этом просто не попросить прихвостня(они уже у всех есть, правда?) -«Принеси мне зелёное свежее яблоко».
Как сразу становится удобно!
В общем, всем этим я хочу сказать, что поиск нужной информации в папках хорош, если папок немного и если помнить какие папки существуют, а не перебирать все подряд.
А вот если мы не знаем существуют ли яблоки вообще, то спрашиваем прихвостня:
— «Есть, господин! Сотни, игрушечные, красные, гнилые..».
— «Мне нужно свежее яблоко».
— «Понял! Есть красное свежее яблоко «Сирота», красное свежее яблоко «курага». «.
— «А что насчёт зелёного свежего яблока».
— «Есть! Зелёное свежее яблоко «Пух-тибидух» и Зелёное свежее яблоко «Девственный»».
— «В таком случае, принеси мне, пожалуй, Зелёное свежее яблоко «Девственный»».
Вот последняя фраза как раз таки и стала названием приложения. Как ответ на команду пользователя — «Yes Sir».
Возвращаясь к яблокам. Заметили, что в первом случае нужно искать яблоки не пойми где, а во втором мы задаём уточняющие условия к запросу!?

Для нахождения нужного результата, используя древовидную структуру(папки) приходится обходить все узлы. А в случае графа(теги) можно получить результат, в лучше случае за проход по единственному узлу.
Приведу пример более реалистичный. Есть папка с музыкой и подпапки для разделения на жанры. Но что если в какой-то момент мне захочется послушать французскую музыку не зависимо от жанра. Вот тут то и вся проблемность древовидной структуры папок вылазит. Можно конечно, как советовали на форумах, создавать отдельные папки под язык произведения и кидать ссылки, но опяяяттть папкии..
А вот, что произойдет, если каждому файлу установить теги с жанром, языком, ну и конечно что это музыка, песня.
В этом случае возможно группировать, сортировать музыку гораздо гибче. Например скомбинировав 3 тега: французская, русская, рок можно получить то, чего стандартными средствами Windows не возможно, ну или я чего-то не знаю.
Попытки найти готовое решение.
Первой идеей было воспользоваться «тегированием» файлов, папок. Таким образом можно искать информацию комбинируя теги, не зависимо от порядка слов. И лучшими приложениями для этого, могу выделить XYplorer и Tagging for windows. Первая из себя представляет отдельный файловый менеджер с опцией тегирования. Второе приложение — дополнение к стандартному файловому менеджеру. Однако они позволяют искать файлы только на ПК и конечно нельзя написать как в Гугл поисковике запрос близкий к пользователю, а алгоритм уже бы сам выбрал из запроса теги и отсортировал информацию по приоритету. В последствии удалил обе, они подвисали и крашились частенько (возможно дело в моих надстройках Windows, не хочу делать антипиар этих отличных программ).
Визуальный поиск
В попытках найти оптимальный способ поиска доходило до странного. Я больше визуал и поэтому загружал изображения более менее подходящее по теме информации в социальную сеть ВКонтакте, а саму информацию сохранял в комментариях под изображениями. Это дало некоторый прирост в скорости поиска и пользоваться можно с любого устройства. Но как вы, наверное, понимаете долго это продолжаться не могло. В конечном итоге я стал задумываться а к какой информации относится это изображение : «Рельсы означает адреса знакомых или желаемые места для путешествия..». Ну а уж то, что под одним изображением образуется портянка из информации без возможности вложенности — это фиаско, бро.
Я подумал, что было бы отлично разработать приложение, которое бы подходило по таким критериям:
1. Можно использовать с любого устройства без возможности подключения к интернету.
2. Поиск личной информации настолько быстро, насколько это возможно.
3. Поиск должен быть простым как Google Search.
4. Возможность сохранить всю текстовую информацию в текстовый файл.
Выбор технологий
1. По первому пункту из желаний было решено разработать веб приложение, так как с любого устройства, на котором есть браузер, можно получить к нему доступ. Данные хранятся в localstorage браузера, но при открытии сайта сразу выгружаются в переменную для обеспечения лучшей скорости.
Для синхронизации данных с другим устройством, браузером я взял базу данных mysql от 000webhost бесплатно, но потом перестал использовать из-за ограничений на обьем.
Сейчас единственный способ для обновления пользовательских данных — импорт и экспорт файла. Однако я делаю это очень редко, тк в основном пользуюсь только со смартфона.
Что касается оффлайн режима — я использовал serviceworking. Необходимо только один раз зайти на сайт, чтобы все ресурсы сайта подгрузились и дальше использовать полностью оффлайн из браузера.
2. Быстрый поиск.
Раз поиск должен осуществляться подобно Гугл поисковику, то нужно чтобы каждое слово из запроса проверялось на существующий из уже созданного блока информации. Таким блоком у меня выступает объект с ключами: уникальное название блока, действие(показать информацию, открыть ссылку..), содержимое, теги.
Итак по ключу «теги» у нас будет храниться массив из символов(слов) для конкретного блока информации.
Сразу возьмём пример блока:
Название: как создать сайт,
Действие: показать информацию,
Содержимое: берём html, добавляем js и украшаем css,
Теги: создание сайта, веб программирование, верстка.
Массив из тегов формируется из текстов полученных с полей ввода для тегов и названия. Каждое слово это тег, разделять можно запятой и пробелом. Была идея конечно сделать как на Ютубе, теги как словосочетания, но я я решил остановиться на более широкой выдаче по ключевым словам.
Из примера блока выше массив тегов будет таким: [«как», «создать», «сайт», «создание», «сайта», «веб» «программирование», «верстка»]
Теперь самое важное — определиться как будет происходить поиск. Первое что пришло в голову это брать каждое слово из поискового запроса и сравнивать с каждым словом из тега каждого блока. В голову как пришло, так и ушло, это отвратительная идея. Следующей идеей было создание объекта, в котором каждый тег это отдельный ключ а значение это массив из индексов блоков.
3. Итак, при вводе запроса проверяется существует ли слово в хранилище тегов, если да, то блок добавляется в массив на отображение.
Теперь нужно отсортировать по приоритету. Чем выше результат в выдаче, тем более он подходит запросу. Это я реализовал с помощью количества ключевых слов в запросе, чем больше слов из запроса содержится в массиве тегов блока, тем более блок прионитетнее.
4. И насчёт сохранение в файл совсем кратко. Можно сохранять и импортировать файл в виде json.
Так же мой опыт с использованием ВКонтакте как поисковик по изображениям дал мне идею для возможности добавлять изображение к каждому блоку при желании.
В результате я сделал то, чем пользуюсь уже больше года. Как веб, так и ПК версия оказались очень полезными. Использую для работы и личной жизни. Скорость поиска, которую я в итоге получил меня многократно выручала, когда нужно было найти что-то очень быстро.
Ответвление в другие проекты
Веб приложение мне настолько понравилось, что я захотел написать программу для исполнения программ по команде от запроса пользователя на ПК. Вдохновлённый голосовыми помощниками, я создал программу, которая ищет и исполняет файлы, ссылки на которые сохранены в программе, у которой поиск соответственно так же подобен веб поисковику. Особенность в том, что можно перетащить файл/файлы напрямую в программу и алгоритм автоматически установит теги исходя из названия файла и папок, в которых он содержится. Но это тема другого поста, если этот окажется интересным..
Послесловие
Буду рад любым комментариям. Узнать ваше мнение по поводу идеи. Полная ли это ерунда. Или, в чем я почти не сомневаюсь, есть уже приложения с подобной реализацией.
Топ бюджетных ноутбуков для junior-программистов в 2022
Подобрали 12 лучших ноутбуков для программирования, которые подойдут начинающим разработчикам — как по цене, так и по аппаратному обеспечению.
Как мы выбирали ноутбуки
В подборку бюджетных ноутбуков для начинающих программистов вошли компьютеры, цена на которые не превышает $1 000. У всех моделей минимум 8 ГБ оперативной памяти, процессоры не ниже Ryzen 5 и Intel Core i5, тип накопителя — SSD.
Мы разделили все компьютеры на две категории: классические и ультрабуки. В каждой из категорий модели отсортированы в зависимости от места процессора, который встроен в ноутбук, в тематическом рейтинге сайта Technical City. Места в рейтинге актуальны на момент публикации.
Классические ноутбуки для программирования
HP 14s-fq1002ur

Ноутбук рассчитан на покупателей с относительно небольшим бюджетом или тех, кто гонится за идеальным соотношением цены и производительности компьютера, пишет сайт notebookcheck в обзоре линейки HP 14s. Есть вопросы к корпусу и дисплею. Альтернатива — Lenovo IdeaPad 5 14ALC05.
Модель процессора: AMD Ryzen 7 5700U, 1 800 МГц, 8 ядер.
Место в рейтинге производительности: 354.
Видеокарта: встроенная.
Диагональ: 14.
Разрешение экрана: 1920×1080.
Технология экрана: IPS.
Оперативная память: 16 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1,46 кг.
Дата выхода: 2021.
Цена: от $810.

Lenovo IdeaPad 5 Pro Gen 6
Компьютеры IdeaPad 5 Pro с диагональю в 14 дюймов — новее, дороже и с более высокой производительностью, чем линейка IdeaPad 5, пишет notebookcheck. По версии tomsguide, Lenovo IdeaPad 5 Pro процессором от AMD конкурирует с MacBook Pro. По шумоизоляции, рассказывает один из пользователей Reddit, даже превосходит Mac.
Модель процессора: AMD Ryzen 5 5600U, 2300 МГц, 6 ядер.
Место в рейтинге производительности: 375.
Видеокарта: встроенная.
Диагональ: 14.
Разрешение экрана: 2240×1400.
Технология экрана: IPS.
Оперативная память: 16 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1,38 кг.
Время работы: примерно 10 часов.
Дата выхода: 2021.
Цена: от $791.
HP ProBook 445 G8
HP Probook 445 G8 — ноутбук из серии ProBook 400, преемник Probook 445 G7. Модель может идти как с процессором Ryzen 5 5600U, так и с Ryzen 7 5800u. Мы остановились на втором, он на 85 позиций выше в рейтинге процессоров от Techical City.
Модель процессора: AMD Ryzen 7 5800u, 1 900 МГц, 8 ядер.
Место в рейтинге производительности: 290.
Видеокарта: встроенная.
Диагональ: 14.
Разрешение экрана: 1920×1080.
Технология экрана: IPS.
Оперативная память: 16 ГБ.
Накопитель: SSD, 256 ГБ.
Вес: 1,37 кг.
Дата выхода: 2021.
Цена: от $950.

HP Pavilion 15-eh1017

У линейки HP Pavilion 15 хорошая сборка, неплохие показатели производительности и отличная, удобная клавиатура, пишет Reviewed. Из минусов: дисплей ниже среднего и посредственныйм аккумулятором. «Хороший ноутбук по отличной цене», — резюмирует издание.
Модель процессора: AMD Ryzen 5 5500U, 2100 МГц, 6 ядер.
Место в рейтинге производительности: 470.
Видеокарта: встроенная.
Диагональ: 15.6.
Разрешение экрана: 1920×1080.
Технология экрана: IPS.
Оперативная память: 16 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1,75 кг.
Дата выхода: 2021.
Цена: от $640.
Acer Nitro 5 AN515

На заметку пользователям, которым важно соотношение качества и цены, пишет notebookcheck. Nitro 5 AN515 — универсальный бюджетный ноутбук с длительным временем автономной работы и сравнительно компактным корпусом. Минус — тусклый экран.
Модель процессора: Intel Core i5 10300H, 2 500 МГц, 4 ядра.
Место в рейтинге производительности: 677.
Видеокарта: дискретная, NVIDIA GeForce GTX 1650 Ti, 4 ГБ.
Место в рейтинге видеокарт: 199.
Диагональ: 15.6.
Разрешение экрана: 1920×1080.
Технология экрана: IPS.
Оперативная память: 8 ГБ.
Накопитель: SSD, 256 ГБ.
Вес: 2,3 кг.
Дата выхода: 2020.
Цена: от $835.
Dell Vostro 15 3515
На Dell Vostro 15 стоит довольно устаревшее железо, но, тем не менее, он идеально подходит для повседневных задач.
Модель процессора: AMD Ryzen 7 3700U, 2 300 МГц, 4 ядра.
Место в рейтинге производительности: 809.
Видеокарта: встроенная.
Диагональ: 15.6.
Разрешение экрана: 1920×1080.
Технология экрана: IPS.
Оперативная память: 16 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1,7 кг.
Дата выхода: 2021.
Цена: от $865.
Ультрабуки для программирования
Ультрабуки обладают схожими с обычными ноутбуками характеристиками, но тоньше, легче и меньше их. Это вариант для тех, кто часто путешествует, ездит в командировки или работает удаленно — в кафе, коворкингах, на пляжах или в парках.
ASUS VivoBook 15 M515

Бюджетный ноутбук для программирования с удобной раскладкой клавиатуры, но с плохим аккумулятором и слабеньким экраном, пишет tomsguide про линейку VivoBook 15. Модель M515 выделяет неплохой процессор.
Модель процессора: AMD Ryzen 7 5700U, 1 800 МГц, 8 ядер.
Место в рейтинге производительности: 354.
Видеокарта: встроенная.
Диагональ: 15.6.
Разрешение экрана: 1920×1080.
Технология экрана: IPS.
Оперативная память: 8 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1,8 кг.
Дата выхода: 2021.
Цена: от $630.

HP Pavilion Aero 13

The Verge называет Aero 13 «на удивление великолепным» ноутбуком.
«Этикетка Pavilion вводит в заблуждение. Он намного приятнее, чем типичный бюджетный ноутбук. HP выпустила первый премиальный Pavilion», — пишет издание.
Модель процессора: AMD Ryzen 5 5600U, 2 300 МГц, 6 ядер.
Место в рейтинге производительности: 375.
Видеокарта: встроенная.
Диагональ: 13.3.
Разрешение экрана: 1920×1200.
Технология экрана: IPS.
Оперативная память: 8 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 0,94 кг.
Дата выхода: 2021.
Цена: от $830.

Acer Swift 3 SF314

14-дюймовый ноутбук с элегантным тонким металлическим корпусом. Его преимущество, пишет notebookcheck, это время автономной работы — 12 часов. Еще плюсы: отличный дисплей, большое количество портов, низкий уровень шума и тепловыделения.
Модель процессора: Intel Core i7-1165G7, 2 800 МГц, 4 ядра.
Место в рейтинге производительности: 570.
Видеокарта: встроенная.
Диагональ: 14.
Разрешение экрана: 1920×1080.
Технология экрана: IPS.
Оперативная память: 8 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1,2 кг.
Дата выхода: 2021.
Цена: от $710.
ASUS VivoBook 15 K513

Вариант ноутбука для начинающего программиста с неплохими характеристиками, но все-таки не дотягивает до линейки Asus Zen, пишет notebookcheck. В линейке Asus Vivobook 15 есть и модели с дискретными видеокартами.
Конкуренты: Lenovo IdeaPad 5 15, Dell Inspiron 15, HP Pavilion 15.
Модель процессора: Intel Core i5 1135G7, 2 400 МГц, 4 ядра.
Место в рейтинге производительности: 601.
Видеокарта: встроенная.
Диагональ: 15.6.
Разрешение экрана: 1920×1080.
Технология экрана: OLED.
Оперативная память: 16 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1, 75 кг.
Дата выхода: 2021.
Цена: от $795.

Huawei MateBook 13 AMD 2020

Покупатели Huawei MateBook 13 получают действительно хороший ноутбук, считает notebookcheck. Модель комплектуется и процессорами Intel, и Ryzen, но второй вариант, пишет издание, предпочтительней в том случае, если вы работаете в таких программах, как Photoshop. Но характеристики автономной работы компьютера лучше с процессором от Intel.
Модель процессора: AMD Ryzen 7 3700U, 2 300 МГц, 4 ядра.
Место в рейтинге производительности: 809.
Видеокарта: встроенная.
Диагональ: 13.
Разрешение экрана: 2160×1440.
Технология экрана: IPS.
Оперативная память: 16 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1,3 кг.
Дата выхода: 2020.
Цена: от $779.
ASUS Chromebook Flip C436

С амый большой минус — время автономной работы, пишет The Verge. У предыдущей модели C434, которая дешевле C436, этот показатель был лучше, хоть процессор был слабее.
«Аккумулятор превращает Chromebook, который мог бы быть лучшим в своем классе, в нормальный», — пишет автор разбора в The Verge. Он также предлагает присмотреться к Lenovo Yoga C740 как альтернативе Chromebook Flip C436.
Модель процессора: Intel Core i5-10210U, 1 600 МГц, 4 ядра.
Место в рейтинге производительности: 928.
Видеокарта: встроенная.
Диагональ: 14.
Разрешение экрана: 1920×1080.
Технология экрана: IPS.
Оперативная память: 16 ГБ.
Накопитель: SSD, 512 ГБ.
Вес: 1,2 кг.
Дата выхода: 2020.
Цена: от $989.
Лучшие ноутбуки для программирования в 2022 году

Лучшие ноутбуки для программирования не превратят вас волшебным образом в следующего Ларри Пейджа, и они не напечатают вам деньги, не дадут успех и коллекцию свитеров Билла Гейтса.
Однако это не означает, что ваш выбор устройства не имеет значения. Тусклый и некрасивый ноутбук может поставить препятствия на пути даже самых компетентных программистов.
Независимо от того, разрабатываете ли вы программное обеспечение, мобильные приложения, игры или для Интернета, правильный ноутбук может сделать одну вещь прежде всего — максимизировать вашу производительность.
Мы собрали подборку ноутбуков доступных в Украине для покупки, чтобы помочь вам достичь именно этого: максимальной производительности для поставленной задачи. Если вы хотите сократить время, затрачиваемое на компиляцию кода, или начать новое хобби, скажите «Hello, World!» в нашей подборке лучших ноутбуков для программирования.

На фото Macbook Pro 13 на базе М1 процессора.
Одним из лучших ноутбуков для программирования является Apple MacBook Pro 14. Во время нашего тестирования мы увидели, что процессор Apple silicion M1 идет нога в ногу с производительными ноутбуками на AMD и Intel и выигрывает. Это легкий и портативный, но очень мощный ноутбук, который может справиться со всеми вашими потребностями в программировании.
Еще одним фантастическим ноутбуком, отвечающим вашим потребностям в программировании, является Dell XPS 15 OLED (2021). Dell имеет несколько конфигураций, подходящих практически для любого проекта программирования, и в целом является отличной машинкой для работы. Его процессор Intel Core 11-го поколения обеспечивает невероятную производительность, и он сохраняет ту же премиальную сборку, которую мы ожидаем от семейства устройств XPS.
Если у вас ограниченный бюджет, трудно превзойти соотношение цены и производительности, предлагаемое Acer Swift 3. Оснащенный процессором AMD Ryzen 7 4700U, ноутбук Acer способен на серьезную вычислительную мощность.

1. MacBook Pro 14
Лучший ноутбук для программирования
СПЕЦИФИКАЦИИ
- Процессор/графический процессор: Apple M1X (Pro)
- Оперативная память: 16 ГБ / 32 ГБ / 64 ГБ
- Встроенная память: 512 ГБ/1 ТБ/8 ТБ
- Дисплей: 14,2-дюймовый, 3024 x 1964
- Размер: 12.3 x 8.7 x 0.6 дюйма
- Вес: 3,5 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Впечатляющий чип M1 Pro
- Отличное управление тепловыми режимами
- 14-часовое время автономной работы
- Потрясающий дисплей
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Дорогой
В то время, когда интернет-спекуляции широко распространены, создание продукта, который соответствует ожиданиям людей, является обременительной задачей. Тем не менее, Стив Джобс однажды сказал: «Люди не знают, чего они хотят, пока вы не покажете им это». И, с открытием новой линейки ноутбуков Apple MacBook Pro, любой, кто ищет портативный центр программирования, может считать себя очень показанным.
Чип M1 Pro, размещенный внутри, может играть вторую скрипку по сравнению с M1 Max, но когда дело доходит до производительности, он находится там с лучшими доступными ноутбуками. Наше тестовое тестирование показало, что MacBook Pro 14 доминирует, а его 10-ядерный процессор разрушает оценки ноутбуков высшего уровня на базе Intel и AMD.
Конфигурации также позволяют использовать до 64 ГБ оперативной памяти, 8 ТБ молниеносного SSD-накопителя, 16-ядерный Neural Engine и 32-ядерный графический процессор. Если ваши потребности в программировании требуют серьезной производительности, есть несколько гор, в которых MacBook Pro 14 не сможет поднять вас на вершину.

2. Dell XPS 15 OLED (2021)
Лучший универсальный ноутбук для программирования
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i5/Core i7/Core i9 11-го поколения
- Графический процессор: Iris Xe/NVIDIA GeForce RTX 3050/3050 Ti
- Оперативная память: 8 ГБ / 16 ГБ / 32 ГБ / 64 ГБ
- Хранение: твердотельный накопитель M.2 NVMe емкостью 512 ГБ/1 ТБ/2 ТБ
- Дисплей: 15,6-дюймовый, FHD + / 2,5K OLED / UHD +
- Размер: 13.6 x 9.1 x 0.7 дюйма
- Вес: 4,3 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Невероятная производительность
- Множество вариантов конфигурации
- Большой потенциал программирования
- Тонкий дизайн премиум-класса
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Дорогой
Dell XPS 13 в настоящее время возглавляет наш список как один из лучших ноутбуков. Безудержный успех 13-дюймовой электростанции был чем-то, что можно увидеть, но остальная часть семейства XPS не слишком отстает. XPS 15 OLED является одним из таких членов семьи, и это еще одна необычная машина. Оснащенный мощными компонентами, XPS 15 OLED полностью газ и без тормозов для решения практически любой задачи, связанной с компьютером.
Конфигурации позволяют XPS 15 OLED оснащаться 8-ядерным процессором Intel Core i9-11900H 11-го поколения и графическим процессором Nvidia GeForce RTX 3050 Ti. Соедините это с 64 ГБ оперативной памяти и твердотельным накопителем емкостью 2 ТБ, и у вас будет машина, которая может покрыть весь спектр потребностей в программировании. Все, от машинного обучения до разработки игр, работает с таким мощным ноутбуком, но это обойдется вам в копеечку.
Вы можете снизить цену на XPS 15 OLED, выбрав панель FHD+ вместо опций OLED или UHD+. Это также может улучшить время автономной работы ноутбука, поскольку наша обзорная модель, оснащенная OLED-панелью 3.5K, управляла всего 6 часами и 58 минутами безотказной работы во время тестирования. Если время автономной работы не так важно, и ваш бюджет может быть растянут на него, Dell XPS 15 OLED может стать вашей платформой программирования на долгие годы.
ЛУЧШИЙ НОУТБУК 2-В-1 ДЛЯ ПРОГРАММИРОВАНИЯ

3. Hp Spectre x360 14
Лучший ноутбук 2-в-1 для программирования
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i5/Core i7 11-го поколения
- Графический процессор: Intel Iris Xe
- Оперативная память: 8 ГБ / 16 ГБ
- Встроенная память: 256 ГБ/512 ГБ/1 ТБ
- Дисплей: 13,5-дюймовый, 1920 x 1280 IPS / 3K2K OLED
- Размер: 11.8 x 8.7 x 0.7 дюйма
- Вес: 3 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Яркий дизайн
- Длительное время автономной работы
- Удобная клавиатура
- Высокая производительность
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Ограничение в 16 ГБ оперативной памяти
Сбалансировать форму и функцию сложно, но вы бы так не подумали, глядя на HP Spectre x360 14. Назовите меня скептическим, но любой ноутбук, который выглядит так хорошо, заставляет меня задаться вопросом, от чего он пытается отвлечь вас. Тем не менее, этот ноутбук гораздо больше, чем красивое лицо.
Под капотом Spectre x360 14 оснащен процессором Intel Tiger Lake 11-го поколения со встроенной графикой Iris Xe. Такая мощность, особенно в сочетании с 16 ГБ оперативной памяти и 1 ТБ SSD-накопителя, делает Spectre простой рекомендацией для тех, кто ищет ноутбук, который упаковывает удар для программистов. Если вам нравится работать вдали от стола, есть еще больше хороших новостей, так как Spectre x360 14 впечатлил нас временем автономной работы более 12 часов при тестировании.
Дизайн Spectre 2-в-1 является преимуществом для тех, кто хочет разрабатывать приложения с учетом мобильных устройств. Благодаря быстрому складыванию яркая 13,5-дюймовая панель от края до края становится впечатляющим планшетом с сенсорным экраном. Это отлично подходит для быстрого демонстрации прототипа или получения представления о том, как работает ваш проект в режиме реального времени. Ноутбук HP также впечатляет удобной клавиатурой и сенсорной панелью большого размера.
ЛУЧШИЙ БИЗНЕС-НОУТБУК ДЛЯ ПРОГРАММИРОВАНИЯ

4. Lenovo ThinkPad X1 Carbon (поколение 9)
Лучший бизнес-ноутбук для программирования
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i11/Core i5 7-го поколения
- Графический процессор: Iris Xe
- Оперативная память: 8 ГБ / 16 ГБ / 32 ГБ
- Хранение: 256 ГБ / 512 ГБ / 1 ТБ SSD
- Дисплей: 14-дюймовый, 1920 x 1200, 16:10
- Размер: 12.4 x 8.7 x 0.6 дюйма
- Вес: 2,5 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Лучшая в своем классе клавиатура
- Высокая производительность
- Множество портов
- Большое время автономной работы
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Конфигурации могут стать дорогими
Lenovo ThinkPad X1 Carbon был нашим фаворитом в течение некоторого времени – мы присудили ему редкий 5-звездочный рейтинг при его первоначальном запуске в 2018 году. Это был лучший бизнес-ноутбук на рынке, и Lenovo преуспела в поддержании этого стандарта с каждой новой итерацией. Теперь, в своем 9-м поколении, Lenovo ThinkPad X1 Carbon снова достигает этих 5-звездочных пиков благодаря некоторым улучшениям своего процессора, дисплея и времени автономной работы.
ThinkPad X1 Carbon сохраняет все то, что сделало оригинальный ThinkPad таким замечательным, и настраивает его почти до совершенства. Лучшая в своем классе клавиатура, прочное легкое шасси, большой запас портов и отличная эстетика — все это вновь появляется. Новинкой этой версии является мощный процессор Intel Core 11-го поколения с графикой Iris Xe, новый 14-дюймовый дисплей 16:10 и улучшенное время автономной работы, которое в наших тестах превысило 15-часовую отметку.
Конфигурации также позволяют использовать до 32 ГБ оперативной памяти и 1 ТБ SSD-накопителя, и каковы результаты являются лучшими ThinkPad X1 Carbon на сегодняшний день. Более того, вы получаете очень компетентную машину для программистов всех отраслей. Его впечатляющая батарея может заставить вас работать в движении, и вы сможете кодировать с комфортом в течение нескольких часов благодаря одной из лучших клавиатур для ноутбуков.
ЛУЧШИЙ НОУТБУК APPLE M1 ДЛЯ ПРОГРАММИРОВАНИЯ

5. Apple MacBook Pro (13 дюймов, M1, 2020)
Лучший ноутбук Apple M1 для программирования
СПЕЦИФИКАЦИИ
- Процессор: Apple M1
- Графический процессор: Apple M1
- Оперативная память: 8 ГБ / 16 ГБ
- Встроенная память: 256 ГБ/512 ГБ/1 ТБ
- Дисплей: 13,3-дюймовый, 2560 x 1600
- Размер: 12 x 8.4 x 0.6 дюйма
- Вес: 3 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Мощный чип M1
- Отлично подходит для разработки iOS / macOS / ipadOS
- Впечатляющее время автономной работы
- Удобная волшебная клавиатура
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Ограничение в 16 ГБ оперативной памяти
Чипы Apple M1 на базе ARM меняют правила игры, а M1 MacBook Pro – фантастическое устройство практически для любой вычислительной задачи, включая программирование. Несколько проблем совместимости остаются для разработчиков, запускающих программы на чипах M1 на базе ARM. Однако с каждым месяцем все больше этих вопросов решается. Эмуляторы, виртуальные машины и поддержка homebrew значительно улучшились за последний год, что делает новые устройства Apple все более и более привлекательными.
Хотя вы будете ограничены максимум 16 ГБ оперативной памяти, этого более чем достаточно для выполнения большинства задач, особенно в сочетании с потрясающим восьмиядерным процессором. Чип M1 катапультирует MacBook от Apple впереди, обеспечивая производительность, которая оставляет современников, таких как Dell XPS 13, позади. Кроме того, тепловая эффективность M1 Chips и активная система охлаждения MacBook Pro гарантируют, что вы сможете использовать эту мощность дольше, не беспокоясь об износе под капотом.
Хотя настройка Windows на MacBook M1 немного более глубока, чем просто с помощью Boot Camp, это все еще можно сделать с помощью Windows на ARM. Тем не менее, M1 MacBook остается фантастической платформой без необходимости вторичной загрузки, если вы веб-разработчик или кто-то, кто хочет разрабатывать для платформ Apple.
ЛУЧШИЙ НОУТБУК ДЛЯ ПРОГРАММИРОВАНИЯ СТОИМОСТЬЮ МЕНЕЕ $500

6. Acer Aspire 5 (2020)
Лучший ноутбук для программирования стоимостью менее $500
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i10/Core i3 5-го поколения
- Графический процессор: Intel UHD/NVIDIA GeForce MX250
- Оперативная память: 4 ГБ / 8 ГБ
- Хранение: 128 ГБ / 256 ГБ / 512 ГБ SSD
- Дисплей: 15,6-дюймовый, 1080p
- Размер: 14.3 x 9.9 x 0.7 дюйма
- Вес: 3,7 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Отлично подходит для студентов или начинающих любителей
- Очень доступный
- Полный выбор портов
- Полноразмерная клавиатура
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Время автономной работы ниже среднего
Если вы студент или заинтересованы в том, чтобы научиться программировать, вам не нужен самый дорогой или высококлассный ноутбук, чтобы начать. Acer Aspire 5 – это ноутбук на базе процессоров Intel, который поможет вам освоить основы, оставив вам достаточно места для роста. Еще лучше, с правильной конфигурацией, вы можете забрать его за небольшую часть цены по сравнению с другими ноутбуками в нашем списке.
В нашем обзоре был представлен Acer Aspire 5, оснащенный процессором Intel Core i5 10-го поколения, и, хотя он выполнил свою работу, именно здесь низкая стоимость этого ноутбука становится очевидной. Хотя вы все еще сможете программировать, все, что интенсивно использует процессор или требует 3D-рендеринга, может стать проблемой из-за более медленных тактовых частот и встроенного графического процессора Intel UHD. Ноутбук доступен с 8 ГБ оперативной памяти и 512 ГБ SSD, что более чем достаточно для начала.
Если вам это нужно сейчас, и вам это нужно при ограниченном бюджете, Acer Aspire 5 стоит посмотреть. Это дает вам все, что вам нужно для программирования – просто не ожидайте молниеносных скоростей. Это хорошо подходит для легкой работы и подойдет новичкам достаточно хорошо, хотя для более крупных проектов это может в конечном итоге стать тормозом для вашей производительности. Если вы можете себе это позволить, стремитесь немного выше. Однако, если вы стоите спиной к стене, Acer Aspire 5 является одним из лучших ноутбуков стоимостью менее 500 долларов, доступных в настоящее время.
ЛУЧШИЙ 17-ДЮЙМОВЫЙ НОУТБУК ДЛЯ ПРОГРАММИРОВАНИЯ

7. LG Gram 17 (2021)
Лучший 17-дюймовый ноутбук для программирования
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i7-1065G7
- Графический процессор: Ирис Плюс
- Оперативная память: 16 ГБ
- Хранение: 512 ГБ SSD
- Дисплей: 17-дюймовый, 2560 x 1600
- Размер: 15 x 10.5 x 0.7 дюйма
- Вес: 3 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Легкая конструкция
- Большой, красочный дисплей с высоким разрешением
- Отличное время автономной работы
- Полноразмерная клавиатура
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Дорогой
LG Gram 17 – отличная машина. Он легкий, большой и загружен качественными компонентами. Выдающейся особенностью является его значительный 17-дюймовый дисплей 2560 x 1600. Соотношение сторон дисплея 16: 10 обеспечивает впечатляющую площадь экрана, а его 109,3% охват цветовой гаммы DCI-P3 значительно выше среднего показателя по категории 82,9%, что делает его супер красочным.
Тем не менее, дисплей – не единственная заслуга благодаря процессору Intel Core i7 11-го поколения и интегрированной графике Iris Plus, размещенной внутри. Соедините это с 16 ГБ оперативной памяти и твердотельным накопителем емкостью 1 ТБ, и вы получите прилично мощный ноутбук, который может выполнять многие задачи, связанные с программированием. Помня о точном и ярком отображении цвета, у вас также есть машина, хорошо оборудованная для решения проектов веб-дизайна и разработки.
Дальнейшие положительные моменты для программистов исходят от полноразмерной клавиатуры в островном стиле, впечатляющего 14-часового времени автономной работы и общего веса всего 3 фунта. В то время как большинство других 17-дюймовых ноутбуков страдают от портативности, LG Gram 17 сохраняет тот же вес, что и 13-дюймовые устройства, такие как MacBook Pro. Это делает ноутбук LG отличным для программирования на ходу и демонстрации проектов лично.
ЛУЧШИЙ НОУТБУК ДЛЯ РАЗРАБОТКИ 3D-ИГР

8. Alienware m17 R4
Лучший ноутбук для разработки 3D-игр
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i10/Core i7 9-го поколения
- Графический процессор: NVIDIA GeForce RTX 3060/3070/3080 6 ГБ/8 ГБ/16 ГБ видеопамяти
- Оперативная память: 16 ГБ / 32 ГБ
- Хранение: 256 ГБ / 512 ГБ / 2×512 ГБ SSD
- Дисплей: 17,3-дюймовый, 1080p
- Размер: 15.7 x 11.6 x 0.9 дюйма
- Вес: 6,8 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Отличная графика и производительность
- Механическая клавиатура
- Яркий дисплей с высокой частотой обновления
- Молниеносный твердотельный накопитель
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Дорогой
Alienware делает одни из самых впечатляющих (и дорогих) игровых ноутбуков на рынке, но играть в игры – это не все, для чего они хороши. Alienware m17 R4 является подлинной электростанцией вычислений. Благодаря впечатляюще мощному сочетанию CPU и GPU, ноутбук Alienware может легко принять требования современного программирования, включая разработку игр. Хотя это может быть излишним для вашего 2D-rogue-подобного инди-платформера, небо – это предел с такой машиной.
Тем не менее, грубая мощность – это не все, что предлагает портативный гигант Alienware. Есть также большой 17,3-дюймовый дисплей, который обеспечивает фантастическую четкость 1080p с ультра-плавной частотой обновления 360 Гц. Завершает дело полноразмерная низкопрофильная механическая клавиатура с переключателями Cherry, готовая обеспечить фантастический опыт набора текста.
ЛУЧШИЙ БЮДЖЕТНЫЙ НОУТБУК ДЛЯ ПРОГРАММИРОВАНИЯ

9. Acer Swift 3 (2020, AMD Ryzen 7 4700U)
Лучший бюджетный ноутбук для программирования
СПЕЦИФИКАЦИИ
- Процессор: AMD Ryzen 7 4700U
- Графический процессор: AMD Radeon
- Оперативная память: 8 ГБ
- Хранение: 512 ГБ SSD
- Дисплей: 14-дюймовый, 1080p
- Размер: 12.7 x. 8.6 x 0.6 дюйма
- Вес: 2,65 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Невероятная производительность
- Отличная многозадачность
- Отличное соотношение цены и качества
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Ограничено 8 ГБ оперативной памяти
- Тусклый дисплей
Термин «темная лошадка» является наиболее подходящим описанием, которое вы могли бы дать Acer Swift 3. В наших тестах производительности ноутбук стоимостью менее 1000 долларов сдувал конкуренцию слева справа и в центре, некоторые из которых стоили почти в три раза дороже, чем бюджетная покупка Acer. В чем секрет? Процессор Ryzen 7 4700U.
Процессор AMD является восьмиядерным многозадачным монстром и предлагает невероятный прирост производительности по сравнению с аналогом Intel Swift 3. Он идеально подходит для программирования и именно того типа процессора, который вы хотите иметь под рукой, поскольку ваши проекты становятся больше, а компиляция занимает больше времени. Если все это звучит слишком хорошо, это потому, что мы еще не упомянули о проблеме оперативной памяти.
Acer Swift 3 поставляется с более чем 8 ГБ оперативной памяти, над чем нечего насмехаться. Проблема здесь в том, что, хотя этого достаточно, это не очень перспективно. Если вы уже думаете, что обновление после покупки сделает эту работу, подумайте еще раз. Оперативная память Acer Swift 3 припаяна и не обновляется. К счастью, не все задачи программирования требуют огромных объемов оперативной памяти, и вы можете реально обойтись тем, что есть под рукой. Что касается бюджетных покупок, Acer Swift 3 – лучшее предложение, которое вы найдете, если хотите получить премиальную производительность без премиального ценника.
ЛУЧШИЙ НОУТБУК WINDOWS ДЛЯ ПРОГРАММИРОВАНИЯ

10. Ноутбук Microsoft Surface 4 (15 дюймов, AMD)
Лучший ноутбук Windows для программирования
СПЕЦИФИКАЦИИ
- Процессор: AMD Ryzen 7 4980U
- Графический процессор: AMD Radeon
- Оперативная память: 8 ГБ / 16 ГБ
- Встроенная память: 256 ГБ / 512 ГБ
- Дисплей: 15-дюймовый, 2256 x 1504
- Размер: 13.4 x 9.6 x 0.6 дюйма
- Вес: 3,4 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Отличная производительность
- Длительное время автономной работы
- Впечатляющий 15-дюймовый дисплей
- Удобная клавиатура
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Нет опции дискретной графики
Мы будем помнить Surface Laptop 4 как момент, когда игра Microsoft AMD окупилась. Запуск Surface Laptop 3 с процессором Ryzen 5 серии 3000 в его ядре заставил большинство людей задаться вопросом, почему Microsoft просто не придерживается более мощных чипов Intel. Затем, когда Surface Laptop 4 снова начал выпускаться с процессором AMD на буксире, люди получили свой ответ.
Процессор AMD Ryzen 7 4980U, размещенный в Surface Laptop 4, не из тех, кто тянет пятки. Он не просто конкурирует с чипами Intel по аналогичной цене; она обычно превосходит их. Интегрированная графика AMD Radeon присоединяется к восьмиядерному процессору вместе с 512 ГБ памяти и 16 ГБ оперативной памяти. Ноутбук Microsoft делает фарш многозадачным и отлично подходит для некоторых из более ресурсоемких задач, которые может повлечь за собой программирование.
Одним из немногих недостатков этого ноутбука является его интегрированный графический процессор, который не будет очень полезен для графических проектов. Тем не менее, Surface Laptop 4 компенсирует это своим впечатляющим 12-часовым временем автономной работы, удобной клавиатурой с подсветкой и значительным 15-дюймовым дисплеем. Это отличная покупка, если вы знакомый с Windows, ищущий гладкий, хорошо продуманный ноутбук для программирования.
ЛУЧШИЙ НОУТБУК ДЛЯ МУЛЬТИПЛАТФОРМЕННОГО ПРОГРАММИРОВАНИЯ

11. Apple MacBook Pro (16 дюймов, 2019 г.)
Лучший ноутбук для мультиплатформенного программирования
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i9/Core i7 9-го поколения
- Графический процессор: AMD Radeon Pro 5300M/5500M
- Оперативная память: 16 ГБ / 32 ГБ / 64 ГБ
- Хранение: 512 ГБ / 1 ТБ / 2 ТБ / 4 ТБ / 8 ТБ SSD
- Дисплей: 16-дюймовый, 3072 x 1920
- Размер: 14.1 x 9.7 x 0.6 дюйма
- Вес: 4,3 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Улучшенная волшебная клавиатура
- До 8-ядерного процессора Core i9 и 64 ГБ оперативной памяти
- Отлично подходит для мультиплатформенной разработки
- Меньше проблем совместимости, чем у чипа M1 на базе ARM
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Конфигурации могут быть очень дорогостоящими
Хотя Apple только что выпустила новый 16-дюймовый MacBook Pro с M1 Pro / Max, версия 2019 года впечатляющего ноутбука Apple по-прежнему остается одной из самых универсальных устройств, доступных в настоящее время для программирования. Благодаря процессору Intel Core i7 / Core i9 9-го поколения MacBook Pro 2019 года не страдает от каких-либо проблем совместимости, с которыми могут столкнуться разработчики от более нового чипа M1 на базе ARM.
Поскольку IDE Apple, Xcode, является эксклюзивной для устройств Mac, владение Mac остается единственным вариантом для тех, кто стремится разрабатывать для iOS, iPadOS и macOS, не полагаясь на облачные сервисы или виртуальные машины. MacBook Pro на базе Intel от Apple также может работать как под управлением Windows, так и под управлением Linux, что делает этот ноутбук фантастическим устройством для программистов, ориентированных на несколько платформ.
Вы можете оснастить свой MacBook Pro до 64 ГБ оперативной памяти, что намного больше, чем максимум 16 ГБ, который в настоящее время предлагают M1 Mac. Существуют также конфигурации, которые предлагают хранилище SSD от 512 ГБ до колоссальных 8 ТБ. В дополнение к уже сложенной линейке, яркий и красочный 16-дюймовый дисплей Retina предлагает достаточную площадь экрана благодаря разрешению 3072 x 1920. Он мощный, он красивый, и его не следует упускать из виду из-за его прочного потенциала программирования.
ЛУЧШАЯ МОБИЛЬНАЯ РАБОЧАЯ СТАНЦИЯ ДЛЯ ПРОГРАММИРОВАНИЯ

12. HP ZBook Фьюри 17 G8
Лучшая мобильная рабочая станция для программирования
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i5/i7/i9 11-го поколения, Intel Xeon 11-го поколения
- Графический процессор: Intel UHD, Nvidia RTX A2000/A3000/A4000/A5000
- Оперативная память: 8 ГБ / 16 ГБ / 32 ГБ / 4 ГБ / 64 ГБ / 12 ГБ
- Хранение: 256 ГБ/512 ГБ/1 ТБ/2 ТБ (x4)
- Дисплей: 17,3-дюймовый, 1920 x 1080 FHD / 3840 x 2160 UHD
- Размер: 15.69 x 10.52 x 1.06 дюйма
- Вес: 7 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Доступны многочисленные конфигурации
- Ослепительная производительность CPU/GPU
- Впечатляющий 17-дюймовый сенсорный экран 4K
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Нагревается
- Очень дорогой
HP ZBook Fury 17 G8 дорогой, шумный в условиях стресса, имеет относительно короткое время автономной работы и вряд ли выиграет какие-либо конкурсы красоты. Он также производит много тепла. Подумайте о ракетном выхлопе на коленях с уровнем тепла. Так почему же на Земле он получил такую высокую оценку в нашем обзоре? Одним словом, власть. Еще в нескольких словах, боже мой, так много силы.
Кого волнует, как выглядит ваш ноутбук, или как легко его таскать, когда у него достаточно вычислительной мощности, чтобы однажды потенциально подняться и поработить все человечество. HP ZBook Fury 17 G8 — это идеальное решение для мобильных рабочих станций для программистов, ищущих альтернативу для настольных КОМПЬЮТЕРОВ. Электростанция HP доступна в нескольких конфигурациях, но она дополняет некоторыми невероятными будущими компонентами, включая разгоняемый процессор Intel Xeon 11-го поколения, дискретную графику Nvidia RTX A5000 с 16 ГБ видеопамяти, 128 ГБ оперативной памяти и более 8 ТБ SSD-накопителя.
Тем не менее, эта конкретная конфигурация вряд ли найдет свой путь в цифровую корзину покупок среднего Джо в ближайшее время – в первую очередь из-за его цены в 10 000 долларов + . Тем не менее, существует широкий спектр конфигураций, доступных по гораздо меньшей цене, которые все равно позволят вам уйти с довольно зверской машиной. Это не для любителей, но если вам серьезно нужна мобильная рабочая станция для обработки самых требовательных задач программирования, это оно.
ЛУЧШИЙ НОУТБУК ПРЕМИУМ-КЛАССА 2-В-1 ДЛЯ ПРОГРАММИРОВАНИЯ

13. Microsoft Surface Laptop Studio
Лучший ноутбук премиум-класса 2-в-1 для программирования
СПЕЦИФИКАЦИИ
- Процессор: Intel Core i5/i7 11-го поколения
- Графический процессор: Iris Xe/Nvidia RTX 3050 Ti
- Оперативная память: 16 ГБ / 32 ГБ
- Хранение: 1 ТБ / 2 ТБ SSD
- Дисплей: 14,4-дюймовый, 2400 x 1600, 3:2, 120 Гц
- Размер: 12.7 x 9 x 0.75 дюймов
- Вес: 4 фунта
ПРИЧИНЫ ДЛЯ ПОКУПКИ
- Большое время автономной работы
- Впечатляющий дисплей
- Удобная клавиатура
- Конструкция шарнира
ПРИЧИНЫ НЕ ПОКУПАТЬ
- Дорогой
Для большинства задач программирования ноутбук 2-в-1 может быть довольно избыточным. Однако, если вы программируете с учетом сенсорного ввода, жестов или мобильных устройств, то владение приличным кабриолетом позволяет вам быстро протестировать свой проект с очень небольшой суетой.
Surface Laptop Studio – это премиальный опыт Microsoft 2-в-1, предлагающий отличный баланс формы, функциональности и портативности. Что еще более важно, его способность обрабатывать ресурсоемкие рабочие нагрузки в сочетании с опцией дискретной графики Nvidia RTX делает его фантастическим устройством программирования.
Приобретение Microsoft Surface Laptop Studio может стоить от 1 599 до 3 099 долларов в зависимости от того, какую конфигурацию вы используете. Базовая модель уже хорошо оснащена для программирования благодаря процессору Intel Core i5 11-го поколения со встроенной графикой Iris Xe, 16 ГБ оперативной памяти и 256 ГБ SSD-накопителя. Однако, если ваш проект требует немного больше «oomf»,конфигурации завершаются процессором Intel Core i7 11-го поколения, дискретной графикой GeForce RTX 3050 Ti, 32 ГБ оперативной памяти и 2 ТБ SSD-хранилища.
Под рукой много вычислительной мощности, и благодаря уникальному дизайну шарниров Surface Laptop Studio есть некоторая реальная универсальность в том, как использовать устройство. И, хотя клавиатура на Surface Laptop Studio не является полноразмерной, она по-прежнему обеспечивает впечатляющий и тактильный опыт набора текста, который отлично подходит для использования в течение длительных периодов использования.

Выбор ноутбука может быть запутанным опытом, а выбор ноутбука для конкретной цели может еще больше усложнить ситуацию. Если вы выбираете ноутбук с учетом программирования, вам понадобится мощный процессор, приличный объем оперативной памяти и быстрый твердотельный накопитель (SSD). Однако, чтобы получить лучший опыт, приличный экран и клавиатура также важны.
Мы собрали некоторые из наиболее распространенных вопросов, которые люди задавали, когда хотели инвестировать в ноутбук для программирования. Наша цель – дать вам наилучшие ответы, помогая объяснить, что искать и почему. Несмотря на то, что наши ответы сосредоточены на общем стандарте, нет никакого вреда в том, чтобы стремиться выйти за рамки этих спецификаций. В конце концов, более мощный процессор, больше оперативной памяти и больший SSD никогда не повредят. Тем не менее, нет смысла взрывать паука дробовиком, когда свернутая газета работает просто отлично.
Сколько оперативной памяти мне нужно для программирования?

Объем оперативной памяти в вашем устройстве чрезвычайно важен для программирования, особенно если вы имеете дело с более крупными проектами или запускаете несколько программ одновременно. 8 ГБ оперативной памяти является базовым требованием для большинства потребностей в программировании, хотя 16 ГБ, как правило, является более идеальной конфигурацией (особенно для пользователей Mac, которым приходится иметь дело с Xcode, требующим ОЗУ). Более интенсивные задачи программирования, такие как разработка игр и машинное / искусственное обучение, могут потребовать от 16 ГБ до 32 ГБ как минимум.

Процессор вашего ноутбука жизненно важен для быстрой компиляции ваших проектов и обеспечения бесперебойной и эффективной работы нескольких приложений. Если и был какой-то компонент, на который нужно было скупиться при выборе следующей машины, то это не процессор. Для большинства потребностей в программировании, как минимум, вы захотите выбрать ноутбук с четырехъядерным процессором и с максимально высокими тактовыми частотами в рамках вашего бюджета.
Есть место для дебатов о том, какой процессор ноутбука является лучшим, и у каждого из них есть свои сильные стороны. Однако, помимо машинного обучения и программирования искусственного интеллекта, intel Core i5 / Core i7, AMD Ryzen 7 и Apple M1 способны обрабатывать большинство задач программирования.

Выбор правильного жесткого диска для вашего ноутбука — дело гораздо более простое. Достойный SSD может значительно улучшить ваш рабочий процесс. Все, от загрузки вашего устройства до компиляции вашего кода, значительно быстрее при использовании SSD, что означает, что вы меньше ждете и работаете больше.
Объем требуемого хранилища полностью зависит от размера и объема ваших проектов. Разумной отправной точкой является 256 ГБ, что дает вам достаточно места для ресурсов, операционных систем и личных файлов. Если вам когда-либо потребуется больше памяти, большинство ноутбуков с SSD достаточно легко обновить. Есть также много отличных вариантов внешних жестких дисков и твердотельных накопителей, если это не так.
Full HD или 4K? Какой размер дисплея мне нужен?

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

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

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