Добро пожаловать на четвертую неделю программы Encora Apprentice Program.

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

Честно говоря, первый мне наиболее интересен, потому что я помню, когда искал код в своей школе, я видел в кодах такие вещи типа ‹T›, и я не знал, что это такое, и просто пропустил это решение. Теперь я знаю, что это такое. Речь идет об общих данных в Java, и это позволяет создавать классы, интерфейсы или методы, и вы можете использовать нужную вам переменную или вы хотите в ‹T›, вы можете указать эти данные в классе и методах. А когда вы собираетесь использовать методы, просто поставьте те примитивные данные, которые вам нужны в этот момент. Да, он разрешает только примитивные данные. И это так полезно для повторного использования кода! Это круто. Я надеюсь, что смогу использовать его часто, чтобы знать, как его использовать легче.

Воспользовавшись тем, что я сказал примитивные данные, я вспомнил типы данных в Java. Они бывают двух типов: примитивные и не-примитивные. Первый — когда вам не нужно вызывать данные для их использования или создания (int, long, short, byte, boolean, char, float, double) и второй необходимо вызвать, чтобы использовать его и создать, потому что это объект (объекты пользователя, строка, массивы, сканер, списки, обертки: целое число, байт, короткий, длинный, плавающий, двойной, символьный, логический. Эти последние похожи на примитивы, но в объекте).

И я тоже работал с интерфейсом, на самом деле, я думаю, что никогда раньше не использовал интерфейс, просто читал об этом в школе, но очевидно, что то, что вы не практикуете, будет забыто. Таким образом, это помогает создавать действия (методы) для его использования, но на нем нет кода. Когда вы вызываете объект интерфейса или класс, у него будут все методы, которые у вас есть в переопределении, поэтому вы можете реализовать нужный код. Так что очень полезно, когда у вас есть метод с одинаковыми параметрами, но с разным кодом для каждого случая.

Интерфейс очень похож на абстрактный класс, потому что оба могут иметь методы без кода и использовать его в других классах с нужным вам кодом. Но главное отличие в том, что абстрактный класс наследуется, и у него могут быть не только методы, но и переменные. Еще одно отличие состоит в том, что наследоваться может только один абстрактный класс, а в интерфейсах в классе может быть реализовано более одного. Класс, унаследованный от другого класса, называется суперклассом.

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

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

Я видел, читал и обсуждал со своим наставником информацию об основах HTML5 и CSS, о том, как это работает, в чем разница между одиночным HTML, типами ввода, семантикой, хранением и т. д. И что я вынес из информации, так это HTML5 — последняя его версия, и она лучше, потому что у нее больше совместимости, а также веб-поддержка или поддержка мобильных устройств. Кроме того, его семантику легче понять, он лучше структурирован и позволяет использовать больше входных данных.

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

И последнее, о чем я собираюсь рассказать, это хранение. В основном существует три типа локального хранилища, хранилища сеансов и файлов cookie. Локальное хранилище поможет вам сохранить вашу информацию независимо от того, закроете ли вы вкладку или навигатор. Хранилище сеансов потеряет вашу информацию, если вы закроете вкладки или навигатор. И файлы cookie помогают вам хранить большой объем данных, например, Netflix, он хранит фильмы, которые вы смотрели, потому что его алгоритму потребуются они, чтобы порекомендовать вам что-то. И это прекрасно.

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

Сет Ллойд сказал, что, по его мнению, первая обработка информации произошла во время Большого Взрыва, потому что это была информация обо всех существовавших там атомах, которые переворачивались и объединялись, создавая что-то новое, то есть часть новой информации.

Итак, внутри компьютеров информация также хранится в битах (0 и 1), а революция в обработке информации хранит биты и заставляет их так быстро переключаться, чтобы получить информацию.

И, как еще сказал Сет Ллойд, квантовые компьютеры — странная наука, они могут иметь несколько нулей и единиц одновременно и выполнять разную работу. Итак, у него есть возможности многозадачности, и мы также сказали: Не понимаю, как работают квантовые компьютеры, но мы больше всего с этим согласны. Вычисления — это будущее, поэтому они нужны нам так же, как нам нужны математика и физика, чтобы иметь поведение Вселенной. Но также трудно понять, как работает Вселенная.

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

