• Ресурсы по современному C++?

    Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14

    хотя книга подразумевает, что вы (хотя бы частично) знакомы с современным с++
    Ответ написан
    Комментировать
  • Почему Линус не любит C++?

    @lesha_penguin
    <Мысль_вслух>Если существует специальный «ад для говнокодеров», то наверняка, одним из самых жестких наказаний в нем была бы отладка того говнокода, который, который в С++ получается по принципу «делается более просто и изящно».</Мысль_вслух>

    Если начинать «от сотворения мира»:

    1) Как известно C++ был был придуман Страуструпом, мы не будем умалять его «ученные регалии» (ученных-то наград куча, но они по сути единственное чего «добился человек», кстати, 90% прямо или косвенно за c++). Однако, заметим, что Страуструп — как раз есть пример «чистого теоретика» (в отличии от «практика»-Торвальдса), т.е. является человеком за свою жизнь не принимавшим участия в разработке ни одного серьезного реального программного проекта. По сути компилятор c++ — единственное более-менее практическое дело в его жизни. Соотвественно о том с какими проблемами приходится сталкиваться в реальном «software development-е» с «высоты его ООП-теорий» он имеет весьма посредственное представление.

    2) Как верно заметили, в упомянутой статье, изначально это был как раз «Це с классами», т.е. изначально НЕ БОЛЕЕ ЧЕМ «академическая» попытка навернуть на C отдельные элементы «обьектности» (типа, Smalltalk обьектный, а давайте попробуем сделать такое на более низком уровне). Кстати, могу Вам сказать, что с C++ я впервые познакомился в 80-90е годы, когда языком «ученной среды» был Фортран, языком «системщиков» Си, а для обучения «всех непрофильных специальностей» основам программирования использовались Basic и Pascal. Да, но правда «тогдашний C++ 80» отличался от нынешнего — он реально производил впечатление «просто прикольной поделки» (на память помню, что например, тогда не было и половины привычного функционала например таких вещей как всяких «reinterpret_cast-ов» или namespac-ов.). Кстати, да… барабанная дробь… НЕ БЫЛО STL!!!

    3) Наверное Страуструповский «Це с классами», наверное так бы и остался в списке «прикольных поделок» в аналах истории, если бы не одно обстоятельство: «ВНЕЗАПНО» произошел «софтверный бум», соотвественно: a) «элитных» «олдскульных» программистов стало резко не хватать b) «требования к качеству софта» резко упали c) понадобилось средство для генерации достаточно низкоуровневого «говнокода в промышленных масштабах». И как ни странно, (ага, угадали, именно с появлением в C++ STL-я) C++ так и не избавившись от своих «академических болячек» был брошен в пучину «мейнстрима».

    4) Вам говорят истинную правду, когда говорят, что «C++» это маркетинговое название для «Це с классами». Да, это так. И можно сказать, к великому сожалению, он нашел свою рыночную нишу. (Сейчас любой дурак может легко «освоить C++ за 21 день (с бустом и стлем)», при этом не умея даже внятно ответить на простой вопрос «Если ты такой умный, обьясни тогда почему, c$k@, у тебя программа течет по памяти и падает», (про такие «неполиткорректные вопросы», как «зачем писать 100 строк на то, что пишется в две-три», мы вообще тактично молчим, а то, мало ли, может у человека «сдельная зарплата» за количество строк ;) ), зато с видом крутого Беара Грилса можно обсуждать такие «высокие материи» как «Паттерны» и «чистый ООП»).

    5) И к самому большему сожалению, в некоторых случаях альтернативы нет. Да, Я еще не встречал ни одного программиста, который в действительно реальной разработке софта активно использовал бы C++ и при этом от него бы не плевался. У C++ есть «Огромный ПЛЮС» — Его Мультипарадигменность! По-сути это его единственный плюс, позволяющий «не уйти в дебри» (типа попыток запихнуть «main()» в обьект только ради «идеи чистого ООП»)!

    6) А теперь, после такого «исторического» вступления еще раз перечистайте внимательно письмо Торвальдса, высказывание человека который лучше многих «теоретиков чистого ООП» знает как это оно «на собственной шкуре» разрабатывать сложные системы, и комментарии от хабраюзеров, которые «на живой практике» знают «почем фунт лиха» в топике. Под большинством утверждений я лично бы поставил свою подпись золотыми буквами.
    Ответ написан
    5 комментариев
  • Как устроена авторизация по паролю в web-приложениях?

    @Alexander1705
    Обычно разделяют сессии и авторизацию:

    Сессия. Чтобы реализовать сессии сервер при первом соединении с клиентом может генерировать некоторый случайный токен и устанавливать его в куки. Тут важно, что куки должны передаваться по защищённому каналу (HTTPS). Таким образом можно сохранять некоторую информацию о сессии в базе данных или же в самих куки, но тогда нужно подписывать куки, чтобы пользователь не мог их изменять.
    В любом случае, сервер будет хранить информацию о активных сессиях в БД.
    Подписать куки можно, например, добавив в них помимо нужной вам информации какой-нибудь HMAC.

    Авторизация. Сервер никогда не хранит пароли. В базе данных хранят логин и хеш пароля (на самом деле нет). Для авторизации пользовтель передаёт логин и пароль (HTTPS). Сервер вычисляет хеш от пароля и, если он совпадает, сессия помечается как авторизованная.

    Соль. Теперь представим, что вы действительно храните логин и хеш пароля в таблице:
    login | pass_hash
    ------+----------
    vasya | 4B32E1C...

    В идеальном мире это бы неплохо работало. Но в реальном мире 90% ваших пользователей будут иметь пароль вида 12345, password, password123, etc. Соответственно в базе данных будет много одинаковых хешей и злоумышленнику не составит труда быстро подобрать пароли большинства ваших пользователей.
    Для этого для каждого пользователя сервер сохраняет некоторые уникальные случайные данные (соль). А вместо хеша пароля хранится hash(pass + salt).
    login | salt   | hash
    ------+--------+-----
    vasya | 4B3... | 2A3B9...

    Таким образом усложняется перебор паролей по словарю.

    Хеш. Возможно вы где-то видели или слышали про MD5. Так вот, MD5 на сегодняшний день не является надёжной криптографической хеш функцией и даже если вы примените MD5 сто или тысячу раз, это не сильно изменит ситуацию. На сегодняшний день рекомендуется использовать SHA-2 или SHA-3.

    P. S. Соль и токены обязательно должны быть сгенерированы с помощью CSPRNG.
    Ответ написан
  • Где удобно хранить куски кода?

    Vadiok
    @Vadiok
    Веб разработчик
    Хранить в на Gist.GitHub, но пользоваться для этого Lepton.
    Еще вариант Code Notes.
    Ответ написан
    3 комментария
  • Как встроить gitlab в phpstorm?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Как встроить gitlab в phpstorm?
    В каком смысле "встроить"? Вы можете на GitLab'e создать проект/репозиторий, получить его ссылку и делать pull/push/etc Вашего местного (локального) git-репозитория с проектом в удаленный репозиторий, лежащий на GitLab'е.

    Делается это примерно в следующем порядке:
    0. Создаёте/открываете Ваш проект в ПХПШторме
    1. Меню -> VCS -> Enable version control integration, и там выбираете Git
    2. Нажимаете правой кнопкой на папке проекта в Шторме, и далее по меню:
    59d3cb3182f3c558793291.png
    3. Откроется окно управления удаленными репозиториями, где Вы можете добавить ссылку на удаленный репозиторий полученную ранее на GitLab'е.

    Собственно и всё почти. При попытке Push/Pull - у Вас запросят логин/пароль от GitLab'а.
    Ответ написан
    3 комментария
  • Что подразумевается под strong knowledge С++?

    @asd111
    Обычно имеется в виду знание stl, boost, умные указатели, move semantics, многопоточность и желательно посмотреть Google C++ Style Guide .
    Умение писать тесты, знание ninja build или другую build tool.
    Умение пользоваться дебагером.
    Ещё желательно уметь использовать valgrind и какой нибудь static analysis tool наподобие pvs studio.
    И ещё git.
    Ответ написан
    Комментировать
  • Выбор дистрибутива Линукс для разработчика?

    Punk_Joker
    @Punk_Joker
    Software Engineer в ВО Овен
    Боюсь надо менять не ОС, а пользователя, иначе никак. С текущим возни много, постоянно зависания с ним, и вообще тупит регулярно.
    Ответ написан
    1 комментарий
  • Выбор дистрибутива Линукс для разработчика?

    Adamos
    @Adamos
    Чтобы избежать серьезных проблем с диском при выключении света - достаточно разделить корень с /home и, если память позволяет, вынести /var/log и /tmp на tmpfs.
    Так и пошустрее будет, собственно.
    Насчет самой постановки вопроса - она в принципе ошибочна. Никакой критичной разницы между популярными дистрибутивами для веб-разрабочика просто нет.
    Вопрос вкуса и баланса между стабильностью и желанием иметь софт поновее. Да и этот баланс ищется не в основном дистрибутиве, а в виртуалках с рабочими окружениями.

    вырвиглазное сглаживание шрифтов и цвета в стиле "дайте тазик блевануть"

    Довольно точное описание Win10, кстати...
    Ответ написан
    1 комментарий
  • Как отучиться использовать мышь?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Конкретно в IDEA - Key Promoter. Это плагин, который показывает бесящие подсказки каждый раз, когда ты делаешь действие, на которое есть хоткей, мышкой.
    Ответ написан
    1 комментарий
  • Калькулятор с решением. Как реализовать?

    Оптимизация свёрткой. Список промежуточных шагов и есть решение.
    https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D1%91%D...
    Ответ написан
    2 комментария
  • Выбор языка программирования для GUI?

    Griboks
    @Griboks
    Раз уж вы засунули вопрос в тему с веб, то рекомендую html/css/js плюс какой-нибудь react и node.js как бонус. Если клиент-серверные, то попробуйте для начала создать это самое прогрессивное веб-приложение.
    Ответ написан
    Комментировать