Какое направление лучше выбрать при изучении c#?
Сразу скажу — основная цель — найти хорошую работу и зарабатывать деньги.
В связи с этим и задаю вопрос знающим и уже работающим людям.
Долгое время я изучал различные технологии и языки программирования. Что-то знаю хорошо, что-то не так хорошо как бы хотелось. В любом случае мои знания устарели. Нужно что-то новое и более прибыльное.
Сейчас я — эникейщик программист разрабатывающий что угодно из чего угодно и как угодно )
Работа в принципе сейчас есть — но зарплата оставляет желать лучшего. Эникейщики не в почете.
Изучив тенденции, вакансии я увидел что сейчас есть 2 направления, даже языка. Java и C#.
Выбрал C#. Одна из причин, что это разработка майкрософт — а они так или иначе захватывают рынок все больше и больше. ИМХО, тут всё спорно вплоть до традиционного холивара.
Возникли сдедующие вопросы
1) С# или Visual C#?
C# — объектно-ориентированный язык программирования. Разработан в компании Microsoft.
Visual C# — это реализация языка C# корпорацией Майкрософт.
Как я понял — реализация есть совокупность ПО. Но в вакансиях требуют знание C#, но не оговаривают реализацию — инструмент ПО. А реализация может быть любая — иметь ошибки, отходить от стандарта и т.д.
Можно ли сказать, что в большинстве случаев нужно изучать не язык, а его реализацию — C# для Visual Studio?
2) Что такое платформа .NET Framework?
В 90% случаев никто не рассматривает эту платформу/фреймворк а сразу переходят к её использованию совместно с ASP или C#. И используют Visual Studio.
Почему не рассматривают платформу как каркас, а сразу смешивают её с языком программирования и конкретной реализацией, позиционируют это как технологию, что ненаучно?
Т.е. говорим фреймворк, язык, реализация — а на практике Visual Studio и все там есть.
Вот учебник куда ткнуть и как это будет в Visual Studio работать.
3) Недавно прочитал про .NET CORE.
Это ведь новая технология? Получается .NET Framework через пару лет уже будет не нужен? Ведь возможность кросплатформенности .NET CORE с учетом развития этой платформы сделает её основной платформой для разработки под все ос и типы устройств, в то время как .NET Framework будет только под Windows.
Для чего хорош Си?
Си применяют в сферах, где важен код, наиболее тесно взаимодействующий с «железом». Под влиянием Си появились языки C++, C#, Java и Objective-C.
Си иногда называют подмножеством C++ или «C++ без классов», но это не совсем верно. Почему это не так, можно узнать в статье про C++.
Си поддерживает исключительно процедурное программирование. Никаких классов, ООП, наследования — только функции и структуры. К основным особенностям языка относятся:
- доступ к памяти через указатели (особые переменные, в которых хранится адрес объекта);
- активное использование структур и объединений;
- чистый стиль программирования (код проще отлаживать, но сложнее писать).
Си обычно используется в довольно специфичных и сложных задачах, потому что более лёгкие задачи проще сделать с помощью высокоуровневых языков. Мы отобрали несколько наиболее популярных применений Си.
Оптимизация участков кода на C++
Объектно-ориентированные возможности C++ часто обходятся дороже, чем «чистый Си», так как расходуют больше ресурсов (в частности оперативной памяти). Поэтому иногда код в стиле Си может быть эффективнее. Если нужно заставить какой-либо алгоритм работать быстрее — используйте процедурный стиль и откажитесь от встроенных инструментов C++ для ООП, например от полиморфизма.
Но если нужна действительно высокая скорость, лучше переписать часть кода на ассемблере.
Информационная безопасность
Сюда относятся сложные хакерские приёмы. Среди них:
- Использование уязвимостей: переполнения буфера, двойные удаления (повреждения кучи).
- Инъекция (сокрытие) кода. Если получить доступ к другому процессу, используя уязвимость, то можно спрятать свой код внутри чужого и заставить процесс выполнять его. Теперь скрытый код будет жить в «невинном» процессе, спрятанном от глаз пользователя.
- Перехват (hooking). Если вы хотите мониторить чьи-то взаимодействия с системой (нажатие клавиш, открытие файлов), вам, как правило, нужно вызывать отслеживающий код всякий раз, когда пользователь что-то делает. Для этого вы заменяете какой-либо фрагмент API операционной системы вашим кодом.
Почти для всех этих применений используется PIC код (position-independent code — код, не зависящий от адреса). Он может выполняться в любом месте памяти, независимо от того, где находится и кто его запустил. У PIC-кода нет доступа к глобальным переменным и таблицам, поэтому C++ для его написания не подойдёт (классам C++ нужны глобальные таблицы для реализации наследования).
Код ядра
Код, который выполняется в режиме ядра (kernel mode) имеет полный доступ к памяти и оборудованию: RAM, GPU, жёсткому диску. В режиме ядра работают:
- Аппаратные драйверы — здесь без доступа к железу не обойтись. Драйверы являются посредниками между пользовательским кодом (не в режиме ядра) и оборудованием.
- Ядро операционной системы. На Си, кстати, написано множество ядер ОС, в том числе Unix и Android.
Использовать для всего этого код на C++ почти невозможно, поскольку в режиме ядра нет доступа к тем же глобальным таблицам, о которых говорилось выше. Иногда в режиме ядра тоже необходим PIC код — например для загрузчика (bootloader). Загрузчик — самая первая программа, выполняющаяся при запуске ПК. Биос извлекает её из жёсткого диска, помещает в память и говорит процессору запустить эту часть памяти.
Embedded-разработка
Для программирования встраиваемых систем часто используется как Си, так и C++. Но Си имеет преимущество, поскольку позволяет разрабатывать встроенное ПО при ограниченных ресурсах — например когда у микроконтроллера очень мало RAM. Помимо Си также может пригодиться знание ассемблера (как вариант, ARM-ассемблера) для написания ассемблерных вставок, чтобы ещё больше оптимизировать код и получить доступ к специфичным инструкциям процессора.
Языки семейства C: области применения и стоит ли их учить

