Сообщество - Лига программистов
Добавить пост

Лига программистов

1 538 постов 11 434 подписчика

Популярные теги в сообществе:

Как я пикабушников бесплатно java учил

Как я пикабушников бесплатно java учил Программирование, IT, Обучение, Java, Длиннопост

Полтора месяца назад я сделал два поста(Бесплатные курсы по java, Бесплатные курсы по java продолжение набора), в котором приглашал на бесплатное обучение java , тех кто уже знает основы, чтобы показать как разрабатываются промышленные приложения.

Предлагаю отчет об обучении: как это было, что нового извлек и что будет дальше (спойлер: новые курсы в конце поста).


Формат обучения

Курс предполагал занятия 3 раза в неделю: в среду в 20:00(МСК), субботу и воскресенье в 15:00. Занятия проходили по 2 часа, в google meet. Структура урока была следующая: я рассказывал 30 минут теорию, с демонстрацией в миро, а дальше один из участников курса расшаривал экран (показывал свой экран другим), и все вместе пытались реализовать наше приложение.


Цель обучения

Создать web приложение, которое является справочником вкусовых предпочтений людей.

Есть справочник существующей еды (банан, яблоко, помидор...), и есть список людей, у которых указан их любимый продукт из справочника. Мы должны были иметь возможность с помощью http запроса добавлять/удалять/получать/изменять наш справочник и список людей. Для упрощения обучения вместо реляционных баз данных, были выбрано хранить данных в файлах csv. Технологии которые использовали на проекте: Java 11, maven, lombok, junit, mockito, spring boot, spring web, git + github.



Этап 1: Набор

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

Так же поставил для себя лимит в 12 человек.

Соотношение готовых потянуть и не готовых было 50/50. Задавал следующие вопросы: чем static метод отличается от не static, разница между интерфейсом и классом, ключевое слово final, что такое Map, List.

Если человек совсем плохо отвечал, то говорил ответы на заданные вопросы, далее предлагал подтянуть теорию и ожидать следующего курса.

Если отвечал средне, то задавал доп вопросы, и старался понять как человек мыслит. Обычно эта категория проходила в набор.

Если все хорошо, то сразу предлагал присоединиться к нам.


После первого поста мне написало 10 человек, после второго около 20. Были и интересные люди, которые писали, но как только ты им отвечал, они сразу испарялись. Кто то не успел.

В результате записалось 12 человек (10 с пикабу + 2 с других источников). Перечислю некоторых пикабушников: @maximysUA, @VoodoomanRUS, @VitMGN, @RntNgn, @EnotOrNot.


Этап 2: Обучение

На 1 этапе, я создал группу в телеграмме, где опубликовал список необходимых программ для установки. Все благополучно справились с задачей (Отдельно хочу выделить человека, который стал душой чата и помогал всем: Дмитрий @VoodoomanRUS), и в субботу началось первый урок.

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


Были темы, которые прошли относительно легко - например git, lombok, работа с maven. Были темы, которые тяжело зашли: spring core, mockito, создание взаимодействия слоёв приложения. Во первого касания spring core, была гробовая тишина, и складывалось ощущение, что никто ничего не понял, но во время практики ученики развенчали этот миф).


В какие то моменты между уроками, приходилось еще раз объяснять основы java, потому что внезапно оказывалось непонимание базовых тем. Так же много времени уделялось работе в Intellij idea: горячие клавиши, как работать с гитом через idea, как рефакторить код и тд. Чуть чуть коснулись команд bash - cd, mkdir, touch, cat, echo.


Познакомились с жизненным циклом сборки проекта в maven, как подключать зависимости, плагины и тд... Написали unit и интеграционные тесты (к сожалению времени не хватило на данный функционал). Создали все слои приложения: Repository, Service, Controller.

Создавали http запросы разных видов через приложение Insomnia, чтобы тестировать наше веб приложение.


В группе были двое человек, которые значительную часть времени смотрели уроки в записи, но по их утверждениям все поняли). Весь код отправляли мне на репозиторий. За 13 уроков мы написали приложение (в котором я не написал руками ни одной строчки кода), и счастливо расстались друг с другом.


Проблемы обнаруженные мной:

1. Первоначально, я отказался от домашней работы и планировал давать только тем, кто не понял материал. Это оказалось ошибкой, ибо тяжело понять, понял ли человек материал, пока он не сделает сам задачу. Те кому задавал домашки, кидали мне свой код (делали pull request в мой репозиторий) и я давал комменты.

2. Еще одной проблемой стало качество видео, когда участник шарил экран, а инет у него был слабый. Из за этого качество записи снижалось, и пришлось встречаться за 15 минут до занятия, и смотреть у кого качество приемлемое.

