AskMe- #6021 18 июня 2016 (изменено) на сколько важно знание инглича при изучении питона ?не знаешь вражеский (хотя бы на уровне чтения стаковерфлоу и минимального общения для фриланса) - в программировании делать нехуй. литературу тоже хорошо бы читать на английском, но уж ладно, популярные талмуды флениганов переведены, но все равно рано или поздно нужно будет читать документацию к чему нибудь на английском Изменено 18 июня 2016 пользователем AskMe- Лишь ощутив баттхерт до конца, мы обретаем свободу Поделиться сообщением Ссылка на сообщение
Dux #6022 18 июня 2016 инглиш у меня какой-то есть. ходил на курсы год (прошел интермидиед и забил), но прошло уже 5 лет и от знаний только словарный запас остался. Поделиться сообщением Ссылка на сообщение
Asm #6023 18 июня 2016 инглиш у меня какой-то есть. ходил на курсы год (прошел интермидиед и забил), но прошло уже 5 лет и от знаний только словарный запас остался.С хорошим английским и reading тебе будет легче учить доки по языкам и фреймворкам. А также гуглить проблемы и находить на stack overflow. Желательно, upper-intermediate уровень, тогда все лучше пойдет. Поделиться сообщением Ссылка на сообщение
CriErr #6024 18 июня 2016 инглиш у меня какой-то есть. ходил на курсы год (прошел интермидиед и забил), но прошло уже 5 лет и от знаний только словарный запас остался.С хорошим английским и reading тебе будет легче учить доки по языкам и фреймворкам. А также гуглить проблемы и находить на stack overflow. Желательно, upper-intermediate уровень, тогда все лучше пойдет.желательно выше среднего почти профессиональное владение языком чтоб гуглить ? Поделиться сообщением Ссылка на сообщение
Гость Camus #6025 18 июня 2016 у вас только каменты забанены или доки типа /// в C# или жавадоков тоже?мне вот этот аспект интереснее всего Ниже я копирнул кусок кода (это не с работы код и никак не связан с тем местом, где я сейчас работаю). Я хотел бы серьезно выслушать, какие комменты ты бы добавил к данному классу (если хочешь, можешь даже откомментировать и оставить сообщение с комментами). Тебе действительно не понятно, что делает этот класс? public class UserServices:IUserServices { private readonly IAdoNetContext _context; private readonly IUserRepository _userRepository; private IAdoNetUnitOfWork _uow; public UserServices(IAdoNetContext context, IUserRepository userRepository, IAdoNetUnitOfWork uow) { _context = context; _uow = uow; _userRepository = userRepository; _userRepository.InjectContext(_context); } public void CreateUser(User user) { using (_uow = _context.CreateUnitOfWork()) { if (_userRepository.GetUserByUsername(user.Username).Any()) { throw new UserException("User '" + user.Username + "' already exists"); } string salt = GenerateRandomString(); user.Password = Hash(user.Password, salt); user.Salt = salt; _userRepository.InsertUser(user); _uow.SaveChanges(); } } public IEnumerable<User> GetUserByUserId(int userId) { using (_uow = _context.CreateUnitOfWork()) { var user = _userRepository.GetUserByUserId(userId); _uow.SaveChanges(); return user; } } public IEnumerable<User> GetValidatedUser(string username, string password) { using (_uow = _context.CreateUnitOfWork()) { var requestedUser = _userRepository.GetUserByUsername(username).FirstOrDefault(); if (requestedUser == null) { return Enumerable.Empty<User>(); } string userSalt = requestedUser.Salt; string hashedPassword = Hash(password, userSalt); var validatedUser = _userRepository.GetValidatedUser(username, hashedPassword); _uow.SaveChanges(); return validatedUser; } } private string Hash(string password, string salt) { byte[] bytes = Encoding.Unicode.GetBytes(password); byte[] src = Encoding.Unicode.GetBytes(salt); byte[] dst = new byte[src.Length + bytes.Length]; Buffer.BlockCopy(src, 0, dst, 0, src.Length); Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length); HashAlgorithm algorithm = HashAlgorithm.Create("SHA1"); byte[] inarray = algorithm.ComputeHash(dst); return Convert.ToBase64String(inarray); } private string GenerateRandomString() { const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var random = new Random(Guid.NewGuid().GetHashCode()); return new string(Enumerable.Repeat(chars, 32) .Select(s => s[random.Next(s.Length)]).ToArray()); } public void Dispose() { _context.Dispose(); } ГЫЫЫ, пароль в SHA1 инглиш у меня какой-то есть. ходил на курсы год (прошел интермидиед и забил), но прошло уже 5 лет и от знаний только словарный запас остался.Этого хватит, на самом деле. Просто по началу будет трудновато читать вещи на английском, особенно технические. Но 21 век, гугл транслит, все дела. Короче не придавай этому особое значение, английский подтянется с опытом сам. поговаривают, что еще есть места, в которых можно просто спокойно писать комментарии по мере надобности, не впадая в безумные крайности. ну это я так, 15 лет опыта не имею, поэтому откуда мне знать Вот это как раз самый хуевый вариант. Потому что тогда будут люди комментить и делать что хотят и вот тогда это приводит к пиздецу и тяжкой читаемости кода. Уж лучше считать комменты за религию и иметь задокументированные стандарты о том, как правильно комментировать классы.Слышал историю, как в одной фирме взяли нового техлида, так он там людям разрешил писать комменты, и после этого понеслось. Боже мой, это была агония, люди реально не понимали почему их приложения сильно теряют в качестве, почему от них уходят клиенты, почему бухгалтерша тетя Люба перестала приносить пироги по пятницам, поговаривали даже, что у директора этой фирмы жена ушла к его конкуренту (хз, что за мужик, но у них 100+ солюшенов, и сайт держит 100к посетителей в день). В какой-то мужик не выдержал, и пришел в свою компанию с огнестрельным оружием. Видел бы ты глаза программистов, они были рады, что их отправят в другой мир, мир, где запрещено писать комментарии. TheDeadSkin, .felix, CriErr и 2 другим понравилось это Поделиться сообщением Ссылка на сообщение
Supernatura1 #6026 18 июня 2016 у вас только каменты забанены или доки типа /// в C# или жавадоков тоже?мне вот этот аспект интереснее всего Ниже я копирнул кусок кода (это не с работы код и никак не связан с тем местом, где я сейчас работаю). Я хотел бы серьезно выслушать, какие комменты ты бы добавил к данному классу (если хочешь, можешь даже откомментировать и оставить сообщение с комментами). Тебе действительно не понятно, что делает этот класс? public class UserServices:IUserServices { private readonly IAdoNetContext _context; private readonly IUserRepository _userRepository; private IAdoNetUnitOfWork _uow; public UserServices(IAdoNetContext context, IUserRepository userRepository, IAdoNetUnitOfWork uow) { _context = context; _uow = uow; _userRepository = userRepository; _userRepository.InjectContext(_context); } public void CreateUser(User user) { using (_uow = _context.CreateUnitOfWork()) { if (_userRepository.GetUserByUsername(user.Username).Any()) { throw new UserException("User '" + user.Username + "' already exists"); } string salt = GenerateRandomString(); user.Password = Hash(user.Password, salt); user.Salt = salt; _userRepository.InsertUser(user); _uow.SaveChanges(); } } public IEnumerable<User> GetUserByUserId(int userId) { using (_uow = _context.CreateUnitOfWork()) { var user = _userRepository.GetUserByUserId(userId); _uow.SaveChanges(); return user; } } public IEnumerable<User> GetValidatedUser(string username, string password) { using (_uow = _context.CreateUnitOfWork()) { var requestedUser = _userRepository.GetUserByUsername(username).FirstOrDefault(); if (requestedUser == null) { return Enumerable.Empty<User>(); } string userSalt = requestedUser.Salt; string hashedPassword = Hash(password, userSalt); var validatedUser = _userRepository.GetValidatedUser(username, hashedPassword); _uow.SaveChanges(); return validatedUser; } } private string Hash(string password, string salt) { byte[] bytes = Encoding.Unicode.GetBytes(password); byte[] src = Encoding.Unicode.GetBytes(salt); byte[] dst = new byte[src.Length + bytes.Length]; Buffer.BlockCopy(src, 0, dst, 0, src.Length); Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length); HashAlgorithm algorithm = HashAlgorithm.Create("SHA1"); byte[] inarray = algorithm.ComputeHash(dst); return Convert.ToBase64String(inarray); } private string GenerateRandomString() { const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var random = new Random(Guid.NewGuid().GetHashCode()); return new string(Enumerable.Repeat(chars, 32) .Select(s => s[random.Next(s.Length)]).ToArray()); } public void Dispose() { _context.Dispose(); } ГЫЫЫ, пароль в SHA1 инглиш у меня какой-то есть. ходил на курсы год (прошел интермидиед и забил), но прошло уже 5 лет и от знаний только словарный запас остался.Этого хватит, на самом деле. Просто по началу будет трудновато читать вещи на английском, особенно технические. Но 21 век, гугл транслит, все дела. Короче не придавай этому особое значение, английский подтянется с опытом сам. поговаривают, что еще есть места, в которых можно просто спокойно писать комментарии по мере надобности, не впадая в безумные крайности. ну это я так, 15 лет опыта не имею, поэтому откуда мне знать Вот это как раз самый хуевый вариант. Потому что тогда будут люди комментить и делать что хотят и вот тогда это приводит к пиздецу и тяжкой читаемости кода. Уж лучше считать комменты за религию и иметь задокументированные стандарты о том, как правильно комментировать классы.Слышал историю, как в одной фирме взяли нового техлида, так он там людям разрешил писать комменты, и после этого понеслось. Боже мой, это была агония, люди реально не понимали почему их приложения сильно теряют в качестве, почему от них уходят клиенты, почему бухгалтерша тетя Люба перестала приносить пироги по пятницам, поговаривали даже, что у директора этой фирмы жена ушла к его конкуренту (хз, что за мужик, но у них 100+ солюшенов, и сайт держит 100к посетителей в день). В какой-то мужик не выдержал, и пришел в свою компанию с огнестрельным оружием. Видел бы ты глаза программистов, они были рады, что их отправят в другой мир, мир, где запрещено писать комментарии. Поделиться сообщением Ссылка на сообщение
DDamager #6027 19 июня 2016 Кстати для практики инглиша письменного нормальная тема поотвечать на стековерфлоуПомню как-то упоролся, и неделю отвечал на вопросы. Нафармил 500 рейтинга, потом надоело Поделиться сообщением Ссылка на сообщение
Kant #6028 19 июня 2016 хм, великий сеньор, расскажи мне еще плз зачем нарушать логичный контракт и вместо ожидаемого возвращения одного юзера по айди возвращается их список? Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
.felix #6029 19 июня 2016 Да инглиш рли сам подтянется если программирование затянет. Хз насчет фриланса, а вообще смотришь вакансии, учишь нужные технологии и идешь джуном. На дошики хватит) Lorde - Sober ll понравилось это Поделиться сообщением Ссылка на сообщение
TheDeadSkin #6030 19 июня 2016 хм, великий сеньор, расскажи мне еще плз зачем нарушать логичный контракт и вместо ожидаемого возвращения одного юзера по айди возвращается их список?так это же си-щарпвсё что не есть IEnumerable должно им бытьпусть даже если это его просто в коллекцию положили Поделиться сообщением Ссылка на сообщение
Supernatura1 #6031 19 июня 2016 (изменено) хм, великий сеньор, расскажи мне еще плз зачем нарушать логичный контракт и вместо ожидаемого возвращения одного юзера по айди возвращается их список? Низачем. В данный момент этот сервис возвращает список в контролер, а тот уже вызывает .FirstOrDefault() чтобы вернуть клиенту одного юзера. Так что со стороны клиента это не важно - результат один и тот же. В рамках проекта из которого я вытянул этот клас, это не критично, ибо проект мизерный. У нас такое конечно бы не пролетело, ибо бизнес логики в контролерах быть не должно. Изменено 19 июня 2016 пользователем Supernatura1 Поделиться сообщением Ссылка на сообщение
Гость Camus #6032 19 июня 2016 Зато комментариев нет. И пароли в SHA1 :lol: :lol: :lol: :lol: :lol: Поделиться сообщением Ссылка на сообщение
Supernatura1 #6033 19 июня 2016 Зато комментариев нет. И пароли в SHA1 :lol: :lol: :lol: :lol: :lol: Окай бро, ты главно не забывай, чем больше смайлов ставишь, тем умнее кажешься и тем весомее твои аргументы (или в данном примере их отсутствие) Поделиться сообщением Ссылка на сообщение
Гость Camus #6034 19 июня 2016 А ты главное не забывай апеллировать к смайликам, когда налажал. А еще когда базу сольют вместе с тобой посмеемся.И да, когда тебе указывают какой ты хуевый программист, не забывай скинуть картиночку с обозначением твоей зарплаты, а то все в топане то нищие уебки, которые вместо кода комментарии пишут. Поделиться сообщением Ссылка на сообщение
fessnik #6035 19 июня 2016 Зато комментариев нет. И пароли в SHA1 :lol: :lol: :lol: :lol: :lol: Окай бро, ты главно не забывай, чем больше смайлов ставишь, тем умнее кажешься и тем весомее твои аргументы (или в данном примере их отсутствие) Все же почему используется устаревший метод хеширования? Поделиться сообщением Ссылка на сообщение
TheDeadSkin #6036 19 июня 2016 может это код написаный лет 15 назадкогда он познал дзен и перестал писать каменты Поделиться сообщением Ссылка на сообщение
Supernatura1 #6037 19 июня 2016 А ты главное не забывай апеллировать к смайликам, когда налажал. А еще когда базу сольют вместе с тобой посмеемся.И да, когда тебе указывают какой ты хуевый программист, не забывай скинуть картиночку с обозначением твоей зарплаты, а то все в топане то нищие уебки, которые вместо кода комментарии пишут. С чего ты решил, что это код из продукции? Неужели ты думаешь я буду скидывать на продота форум код который используется в продукции? Норм ты придумал Поделиться сообщением Ссылка на сообщение
CriErr #6038 19 июня 2016 потому что ты человека люди идиоты Поделиться сообщением Ссылка на сообщение
Гость Camus #6039 19 июня 2016 Гыы, сейчас бы ради прикола писать медели юзеров, с генерацией секрета, "ради прикола", гыы. Да и ты сам написал что этот код где-то используется. Поделиться сообщением Ссылка на сообщение
Supernatura1 #6040 19 июня 2016 Зато комментариев нет. И пароли в SHA1 :lol: :lol: :lol: :lol: :lol: Окай бро, ты главно не забывай, чем больше смайлов ставишь, тем умнее кажешься и тем весомее твои аргументы (или в данном примере их отсутствие) Все же почему используется устаревший метод хеширования? Без понятия. Да и ты сам написал что этот код где-то используется. Okay. Поделиться сообщением Ссылка на сообщение