Педагог, копирайтер и тьютор. Люблю читать, писать, размышлять и помогать людям и профессиям находить друг друга. А еще писать просто о сложном, объяснять неочевидное, находить недоступное, анализировать то и это
Языки семейства С используют в разных сферах — в играх, операционных системах, кроссплатформенных приложениях и в интернете вещей. Разберёмся, для чего используется язык С и его прямые потомки — С++, С#, Java и Objective-C. И объясним, почему стоит выучить хотя бы один из них, даже если вы планируете потом заниматься разработкой на Python.
Какие языки входят в семейство С
С — первый язык из семейства, его создали в 60-70-е годы XX века для реализации ОС Unix. Затем его адаптировали для других операционных систем.
С++ — был создан на основе С и унаследовал его синтаксис. При этом в С++ добавили механизм шаблонов и поддержку объектно-ориентированного программирования. Сейчас этот язык — самый распространённый в мире и используется как язык общего назначения. Сфера применения: веб-сервисы, программы и игры.
Objective-C — появился в середине 80-х годов и сохранил совместимость с языком С, хотя его синтаксис сильно отличается от «предка». Область применения C: разработка программного обеспечения для продуктов Apple.
Java — появился в 1995 году, позаимствовав синтаксис С++ и Objective-C. Он отличается тем, что компилируется в собственный байт-код — это строго типизированная функция, которая поддерживается виртуальной машиной JVM. Сфера применения: корпоративное серверное ПО, игры, мобильные приложения, трейдинговые системы, научный и производственный софт.
С# — один из быстрорастущих, востребованных и удобных языков семейства. Он, как и Java объектно-ориентированный и простой для изучения. Но отличается специфическим синтаксисом и нетипичными конструкциями, поскольку в нём есть заимствования из языков С, С++, Java, Паскаль. Сфера применения: машинное обучение, создание игр и веб-приложений.
Все эти языки объединены в одно семейство, потому что имеют одни общие особенности.
Особенности языков семейства С
Освоение любого из языков семейства С даёт разработчику фундаментальные знания и понимание основ программирования. Если вы знаете один из языков С, то изучить любой другой становится намного проще. И не потому, что синтаксис похож, а из-за системности подхода — С помогает понять логику и архитектуру компьютеров, операционных систем и сетевых технологий.
Вот основные особенности языков семейства С:
- Универсальность. На С и С++ пишут код практически для всего — для робототехники, нейронных сетей, микроконтроллеров, операционных систем и интернета вещей. С# чаще используют для программирования в геймдеве, машинном обучении и веб-разработке. Java — универсальный язык, его применяют в разработке десктопного ПО, веб-приложений, игровых консолей и сетевого софта. Objective-C используют в разработке мобильных приложений.
- Востребованность. Программистам, которые знают один из языков семейства С, проще найти работу. Это связано с тем, что реализованных решений на С, С++, С# и прочих языках подмножества большое количество. Все их нужно поддерживать в актуальном состоянии, «лечить», добавлять новые функции и оптимизировать.
- Совместимость. В основе кроссплатформенных приложений лежит язык С. Поэтому, если вы планируете заниматься разработкой для Linux и Windows, знание С — весомое преимущество.
Каким бы языком программирования вы ни владели — PHP, Python и прочие, для работодателя в приоритете будет кандидат, у которого в арсенале есть ещё и один из языков С.
Востребованность С-программистов на рынке труда
В общей сложности для программистов всего семейства С на русскоязычных работных порталах размещено больше 20 000 вакансий. Это не считая сайтов для фрилансеров, где задания для С-программистов появляются каждый день.
Java. Больше всего специалистов требуется со знанием языка Java. На портале hh.ru актуально больше 9 000 вакансий. Начинающий java-разработчик может рассчитывать на доход 50 000-80 000 руб., опытный разработчик получает от 120 000 руб. в месяц. Верхняя граница зарплаты для высококвалифицированных java-разработчиков — 450 000-500 000 руб.

Вакансии для Java-программистов
С#. Это одна из наиболее высокооплачиваемых для программистов специальностей. Здесь начинающие разработчики получают от 100 000-120 000 руб., опытные разработчики — от 350 000 руб. в месяц. В РФ работодатели ищут 5000+ специалистов, в Европе и США — актуальны больше 17 000 вакансий.

Вакансии для программистов на С#
С++. Почти 5 000 вакансий опубликовано на hh.ru для разработчиков С++. Как правило, в описаниях указано одинаковое требование к претендентам — необходимо владеть С и С++. На зарплату выше 120 000 руб. вы можете претендовать, если имеете опыт работы от года или разрабатываете клиент-серверное программное обеспечение.

Вакансии для программистов С++
С чего начать изучение языка семейства С
Чтобы стать востребованным разработчиком на языках семейства С, необходимо изучить:
- теоретические основы программирования — понимать этапы и принципы процесса создания программ;
- устройство компьютера — разобраться, как работают компоненты системы от процессора и материнской платы до жёсткого диска и звуковой карты;
- работу операционных систем — понять, как программы, из которых состоит ОС управляют компьютером и организуют взаимодействие с пользователем;
- язык разработки — важно знать принципы, алгоритмы, синтаксис и порядок выполнения кода;
- базы данных — нужно понять принципы из создания, составления и обработки запросов;
- основы тестирования и отладки кода — важно знать, как правильно составлять и проводить тесты, как выявлять ошибки и исправлять их;
- изучите альтернативы — почитайте, что такое Delphi и зачем он нужен, изучите основы Java. Так понимание программирования будет более глубоким.
Это не полный перечень компетенций, а только база, вокруг которой вы будете на протяжении профессиональной карьеры строить свои знания и совершенствовать навыки.
Помните, что во время обучения важна теория и практика. Комплексные знания и навыки дадут специализированные курсы. Мы проанализировали ситуацию на рынке образовательных ресурсов и выбрали ТОП-3 курса по программированию для разработчиков на С++, С# и Java.
Топ-3 курса по программированию на языках семейства С
На факультете разработки на С++ от GeekBrains за 18 месяцев вы освоите разработку на С/С++ с нуля. Вы научитесь создавать графические интерфейсы, сетевые и мобильные приложения, работать с игровым движком Unreal Engine 4 и системой контроля версий Git. К концу обучения вы создадите 9 проектов: от файловых менеджеров до игр и HTTP-сервера
На курсе «С#-разработчик» от SkillFactory за 12 месяцев вы научитесь создавать десктопные, серверные, мобильные приложения и сайты на языке С#. Вы освоите синтаксис С# и SQL, сможете работать с реляционными базами данных и пользоваться платформами .Net. Вы освоите HTML/CSS и JavaScript для разработки полноценных веб-приложений. После обучения вы сможете проектировать мобильный и десктопный софт
На курсе «Java-разработчик» от MDA за 12 месяцев вы под руководством преподавателя из Оксфорда научитесь программировать на Java с нуля и сможете создавать мобильные приложения высокой сложности. Вы поймёте, как находить нестандартные решения задач. К концу обучения вы создадите трейдинговую платформу, социальную сеть или интернет-магазин высокой сложности
Коротко о главном
Языки программирования семейства С — классика знаний для разработчиков. Многие работодатели в описаниях вакансий указывают в качестве дополнительного языка один из С. Поэтому изучение С, С++, С# или Java — полезно новичкам и опытным программистам.
Языки семейства С применимы во всех сферах разработки — от микроконтроллеров до машинного обучения. Средняя заработная плата разработчика — от 130 000 руб. в месяц. Помимо самого языка разработки необходимо изучать основы программирования, устройство компьютера и операционных систем, базы данных и основы тестирования.
Собрали данные по зарплатам специалистов, работающих с разными языками и направлениями, и делимся ими в статье «Сколько зарабатывают программисты»
Зачем и где учить С++ и насколько он актуален в 2022 году

В сегодняшнем материале попробуем разобраться с тем, насколько актуален С++ в 2022 году.
Стоит ли начинать изучать С++ в 2022 году?
C ++ — отличный язык для изучения, если вы программист, который хочет глубоко понять, как работают компьютеры. C ++ позволяет вам познакомиться с низкоуровневыми концепциями программирования и помогает понять, как компьютеры думают и работают. Другие языки и концепции программирования могут иметь для вас больше смысла после того, как вы изучите C ++.
Это чрезвычайно быстрый и эффективный язык. Многие инструменты и фреймворки полагаются на скорость и эффективность C ++. Сейчас он пользуется большим спросом, и он будет оставаться востребованным в 2022 году из-за своей надежности, производительности и эффективности.

