https://github.com/tipalol/star-staff
https://github.com/tipalol/star-staff
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/tipalol/star-staff
- Owner: tipalol
- Created: 2019-10-11T14:46:55.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-10-12T19:56:28.000Z (over 5 years ago)
- Last Synced: 2025-02-02T22:11:18.255Z (4 months ago)
- Language: C#
- Size: 31.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ответы на вопросы
1. Чужой код разбираю довольно часто, чтобы подсмотреть хорошие практики, узнать как решают те или иные проблемы опытные программисты. Если обращаться к конкретным примерам, то, наверно, это больше структурные моменты - как правильно выстраивать архитектуру приложения. Например, вот репозиторий с демонстрацией дизайн паттернов на c# - https://github.com/abishekaditya/DesignPatterns Чужой код всегда сложнее воспринимать, нежели свой-родной. И тут, конечно, очень важна читабельность и хоть какое-то соответствие стандартам в коде. Также, нужные комментарии в трудных местах кода невероятно помогают понять, что имел ввиду коллега.
2. Самым первым языком, который я изучил, был PascalABC.Net. Я начал его изучать в 7 классе и за все время в моей копилке завалялись разные текстовые рпг, змейки, крестики-нолики и даже эксперименты с 2д графикой и попытки создать игры с анимацией. В целом о Паскале у меня сложилось впечетление, как о хорошем учебном языке для старта. В то же время я заинтересовался веб-разработкой: мне симпотизировал React на фронте и Node.js на бэке. После 11 класса я поступил в ВШЭ, где учебным языком для 1 курса был C#, на котором выполнялись все лабораторные работы и осваивались все важные темы (такие как структуры данных, дизайн паттерны, события и многопоточность). Одним из реализованных проектов (совместно с напарником) является предсказатель победы той или иной команды по Dota2 путем парсинга сайта с данными обо всех матчах и высчитывания вероятности победы одного состава над другим. О C# показался мне идеальным языком для веб-приложений, благодаря наличию множества фреймворков и библиотек под эти задачи. В данный момент учебная программа пошла извилистым путем: мы изучаем архитектуру ЭВМ с помощью Ассемблера (незаменимый инструмент в тех местах кода, где требуется жесточайшая оптимизация), изучаем структуры данных и алгоритмы с помощью с++ (высокоуровневый язык, позволяющий программисту самому управлять памятью, таким образом достигая наилучшую производительность. Идеален для игр), также дополнительно для себя я выбрал курсы разработки под iOS (Swift и Objective C - языки для тех, кто хочет создавать приложения для iOS и Mac).
3. Компилятор занимается преобразованием объектно-ориентированного языка (или функционального) в машинно-ориентированный язык (близкий к машинному коду, иногда ассемблер), затем выполняет сборку исполняемой программы (машинный код). В некоторых языках решили пойти другим путем - стать интепритируемыми языками, что позволяет легче реализовать такие штуки, как кросплатформенность, динамическую типизацию. Однако, компилируемые языки, как правило производительнее.
4. Фреймворк - инструмент, позволяющий быстрее разрабатывать приложения. Он представляет собой некий каркас, определяет структуру вашего приложения. Одним из самых ярких примеров является ASP.Net для C#. Он позволяет быстро создавать веб-приложения.
5. Приставка http означает, что сайт использует незащищенный протокол для передачи данных. Это значит, что данные пользователя могут перехватить мошенники. Поэтому приставка http вызывает у пользователя недоверие к сайту. Тогда как приставка https дает уверенность в том, что данные пользователей будут переданы на сервер в зашифрованном виде.
6. Страницу профиля vk я бы разбил на следующие компоненты:
1. Навбар, состоящий из трех блоков: лого, центральный блок, содержащий строку поиска, выпадающее меню уведомлений (думаю, достойно быть отдельным компонентом) и выпадающее меню музыки (также вполне самостоятельный компонент), а последний третий блок - выпадающее меню профиля.
2. Боковое левое меню
3. Виджет списка друзей, содержащий мини чат (который опять таки тянет на отдельный маленький компонент)
4. Контент компонент, содержащий множество компонентов, таких как: info, аватарка, подарки, лента и тд.
На мой взгляд, это было бы самым оптимальным и интуитивно понятным вариантом разбиения приложения на компоненты.
7. Преимущество SQL главным образом в его стандартности. В язык SQL было вложено гигантское количество усилий со стороны такого же гигантского количества разработчиков. Вы всегда можете быть уверены, что весь мир вдруг внезапно не откажется от SQL. Этот всюду поддерживаемый язык является идеальным решением для реляционных баз данных. Но существуют также и нереляционные базы данных. Они обладают рядом преимуществ - лучшей масштабируемостью и большей скоростью разработки, например. И для них уже используется язык NoSQL.
8. Сложно сказать. Я очень критично отношусь к своему коду и мне трудно выделить что-то для показа. Ну, может быть вот это более менее чисто и понятно, хотя и по причине сырости: https://github.com/tipalol/Stalker/tree/master/NoScope360Engine . задание на написание кода выполнил в данном репозитории.
9. Я не гуру в SQL, но что-то такое должно дать нужный результат: SELECT Product.Name, Category.Name FROM Products, Categories WHERE Product.Category.Name = Category.Name