Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 6

Рекомендованные сообщения

(изменено)

на сколько важно знание инглича при изучении питона ?

не знаешь вражеский (хотя бы на уровне чтения стаковерфлоу и минимального общения для фриланса) - в программировании делать нехуй. литературу тоже хорошо бы читать на английском, но уж ладно, популярные талмуды флениганов переведены, но все равно рано или поздно нужно будет читать документацию к чему нибудь на английском


Изменено пользователем AskMe-

Лишь ощутив баттхерт до конца, мы обретаем свободу

bf4ffc239860.png

Поделиться сообщением


Ссылка на сообщение

инглиш у меня какой-то есть. ходил на курсы год (прошел интермидиед и забил), но прошло уже 5 лет и от знаний только словарный запас остался.

Поделиться сообщением


Ссылка на сообщение

инглиш у меня какой-то есть. ходил на курсы год (прошел интермидиед и забил), но прошло уже 5 лет и от знаний только словарный запас остался.

С хорошим английским и reading тебе будет легче учить доки по языкам и фреймворкам. А также гуглить проблемы и находить на stack overflow. Желательно, upper-intermediate уровень, тогда все лучше пойдет.

Поделиться сообщением


Ссылка на сообщение

инглиш у меня какой-то есть. ходил на курсы год (прошел интермидиед и забил), но прошло уже 5 лет и от знаний только словарный запас остался.

С хорошим английским и reading тебе будет легче учить доки по языкам и фреймворкам. А также гуглить проблемы и находить на stack overflow. Желательно, upper-intermediate уровень, тогда все лучше пойдет.

желательно выше среднего почти профессиональное владение языком чтоб гуглить ?

Поделиться сообщением


Ссылка на сообщение
Гость Camus

у вас только каменты забанены или доки типа /// в 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к посетителей в день). В какой-то мужик не выдержал, и пришел в свою компанию с огнестрельным оружием. Видел бы ты глаза программистов, они были рады, что их отправят в другой мир, мир, где запрещено писать комментарии.
fessnik, CriErr, TheDeadSkin и 2 другим понравилось это

Поделиться сообщением


Ссылка на сообщение

у вас только каменты забанены или доки типа /// в 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к посетителей в день). В какой-то мужик не выдержал, и пришел в свою компанию с огнестрельным оружием. Видел бы ты глаза программистов, они были рады, что их отправят в другой мир, мир, где запрещено писать комментарии.

 

57707359.jpg

Поделиться сообщением


Ссылка на сообщение

Кстати для практики инглиша письменного нормальная тема поотвечать на стековерфлоу

Помню как-то упоролся, и неделю отвечал на вопросы. Нафармил 500 рейтинга, потом надоело

Поделиться сообщением


Ссылка на сообщение

хм, великий сеньор, расскажи мне еще плз зачем нарушать логичный контракт и вместо ожидаемого возвращения одного юзера по айди возвращается их список?


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Да инглиш рли сам подтянется если программирование затянет. Хз насчет фриланса, а вообще смотришь вакансии, учишь нужные технологии и идешь джуном. На дошики хватит)

Lorde - Sober ll понравилось это

Поделиться сообщением


Ссылка на сообщение

хм, великий сеньор, расскажи мне еще плз зачем нарушать логичный контракт и вместо ожидаемого возвращения одного юзера по айди возвращается их список?

так это же си-щарп

всё что не есть IEnumerable должно им быть

пусть даже если это его просто в коллекцию положили

Поделиться сообщением


Ссылка на сообщение
(изменено)

хм, великий сеньор, расскажи мне еще плз зачем нарушать логичный контракт и вместо ожидаемого возвращения одного юзера по айди возвращается их список?

 

Низачем. В данный момент этот сервис возвращает список в контролер, а тот уже вызывает .FirstOrDefault() чтобы вернуть клиенту одного юзера. Так что со стороны клиента это не важно - результат один и тот же. В рамках проекта из которого я вытянул этот клас, это не критично, ибо проект мизерный. У нас такое конечно бы не пролетело, ибо бизнес логики в контролерах быть не должно.


Изменено пользователем Supernatura1

Поделиться сообщением


Ссылка на сообщение
Гость Camus

Зато комментариев нет. И пароли в SHA1 :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Поделиться сообщением


Ссылка на сообщение

Зато комментариев нет. И пароли в SHA1 :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

 

Окай бро, ты главно не забывай, чем больше смайлов ставишь, тем умнее кажешься и тем весомее твои аргументы (или в данном примере их отсутствие)

Поделиться сообщением


Ссылка на сообщение
Гость Camus

А ты главное не забывай апеллировать к смайликам, когда налажал. А еще когда базу сольют вместе с тобой посмеемся.

И да, когда тебе указывают какой ты хуевый программист, не забывай скинуть картиночку с обозначением твоей зарплаты, а то все в топане то нищие уебки, которые вместо кода комментарии пишут.

Поделиться сообщением


Ссылка на сообщение

Зато комментариев нет. И пароли в SHA1 :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

 

Окай бро, ты главно не забывай, чем больше смайлов ставишь, тем умнее кажешься и тем весомее твои аргументы (или в данном примере их отсутствие)

 

Все же почему используется устаревший метод хеширования?

Поделиться сообщением


Ссылка на сообщение

может это код написаный лет 15 назад

когда он познал дзен и перестал писать каменты

Поделиться сообщением


Ссылка на сообщение

А ты главное не забывай апеллировать к смайликам, когда налажал. А еще когда базу сольют вместе с тобой посмеемся.

И да, когда тебе указывают какой ты хуевый программист, не забывай скинуть картиночку с обозначением твоей зарплаты, а то все в топане то нищие уебки, которые вместо кода комментарии пишут.

 

С чего ты решил, что это код из продукции? Неужели ты думаешь я буду скидывать на продота форум код который используется в продукции? Норм ты придумал

Поделиться сообщением


Ссылка на сообщение

потому что ты человек

а люди идиоты

Поделиться сообщением


Ссылка на сообщение
Гость Camus

Гыы, сейчас бы ради прикола писать медели юзеров, с генерацией секрета, "ради прикола", гыы. Да и ты сам написал что этот код где-то используется.

Поделиться сообщением


Ссылка на сообщение

Зато комментариев нет. И пароли в SHA1 :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

 

Окай бро, ты главно не забывай, чем больше смайлов ставишь, тем умнее кажешься и тем весомее твои аргументы (или в данном примере их отсутствие)

 

Все же почему используется устаревший метод хеширования?

 

Без понятия.

 

Да и ты сам написал что этот код где-то используется.

 

Okay.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...