На этой неделе я узнал, что Ричард Фейнман был забавным и умным физиком, который всегда думал по-другому. У него был научный метод, и он сказал о нем: «Мы никогда не можем быть правы, но мы можем доказать, что мы не правы». Поэтому, если что-то не соответствует эксперименту, это неправильно. Итак, шаги для этого научного метода таковы: первый шаг — догадаться о проблеме, подумать о ней, затем вы должны вычислить последствия догадки, подумать, работает ли она, затем посмотреть, хорошая это идея или нет, если она будет работать или нет, и последний — поэкспериментировать с идеей, чтобы точно знать, как это будет работать. Если вы не можете доказать, что вы не правы, то идея успешна. А также для лучшего обучения объясните это кому-нибудь другому.

Вещи созданы для того, чтобы когда-нибудь сломаться? Иногда ломать вещи стоит с благой целью. Когда вы что-то сломаете, вы сможете увидеть все уязвимости и поработать над ними, чтобы улучшить свое приложение или проект. Мы должны протестировать, решить проблему и исправить ее, чтобы в будущем наше приложение было сильнее.

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

Мы должны проектировать так, чтобы избежать большинства ошибок.

В Google приемлемо 60% тестового покрытия. 75% похвально, а 90% образцово. Вы можете улучшить свой продукт, если он имеет низкий охват, но, по их словам, не обязательно достигать 100%.

Что-то полезное при тестировании — непрерывная интеграция, она предоставляет информацию в режиме реального времени для мониторинга продукта, быстро выявляет сбои и позволяет вносить необходимые изменения в код. Также позволяет безопасно разрабатывать и вносить изменения. А еще есть непрерывная доставка, которая позволяет ежедневно вносить изменения и ничего не ломать.

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

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

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

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

Но некоторые из самых популярных: автоматизированное тестирование — это инструмент, который быстро отправляет обратную связь разработчику. Модульное тестирование — это код, который тестирует ваш код в небольших модулях или компонентах, он предполагает достижение цели и должен быть достигнут, чтобы тест выполнялся правильно. Ручное тестирование не может быть автоматизировано, и это обычный тестировщик, работающий над продуктом. Исчерпывающие тестировщики помогают смоделировать все сбои, которые могут быть в продукте, а он может быть настолько сложным и почти невозможным. Netflix пытается использовать этот последний.

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

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

Есть и другие компании, которые применяют этот тип тестирования хаоса, такие как LinkedIn, Facebook, Google, Microsoft, Amazon и другие.

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

Нам нужно было сделать прототип, мой вывод — это хороший способ узнать, хороша ваша идея или нет. Здесь неудачи происходят быстрее, поэтому мы можем быстрее пробовать новые вещи. Здесь вы можете инвестировать часы или дни, а в прототипирование вы инвестируете недели или месяцы.

Нам нужно убедиться, что мы создаем правильное «это», прежде чем вы сделаете это правильно.

Я немного объясню свои идеи для прототипов, если вы хотите увидеть больше информации и вы из Encora, вы можете попросить у меня ссылку на мою презентацию, не беспокойтесь.

Эксперимент 1: Приложение художественной галереи, в котором художники могут демонстрировать свои работы и предоставлять клиентам доступ к своим данным вместе с другими картинами, где эти клиенты могут связаться с художником, чтобы совершить покупку (не в приложении).​

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

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

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

Эксперимент 2: приложение, в которое вы загружаете фотографию блюда и с помощью искусственного интеллекта помогает вам найти рестораны в вашем городе, в которых есть это блюдо или подобное, а также информацию о ресторане, его социальных сетях и других блюдах.​

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

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

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

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

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

Эксперимент 3: Приложение, где вы можете найти в зависимости от вашего города хорошую (рекомендованную) механику для вашего автомобиля в зависимости от марки вашего автомобиля. (Не считая автомобильного агентства).​

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

Большинство людей говорили, что автомехаников очень трудно найти, хорошие мастера буквально вымирают, а система отзывов Google не работает. Кроме того, они сказали, что это может быть полезно, если вы находитесь в другом городе и у вас есть проблема с автомобилем.​

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

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

Хорошей практикой было сделать прототип и использовать научный метод, чтобы увидеть, полезна наша идея или нет. Мне очень понравилось это занятие.

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