Насколько сложно учить С++ с нуля?
C ++ известен как один из самых сложных языков программирования для изучения по сравнению с другими популярными языками, такими как Python и Java. C ++ сложно изучить из-за его многопарадигмальной природы и более продвинутого синтаксиса. Хотя известно, что это особенно сложно выучить новичкам, это также сложно для программистов, не имеющих опыта работы с языками низкого уровня. В то время как это делает занять больше времени, чтобы написать C ++ кода, язык был модернизирован до нынешних абстракций высокого уровня. Эти абстракции можно использовать для очень эффективного кодирования. Вы можете быстро писать код на C ++ 14, C ++ 17 и C ++ 20.
В то время как некоторые разработчики предлагают изучать C до C ++, другие утверждают, что если вы заинтересованы в работе с C ++ в своей карьере или в личных проектах, нет необходимости посвящать время изучению C (если, конечно, вы этого не хотите!). Если вы новичок в программировании, важно изучать компьютерное программирование независимо от языка. Есть много фундаментальных концепций, которые имеют решающее значение для разработки программного обеспечения в целом. Вы можете настроить себя на успех, сначала изучив эти основы, чтобы погрузиться в язык, чувствуя себя подготовленным и уверенным.
Положительные стороны С++
1.Универсальность. На С++ до сих пор пишут код для чего угодно. Робототехника, ядра ОС, драйвера, микроконтроллеры, приложения, нейросети и обработка статистики — все те сферы, что тесно связаны с С++
2.Скорость выполнения кода. С++ является одним из самых быстрых языков программирования.
3.Фундамент для многих языков программирования. С++ будет хоть и нелегким, но прекрасным фундаментом для начала обучения программированию, по той причине, что синтаксис многих языков, так или иначе, схож с синтаксисом C++
Отрицательные стороны С++
1.Сложный в понимании. На С++ необходимо детально описывать каждое действие, вследствие чего сходу понимать как работают большие и долгие проекты и принять в них участие у новичка не получится. Порог входа крайне высок.
2.Проблемы с управлением памятью. С++ даёт возможность довольно таки гибко управлять используемой оперативной памятью. Это всё необходимо для системного программирования, но по этой же причине всё это приводит к частым ошибкам новичков и может существенно усложнить приложение, написанное на С++.
Для чего изучать С++
Освоение C++ крайне необходимо в тех отраслях, что требуют производительности и надежности. Изучив данный язык вы попутно разберетесь в большинстве методик разработки и сопутствующих технологиях. Повторимся, С++ для новичка будет крайне тяжелым направлением, но изучив его и принявшись за изучение других языков, последние будут даваться уже намного легче.
Ну и самое главное, почему C++ — настоящий must-know для амбициозного программиста: работая с ним, ты ощущаешь, что куда больше создаёшь, чем используешь. Достаточно сложный синтаксис, тысячи строк кода даже в простых программах, механизмы работы с памятью и периферией — поначалу всё это жутко бесит из-за постоянных ошибок. Но потом приходит дисциплина, опыт и ты понимаешь, что C++ — это и есть настоящее программирование.

Карьерные перспективы
Разброс зарплат программистов С++ крайне велик. Но как и в любой сфере программирования, зависит от двух факторов, это опыт и результат собеседования.
Важность С и С++ для ИТ-индустрии переоценить невозможно. Если вы не планируете использовать эти языки в дальнейшем, они окажутся полезными для общего понимания всех концепций программирования, а если продолжить свой путь с ними, найти работу будет несложно.
Необходимо отметить также одну отличительную черту. В случае, если вам импонирует GameDev( создание игр), то С++ будет вашим отличным помощником и инструментов для старта в данной сфере в роли разработчика. Путь будет нелегким, но тут уже вопрос того, насколько вы желаете работать в данной сфере.
Источники изучения С++
№1. Основы программирования на языке C и С++ для начинающих — cppstudio.com

№2. Основы программирования на С++ для начинающих — purecodecpp.com

№3. С++ projects for beginners — список проектов для начинающих программистов — github.com/suzana-ilic/cpp


№5. «Программирование на С++ в примерах и задачах»

Книга содержит полный набор сведений о языке С++, необходимых для успешного написания кода. Материал излагается последовательно и дополняется большим количеством примеров, практических задач и детальным разбором их решений.
№6. «Язык программирования С++. Базовый курс»

Подробное введение в C++, которое детально покрывает буквально все аспекты языка в доступном формате
Подводим итог.
Важность С и С++ для ИТ-индустрии переоценить невозможно. Если вы не планируете использовать эти языки в дальнейшем, они окажутся полезными для общего понимания всех концепций программирования, а если продолжить свой путь с ними, найти работу будет несложно.
Если вас интересует IT его перспективы в РФ ,
публикую также свои статьи и интервью на канале t.me/it_begin
Подписывайтесь, если будет интересно 😉
Вот даже воздержусь от комментария про описание из алиэкспресс.
В списке литературы не увидел Страуструпа, как без него учить С++?
Ответ на твой вопрос могут дать разработчики блендера, она как раз недавно об этом задумывались.
«На несколько порядков повышена скорость экспорта файлов в форматах .obj и .fbx, благодаря использованию многопоточности, оптимизации алгоритмов и переписыванию кода для экспорта с Python на C++. Например, если раньше экспорт большого проекта в файл Fbx занимал 20 минут, то теперь время экспорта удалось сократить до 20 секунд.»
Нож мне в печень — с++ вечен.
Язык программирования отличный, изложение и подача материала — полное г

Знакомо?


Разве стало лучше?


А ты не зациклен?


Топ 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 и других языках программирования.

Как я хотел облегчить работу в поликлинике
Многие, кто на меня подписан, знают, что я отработал некоторое время на скорой, и по настоящий день работаю в первичном звене (В поликлинике).
Я застал самые крутые волны ковида и вынес много опыта из этого шторма.
Самый главный- «Спасение утопающих — дело рук самих утопающих» — это я сейчас про врачей, хотя и про пациентов такое можно было сказать зачастую.
Но сейчас как раз о «Пятничном МОЁ». Захотелось ачивку и заодно рассказать вам о моем опыте, улучшения работы в поликлинике. А именно журнале вызовов — который у нас пишется по сей день в бумажном варианте.
Вызовов — переваливает за 300, и самая большая боль вначале рабочего дня: выбрать вызовы по своему району(ведь в журнале они в разном порядке), переписать в блокнотик, расставить маршрут.
И да, опытные врачи перепишут и пойдут по памяти, но согласитесь порой можно упустить или забыть маршрут, можно перепутать дома, такое часто встречается даже у тех, кто знает весь район по закоулочкам. А еще наверняка будет удобнее, если врач не будет тратить лишние 5 минут (во время ковида примерно 20, потому что вызовов очень дофига).
В один из прекрасных дней я сам заболеваю ковидом в легкой форме, и сижу дома, сидеть без дела не могу — поэтому придумываю, как бы облегчить работу — хитрый лис, который не хочет работать — скажите вы? -нет, просто реально даже за те деньги, что нам платили, работать было тяжело, а так можно было бы и большему количеству человек помочь.
Я сажу за компьютер и понимаю, что я не программист, хоть и навыками верстки я обладаю, но сделать что-то можно, вспоминаю все конструкторы, что есть: тильда, юкоз -понимаю, что не подходят, ищу информацию о «ноль-код платформах» — нет, я не рекламирую их, просто рассказываю, как замахнулся на MVP, а по факту мог получить готовый продукт..
Нахожу одну такую прекрасную платформу — название которой не скажу, чтобы не убили за рекламу. И начинаю что-то воять.
Цель которая передо мной стояла изначально:
Сбор адресов в удобном для всех приложении (изначальный вариант был плох, потому как врач так же должен был переписывать вызовы себе в телефон).
Пометки о вызовах (комментарии, к чему готовится)
Заключение, заметки для себя(что было на вызове, что в итоге решил и нужен ли больничный).
Что получилось в итоге:
Все что планировал
+возможность добавление вызовов регистратором из колл-центра, сразу с пк, которые стоят у них на месте.
+Возможность просмотра врачом истории своих вызовов и информации которую он заполнил на них для себя с любого пк
То есть в конце-концов, выстроилась прекрасная цепочка:
Колл-центр записывает вызов сразу в БД, адресуя его нужному врачу, который ходит по этой территории ->
вызов падает врачу в приложении\сайте (потому что загружать приложение в сторы мне не хватило времени, и я разочаровался в проекте)->
Врач сразу видит вызов и комментарий о нем, соответственно не тратит время на переписывание инфы + не тратит время на заход в колл-центр, а значит исключает личный контакт (во время ковида было очень кстати полезно).
К тому же врач вначале работы может сразу пойти на вызовы, а не заходить в поликлинику.
Если по пути работы врача вызовы добавляются, то они падают в «Колокольчик» — уведомления, либо через @mail (потому что я так и не разобрался, как настроить уведомления в браузероной версии), + встраиваются в очередь по маршруту.
Самое интересное, сейчас открыл проект- я умудрился наладить маршрут и очередность вызовов с помощью карт и какого-то скрипта написанного моим другом.
Проект все еще жив в моей-тестовой версии, но воспользоваться не могу, потому что сервис зарубежный и оплатить его не выходит.
Логика приложения для врача:

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