3. Не хватило времени на рефакторинг проекта, написания тестов на весь функционал.

4. Поверхностно коснулись spring

5. Разные уровни у людей: когда ученик с более хорошим уровнем java писал код, часто другие не успевали за полетом его мысли.

6. Нехватка знаний по java core у некоторых учеников.

7. Не успели на практике использовать Generics


Итог:

1. По результатам курсов, я понял, что обучать людей мне нравится.

2. Нужно сделать несколько курсов, чтобы была возможность обучать людей с нуля: java core + git -> java collections + generics + lombok -> spring web app


Новые курсы

Передо мной встала дилемма: объявить о начале платных курсов или наработать еще опыта, чтобы выйти в свет со всеми курсами. И тут я вспомнил про эксперимент одного ресторана в Великобритании: а что если каждый сам решит, сколько стоит пройденный курс!

Поэтому приглашаю всех желающих, на обучение с нуля Java, где после окончания курса вы сами определитесь сколько стоит мне платить!

Старт нового курса 1 июня, в 20:00 по МСК, два раза в неделю: в среду 20:00 и в воскресенье 15:00.

ВНИМАНИЕ: Курс для новичков (будут только java core + git). Если у вас есть база, следите за моими постами.

За подробностями в телеграм @ablazzing

Показать полностью

Яндекс Практикум. Профессия веб разработчик. Как происходит сдача проекта?

Мысли для тех, кто "Войти в IT", "свитчер", "как начать в АйТи" и пр

Довольно много постов промелькнуло с примерно одинаковыми вопросами: "хочу войти в IT, но не знаю как". И я подумал, что могу поделиться немного своим опытом и мыслями на эту тему. Возможно кому-нибудь поможет, а может инет.


Все написанное ниже - личный опыт и субъективное мнение, не является абсолютной истиной. Если будет полезно хотя бы одному человеку - цель достигнута.


Пару слов о себе, потому что это важно будет для тех, кто меняет работу, да и чтобы не было сильно обезличено. Тем, кто учился/учится на IT специальности, скорее всего, изложенное ниже будет не интересно потому, что у них уже есть очень хорошая база для старта. Скорее, будет интересно тем, кто был “около” IT или вовсе не в АйТи. И так, всем привет и я не настоящий программист, не настоящий Айтишник, “свитчер”, тот на кого обладатели степени Msc Computer Science иногда смотрят сверху вниз. Но, тем не менее N лет назад я жил в России и был “инженером” в сфере связанной с железными дорогами с нормальной зарплатой ( году в 2013 было чуть больше 100т.р., в мес машина, брак(хреновый), ипотека… но это совсем другая история) и … что-то всё достало, что я понял, что нужно менять жизнь. Причем очень кардинально. И поменял всё… вообще всё. Процесс от: “кажется пора что-то менять - первая работа джуном” занял у меня около 2х лет без отрыва от работы. Последний год был в режиме: пару часов занятий на работе, пока никто не видит и дома с 19-00 до 23-00 каждый день + выходные. Сейчас я, условно, “Java developer” в довольно прикольном стартАпе, живущий в Берлине отличной новой жизнью. Как видите, поменялось многое и несколько раз. И, что более важно, собрался достаточный опыт работы работы в разных компаниях с разными проектами, а также менторинга.


Начать предлагаю с определения целей в жизни. И ответов на несколько вопросов. Основной, как я думаю - для чего вы хотите войти/перейти в IT? B и стоит на него ответить честно, хотя бы для себя. Потому что многие всё же лукавят, что работают потому что им это “очень нравится”. В этом легко убедиться просто понаблюдав. Например, если спросить у разработчика почему он не переедет, например в Европу - очень многие скажут, что в там у них будет меньше денег (что правда). И почему не думаю, что с профессиональной точки зрения там более крупные IT хабы и больше шансов получить более интересную работу. Или другой пример - если бы в IT работали не ради денег - з.п. так бы не росла. Но, конечно и существует довольно много исключений. Но таких всё же не большинство. И всё же стоит лично определиться с этим вопросом, потому что от ответа на него будет очень сильно зависеть дальнейший путь. Особенно актуально для “свитчеров”.


И так, если ваш ответ всё еще - “мне это нравится, я обожаю всё связанное с IT” - вам не стоит дальше читать, потому что вы и так всё знаете :)


Я же дальше уделю внимания более приземленным целям: сменить сферу деятельности для улучшения качества жизни и выгорание/тупик в текущей карьере и кардинальное изменение своей жизни (не обязательно в лучшую сторону, кстати).


Это был первый важный вопрос. Второй вопрос: а что вам нравится? От ответа на этот вопрос тоже зависит довольно много и в комбинации с первым вопросом, я вижу несколько вариантов:

