Ноутбук для программирования 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 точно хорошая 🙂
Топ бюджетных ноутбуков для 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.
Ноутбук для программиста. Какой он?
Привет, пикабу. Хочу поделиться своим ответом на этот вопрос. Ключевые характеристики моего ноутбука такие: центральный процессор — 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 моя тачка работает почти на пределе, но всё ещё сносно. В нативной среде работать, всё же, приятнее.
416 постов 10.4K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
Открой 5 сред разработки, нагугли 50+ вкладок, подними пару ssh тоннелей, открой зум, рокет чат, телеграм, запусти большой проект ноды в дев режиме, включи все линтеры, не забудь запустить второй браузер, чтобы наблюдать как в нем поехала верстка.
Добро пожаловать в веб разработку.
К сожалению, под PyCharm (и другими ему подобными IDE) такой сетап умрёт.
с такими запросами и характеристиками можно и на Raspberry Pi 4B учиться/работать. То же самое. 🙂
Кстати, на пи все довольно живенько работает, а на той что 64бит и 8Гб так вообще.
Но я все равно работаю на маке i9/16Gb ))
Оперативки много не бывает. У нас все Python и Go разработчики минимум с 12Гб сидят. И видюха чтобы пару мониторов 4к тянула и встроенный моник на ноуте.
Этот ноубук подходит только для обучения Джанго, для работы его не хватит. Минимально серьёзный проект — это несколько (как минимум) сервисов в докеровских контейнерах и необходимость их локально поднять. Даже 8Гб оперативки — это меньше минималки. ТС, не вводи людей в заблуждение, это не ноутбук программиста, это ноутбук его личинки))
Знакомо?
Разве стало лучше?
А ты не зациклен?
Топ 10 ресурсов на русском языке, которые могут помочь в изучении Python
Вот список из 10 ресурсов на русском языке, которые могут помочь в изучении Python:
1. Python.org на русском языке – официальный сайт языка Python, который содержит множество документации, руководств, обучающих материалов и примеров.
2. ‘A Byte of Python’ на русском языке – это онлайн-учебник, который предназначен для начинающих программистов и помогает освоить основы языка Python.
3. Pythontutor.ru – это онлайн-платформа с интерактивными задачами и упражнениями, которые помогают закрепить теоретические знания.
4. Rus-linux.net – это портал, который содержит множество статей и обучающих материалов по Python.
5. Learnpython.ru – это онлайн-курс, который предоставляет пошаговый и практический подход к изучению языка Python.
6. Pythonworld.ru – это онлайн-учебник по Python, который содержит подробные описания синтаксиса языка, примеры и задачи для решения.
7. Pythonicway.com – это сайт, который содержит множество статей, видеоуроков и других материалов, которые помогают в изучении Python.
8. Coursera.org – на этой платформе можно найти большое количество курсов по Python от ведущих университетов и экспертов в области программирования.
9. Geekbrains.ru – это онлайн-платформа, которая содержит множество курсов по Python и другим языкам программирования.
10. Tproger.ru – это портал о технологиях и программировании, где можно найти множество материалов о Python и других языках программирования.
Нейронки на все случаи жизни
Для учёбы, монтажа, кодинга, дизайна, работы со звуком, улучшения фото и даже для устройства на работу — сохраняйте эту эпичную подборку себе.
MathGPT — подсобит с матаном.
editGPT — исправит ошибки в тексте на английском.
Consensus — огромная научная база знаний на основе ИИ.
ExamCram — превратит сложные учебные материалы в карточки и тесты для самопроверки.
Yip — то же самое, но в вебе и с поддержкой Википедии.
YouTube Summary with ChatGPT — превратит любое обучающее видео или лекцию в текст.
ChatBA — поможет сделать презентацию.
Explain Me Like I’m Five — объяснит заумные вещи простым языком.
Для программистов
Adrenaline — исправит ошибки в коде.
Tabnine — допишет код за вас.
CodePal — напишет код, исправит баги и выдаст ревью.
Code GPT — плагин-генератор кода для VSCode.
Autobackend — поможет с бэкендом.
Codesnippets — генерит код из текстовых запросов, подходит для команд.
Buildt AI — поисковик для VSCode, найдет готовый код в инете.
Для дизайнеров
Booth ai — генерирует стоковые фото по текстовому запросу.
AdCreative — генерит баннеры и другие рекламные креативы.
RoomGPT — сделает ремонт в вашей комнате с любым дизайном.
Hama — Удаляет лишнее с картинки.
Для улучшения фото
Photoroom — меняйте фон, вырезайте объекты в пару движений. Есть мобильные версии.
Nostalgia Photo — сделает старые фото чётче.
Pallete fm — раскрасит чёрно-белые фото.
Relight — поможе заново выставить свет на уже сделанном фото.
Picsart — заменит ваших бывших на собаку, флаг или батон.
LeiaPix — сделает из 2D-фотки 3D.
Для создания видео
Сolourlab AI — ИИ поможет с цветокором.
Luma AI — выдаст 3D-сцену киношного качества из нескольких фоток.
Kaiber — с этой штукой делали свежий клип Linkin Park.
Topaz Video AI — апнет видос до 4К и 60 FPS, уберёт тряску.
SpiritMe — создаст вашу говорящую цифровую копию.
CapCut — поменяет фон, переведет речь в сабы и многое другое. Прямо в браузере.
vidyo ai — быстро нарежете длинные видосы в шортсы,
Для работы со звуком
Fadr — порежет трек на отдельные дорожки инструментов и вокала.
Adobe Enhance — чистит запись от шумов. Бесплатно.
Elevenlabs — мощнейший синтезатор, подделает любой голос.
Beatoven — ИИ-композитор музыки для видео.
Clip audio — подберет музыку для любого видоса.
The MetaVoice — меняйте свой голос на один из восьми пресетов.
Cleanvoice — уберет из вашей разговорной записи мусор,
Для устройства на работу
kickresume — напишет резюме и сопроводительное.
Сover Letter AI — составит сопроводительное на основе резюме.
InterviewGPT AI — имитирует собеседование и помогает готовиться.
Resume Worded — прокачает резюме и профиль на LinkedIn.
Interview Warmup — разогреет перед собеседованием.
Для прокачки поиска в интернете
Lexii ai — чат-бот, которые отвечает за слова и прикладывает ссылки на источники.
Perplexity — мощнейший ИИ-поиск, работает и как расширение для браузера.
Chord — выдаст подробнейший реферат в ответ на ваш запрос.
Phind — поисковик для технарей, умеет в код.
Nuclia — найдет что угодно на сервере, накопителе и облачном диске.
Для развлечений
Natural Language Playlist — 7-часовой музыкальный плейлист по любому запросу.
Movie Deep Search — подыщет фильм под любой запрос.
RadioGPT — ИИ-диджеи ведут эфиры.
EndlessVN — у всех визуальных новелл есть финал. Кроме этой.
Tattoos AI — генерирует эскизы для тату.
Hello History — даст пообщаться с ИИ-двойником известной исторической личности.
Cool Gift Ideas — опишите человека и сервис подберёт под него подарок.
Endel — генератор ИИ-музыки, поможет расслабиться и выспаться.
PlaylistAI — соберет плейлист в Apple и Spotify по тексту или картинке.
Хороший Ютуб-канал по программированию Python для уровня посерьезнее, чем у моей аудитории
Мне многие пишут про то, что я в материалах о программировании слишком простые вещи разбираю и надо бы что посложнее да поинтереснее. Но они не правы. Дело в том, что они не моя аудитория. Для такой аудитории, что уже получше да посильнее разбирается в программировании и кому хочется глубже в Python двигаться, есть другие авторы. Вот недавно наткнулся, очень много полезных материалов про тонкости, фишечки и т.д. Всем, кому актуально, подписываться на него на Ютубе и смотреть.
С днём рождения, Python
Python сегодня исполняется 32 года 🎂
20 февраля 1991 года Гвидо опубликовал исходники версии 0.9.0.
Пишем программу на Python для распознавания текста
Не так давно я озадачился вопросом распознавания печатного текста в своём приложении. Мне стало интересно, какие на данный момент существуют OCR-библиотеки и насколько они удобны в использовании. А главное — будет ли приемлемый результат распознавания текста и можно ли такой текст потом озвучить? Озвучка текста это тема для отдельного видео, а сегодня я расскажу как написать приложение на Python, которое сможет распознавать тексты на русском языке с помощью Tesseract.
Santa Run 2023 — Python 3.10 + Pygame 2.1
Два года назад от нечего делать решил создать игру. Это было перед новым 2021 годом, поэтому и тематика была новогодняя, и игра очень простая. Вы играете за Санту и собираете подарочки. При этом скорость постоянно увеличивается, дабы добавить немного сложности)
Что-то очень сложное и качественное на python очень сложно написать, но для простеньких игр можно побаловаться.
Так вот в 2021 году игра выглядела так:
Но мы сейчас не о ней. Как это модно сейчас, я выпустил ремейк) Немного поправил код, накатил нормальный графоний. Получилось лучше. В целом, были проблемы, которые решались довольно быстро, но это мелочи.
Ремейк 2023 года:
Сильно не пинайте, я не профи-разработчик, это моё хобби. Понимаю, что игры лучше писать на более пригодном к этому языке.
Ответ на пост «Как программисты пишут код?»
Есть два типа людей: одни могут писать код, другие нет. Те, которые могут, делятся на еще на два: те, кто сразу видят решение, и те, кто итеративно работает.
Я в разработке с 2007 и всякого дерьма повидал. За сим есть, кой-чего сказать. Те, кто сразу видит решение, их меньшинство. По моему опыту, не более 10-15%. Остальные — только через итерации, либо фрагментарный подход.
Комплексный подход. Программист сразу пишет примерно 80% кода, можно сказать, на одном дыхании. Далее — косметика, марафет, отладка. В 99% первоначальный код не меняется. Это, имхо, — либо врожденная способность, либо нечто приобретенное в сильно раннем детстве.
Итеративный подход. Программист пытается хоть как-то решить задачу. Криво, косо, но решить. Далее начинаются итерации, которых может быть очень много в засимости от сложности и погружения разработчика в предметную область. Это обычный подход среднестатистического работника, коих на рынке большинство. Имхо, таких 75-80%.
Фрагментарный подход. Программист пытается декомпозировать код, ибо сразу он его обработать не в силах. Далее идет пошаговая реализация различных его кусков, после чего попытка связать все воедино, что, как правило в 99.99%, приводит к значительным переработкам ранее готовых кусков кода. Это следствие неприспособленности мозга. Т.е. человек может писать код, но ему это очень сложно дается.
От себя еще добавлю, что современная реальность требует всех видов людей: каждому программисту найдется место, если он все-таки по итогу выдает рабочий код.
Начальник взял в руки лопату
Телеграм канал для тех, кому интересны другие мои приключения руководителя в 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.
Так же мой опыт с использованием ВКонтакте как поисковик по изображениям дал мне идею для возможности добавлять изображение к каждому блоку при желании.
В результате я сделал то, чем пользуюсь уже больше года. Как веб, так и ПК версия оказались очень полезными. Использую для работы и личной жизни. Скорость поиска, которую я в итоге получил меня многократно выручала, когда нужно было найти что-то очень быстро.
Ответвление в другие проекты
Веб приложение мне настолько понравилось, что я захотел написать программу для исполнения программ по команде от запроса пользователя на ПК. Вдохновлённый голосовыми помощниками, я создал программу, которая ищет и исполняет файлы, ссылки на которые сохранены в программе, у которой поиск соответственно так же подобен веб поисковику. Особенность в том, что можно перетащить файл/файлы напрямую в программу и алгоритм автоматически установит теги исходя из названия файла и папок, в которых он содержится. Но это тема другого поста, если этот окажется интересным..
Послесловие
Буду рад любым комментариям. Узнать ваше мнение по поводу идеи. Полная ли это ерунда. Или, в чем я почти не сомневаюсь, есть уже приложения с подобной реализацией.
Что не так с оценкой разработки IT-продуктов
В чем риск? Как нам недавно объяснили: риск в риске. Истории в агентствах начинаются одинаково, а заканчивается по-разному. Начинаются с “назовите примерную стоимость / сроки, ну примерно сколько?”, а заканчиваются либо проектом сданным в срок, либо сорванными договоренностями. От чего же зависит результат?
В прошлой статье рассмотрел технические тонкости реализации digital-продуктов. В этой рассмотрю организационные. Как не ошибиться при составлении сметы? На что обратить внимание по ходу проекта, чтобы сделать проект в срок и в плюс? Эти наблюдения, в основном, относятся к модели Fix Price, но также применимы для корректной оценки трудозатрат на спринты.
Начнем с кейса. На рынок выходит новый оператор мобильной связи: нужно разработать личный кабинет абонента в виде мобильного приложения. Бэкенд уже готов — запилила внутренняя команда разработки.
Какие вопросы нужно обсудить с командой и заказчиком?
На этапе оценки
• Сколько команд участвует в разработке, кто кого ждет? Одно дело, если весь проект разрабатывает одна команда, и совсем другое, если работают две и больше команд. API, с которым вы интегрируетесь, полностью готово? Заказчик готов предоставить его на приемку вашей команде?
• На проекте уже есть наработки прошлой команды, осталось только “доработать пару моментов”? А совпадают ли версии приложения в сторах с исходниками, которые дает заказчик?
• Проект необходимо запустить к конкретному дню (выставка / конференция / презентация) или есть запас по времени?
• В часть какого ландшафта будет вписан разрабатываемый продукт? Каков контекст текущего проекта? Какая приоритизация работ?
• Ваш проект попадает на гендерные / майские / новогодние праздники? Учли, что это выходные дни и команда будет отдыхать?
• Как часто будут меняться требования? Например, нужно реализовать парсер 5-ти сайтов. Казалось бы, ничего сложного. Но готов ли заказчик оплачивать допилы парсера под изменяющиеся функции сайта?
На этапе разработки
Разработчик выполняет функции менеджера )
• Тестовые данные предоставлены в полном объеме? Данные совпадают с боевыми? Или на проде появятся новые поля о которых не шла раньше речь?
• Как будут фиксироваться изменения и вбросы от заказчика? Отказаться от изменений, может быть, нельзя, но зафиксировать их и сместить реализацию после сдачи основных функций — вполне (а лучше на следующий этап).
• Легаси-проект с зависимостями 2016 года, который нужно “просто поправить”?
• Заложили 10% времени на финальную проверку и полировку проекта?
• На чьей стороне ведется учет работы, в каких трекинговых системах? В какой срок будут предоставлены необходимые доступы?
• Какая критичность ошибки? Нужно ли отслеживать / анализировать и логировать каждый шаг пользователя?
• Сложность тестирования и его вариативность. На проекте достаточно ручного тестирования? Или тест-кейсов настолько много, что проще написать сценарии автоматизированного тестирования?
На этапе запуска и сопровождения
Все равно все может пойти наперекосяк, нужно быть к этому готовым)
• Кто и когда будет принимать проект? Тот же менеджер, который ставил задачу или за время реализации продукта менеджер сменит компанию и вам снова придется утрясать контекст?
• Сопровождать разработанный проект будет та же самая команда разработки? Разрабатывать и сопровождать должны уметь разные команды, тем самым вы проверяете код на “липкость” к конкретному разработчику.
• Обучение конечных пользователей было включено в оценку? Иначе даже после сдачи проекта он может “сожрать” бюджет.
Эти вопросы в бриф не занесешь. Но сэкономить себе нервные клетки и бюджеты можно на берегу заранее найдя ответы на них.
Точных вам оценок.
Ответ на пост «Бесплатно помогаю пикабушникам учить программирование, часть 20: "Как преодолеть синдром самозванца ?"»
Хочу поблагодарить Дмитрия, создателя канала @prodigal.son, телеграм-канала https://t.me/LearnRubyForPikabu и тематического чата https://t.me/LearnRubyForPikabuChat за составленный им план обучения на Руби программиста с нуля.
Расскажу немного о себе: 33 года, учился на филолога, потом работал на административных должностях в офисе. В декабре 2021 года наткнулся на пост @prodigal.son о том, что любой человек может самостоятельно научиться программировать на Руби в достаточной степени, чтобы затем получить начальную должность в сфере ИТ.
У каждого есть своя причина начать изучать программирование: кого-то интересует повышение дохода, другого гибкий график и возможность «удалёнки», третьего перспективность карьеры программиста. В моем случае, все эти причины повлияли на то, что с начала 2022 года я начал обучение по плану @prodigal.son. К июлю я дописал свой пет-проект и в начале августа устроился стажёром ROR на удаленной основе в компанию, которая развивает свою платформу на Rails.
Хотел бы дать несколько советом тем, кто также обучается по этому или схожему плану, которые, как я надеюсь, помогут другим на пути к карьере в ИТ.
1. Обязательно выполняйте практические упражнения из книг, и, вообще, чем больше практики программирования у вас будет, тем легче вас дастся старт работы.
2. Постарайтесь не только прочесть, но также усвоить как можно больше учебного материала.
3. Язык Руби очень легко читается и, по моему мнению, дает хорошую базу для дальнейшего изучения других языков программирования. Если вы хотите дальше развиваться и стать, например, дата аналитиком на python или разработчиком игр на C++, то Руби легко научит вас основным концепциям и шаблонам программирования.
4. Если у вас, как и у меня, гуманитарное образование и нет никакого опыта работы в ИТ, то не ждите, что вас сразу примут на должность джуниор разработчика. Конечно, если вы обладаете исключительными навыками, то и это возможно, но в большинстве случаев, будьте готовы к стажировке на протяжении 3 или 6 месяцев, как минимум.
5. Любая стажировка научит вас куда большему, чем самообучение. По своему опыту, чего только стоит понимание, как устроена «внутренняя кухня» и как налажена работа в команде. Каждый работодатель хочет нанять сотрудника, который приступит к выполнению заданий в наикратчайшие сроки, поэтому между самоучками и недавними стажерами, HR отдают предпочтение последним.
Спасибо за ваше внимание и ещё раз спасибо @prodigal.son за крупицы ценного знания, собранные в единый план. Без этого плана, мне бы понадобились годы на обучение и смену карьеры.
Если вы поставили себе целью карьеру в ИТ, то упорный труд и терпение обязательно доведут вас до цели.
Опять баг в CSS
upd. CSS-скрипт → CSS
Ответ chiefuu в «Вылезла из рабства»
По началу думал запилить пост мотивацию, но как то их стало действительно много, поэтому — Не надо идти в айти!
Немного о себе, 35 лет, вышки не имею, начал учиться года 2 назад: бесплатные курсы, вебинары, видео на тытрубе, книги. Сейчас работаю уже 3 месяц, нравится писец, но это пока не выгорел, хехе.
Мой стек, PHP/Symfony/postgresql/redis бла бла вам это скорее всего ни о чем не говорит пока.
Есть основная работа, жена/быт/ребенок. Поэтому это скорее пост для тех кому за 30.
Ок почему не надо идти в айти, на самом деле причин масса:
1. Отдых — попить пиво с друзьями на выходных? Почилить на даче? Порубиться в игры? Забудьте! Если честно, я даже и не помню когда последний раз залипал в игры, а я так то тот ещё задрот (2к+ часов в Rust)
Шутка про то что у программистов хобби это программирование, нихрена не шутка, это факт.
2. Терпение и упорство — если это не про вас, забудьте про разработку. Не пересчитать сколько раз я думал забросить, но как баран пробовал и пробовал, пока не стало получаться.
3. Время — вы думали время быстро бежит? Ха, а попробуйте программирование, время будет лететь! Его будет буквально не хватать в сутках. Думаешь задачка часа на два, опомнился, а уже 2 часа ночи.
4. Прокрастинация и перфекционизм — идут рука об руку, не получается, хочется все забросить и переключиться на что угодно, это постоянная борьба, по нервам и самооценке бьет ток в путь.
5. Самообучаемость — пафосное словечко для собеседований? Ан нет, за ручку тебя вести никто не будет. Даже купив супер дорогой курс, попав в джуны каким то образом, не умея банально правильно гуглить, то что тебе нужно — ты пропал. Сотни вкладок на стаковерфлоу это норма.
6. Надёжный тыл — если жена не поддержит, всё, пиши пропало. Ещё и потому что программирование съедает ваше с ней общение. Бесконечные спринты и дедлайны, неудачи, нервы на пределе, сил нет, тут может помочь только надёжное плечо супруги.
7. Логика — умение мыслить логически и обладать, хотябы, зайчатками пространственного мышления. Просчитавать свои действия и на что они повлияют, достаточно важно.
8. Компьютерный якорь — вы и комп одно целое. Всегда, всегда комп должен быть рядом, пришла мысль — реализовал, ибо потом точно забудешь
9. Ответственность — за тебя твою часть кода никто делать не будет и ты просто будешь тормозить своих коллег.
Ну вот что пришло на ум, есть ещё куча минусов, мелких и не очень, та же убунта бесит писец, иной раз, но если вы готовы к переменам, буквально новой жизни, то в путь.
От себя добавлю ещё что оно того стоило, даже не в зарплате дело, стало банально интереснее жить. Всё, и так длиннопост получился, всем мурчащих котеек и чистого кода!