При первом включении 2FA для Google-аккаунта тоже сначала привязывают телефон, только потом дают выбрать другие варианты. Фейсбук с твиттером вроде бы тоже так себя ведут, давно не проверял. Так что попавший под раздачу Github тут скорее приятное исключение.
Эти TOTP-аутентификаторы сейчас завезли примерно в каждый парольный менеджер, не считая кучи отдельных оперносорсных приложений, ни одно из которых не привязано к телефону. Причем TOTP в браузере (и вообще на основном устройстве) — так себе идея, слегка противоречащая двухфакторности.
Поэтому заголовок про обход обязательной привязки к телефонному номеру просто некорректен, речь просто об использовании еще одной штатной возможности.
Виртуальные функции сплошь и рядом вызывают в своем же классе, достаточно заглянуть в любой фреймворк. Такой вызов — это расчет на то, что в будущем ее кто-нибудь при необходимости сможет перегрузить.
Говоря о том, что их обычный вызов не отличается от других функций и разница проявляется только при вызове через указатели, Шилдт как-то забыл упомянуть, что обычный вызов из члена класса — это и есть вызов через указатель this.
Кстати, строго говоря, в вопросе виртуальная функция вызывается не из конструктора/деструктора предка, а из конструктора/деструктора потомка, что в рамках этого кода к проблемам с неожиданным поведением не приведет, хотя и закладывает мину на будущее.
Т.е. вызвать их не проблема с точки зрения синтаксиса, только работать они будут как простые функции, что может оказаться не совсем тем, что ожидал програмист.
Не удивлюсь, если Шилдт забыл об этом упомянуть, такие зевки для него очень характерны.
Забавно, что сам Томлинсон забыл не только содержимое письма, но и точную дату — в 2010 он вспоминал, что вначале вообще где-то ляпнул про 1972, потом «провел исследования и выяснил, что дело должно было быть в 1971», так что долгое время писали просто про конец 1971.
Т.е. для него это просто была обычная рутина, идея застолбить место в истории совершенно не волновала.
Он только не взлетел (как универсальное средство, по крайней мере) в том числе и потому, что в 1995 году уже мало кого интересовали многостраничные блок-схемы (даже в рамках структурной декомпозиции, не говоря уж об объектной). А с небольшими вполне справляется и старая нотация, так что громкое позиционирование вступало в резкий диссонанс с тем, что воспринималось всё просто как какая-то ловля блох.
Ну и коварный удар в спину нанёс UML.
Только не вполне корректно называть Feedly просто ридером — есть же куча клиентов (собственно ридеров), использующих его только как агрегатор подписок (тот же Reeder под iOS/Mac и Nextget Reader под Win).
Это всё прекрасно, но как пользователя меня в новом интерфейсе заботят не новые свистелки, а то, что в айпадном приложении остался лишь портретный режим, что само по себе резко снизило юзабилити.
Потерялись статические глобальные переменные, ситуация с которыми точно такая же, как с функциями.
Ну и если смешивать в рассказе о static все его области применения, то имеет смысл до кучи добавить и простые глобальные переменные, которые тоже располагаются в статической памяти, заодно есть повод рассказать о порядке вызова их конструкторов.
Расшифровка многоалфавитного шифра с фиксированным ключевым словом aka шифра Вижинера — вполне тривиальная задача, в которой частотный анализ очень даже помогает.
При первом включении 2FA для Google-аккаунта тоже сначала привязывают телефон, только потом дают выбрать другие варианты. Фейсбук с твиттером вроде бы тоже так себя ведут, давно не проверял. Так что попавший под раздачу Github тут скорее приятное исключение.
Только при этом она называется "Обходим обязательную привязку телефонного номера к своей учетной записи на GitHub".
Эти TOTP-аутентификаторы сейчас завезли примерно в каждый парольный менеджер, не считая кучи отдельных оперносорсных приложений, ни одно из которых не привязано к телефону. Причем TOTP в браузере (и вообще на основном устройстве) — так себе идея, слегка противоречащая двухфакторности.
Поэтому заголовок про обход обязательной привязки к телефонному номеру просто некорректен, речь просто об использовании еще одной штатной возможности.
Gods, который на самом деле Gogs (что видно даже по ссылке), не готовый сервис, а сервер для самостоятельного развертывания.
Вторая часть балета начнется, когда пользователь в этой консоли захочет ввести кириллицу.
Маляры, моляры, какая в сущности разница, кого/что распознавать. С малярами получилось даже концептуальнее.
«At the end of the stack» в данном контексте, конечно, ни разу не про конец стека, а просто «В конце концов».
Виртуальные функции сплошь и рядом вызывают в своем же классе, достаточно заглянуть в любой фреймворк. Такой вызов — это расчет на то, что в будущем ее кто-нибудь при необходимости сможет перегрузить.
Говоря о том, что их обычный вызов не отличается от других функций и разница проявляется только при вызове через указатели, Шилдт как-то забыл упомянуть, что обычный вызов из члена класса — это и есть вызов через указатель this.
Кстати, строго говоря, в вопросе виртуальная функция вызывается не из конструктора/деструктора предка, а из конструктора/деструктора потомка, что в рамках этого кода к проблемам с неожиданным поведением не приведет, хотя и закладывает мину на будущее.
Это всё прекрасно, но механизм виртуальных функций не работает в конструкторах/деструкторах (собственно, откуда и возник исходный вопрос).
https://isocpp.org/wiki/faq/strange-inheritance#calling-virtuals-from-ctors
https://isocpp.org/wiki/faq/strange-inheritance#calling-virtuals-from-dtors
Т.е. вызвать их не проблема с точки зрения синтаксиса, только работать они будут как простые функции, что может оказаться не совсем тем, что ожидал програмист.
Не удивлюсь, если Шилдт забыл об этом упомянуть, такие зевки для него очень характерны.
Забавно, что сам Томлинсон забыл не только содержимое письма, но и точную дату — в 2010 он вспоминал, что вначале вообще где-то ляпнул про 1972, потом «провел исследования и выяснил, что дело должно было быть в 1971», так что долгое время писали просто про конец 1971.
Т.е. для него это просто была обычная рутина, идея застолбить место в истории совершенно не волновала.
Тоже плевался от маковского подхода к переключению между приложениями. Бесплатная AltTab проблему убрала.
Ну и коварный удар в спину нанёс UML.
bugtraq.ru/library/books/attack3/intro/#levin
Ну и если смешивать в рассказе о static все его области применения, то имеет смысл до кучи добавить и простые глобальные переменные, которые тоже располагаются в статической памяти, заодно есть повод рассказать о порядке вызова их конструкторов.
Ну и аргумент в виде болезненного опыта перехода с PowerPC так себе, в те времена процессоры развивались гораздо более бурно.