Тут сложного ничего- залогинился (Логины и пароли выдавал бы админ-я).
Заходишь в журнал всех вызовов. Сверху справа есть кнопка добавления вызова, вписываешь инфу — пока говоришь по телефону и отсылаешь врачу.
Логика приложения для просмотра своих заметок и вызовов:

Тут еще проще — просто заходишь под логином, открываешь любой вызов и смотришь — где ты был, когда, как и что записал для себя. Легко и удобно, открыл это приложение и открыл свою МИС на работе Crtl+c Ctrl+v, и готово, сократил еще кучу времени на вбивание инфы. (Да во всех МИС есть шаблоны, но тут то еще быстрее находить пациента и объективно вписывать или жалобы).
По факту, когда врач приходил с вызова, у него все уже было в печатном виде -оставалось перенести это МИС.
Почему я не полез с этим куда-то дальше?
Потому что у видел, что в других городах это реализовано + реализовано вместе с той МИС на которой работают. Не хотел изобретать велосипед
Потому что не хватало знаний в разработке.
Потому что у МИС с которой мы работаем такое в планах уже 3 или 4 года, но я никак не вижу, или может оно есть, но наше руководство это не закупает.
Потому что к апи той МИС с которой мы работаем никто не дал бы доступ.
Почему я не стал оставлять это локально для себя и коллег?
Первый вопрос что меня мучал — защита данных, какой она будет, ведь это MVP и все на базе ноу-код платформы, а значит хз, что и как там защищено.
Знаю, что в других городах уже реализовано подобное и реализовано лучше и намного лучше, у знакомых врачей из определенных поликлиник в Москве даже выдают планшеты на работе с необходимым софтом, но у нас этого нет, мы привязаны к МИС с которой постоянно какие-то проблемы, возможно не с ней с самой, а с серверами на которых она располагается. Хотя оптимизация для «Астра-линукс» там ужасная, замечаем, как этаже МИС отлично работает на винде.
Но скажу честно мы тестировали данную «Разработку» — некоторое время, и действительно всем все зашло. Кроме старой школы.
Идей для разработки было много и улучшения, но куда ее предлагать я не знал, да и клинки или компании лучше закажут для себя что-то сами. Но если вам интересна еще одна моя «Разработка в ковид, с радостью расскажу».
Если что-то забыл напишу в комментах, а если вам интересно — спрашивайте

Спортзал, который ты никогда не покинешь


А никто не говорил, что будет легко
Настоящий программист никогда не ставит комментариев. То, что писалось с трудом, должно пониматься с трудом.

Нейронки на все случаи жизни
Для учёбы, монтажа, кодинга, дизайна, работы со звуком, улучшения фото и даже для устройства на работу — сохраняйте эту эпичную подборку себе.
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 по тексту или картинке.

SSD технологии древних: DiskOnChip
Автор: dlinyj
Оригинальный материал
Дополнительные фото, ссылки, а также информация по DiskOnChip в источнике материала. Всё попросту не влезло 🙁

В середине 1990-х, FLASH-накопители были очень дорогими, поэтому появление твердотельных накопителей сильно задерживалось. Стоимость 1 МБ FLASH-памяти была несоизмеримо дорога в сравнении со стоимостью 1 МБ памяти на физическом жёстком диске, с блинами.
Но, несмотря на это, в 1995 году — израильская компания M-Systems представила первый полупроводниковый накопитель. Это был настоящий жёсткий «диск», который выглядел как обычная 32-х контактная DIP-микросхема. Более того, он устанавливался вместо микросхемы расширения BIOS, при этом имел на борту ёмкость в десятки, а то и сотни мегабайт. В те годы — это было просто космические технологии, и в последствии они встречались и использовались достаточно часто, но уже в промышленном секторе.
Это система DiskOnChip – фактически полноценный жёсткий диск на одной маленькой микросхеме, с минимальной обвязкой, которая для своей работы потребует всего два чипа логики.
Ну что же, попробуем собрать свою необычную систему с этим жёстким «диском», проверю, может ли она работать с обычной ROM-памятью, запущу наконец свой BIOS на 386 машине с ISA-картой, чего не удалось в прошлый раз.
❯ Что же такое DiskOnChip®?
DiskOnChip (далее – DOC) – это фактически продолжение идеи расширения BIOS, о котором я достаточно подробно писал в статье «Пишем свой ROM BIOS».
DOC представляет собой обычную DIP-микросхему и вставляется в ту же панельку, что EEPROM, как на сетевой карте, живёт по тем же адресам и даже в начале содержит код BIOS инициализации. И микросхема pin-to-pin совместима с некоторыми микросхемами ПЗУ! Однако далее, в старших адресах этой микросхемы, содержатся регистры управления, которые переключают окна FLASH-памяти.
Для сравнения можно посмотреть расположение выводов DiskOnChip 2000 и микросхемы EEPROM SST 29EE512 (64К x 8). Отличие только в количестве адресных линий, потому что DOC работает через окно в 8К х 8 (как восьмикилобайтная EEPROM).

Сравнение распиновки EEPROM и DOC
Фактически электрический интерфейс работы с DiskOnChip ничем не отличается от интерфейса работы с обычной EEPROM. Сигнальные линии называются также, и она совместима с ними по ногам.

Структурная схема DOC
DiskOnChip занимает 8 КБ памяти. При этом — во время старта, она выглядит как обычная ROM BIOS, и инициализирует код для работы в реальном режиме, добавляя в прерывание BIOS 13h ПО для работы по этому интерфейсу.
При работе в реальном режиме, когда передаётся код управления BIOS в его внутреннюю EEPROM, он подменяет прерывание 13h по работе с диском. Таким образом, он начинает мапить в старшие адреса по очереди страницы флэш-памяти, с помощью регистров управления.

