• Как разобраться в полученном проекте?

    profesor08
    @profesor08
    Документации нету к проекту, все в головах других программистов

    Тут нету тех программистов и нету документации. Твоя документация - те самые программисты, крути верти.

    и часе всего его ответы не помогают, т.к. поверхностны или не работают

    Может ты неправильные вопросы задаешь?

    Моя задача требует генерации данных, на основании прошлого этапа генерации

    Нету тут проблемы. Если алгоритм работает неправильно, делай чтоб работал правильно.
    Ответ написан
    Комментировать
  • На каком языке будет быстрее парсить?

    Sly_tom_cat
    @Sly_tom_cat
    .
    Да в принципе можно на любом - главно многопоточность использовать.
    Ответ написан
    Комментировать
  • C# и Шилдт, как пройти книгу по своему первому ЯП и не взорвать мозг?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Отложить книгу и попробовать сделать то, что хочется :) Например, поменять текст в консоли. Уверен, что для этого придется поднять такой пласт знаний - и при этом раз пять вернуться к книге :) Есть вещи, которые только кажутся простыми...
    Ответ написан
    4 комментария
  • C# и Шилдт, как пройти книгу по своему первому ЯП и не взорвать мозг?

    Astrohas
    @Astrohas
    Python/Django Developer
    Как заставить себя читать ? Проблема в том что Ваш мозг перестает воспринимать новую информацию потому что начинает считать что это нафиг не нужно. Мозгу должно быть интересно. Выберите какой нибудь маленький проектик типа банального текстового редактора и начинаете дорабатывать. Начните с сохранения и открытия файла, затем потихоньку добавляйте. Сделали текстовый редактор, сделайте потом что-то другое, и плевать что 90% будет говнокодом или копипастой, важно чтобы Вы занимались этим. За месяц программированию не научиться, за два тоже.
    По теме:
    f4-19188.pngUPD: Кстати есть многостраничный комикс помогающий изучить C# https://www.piter.com/product/izuchaem-c-3-e-izd
    Ответ написан
    Комментировать
  • C# и Шилдт, как пройти книгу по своему первому ЯП и не взорвать мозг?

    @Oblomingo
    Сам лет пять назад учился по Шилдту. Мужик все очень грамотно обьясняет, читать очень приятно.
    Вот я и читал дома по вечерам, на природе возле озера даже брал книгу с собой к теплому морю.
    Она дала теоретический базис и послужила хорошим фундаментом для дальнейшего изучения.
    А дальше была книга WPF и вот тут пошла практика и пригодились все знания из Шилдта.

    Я вам советую сейчас не сильно огорачться если "не хватает оперативки", просто дочитайте книгу до конца. Не надо запоминать наизусть, просто убедитесь что понимаете код, который написан в параграфе. Даже если вам кажется, что вы мало чего запомнили, в голове у вас основы останутся и всплывут в памяти когда это потребуется.
    Ну а после Шилдта берите что нибудь из прикладных .Net технологий - напишите интернет сайт (прокачаете web навыки, что поможет найти работу) или десктопное приложение, можете попробовать простенькую игру (тут вы познакметесь с паттернами проектирования).
    Вы только встали на длинный, интересный но трудный путь программиста. Немного терпения и у вас все получится!
    Ответ написан
    1 комментарий
  • Где научиться разрабатывать качественные сервер-клиент приложения?

    @kos_dev Автор вопроса
    Ответ написан
    Комментировать
  • Использовать var или объявлять тип явно?

    @kvasek
    Без разницы.

    Локальная переменная с неявным типом имеет строгую типизацию, как если бы тип был задан явно, только тип определяет компилятор.
    https://msdn.microsoft.com/uk-ua/library/bb383973.aspx
    Ответ написан
    Комментировать
  • Использовать var или объявлять тип явно?

    @dmitryKovalskiy
    программист средней руки
    Без разницы.
    На мой взгляд описание -
    var variable = new MyObject
    просто короче и красивее. Нет двойного упоминания типа, которое в данном контексте - масло масляное.
    Ответ написан
    Комментировать
  • Как работать с Word-файлами из C#?

    @leremin
    atypical programmer
    Если через interop, то как-то так
    Word.Application application = new Word.Application();
    Object missing = Type.Missing;
    application.Documents.Add(ref missing, ref missing, ref missing, ref missing);
    Clipboard.SetImage(pictureBox1.Image);
    application.ActiveDocument.Paragraphs[1].Range.Paste();
    application.Visible = true;


    А вообще гуглите "word interop insert image" или "openxml sdk insert image". Тема довольно обширная.
    Ответ написан
    2 комментария
  • Как передавать пароль от браузера серверу, как его хранить на сервере и проверять корректность?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Пароль не должен отправляться в открытом виде по сети.
    где вы это прочитали? Пароль нигде не должен светиться при вводе и отправке, по этому парольное поле делают со звездочками, а для отправки используют метод post а не get, чтобы пароль не светился в строке браузера. Для защиты от атак mitm используют https, хотя при верном подходе это тоже не суперзащита, ключи могут перехватить, некоторую защиту дает, но если сессия обмена ключами поймана - уже можно забить на хттпс защиту.
    И также пароль не должен храниться в открытом виде на сервере.
    Логично, пожалуй единственная логичная строчка в посте )
    Получается, мы должны отправить не пароль, а хэш от него и соль, которым был присыпан пароль при хешировании.
    Не получается, мы отправляем пароль не зная соли, в этом вся соль )) Сервер принимает пароль от пользователя (открытый), хеширует его с солью(известной только серверу), и сравнивает с хранимым в базе. Если хеши совпали - пароль угадан верно )
    Ответ написан
  • Как передавать пароль от браузера серверу, как его хранить на сервере и проверять корректность?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    В зависимости от степени безопасности.

    Если разбить все это на "по-проще", общий принцип такой:

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

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

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

    Как ты понимаешь, это иллюзия безопасности, а не гарантия.

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

    Вот еще тема, которую василий сказал - шифровать пароль уже на стороне клиента в момент отправки формы яваскриптом. Представьте себя хакером. Вы получили пакеты какого-то чувака, поставили компьютер на расшифровку, подключив десяток видеокарт, расшифровываете пароль, а вместо него видите 64 символьный хеш, ну то есть он прямо от клиента таким вышел. После этого будут маты от того, что теперь массив видюх нужно заставить еще и ключевую фразу из хеша выдрать. Ну то есть еще время декодирования увеличивается. Если загнаться то хеш может быть не просто хешем md5() а например md5 от md5 от развернутой строки прибавленной к md5() прямой строки, прокинутой через побитовый сдвиг на один разряд - ну то есть даже в этом закодировать последовательность действий. При отсутствии https - наиболее надежный способ.

    И потом - программисты Yii не рекомендуют использовать фунцию md5(). Почему? Потому что она быстрая очень. И при переборе пароля массивом видеокарт перебирается он шибко быстро. Поэтому рекомендуют использовать hash функцию, которая для создания хеша использует побольше времени, несколько секунд скажем. При написании синхронной программы (сайта на php, например) - это заставит юзера подождать после регистрации секунды 3-4 лишних, но если загнаться то процесс генерации пароля можно запихнуть в асинхронщину, а пользователю сразу токен выдать, то есть пароль ему сгенерируется чуть позже. Таким образом - за счет более длинной хеш-функции по времени хакеру потребуется куда больше времени - то есть юзеру на прямое создание пароля 5 секунд, а хакеру на перебор нескольких миллионов паролей понадобится несколько лет. Никто ему не заплатит 10 косарей баксов, чтобы сломать ваш долбанный пароль ВКонтакте. Если банковская сфера - опять же как писал выше - хеш от хеша, да развернуть пару раз, да трижды порубить, потом постучать в бубен и все это в хеш еще раз и вуаля - декодирование пароля займет 100 лет.

    Еще значит, При малейшем намеки на несоответствие токена или внезапное изменение - сервак говорит "тю, дядя, давайка пройди второй этап авторизации, а то я не верю, что это реально ты" и просит приложить палец. Или ввести номер, получив СМС. Или вставить ключ-карту синюю (duke nukem hello). Но и тут есть взлом - ключ карту украсть, смс-ку - попросить телефон, приложить палец = отрубить руку, вырвать глаз и тд

    Тут к тебе на помощь приходит https. Https это такая штука, которая в двух словах может быть названа игрой в партизан. На войне играли так - когда радиопереговоры прослушивались, а шифраторов не было - единственным средством защиты - было использовать ошибки в тексте и матерные слова.

    Так и тут - данные отправляемые в виде нулей и единиц. Компьютеры их так же легко перекодируют в пароль, как и закодировали. Чтобы этого не было, придумали ШИФРОВАТЬ строку в одну сторону. У сервака есть трафарет, у пользователя другой трафарет. Сервак шифрует своим, но назад можно расшифровать только пользовательским. Вернее можно и сторонним конечно, но современные компьютеры сделают это за много лет, и потому никто не заморачивается особо, производительность не та.

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

    Так что авторизация - она простая. Вся надежда на шифрование. А сертификат, на котором пол-мира делает бабло - это средство подтверждения того, что компьютер умеет шифровать. Интересно, что он кончается каждый год, как будто в прошлом году компьютер умел шифровать, а в этом вдруг разучился. На деле конечно - просто гоните бабло, иначе покажем красный крестик вместо зеленого замочка, и в гугле понизим, так что гоните бабки. Вот.
    Ответ написан
    1 комментарий
  • C#: Реализация UnitOfWork factory?

    1) https://habrahabr.ru/post/321050/
    2) https://habrahabr.ru/post/276593/
    3) Посмотреть примеры кода на https://code.msdn.microsoft.com/
    - Unit of Work & Repositories Framework
    - KiksApp Enterprise application architecture Onion
    4) Pluralsight
    - Become a Full-stack .NET Developer - Advanced Topics
    - Become a Full-stack .NET Developer - Architecture and Testing
    - Become a Full-stack .NET Developer - Fundamentals
    Ответ написан
    1 комментарий
  • Как сильно востребовательны технологии microsoft наподобие Xamarin, ASP.NET на рынке труда?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Самое очевидное - открыть сайт вакансий и проанализировать.
    Ответ написан
    4 комментария
  • C# как первый язык программирования. Как выстроить план изучения?

    NYMEZIDE
    @NYMEZIDE
    резюме - ivanfilatov.ru
    https://metanit.com/sharp/
    https://unity3d.com/ru/learn
    а планы чтобы вам составили - это надо искать наставника. многого хотите.
    план простой - начать с основ на метаните, и пункт за пунктом все ручками сделать. не справляешься, не понимаешь - еще раз.
    потом переходи на Юнити, примеров много, видео обучения на английском тоже хватит для начала. дальше все в ваших руках! удачи!
    Ответ написан
    Комментировать
  • C# как первый язык программирования. Как выстроить план изучения?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Я Студент.

    Студент какого учебного заведения?

    Шилдта в руки и вперед!

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

    А какой результат вам нужен? Хэлловорд сможете написать уже через час, а нормально что-то писать начать средний человек может через полгода-год.
    5-6 часов в день - это очень дофига для изучения. Я бы даже сказал, этого слишком много, ибо поглотить информации можно больше, чем "переварить", в голове образуется стылая плотная масса необработаной информации, которая с разных сторон торчит ключевыми словами. Оптимально - это 3-4 часа (2 на теорию + 1 на эксперименты с кодом) + здоровый сон в 7 часов.

    Во-первых, вы куда-то торопитесь? Не стоит, ничего гениального в ближайший год из-под пера не выйдет, это нормально. Сначала учитесь худо-бедно что-то примитивное писать, параллельно изучая API FCL, потом на этой базе делать маленькие тулы. Затем беретесь за серьезную литературу, вроде Рихтера и познаете суть CLR. Знания C/C++ здесь могли бы пригодиться, если вам их будут преподавать. Затем "Банду четырех" и учитесь примитивы собирать в кучу грамотно, используя паттерны разработки. Параллельно осваиваете кучу новых языков и технологий, экспериментируете (без этого есть риск быстро выгореть и забросить программирование). Полезно устроиться и где-то поработать некоторое время, попилить опенсорс. Ментор - это здорово, но не обязательно. Остерегайтесь платных курсов, любите книжки.

    И, главное, если действительно хотите научиться хорошо программировать, тогда не ограничивайте себя Unity (где C# - это язык скриптов, наравне с JavaScript), оттачивайте знания, копайте глубже фреймворков, интересуйтесь IT, учитесь решать реальные проблемы. Ведь это не самая плохая профессия, которая сможет сделать вам будущее.
    Ответ написан
    1 комментарий
  • Какую графическую 3d библиотеку на C# выбрать для создания игры?

    @Nwton
    DirectX
    Ответ написан
    Комментировать
  • Как сделать автоматическое увеличение содержимого в форме Windows Forms при расширении экрана?

    Rou1997
    @Rou1997
    С помощью свойств Anchorsи Dock, а для более сложной логики используйте специальные контейнеры, управляющие layout'ом, такие как FlowLayoutPanel.
    Ответ написан
    Комментировать
  • Что не так с наследованием интерфейсов?

    @Sumor
    Вы не указали, что Lol реализует интерфейс IParent
    public class Lol : IChild, IParent
    А также, вероятно, вы хотели в IChild добавить свойство Family

    После обновления кода:
    Вы используете явную реализацию интерфейса, но у IChild нет собственного свойства Family, только наследуемое от IParent. Как раз можно изучить ключевое слово new у свойств.
    Возможно то что вы хотите посмотреть делается так:
    using System;
    
    
    public class Test
    {
    	public static void Main()
    	{
    		Lol l = new Lol();
    		Console.WriteLine(((IParent)l).Family);
    		Console.WriteLine(((IChild)l).Family);
    		Console.WriteLine(l.Name);
    		Console.ReadLine ();
    	}
    }
    
    public class IParent
    {
    	public string Family { get { return "suck"; } }
    }
    
    public class IChild : IParent
    {
    	public string Family { get { return "duck"; } }
    
    }
    
    public class Lol : IChild
    {	
    	public string Name { get { return "ross"; } }
    }
    // Вывод:
    // suck
    // duck
    // ross
    Ответ написан
    Комментировать