• Где можно получить хорошее образование IT специалиста?

    TanVD
    @TanVD
    Джуниор C++/QT
    Сам из СПбГУ и могу посоветовать этот вуз, при условии того что вы идёте на МатМех (ПМПУ совершенно отдельная и довольно грустная история) Из указанных вами направлений хороша программная инженерия,. Если не боитесь математики - идите на матобеспечение. Там и CS есть и сильные математические дисциплины.
    Ответ написан
  • Может ли интернет-провайдер узнать данные авторизации через http-подключение?

    TanVD
    @TanVD
    Джуниор C++/QT
    Конкретном в данном случае не может. Форма входа передаёт ваш логин и пароль (и некоторые дополнительные параметры обеспечения безопасности) с помощью POST запроса на адрес https://login.vk.com/?act=login . Здесь явным образом используется HTTPS.
    Передача вероятнее всего будет произведена за два шага - первый разрешение домена login.vk.com в ip-адрес, при этом для разрешения используется исключительно имя домена, второй - передача POST запроса с помощью HTTP на нужный IP-адрес поверх TLS соединения.
    Стандарт TLS гарантирует защиту доступа к информации. Соответственно ваш токен не сможет быть получен кем-либо в скомпрометированной сети в случае, если вы пользуетесь верными сертификатами. Тем не менее в случае отсутствия, к примеру, поддержки DNSSEC на используемых DNS серверах атака подменой DNS записи возможна. Но маловероятна.
    Ответ написан
    Комментировать
  • Классы и методы в разных пакетах, должны быть PUBLIC?

    TanVD
    @TanVD
    Джуниор C++/QT
    Судя по всему вы построили слишком сильно-связанный код. При разнесении в разные пакеты вы столкнулись с ситуацией, что всякий класс взаимодействует со всяким другим классом и соответственно всё должно быть Public. Правильным решением в таком случае является уменьшение связанности кода, например, с помощью паттерна ООП фасад. То есть, для уменьшения связанности кода вам необходимо разбить код на группы по функциональности и через фасад предоставлять необходимую функциональность одной группе другой группе.
    К примеру, вы можете создать группу классов работы с сетью, группы разных видов бизнес-логики, группу классов графического интерфейса.
    Фактически, вы будете проводить декомпозицию монолитного куска кода на кластеры по некоторой логике. Это задача довольно нетривиальна, однако она как раз позволит верно инкапсулировать логику в пакеты и создать к ним адекватные интерфейсы с помощью фасадов. В результате вы сможете скрыть сложность внутренней логики за фасадами и даже впоследствии вынести некоторые классы в библиотеки.
    Ответ написан
    Комментировать
  • Уместен ли return в void функциях? Как лучше else-if-else или множественные return`ы?

    TanVD
    @TanVD
    Джуниор C++/QT
    Как правило return уместен в случае, если выполнение алгоритма идёт по ненормальному сценарию, использование его приводит к меньшей вложенности кода, однако так же приводит и к возможному повторению общего для всех сценариев исполнения алгоритма кода выхода (например отключение логирования перед return (справиться с этим помогут, к примеру, аспекты)).
    Использование return уместно в коде без сложных условий на выход.
    В некоторых случаях от использования повторяющихся if поможет избавиться паттерн состояние (не в данном случае)
    Про красивый код можно почитать тут или же прочесть совершенный код Макконела. Так же есть смысл посмотреть руководства по стилю в каких-то больших проектах на том же github (они обычно лежат в разделе wiki), или, возможно, таковое есть на сайте msdn.
    Ответ написан
    Комментировать
  • На чем можно написать десктопное приложение под OSX?

    TanVD
    @TanVD
    Джуниор C++/QT
    На данный момент кажется QT может в OS X... Есть куча библиотек под С++ с реализациями API VK (что очень поможет освоиться с С++ на первых порах). Плюс QT в том, что выучив его вы не будете ограничены одной платформой - линейкой платформ (OS X, IOS) (как в случае со Swift).
    Ответ написан
    Комментировать
  • Каким может быть дальнейший путь начинающего айтишника?

    TanVD
    @TanVD
    Джуниор C++/QT
    Я бы посоветовал идти на работу С++ разработчика. Поймете как оно в промышленной разработке, нравится ли оно вам. А если подтягивать учёбу, то наверное стоит почитать Кормена и Кернигана и Ритчи (если не читали), в первом семестре МФТИ такого багажа вполне должно хватить. (Кормена советую так как он популярен на ФИВТ, если вы на ФУПМ идёте, то, возможно, там по Кнуту дают.)
    Ответ написан
    Комментировать
  • Как решить проблему с переключением раскладки?

    TanVD
    @TanVD
    Джуниор C++/QT
    Пользовался Elementary какое-то время. Красивая, но кривая. Встала со скрипом, загружалась так же через пень-колоду. Драйвера встали все те же самые, что и у Ubuntu, так что проблем с этим быть не должно (пользовался, правда, X.org). Баг с раскладкой решается, например, так
    Ответ написан
    4 комментария
  • Как в таких случаях грамотней делать?

    TanVD
    @TanVD
    Джуниор C++/QT
    Для решения похожих проблем используется подход Аспектно-Ориентированного Программирования (АОП). Почитать можно
    Здесь (вики)
    Здесь (хабр)
    Здесь (почти книжка)
    Поддержка обеспечивается с помощью фреймворков типа AspectJ, Aspect#, Aspect.NET и кучей других.
    Ответ написан
    Комментировать
  • Как исправить ошибку при подключении QObject и QStringList?

    TanVD
    @TanVD
    Джуниор C++/QT
    CONFIG -= qt уберите из .pro файла, добавьте #include .
    Ответ написан
    Комментировать
  • Какой план обучения программирования можно предложить школьнику на лето?

    TanVD
    @TanVD
    Джуниор C++/QT
    Почитай "Алгоритмы. Вводный курс." Кормена. Очень помогает ввестись в базовые алгоритмы и структуры данных. По языкам - прекрасная книга Кернигана и Ритчи "Язык программирования Си". Потом можно почитать Таненбаума, у него целая серия книг по основным сферам технологий.
    Есть ресурсы типа CodeAcademy, они помогают ввестись в синтаксис языка. (Например javascript, python. Но начинать советую всё же с С или С++).
    Посмотри Stepic, там сейчас выложены лекции Computer Science Center. Лекции по алгоритмам, архитектуре компьютера и основам программирования на С++.
    Очень советую начинать слушать подкасты, типа Радио-Т, devzen - начнёшь втягиваться в современную ситуацию в мире IT (тем более это не обучение и так можно отдыхать).
    Так же посматривай HabhHabr(технологии), Geektimes(научно-популярное), Мегамозг(вопросы менджемента и маркетинга в IT). (И это всё гораздо веселее чем звучит тут)
    Нужно научиться жить в IT (что однако не означает, что нужно непременно бросить читать любимого Шолохова), когда твоя учёба будет занимать не 2-3 часа в день, а все 14 часов бодрствования.
    На тему подробного плана. Я в 10 классе занимался так:
    1) Разбирал язык Си по книге Кернигана и Ритчи
    2) Смотрел лекции по Си на 100ege (прекрасной заменой могут стать лекции stepic)
    3) Попиливал свои проекты, например шифровал текст обычным XOR, составлял словари частотности из текстов, даже писал проверялку орфографии в словах.
    4) Почитывал книгу Кормена.
    Если найдёшь проект, интересный тебе, сразу станет легче изучать. Из-под палки вряд ли что получится.
    Ответ написан
    Комментировать