Карта памяти DiskOnChip 2000
Если рассмотреть карту памяти, которая доступна системе в пространстве 8 КБ, то мы увидим что оно состоит из четырёх разделов по 2 КБ.
Секция 0: Загрузочный блок. Этот раздел содержит данные, которые выполняются при загрузке BIOS.
Секция 1: Загрузочный блок 2. Содержит вторую часть загрузочной области.
Секция 2: Регистры управления. Используется для управления поведением DiskOnChip 2000 и флэш-носителя.
Секция 3: Окно доступа к FLASH-накопителю. Окно, чрез которую видно область FLASH для записи или чтения данных.
Как можно понять, вся доступная память, в моём случае 8 МБ, доступна через маленькое окно в 2 КБ и переключается с помощью регистров управления.
В более сложных системах, которые работают уже в защищённом режиме, таких как Windows CE, Windows 2000, QNX, Linux и т. д., где недоступен код инициализации и прерывание 13h, для работы требуются специализированные драйвера файловой системы DOC, называемой TrueFFS.
Подводя итог, можно сказать, что DiskOnChip – это примитивный SSD того времени, который успешно применялся во многих встраиваемых системах. Чаще всего его можно было встретить в одноплатных компьютерах, в кассах, тонких клиентах и другом аналогичном оборудовании. Вот, например, недавно через мои руки прошёл моноблок для ресторанов Micros WS4. Как я понял, он использовался официантами для приёма заказа.

Внешний вид моноблока
И после вскрытия внутри можно обнаружить микросхему DiskOnChip, несмотря на то, что он работает под управлением операционной системы Windows CE.

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

Кстати, если вас пугают импортные микросхемы 74-й серии, то, во-первых, их можно взять с другими буквенными индексами, а во-вторых, вполне можно заменить на отечественные аналоги, например:
74-серияаналог74139155ид1474138155ид7
А ещё их можно заменить на микросхемы серии к155, к555, кр1564 и всё будет прекрасно работать.
Схема простая, значит можно попробовать запустить его на любом старом железе!
❯ Ваяю плату расширения
Много лет хочу сделать плату расширения для шины ISA. Ещё со студенческой скамьи вынашивал идеи, прикидывал дешифраторы адреса для создания своей платы расширения. Даже как-то пытался паять параллельный порт на микросхеме КР580ВВ55. Но всё это было не торт, и толком не работало.
Здесь другое дело, схема простая, всего три микросхемы, как работает – понятно. Осталось дело за малым – это всё реализовать. Мне было лениво заниматься разводкой печатной платы, поэтому решил делать всё на макетке. В качестве основы платы взял проект IBM PC XT8-bit ISA Prototype PCB Card XL.
В Китае заказал изготовления платы, микросхему DOC на 8 МБ и уже здесь нашёл подходящие микросхемы логики: 74HC138AP и 74HC139AP (обратите внимание, что буквенные индексы иные). Самое тяжёлое – это было томительное ожидание, когда изготовят платы и их отправят. Спустя несколько месяцев у меня всё было на руках.

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

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

Кружок кройки и шитья
Спустя неделю вечеров пайки получил-таки готовый результат.

Вид спереди

Далее предстоит самое интересное – тестирование!
❯ Проверка работоспособности DiskOnChip
Проверку проводил на материнских платах с процессорами 386SX и Pentium 1. Как обычно бывает, где-то был неконтакт или непропай. После исправления мелких недочётов система сразу подхватила BIOS из DOC, и я увидел при загрузке ключевое сообщение, о том, что TrueFFS-BIOS запустился.

Если загрузиться вместе с жёстким диском, то можно увидеть второй диск D:, который можно отформатировать в системный раздел и перенести на него файлы, что я и сделал. Забегая вперёд, скажу, что форматировать стандартным format d: /s нельзя! То есть если очень хочется, то можно, но результат непредсказуем.

Намного более правильно работать с этим «диском» с помощью его родных утилит, которые корректно работают с TrueFFS. После того как я отформатировал диск родными утилитами, можно было перенести систему, отсоединить плату контроллера дисков и оставить только видеокарту и мою самодельную платку.
Удивительно, но это работает!

Ничего лишнего: только материнская плата, видеокарта и DOC
Самое забавное, что при загрузке BIOS не видит никаких подключённых носителей: ни флоппи, ни жёстких дисков. Но несмотря на это, всё равно идёт загрузка DOS. Лучше всего посмотреть на видео.
❯ Не всё так гладко с этим DOC…
На самом деле, не всё так гладко. То ли мне не повезло с микросхемой, то ли какая-то другая проблема, но DOC глючил. Он не всегда успешно загружался на моей плате, так и на железе, которое умеет работать с DOC из коробки (имеет аппаратную и программную поддержку в системном BIOS). То есть выглядело так, BIOS TrueFFS стартует, но диска при загрузке не видит. После перезагрузки стартует нормально, потом снова не видит. С чем связано – непонятно.
В какой-то момент при загрузке начались артефакты с запуском программ, а при переходе в папку увидел такое:

Так выглядит смерть жёсткого диска
И после этого загружаться он отказался. Спасло только форматирование его штатными утилитами. Что это было – я не знаю. Сетую на то, что у меня одна из первых версий микросхем, возможно, она немного сырая.
❯ Замена DiskOnChip на EEPROM
Hо перед нами прогресс открывал все пути,
И, бросив старых друзей ради новых ХТ,
Мы выжимали, что можно, из DOS и из архитектуры,
Меняли коды команд, трассировали INT’ы
Дизассемблировали BIOS и писали в порты
То, что я б не позволил печатать на месте цензуры.
Мне всё же хотелось продемонстрировать, что вместо DOC можно поставить обычную ROM микросхему, и это решение будет работать. В результате это вылилось в столь громадный квест, что потянет на ещё одну статью, а то и не одну. Там пришлось дизассемблировать основной BIOS, была попытка запустить его в qemu и много других забавных экспериментов. Но всё же, оставлю это всё самое интересное за кадром, и расскажу суть.
В качестве микросхемы ПЗУ взял EEPROM SST 29EE512 просто потому, что она у меня была под рукой, и была pin-to-pin совместима с DOC. Внимательный читатель заметит (хотя уверен, что таких нет), что это та же самая микросхема, которую я использовал в статье «Пишем свой ROM BIOS». Для корректной работы 64КБ ROM в области памяти 8 КБ, нужно посадить неиспользуемые старшие адреса на землю. То есть, фактически мы превращаем микросхему в 8 килобайтную EEPROM.
В процессе экспериментом выяснилось, что БИОС на материнской плате пытается писать в EEPROM, и, таким образом, портит её содержимое. Для того чтобы этого не происходило, доработал переходник, удалив контакт с сигналом разрешения записи WE.


Больше переходников, богу переходников!
Изначально планировал попробовать точно также запустить BASIC-ROM, но как я не бился, так и не смог его стартануть. То есть, видно, что происходит успешная инициализация, системный BIOS «зависает» без ошибок, значит переход на код ПЗУ состоялся, о чём также свидетельствовали POST-коды. Но ничего больше не происходило. В отчаянной попытке я начал искать JTAG-отладчики для 386 архитектуры, пытался запустить BIOS материнской платы в qemu, но всё тщетно. Идей, как отлаживать подобные BIOS у меня пока нет. Хотя задача, крайне интересная, как же заниматься отладкой различных расширений BIOS.
Обращаю внимание, что в qemu c SeaBIOS и на другой материнской плате, с EPROM на PCI-карте всё прекрасно работало.

Установленная микросхема ПЗУ, вместо DOC
В конце концов, я не нашёл выхода из этой ситуации, поэтому решил идти по более простому пути и запустить ROM HELLO. К слову сказать, в том коде я тоже обнаружил ошибку.
Как оказалось, после того как я посчитал контрольную сумму, оставшиеся байты надо было сделать равными нулю. Чтобы в результате общая сумма давала нуль. И мне сильно повезло, что на PCI тогда этот код завёлся. Вообще, то что на PCI плате это работало – чудо, потому что потом я внимательно прочитал стандарты, он не должен был работать никак. Исправление этой ошибки запуску BASIC не поспособствовали.
В результате всех мытарств, которые по времени заняли больший и наиболее сложный промежуток, чем эксперименты с DOC, мне удалось на этой же плате стартануть мой самописный BIOS.

