Комментарии 17
Хороший совет, но есть еще более расширенный вариант этого совета — не переписывать код подчистую, а пытаться его применить в разрабатываемом учебном проекте. Тогда кроме вопроса «как» закрывается еще и вопрос «зачем», который у опытных разработчиков возникает куда чаще, чем «как»
И продебажить, конечно. Очень удобно проследить за каждой веткой кода и рассмотреть принципы работы программы. Ещё отмечу серию книг Head First, т.к. дельно подается материал и прекрасно усваиваться. Спасибо за данную публикацию.
Книга может и лучшая, но код для понимания(не только новичкам) можно сделать читабельнее:
User.rb
class User < ApplicationRecord
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
attr_accessor :remember_token
validates :email, format: { with: VALID_EMAIL_REGEX }
validates :email, length: { maximum: 255 }
validates :email, presence: true
validates :email, uniqueness: { case_sensitive: false }
validates :name, length: { maximum: 50 }
validates :name, presence: true
validates :password, length: { minimum: 6 }
validates :password, presence: true
before_save { self[:email] = email.downcase }
has_secure_password
class << self
# Returns the hash digest of the given string.
def digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end
# Returns a random token.
def new_token
SecureRandom.urlsafe_base64
end
end
# Remembers a user in the database for use in persistent sessions.
def remember
self[:remember_token] = User.new_token
update_attribute(:remember_digest, User.digest(remember_token))
end
# Returns true if the given token matches the digest.
def authenticated?(remember_token)
BCrypt::Password.new(remember_digest).is_password?(remember_token)
end
# Forgets a user.
def forget
update_attribute(:remember_digest, nil)
end
end
Ви-таки хотите сказать, что я буду собирать автомобиль по памяти, все так же не понимая как он работает?)
Именно! На 100-й детали к вам придёт мысль что таки надо понимать как он работает и что именно для этого ВАМ надо искать. Чтобы не пересобирать по нескольку раз одно и тоже только потому что «забыл там шайбу положить». В этом и состоит цель обучения на собственных ошибках, когда в процесс включается мозг. Начинаешь думать заранее а нужна ли тут шайба, чтобы через 2 часа не пришлось разбирать узел чтобы её туда вставить.
Курсе на втором матфака вывел для себя метод подготовки к сдаче теоретической части экзаменов.
Брал список билетов с вопросами. И по порядку — читал вопрос, находил теорему и читал ее доказательство. Не стараясь запоминать, но так чтобы было понятно откуда что берется.
Прочитывал таким образом 10-12 теорем, закрывал лекции-учебники. Брал лист бумаги и пытался доказать их последовательно уже самостоятельно. Стопорясь в каком-то месте, подсматривал это место и снова самостоятельно шел дальше. «Помарочные» доказательства (в процессе которых приходилось подглянуть) не переписывал заново и не возвращался к ним пока все билеты не были пройдены. Если перед экзаменом оставалось время — проходил еще на один раз. Если нет, то уже было все равно не страшно.
В процессе сдачи не приходилось принудительно вспоминать целиком само доказательство, просто начинаешь доказывать сам как-будто решаешь некую задачу задачу, упираешься как правило в те же микро-места где упирался при подготовке и помнишь как их проходить — а это несравнимо меньший объем для запоминания.
И еще важно — в эти периоды спал кроме ночи 2-3 за день по часу.
В итоге шпаргалка понадобилась только один раз за весь период обучения.
Брал список билетов с вопросами. И по порядку — читал вопрос, находил теорему и читал ее доказательство. Не стараясь запоминать, но так чтобы было понятно откуда что берется.
Прочитывал таким образом 10-12 теорем, закрывал лекции-учебники. Брал лист бумаги и пытался доказать их последовательно уже самостоятельно. Стопорясь в каком-то месте, подсматривал это место и снова самостоятельно шел дальше. «Помарочные» доказательства (в процессе которых приходилось подглянуть) не переписывал заново и не возвращался к ним пока все билеты не были пройдены. Если перед экзаменом оставалось время — проходил еще на один раз. Если нет, то уже было все равно не страшно.
В процессе сдачи не приходилось принудительно вспоминать целиком само доказательство, просто начинаешь доказывать сам как-будто решаешь некую задачу задачу, упираешься как правило в те же микро-места где упирался при подготовке и помнишь как их проходить — а это несравнимо меньший объем для запоминания.
И еще важно — в эти периоды спал кроме ночи 2-3 за день по часу.
В итоге шпаргалка понадобилась только один раз за весь период обучения.
Подход к изучению различних тем по программированию (в т.ч. и используя книги), должен быть следующий:
1) Прочитал текст, разобрался в теоретических аспектах;
2) Выполнил, под Debug-ером приведенный в первоисточнике пример;
3) По мативам данного примера, сделал свой, другой пример, основанный на том, что описано в первоисточнике;
4) Поискал ещё публикации по данной теме (в интернете, в книгах) проанализировал их;
5) Дополнил свой пример, на основании анализа и осмысления.
Вот, ИМХО, подход современного IT специалиста.
1) Прочитал текст, разобрался в теоретических аспектах;
2) Выполнил, под Debug-ером приведенный в первоисточнике пример;
3) По мативам данного примера, сделал свой, другой пример, основанный на том, что описано в первоисточнике;
4) Поискал ещё публикации по данной теме (в интернете, в книгах) проанализировал их;
5) Дополнил свой пример, на основании анализа и осмысления.
Вот, ИМХО, подход современного IT специалиста.
Программирование в книге и в реальности

Видится мне в этом общая нынче тема: вместо того, чтобы обучать думать, людей учат использовать шаблоны.
Заголовок спойлера
Прошу прощения за политоту, но таким народом проще управлять)
ай, как Вы правы!..
но я не против книг. и даже шаблонов. для себя же понял, что не смотря на все неудобства и боль лучше читать оригинал (на английском). теперь другая проблема: как быстро [по обложке ;)] определить "потянешь" книгу или нет?.. ;)
Знаете, пословица есть, что-то про книги, обложки и суждение.
У вас что, нет времени отзывы прочитать на книгу? Или сначала почитать рекомендации, а потом купить, что советуют?
У вас что, нет времени отзывы прочитать на книгу? Или сначала почитать рекомендации, а потом купить, что советуют?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Метод Бенджамина Франклина для чтения книг по программированию