Улучшение жизни + не принципиально что делать, монотонные задачи не сильно утомляют - в таком случае я бы обратил внимание на классический Enterprise. (java, c# и их инфраструктура)

-  Хочется чего-то более драйвового и молодежного - тогда лучше попытать счастье в JS, python и вообще в сторону Fullstack и искать работу в модных стартапах.

-  Хочется просто сменить сферу деятельности и сделать более легкий старт - Тестирование и Автоматизация тестирования.

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

-  Front-end… тут я ничего не могу сказать т.к. я им не занимался глубоко.


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

Дальше следует погружение в предметную область. Традиционно хорошим началом может стать вот такой универсальный набор:

-  CS50 course from Harvard University (есть в сети на русском)

-  Code: The Hidden Language of Computer Hardware and Software by Charles Petzold (так же есть на русском с названием КОД: тайный язык информации).


Курс дает представление о простых вещах из мира информатики. А книга расскажет в целом про работу электроники.

Серия книг Head First <что-нибудь>. Например, если вы идете по пути Java разработчика - Head First Java. Серия идеальна для новичка. Особенно если не просто читать, но и выполнять задачи из книги. Не стоит читать всяких Хорсманов или Шилдтов в самом начале. Они больше как справочники. А для более глубоко изучения есть авторы и лучше. Для Java тот же Брюс Эккель.

Когда будет освоена некоторая база, стоит почитать про Алгоритмы и структуры данных. Лафоре «Структуры данных и алгоритмы». Также стоит обратить внимание на серию книг “классика Computer Science”.


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


В связи с тем, что я всё же Java developer, дальше я уже не могу сказать ничего универсального, кроме того, что …. Ни что вам так не поможет, как наличие Ментора. Без ментора путь будет очень долгий и сложный, я проверял. С ментором будет проще. Ищите ментора, но скорее всего это будет платно… но это инвестиции, в дальнейшем это окупится так как ментор позволит прилично времени сэкономить :)


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

Но я могу продолжить и рассказать про путь Java/Enterprise Java разработчика, если кому будет интересно. ну дальше тут должна быть реклама каких-нибудь курсов….

<xxx>… курсы <SuperGeekSkillХрень> записывайтесь, платите нам и мы заработаем….</xxx>


Стоит ли идти на курсы? Я бы не советовал. Если только это не Академия Яндекса или курсы от JetBrains. Как же у меня бомбит с блогеров, которые рекламируют курсы, какую херню они впаривают людям это просто жесть. Просто реальный обман. Очень грустно.


P.P.S. Помню, когда ещё работал в России пару лет назад, и мы собеседовали кандидатов (и не только мы..) многих отсеивали просто потому что после курсов. Почему отсеивали - люди вообще ничего после них не знали. Нет, они знали как отвечать на некоторые вопросы. Самые крутые ребята на собеседованиях были те, кто сам учился, без распиаренных курсов. Это просто самородки были. Они реально очень старались и реально очень много учили. Их всегда было приятно собеседовать, а потом встречать уже на работе :)

Показать полностью

Сколько аналитиков столько и мнений

Заметил интересную закономерность, что сколько бы не отправлял документы на посмотреть коллегам и какие они бы не были хорошие на мой взгляд, всегда есть какие-то комментарии в них.

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

И в этом всем, главное одно, не принимать все за чистую монету, а обсуждать и узнавать, почему твой коллега думает так, а ты иначе.

Мне кажется, что именно в эти моменты ты растешь, как со стороны hard так и soft навыков.

Помогите достать субтитры из видео на сайте

Помогите извлечь субтитры из видео на сайте
Данные для входа:
Логин: kogibi6193@akapple.com
Пароль: dizzying-barrage-35

Правильные умножители(окончание)

Чтобы уже закончить тему с умножителями.

Указанные в предыдущей теме(см. Решение головоломки про умножение ) умножители обеспечивают минимальное время выполнения, но к сожалению, трудно расширяемы. То есть для умножения трёхбитных чисел надо придумывать схему почти заново. Даже сами схемы выглядят как-то по кустарному – нет в них что ли симметричности и красоты.

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

Логическую схему дешифратора можно найти даже в Википедии . Мы её несколько оптимизируем с учётом наших идеальных устройств А и В так, чтобы всё выполнялось за один такт.

Итак логическая схема умножения двух чисел будет представлять из себя следующее

Первый такт (дешифрация)

a11=A(a0,a1)

a10=B(a1,a0)

a01=B(a0,a1)

a00 – нет отдельной линии.

Второй такт(получение результатов умножения)

с3=A(a01,b01) or A(a11,b11)

c2= A(a01,b10) or A(a10,b01) or A(a11,b10) or A(a10,b11)

c1= A(a11,b10)* or A(a10,b11)* or A(a10,b10)