Успешный запуск на материнской плате Pentium
Это, конечно, очень интересное колхозничество, но что насчёт промышленных железок, будет ли оно работать и там?
❯ Тест на железе с панелькой под DOC
Всё это забавно и хорошо, хочется попробовать запустить реальное железо, которое имеет поддержку DiskOnChip прямо из коробки. Специально для этого прикупил себе старинный тонкий клиент Light System LG8101, внутри которого есть панелька для DOC.

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

Эта железка имеет поддержку DOC на уровне BIOS, так что запуск TrueFFS-BIOS не требуется. Обратная сторона этой поддержки в том, что сюда не получится вставить свою ROM-память, эта панелька предназначена только для микросхемы DiskOnChip (да, я попробовал вставить туда свою ROM, но ничего не произошло).

Выбираем в BIOS загрузку с DOC
После всех манипуляций система будет успешно загружена с этой микросхемы, будто бы там установлен обычный жёсткий диск.

Успешная загрузка тонкого клиента с установленной микросхемы DiskOnChip
❯ Заключение
Удивительно, но многие из вас не знают, что первые SSD-накопители появились аж в 1995 году, и даже вполне себе успешно применялись и использовались. Их высокая стоимость и малая ёмкость привели к тому, что рядовые пользователи не могли встретить их в своих ПК. Однако нашли широкое применение во встраиваемых системах, либо там, где не требуется частая запись на диск, как, например, тонкий клиент. Их могли использовать также в игровых автоматах или станках.

Условный игровой автомат на DiskOnChip
Тем не менее широкого распространения они так и не получили. Впоследствии дешевизна и расширение рынка CompactFlash свели на нет эту перспективную разработку. К её недостаткам также следует отнести, что она довольно медленная, так как работа идёт через маленькое окно в 2 КБ.
❯ Полезные ссылки:
❯ Благодарности:
Выражаю большую благодарность MaFrance351 в поддержке с этим проектом. Он раньше меня разобрался с DOC, и помогал потом мне советами и ссылками. Как минимум половину ссылок в этой статье получил от него.
P.S. Поскольку в рамках одной статьи невозможно рассказать обо всех тонкостях, то некоторые заметки на полях буду публиковать у себя в телеграмме.
Подпишись на наш блог, чтобы не пропустить новые интересные посты!