c0=A(a11,b11)*

Где

* - дублирующие линии

A(x,y) - это устройство А, которое на входе получает значения x и y

or – закороченные на выходе провода. Так как мы помним, что по условия у нас 1 сильнее 0

Наглядно, на рисунке это будет выглядеть так.

Правильные умножители(окончание) Головоломка, Процессор, Вычисления, Умножение

Если нам надо перемножить 2 числа на 3 бита, то получим

Четыре бита

Первый такт

a11_=A(a0,a1)

a10_=B(a1,a0)

a01_=B(a0,a1)

a11=A(a2,a3)

a10=B(a3,a2)

a01=B(a2,a3)

Второй такт

a1111=A(a11_,a11)

a1110= A(a11_,a10)

a1100=B( a11* or a10* or a01*,a11_)

a0011= B( a11_* or a10_* or a01_*,a11)

Таким образом за n тактов можно дешифровать 2^n битов.

Получение же результата после дешифровки всегда занимает 1 такт.

Итого, 32 битное умножение будет занимать 6 тактов. А 64 битное – 7 тактов.

Расплатой будет конечно огромное количество элементов, поэтому увы, данную методику всё же надо сочетать с традиционной – суммированием.

Показать полностью 1

Вселенная HelloIRainbow

Уважаю дисциплинированных и целеустремленных людей, даже если "у самурая нет цели, есть только путь".

На одном из курсов в вышке преподавали web-scrapping на Python. Решил воспользоваться знаниями посмотреть, что же там у нашего любимчика @HelloIRainbow: написал вчера пару скриптов и оставил на ночь дампить радужные картинки. Утром очень удивился: более 3100 радуг за 8 лет!

3125 постов с заголовком "Rainbow", в них 3121 уникальные картинки (1,7 Гб), из которых мне удалось обработать 3120: уменьшил разрешение до 128х128 и создал одну картинку-коллаж с разрешением 8320х6148.

Саму картинку можно скачать с я.диска (64 Мб) https://disk.yandex.ru/d/hvbBdViA_qls8A


Я пошел по простому пути "в лоб", можно было использовать OpenCV, NumPy и вот это все, но лень.

Если будет желание, можно подкрутить настройки и сделать коллаж с более высоким разрешением, исходники тут: https://github.com/leerdev/hellorainbow_scrapper


Всем мир и радугу! :)

Показать полностью

Готовы к Евро-2024? А ну-ка, проверим!

Для всех поклонников футбола Hisense подготовил крутой конкурс в соцсетях. Попытайте удачу, чтобы получить классный мерч и технику от глобального партнера чемпионата.

А если не любите полагаться на случай и сразу отправляетесь за техникой Hisense, не прячьте далеко чек. Загрузите на сайт и получите подписку на Wink на 3 месяца в подарок.

Готовы к Евро-2024? А ну-ка, проверим! Футбол, Тест, Евро 2024, Болельщики, ВКонтакте (ссылка)

Реклама ООО «Горенье БТ», ИНН: 7704722037

Начало обучения на программиста C#

Всем привет!

Вот и я решил обучаться на программиста. Мне 32 года и долгое время работаю PMом. От PMства устал уже, т.к. есть минусы:
1) Тревожность из-за незакрытых проектов (гештальты);
2) Большой спрос от начальства;

3) Нет нормальной удаленки, т.к. в офисе необходимо взаимодействовать с различными отделами.

Мне нравится направление IT и подумал: "А почему бы не стать разработчиком?". Если зайдет, то буду тут писать свой прогресс и что узнал по обучению.

Язык выбрал C#. Почему я его выбрал? Интересные направления. Мне интересна как бэкенд разработка ФинТех, так и Gamedev. Больше склоняюсь ко второму, но мне говорят, что направление очень сложное и возможен кризис в РФ с этим. Если кто-то в курсе, то расскажите в комментариях, как обстоят дела с GameDev сейчас. Было бы очень интересно узнать!


Пару недель назад купил курсы на Udemy по отличным скидкам:
1) Программирование на C#: от новичка до специалиста
2) Unity 2017 для начинающих - полный практический набор
3) Полный курс. Создание 2D платформера на Unity | 2020
4) Паттерны проектирования C# и .NET
Прикупил ещё книги Рихтера "CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#"и Боба Мартина "Чистый код".

Сейчас изучаю синтаксис и пытаюсь разобраться в общей теории. Обучение буду строить так: После изучения синтаксиса, сразу же придумывать проекты и начать писать код. Практика, практика, практика. При обучении дальше выберу направление.


Самый первый пост пока не информативный и учусь писать хорошо. Если сможете, то в комментариях дайте рекомендации по обучению. Мне это очень сильно поможет.

Показать полностью
Отличная работа, все прочитано!