Топ 10 бесплатных сайтов по программированию
Программирование становится все более востребованным навыком в современном мире, и все больше людей стремятся научиться кодированию. Однако, не все готовы потратить деньги на покупку дорогостоящих учебных материалов или курсов. Счастливо, существует множество бесплатных ресурсов, которые помогут вам освоить программирование без лишних затрат. В этой статье мы рассмотрим топ 10 бесплатных сайтов по программированию, которые помогут вам начать свой путь в мире кодирования.
Codecademy (https://www.codecademy.com/)
Codecademy — один из наиболее популярных сайтов по программированию. Он предлагает широкий выбор курсов, которые охватывают различные языки программирования, включая Python, JavaScript, Ruby, HTML, CSS и многие другие. Все курсы Codecademy бесплатны, но для получения доступа к некоторым дополнительным возможностям сайта требуется платная подписка.
Coursera (https://www.coursera.org/)
Coursera — это образовательная платформа, которая предлагает бесплатные курсы по программированию, разработке веб-сайтов, анализу данных и многому другому. Среди доступных языков программирования на Coursera можно найти Python, Java, C++, JavaScript и многие другие. Курсы на Coursera разработаны университетами и компаниями по всему миру.
edX (https://www.edx.org/)
edX — это еще одна образовательная платформа, которая предлагает бесплатные онлайн-курсы по программированию и другим темам. Курсы на edX предоставляются ведущими университетами, включая MIT, Harvard и Berkeley. Среди языков программирования, которые можно изучить на edX, находятся Python, Java, C#, JavaScript и многие другие.
FreeCodeCamp (https://www.freecodecamp.org/)
FreeCodeCamp — это некоммерческая организация, которая предоставляет бесплатные курсы по программированию и разработке веб-сайтов. Она известна своим курсом по полному стеку веб-разработки, который включает HTML, CSS, JavaScript, Node.js и другие технологии.
W3Schools (https://www.w3schools.com/)
W3Schools — это сайт, который предоставляет обучение веб-технологиям, таким как HTML, CSS, JavaScript, SQL и многие другие. Этот сайт является очень популярным среди начинающих веб-разработчиков, так как он предлагает краткие и понятные уроки, а также многочисленные примеры кода.
Khan Academy (https://www.khanacademy.org/)
Khan Academy — это некоммерческая организация, которая предоставляет бесплатные образовательные ресурсы для учащихся всех возрастов. Она предлагает бесплатные курсы по программированию, включая JavaScript, HTML/CSS, SQL и многие другие. Khan Academy известна своими понятными и доступными уроками, которые могут быть использованы как начинающими, так и продвинутыми учащимися.
Mozilla Developer Network (https://developer.mozilla.org/)
Mozilla Developer Network (MDN) — это сайт, который предоставляет бесплатные ресурсы для разработчиков веб-сайтов. MDN предлагает обширную документацию по HTML, CSS, JavaScript и другим веб-технологиям, а также множество уроков и примеров кода.
Udacity (https://www.udacity.com/)
Udacity — это образовательная платформа, которая предоставляет бесплатные и платные курсы по программированию и другим техническим темам. Udacity сотрудничает с компаниями, такими как Google, Facebook и Amazon, чтобы создавать курсы, которые соответствуют современным требованиям рынка. Среди языков программирования, которые можно изучить на Udacity, находятся Python, Java, JavaScript и многие другие.
GitHub (https://github.com/)
GitHub — это онлайн-хранилище, которое используется разработчиками для хранения и совместной работы над проектами. На GitHub вы можете найти множество бесплатных проектов с открытым исходным кодом, а также участвовать в совместных проектах с другими разработчиками.
Stack Overflow (https://stackoverflow.com/)
Stack Overflow — это сайт, который предоставляет ответы на технические вопросы, связанные с программированием и другими техническими темами. Стек переполнение является очень полезным ресурсом для начинающих программистов, так как он содержит ответы на множество вопросов, которые могут возникнуть в процессе изучения программирования.
Большая подборка книг по программированию у нас в телеграме, подписывайся!

Свежий Android на 9 летнем железе: Сможет ли смартфон 2016 года оставаться актуальным в 2023 с кастомной прошивкой?
Ребята из Google проделали огромную работу по популяризации Android на массовом рынке и поспособствовали появлению смартфонов в самых разных ценовых сегментах. Ведь разработка своей мобильной ОС — это многомиллионные вложения, плюс серьёзные проблемы совместимости (вспоминаем нулевые и подбор асек и игр под экраны/платформы). Однако годы идут и несмотря на довольно долгую поддержку предыдущих версий Android, со временем даже флагманы умудряются устаревать, чего уж говорить о девайсах среднего сегмента. В качестве подопытного, у нас выступит бюджетный смартфон Samsung Galaxy J5 на Android 6 Marshmallow. Сегодня мы с вами: немного вспомним историю моддинга девайсов, накатим кастом без сервисов Google и узнаем, способен ли смартфон с железом 9 летней давности стать устройством на каждый день. Интересно? Тогда добро пожаловать под кат!

❯ Предисловие
Многие мои читатели помнят период рассвета Android смартфонов, а именно 2010-2011 год. Открытость ОС от Google, а также лёгкость разблокировки загрузчиков мотивировала энтузиастов активно модифицировать свои девайсы. Android уже к версии 2.1 была достаточно удобной и приятной системой, особенно вкупе с интерфейсными фишками от лидеров рынка: HTC, Samsung, LG. Однако, голодному до приключений пользователю всего этого было мало!
Android смартфоны практически нереально было полностью «окирпичить» (исключение — чипсеты Tegra, на которых не сразу научились бэкапить зашифрованные разделы) и пользователи делали самые разные модификации. Причём касались они как части ядра и хардварного моддинга: модификация драйвера cpufreq (разгон чипсета), компиляция ядра с поддержкой swap (увеличение доступной ОЗУ за счёт ПЗУ), «горячее» переключение governer’ов (набор правил, определяющий как Linux будет распоряжаться ресурсами системы в разных ситуациях). Так и по части UI: нельзя сказать, что увидеть интерфейс Samsung TouchWiz на HTC было редкостью. Ну или HTC Sense на мотороле или интерфейс а-ля iOS 5! На очень многих девайсах стояла только-только набирающая обороты, но уже завоевавшая сердца владельцев мощных девайсов MIUI:

MIUI 2.3. Что-то она мне напоминает, но вот что. =)
Темы на профильных форумах набирали сотни страниц, а разделы с кастомными прошивками на девайсы иногда делились на отдельные темы. Только в топике о Galaxy S2 на 4pda были отдельные темы с прошивками, основанными на 2.3, на 4.0, на Ubuntu Touch и отдельная тема с украшательствами. Новички приходили, читали FAQ (или не читали) и спрашивали более опытных юзеров, которые уже создавали т.н «кухни» — название, пришедшее к нам со времен коммуникаторов на Windows Mobile! Кухни — сборная солянка из программ, необходимая для разборки прошивки и образов системы, дальнейшей модификации и запаковки. Таким образом, стало возможно изменять рамдиск, сделать автозагрузку каких-то сервисов или программ или даже грузиться с SD-карты.

В какой-то момент, некоторые люди для себя выделили главного врага всех тормозов Android — сервисы Google. С годами они заметно «разжирались», а многие программы требовали их для биллинга/показа таргетированной рекламы/API карт и т. д. Жирели они с каждым годом, отъедая не только драгоценную на то время внутреннюю память, но и продолжая работать в фоне со своими сервисами и занимая ресурсы.
В какой-то момент дошло до того, что с флагманского смартфона 2013 года, в 2017-2018 году уже было проблематично зайти в Google Play: всё начинало откровенно тормозить, пока обновлялись сервисы и сам Google Play. После завершения всех операций и скачивания обновлений, ситуация оставалась прежней. Два года назад, Google отключила какую-либо поддержку сервисов Google на Android 2.3, но и с минимально поддерживаемых 4.0-4.1 пользоваться ими очень проблематично. Например, iPhone 5s на своей последней iOS 12 пока что относительно хорошо себя чувствует в AppStore, а устройства от BlackBerry так вообще летали, пока у них магазин был доступен!

К развитию использования Android без сервисов Google поддали «газку» санкции США в сторону Huawei: ребята не отчаялись и сделали свою инфраструктуру, а популярность 4х-5и летних «хуавеев» на вторичке только доказывает, что всё у них получилось хорошо!
Данным образом и получились таким проекты, как microG — миниатюрная замена API сервисов Google, достаточной для запуска YouTube и других необходимых приложений.
К сожалению, я заметил тенденцию, что люди больше стали «потребителями» девайсов, не стремясь продлить им жизнь. Хотя такая возможность обычно есть и любимый девайс может ещё отлично послужить если не моим читателям, то их детям или родителям. При том, что во многих случаях потребуется не более часа времени.

Сегодняшним героем станет «народный» смартфон от Samsung 2016-2017 года — Galaxy J5 2016! Это довольно неплохой девайс, работающий на 4х ядерном чипсете девятилетней выдержки — Qualcomm Snapdragon 410, с графическим ускорителем Adreno 305, 2гб ОЗУ, 16гб ПЗУ и Android 7.0 в качестве ОС. Данное устройство было представлено в среднем ценовом сегменте и стоило около 15 тысяч рублей на 2016 год. Его сегодняшний аналог в этом сегменте: Galaxy A23. Благодаря относительно невысокой цене на девайс и адекватной поддержке (смартфон получал апдейты с 6.0 до 7.0), гаджет часто покупали вместо iPhone 6 со вторичного рынка, а в последующие годы устройство продолжало котироваться на вторичном рынке, оставаясь относительно востребованным и сейчас. Средняя рыночная цена — 1.500-2.000 рублей за рабочее устройство с AMOLED дисплеем. Устройство с китайским IPS аналогом будет стоить около 1.000 рублей (если вам об этом честно напишут).
Мне же этот девайс достался за 200 рублей. Женщина продавала два смартфона за 400 рублей, пометив их как «на запчасти»: Galaxy Y (о котором была статья) и J5. Ей было жалко выкидывать их и она выставила девайсы на известной онлайн-барахолке. Так получилось, что эти девайсы должны были попасть ко мне: я написал одним из первых, хотя сколько же людей навалилось ей в личку!
Толкнув АКБ и обойдя привязку к аккаунту Google (я описывал способ в статье про j3), я начал пользоваться девайсом как своим основным.
С J5 я ходил с апреля 2022 года по октябрь, сменив его на Galaxy S4 Mini, который подарил мне читатель хабра. Недавно я пересел на «большой» Galaxy S4: уж очень он мне нравится!
❯ Прошиваем девайс
Большинство смартфонов на Snapdragon 410 не требуют даже разблокировки загрузчика! Во многих смартфонах Samsung тех лет максимум ограничений — это надпись «set warranty bit recovery» при загрузке и отключение Knox и Samsung Pay. Те, кто ставил прошивки раньше, наверняка найдут процесс установки нового софта до боли знакомым:
Прошиваем рекавери TWRP;
Закидываем во внутреннюю память архив с прошивкой;
Прошиваем архив через Install ZIP;
Делаем wipe cache/wipe data.
Ничего не поменялось с 2011! Для скачивания файлов с 4pda нужна регистрация — иначе будет ошибка 404.
Для прошивки «recovery», нам пригодится фирменный флэшер Samsung —Odin. Odin используется в смартфонах от Samsung с самых первых их устройств на Android и сам по себе очень удобен.
Кроме того, нам понадобится самTWRP.
Запускаем Odin, нажимаем на AP и выбираем TWRP.
Теперь нам нужно ввести девайс в режим Odin. Для этого можно либо нажать громкость вниз + домой + включение, а затем нажать громкость вниз, либо если по каким-то причинам кнопки громкости не работают, можно перезагрузиться используя adb:
adb reboot bootloader

Подключаем девайс к ПК, Odin должен увидеть устройство. Нажимаем Start и прошиваем устройство. После этого, копируем архив с прошивкой во внутреннюю память и обязательно выходим из аккаунта Google. В TWRP можно зайти сочетанием громкость вверх + включение, или если не работают кнопки громкости — с помощью adb reboot recovery.
Делаем вайпы на 4х разделах: ART Cache, Cache, Data и System. Internal memory трогать не нужно — это внутренняя память устройства. Идём в Install ZIP -> выбираем архив и свайпаем слайдер.
Для J510H нужно установить другое ядро, см. в линке на 4pda

После перепрошивки, девайс перезагружаем и видим меню LineageOS! Я выбрал именно «линейку», поскольку привык к CyanogenMod-подобным кастомам, они максимально чистые и шустрые. Теперь мы лишились NFC и VoLTE, но получали свежую версию Android.

❯ Как работает девайс теперь?

В «линейке» нет блоатвари, по умолчанию тут нет даже GApps (которые можно поставить отдельно). Именно поэтому, девайс летает как ракета во всех повседневных задачах. Установлен минимально-необходимый набор приложений: телефон, браузер, сообщения, контакты. GApps можно поставить отдельно, либо выбрать другой магазин приложений. Например F-Droid


Давайте ещё раз вспомним вводные данные: мы имеем 6-летнее устройство, с чипсетом 9-летней выдержки на Android 10 без GApps’ов. И в базовых задачах он бегает очень хорошо: мессенджеры, соц. сети, музыка — всё это работает на достойном уровне. Хотя о играх придётся забыть — Adreno 305 в HD даже GTA Vice City тянет лишь в 50% разрешении.


А ещё, кастомная прошивка добавляет Always on Display, который очень актуален на OLED дисплеях. Теперь девайс даже не нужно разблокировать, чтобы получить последние уведомления:

Характеристики устройства выглядят ультрабюджетными в наше время, девайс не наберет много очков в синтетике. Однако он всё ещё мощнее устройств до 6.000 рублей из ближайшего DNS, которые работают на базе MT6580/MT6735, за исключением GPU (Mali показывает себя гораздо лучше). Но синтетика и реальное использование — разные вещи. Редмики в синтетике гораздо мощнее Snapdragon 410 и чего толку, если MIUI отжирает все их ресурсы!? Кстати, пользователи старых редмиков — эта статья наглядный повод прошить инженерку/кастом.

Поскольку у меня нет GApps’ов, в качестве клиента YouTube я использую NewPipe. Это быстрый и легкий клиент, который местами гораздо удобнее официального. Девайс спокойно «переваривает» видео 1080p. Взамен, мы теряем возможность комментировать и управлять каналом, но если вы вдруг ведете свой канал — может поставить Vanced и microG. Я же предпочитаю не пользоваться сервисами от Google вообще.


В качестве клиента ВК, я предпочитаю использовать Kate Mobile. В целом, некоторые люди продолжают пользоваться VTosters и прочими модами, основанными на базе старых и шустрых версий оф. клиента ВК. Листание ленты и прослушивание музыки удаётся девайсу на ура — скроллинг очень плавный, а благодаря наличию LTE — ресурсы загружаются весьма быстро.
С Telegram проблем нет, но я пользуюсь им для общения. Я не знаю как он себя поведет, если вам прилетает 100 пушей в минуту с новостных каналов 🙂

Сёрфинг девайсу даётся отлично. Android 10 ещё долго будет поддерживаться, никаких проблем с сертификатами нет. Хабр грузится не быстро, но лагов при прокрутке нет вообще. В бенчмарках тоже всё неплохо.

Фотовозможности девайса весьма средние. В целом, фотографирует он не так уж и плохо, но только в руках нормального фотографа. Насколько я знаю, есть возможность установить камеру с Google Pixel — там скорее всего всё будет гораздо лучше. Стандартное приложение не блещет возможностями, но запечатлеть момент сможет без проблем.

А вот с играми вопрос обстоит заметно хуже. И всё упирается в GPU. Это не значит, что тут не во что поиграть: игрушки до 2014 он тянет отлично. Почему бы не вспомнить мобильную классику и не поиграть в Dead Trigger, Cut The Rope или, например, GTA 3?
Эмулятор PSP идёт плохо, но Dreamcast/N64/PS1 должны работать очень хорошо. Что занимательно — несмотря на то, что Snapdragon 410 — 64х битный чипсет, ОС под него скомпилирована 32х битная. А значит никакого эмулятора GameCube!
Есть поддержка Miracast через Wi-Fi. Эта фишка тут работает отлично.
❯ Выводы
Конечно, если стоит выбор бюджетного БУ устройства, то можно добавить еще 2-3 тысячи рублей и купить, например, флагманский Galaxy S6/S7. Но поскольку J5 были очень популярными в своё время и у многих продолжают лежать, а у вас появилась необходимость во втором смартфоне, или даже основном, то у такого девайса куча неоспоримых плюсов:
+ Super AMOLED дисплей HD разрешения за копейки. Это серьёзный плюс для большинства людей: амоледы яркие и приятны большинству глаз. Их хорошо видно на солнце. Однако, некоторые люди чувствительны к таким дисплеям и их глаза могут через время уставать.
+ Относительная ремонтопригодность. Оригинальные AMOLED модули стоят весьма дорого, а поскольку самая частая неисправность всей J линейки — это битые модули, то найти за пару сотен рабочего донора и перекинуть плату не составляет никаких проблем. Плюс, китайцы наконец-то научились копировать контроллеры Samsung и делать IPS/TN дисплеи, совместимые с оригиналами.
+ Большое количество кастомных прошивок на самый разный вкус. Тут и PixelExperience со всеми фишками Google Pixel, и гибкий crDroid, и LineageOS. Благодаря не заблокированному загрузчику, мы можем устанавливать что захотим в пару кликов!
+ Поддержка MicroSD. Это звучало бы дико несколько лет назад, но здесь всё ещё есть поддержка флэшек, плюс встроенные 16гб памяти. В целом, этого хватает для комфортного пользования.
+ NFC и приложения банков. Тут всё работает без каких либо проблем, но на части кастомов NFC не работает. Плюс, после установки кастомного рекавери вы навсегда теряете доступ к Samsung Pay и Knox! Однако я не могу сказать, что будет через год после написания этой статьи. Сбер, например, постоянно жирнеет и начинает лагать даже свежих среднебюджетках, а СБП нет в браузерной версии. Задумываюсь о смене банка.
А так же, хотел бы отметить следующие минусы:
— Хрупкий дисплей. Это частая проблема AMOLED дисплеев — у них слишком тонкая воздушная прослойка между тачскрином и самим дисплеем. Тут уж как повезет — от падения на асфальт дисплей либо не выживет (и не будет вообще ничего показывать, малейшее повреждение матрицы на оледах вызывает неработоспособность всего дисплея), либо треснет тачскрин, либо появятся пятна на дисплее. Плюс, нет возможности замены тачскрина отдельно — только модуль в сборе.
— Выгорание дисплея со временем. Это не критично, у меня S4 с выгоревшими участками выглядит нормально, но кому-то может быть неприятно. Но поскольку девайсу 6+ лет, неизвестно сколько им пользовались до этого.
— Слабенькая АКБ и отсутствие поддержки быстрой зарядки. Девайс относительно долго заряжается. Хотя возможность замены АКБ снятием задней крышки частично компенсирует этот недостаток.
— Слабый GPU. Только старые игры, ребенку может не понравится, но кто-то из читателей найдет в этом плюс. Нечего в геншины всякие играть!
В одной из следующих статей, я расскажу вам как портировать кастомную прошивку на свой девайс самостоятельно, в пределах чипсета. А вы как считаете, есть смысл накатывать кастом?
Подписывайтесь на меня и TimeWeb Cloud, чтобы не пропустить новые регулярные статьи о различных девайсах. Возможно, вам будут интересны другие мои статьи по теме мобилок:
Сегодня мы установили уже готовую и протестированную кастомную прошивку. В следующей статье, я хочу рассказать вам, как можно портировать прошивки между устройствами на базе чипсетов MediaTek. Гайд может пригодится владельцам свежих бюджетных реплик с алика а-ля P20 Pro, P30 Pro, Welcome 12 Pro Max, и других подобных девайсов, которые на стоковой прошивке сильно лагают или появились баги, которые не лечатся сбросом до заводских, а родную прошивку найти не представляется возможным.