• Есть ли какие-либо недостатки у статических методов?

    @D3lphi
    Значит так, берем толстую тетрадь, ручку и пишем фразу "Статические методы не имеют отношения к ООП" до тех пор, пока не запомним это на всю жизнь.
    Суть объектно ориентированного программирование, как понятно из названия, заключается в том, что должен существовать объект. Статика существует не в контексте объекта, а в контексте класса! Из этого вытекает то, что на протяжении всего жизненного цикла вашего кода будет существовать лишь одно глобальное состояние статических членов класса.

    Использовать статику нужно в случае, если то, что вы ей описываете принадлежит всей группе объектов, а не одному. Например, у класса Human может быть статический метод numberOfLegs(), который возвращает количество ног у людей. Количество ног - это общее свойство для всех людей (Речь идет о здоровых людях). В данном случае можно было использовать константу класса, но это не так важно, ведь, по сути, константа - это тоже статический контекст. А вот имя - это уже свойство каждого отдельного человека. И очень важно чтобы статические методы не изменяли состояние системы в целом, не содержали побочных эффектов.
    В статические методы можно выносить какую либо служебную логику. Например, метод перевода числа из арабской в римскую запись следует сделать статическим.

    Есть ли у статического варианта какие-то подводные камни

    Большое количество. При чем, не таких уж и подводных. Из-за того, что статика глобальна, она плохо поддается тестированию, ее нельзя замокать. Глобальное состояние плохо поддается отладке. Отсутствует возможность подменить реализацию, так как это позволяют сделать объекты.
    Ответ написан
    4 комментария
  • Как лучше всего изучать webpack 4?

    kuzvac
    @kuzvac
    Попробуйте официальную академию вебпака :) https://webpack.academy/
    Ответ написан
    Комментировать
  • Взял первый заказ на UpWORK от индуса. Как разрулить проблемы?

    yetanothercoder
    @yetanothercoder
    java(script) coder
    Печальная ситуация, вызванная видимо прежде всего недостатком опыта в подобных доработках да и в целом, поэтому на будущее несколько правил:
    1) не связываться с индусами (ну только если на хлеб не хватает и кроме индусов работы/заказов нет).
    2) выяснять заранее максимальные подробности заказа перед его принятием (тут очевидно этот ад можно было заранее предвидеть)
    3) не лезть сразу на боевые сервера (production), если у клиента только боевой сервер или он предлагает делать сразу на нем - то учитывая п. 2) посылать лесом.

    По вариантам выхода из ситуации - если первоначальный дамп остался то пытаться все вернуть назад, в том числе и эти 10$, т.е. отменить заказ вообще чтобы у индуса не было возможности оставить еще плохой отзыв (они это любят делать).
    Если дампа нет и вернуть нельзя - ну как бы придется пытаться восстанавливать обратно как он хочет насколько это возможно, но потом все равно отменить нафиг этот копеечный заказ, т.к. в приватном отзыве вряд ли индус поставит все хорошо, даже если это все удасться починить.
    Ответ написан
    5 комментариев
  • Вопросы по потокобезопасности коллекций и объектов?

    w1ld
    @w1ld
    Программирую
    1. Ну, `List` не потокобезопасен. Для избежания Kernel-mode constructs (`lock` и пр.) можно попробовать потокобезопасные ConcurrentQueue или ConcurrentStack в System.Collections.Concurrent, если заполнение до чтения (а не вовремя). Наполняете, вызываете GetEnumerable, который делает снэпшот коллекции, сравниваете. Чтение должно происходить без блокировки.

    2. BlockingCollection для проблемы producer-consumer, когда одновременно чтение и запись. Я так понял это не входит в задачу.

    3. Если вы не изменяете, то и блокировать не нужно. Вне зависимости от reference или value type. (Конечно, через стэк лучше, если изменяете. Тогда копия для каждого потока своя.)

    По теме можно Рихтера почитать, CLR via C#, 10 глава, Asynchronous Synchronization и The Concurrent Collection Classes
    Ответ написан
    Комментировать
  • Нужно ли Высшее Образование если есть опыт?

    Therapyx
    @Therapyx
    Data Science
    у нас где-то начинало 500 людей на первом семестре, в конце закончило только ~100. Дак вот, при разговоре с людьми из тех 400 людей - ответы были примерно такие же. Потеря времени, ненужные предметы и бла бла бла. И это в Германии, где материал как правило первичной(или почти) свежести.
    Даже мой друг помню как-то начинал и кричал это ведь же изи. Через месяц он забирая документы говорил, "ну я думал буду заниматься полезными вещами, а тут ересь какая-то!", когда я спрашивал какие полезные? это оказывалось "писать код", а ересь это Архитектура ЭВМ, Сети, айти безопасность, математика итд... :D
    Универ это хуже работы, если ты не заглядываешь дальше того, что показывает проф, не обсуждаешь эти темы с другими людьми и все в этом духе, значит ты студент из серии "пришел в 8 утра, поспал и ушел домой", а потом жалуешься. И что тебе мешает работать дальше и учиться? У нас огромное кол-во студентиков именно так и делают, так люди и учатся.
    А теперь перефразированная цитата хорошего профа на перекурах - "Берут всех подряд, а потом работой с этой биомассой, у них мало того что способности на нуле, дак и желания еще меньше".
    - А вообще странный вопрос, обычно люди бросают вуз "без опыта". А тут уже 1.5 года. Когда у меня был год опыта, меня не покидали мысли пойти в вуз и изучить айти тематику общирно.
    Ответ написан
    Комментировать
  • Нужно ли Высшее Образование если есть опыт?

    Я бы не бросал, досидел хотя бы до бакалавра, т.к опыт это круто, но всегда можно споткнуться о хрюшу, у которой в требованиях написана вышка, и большее ее ничего не волнует. А в вакансиях на java я почти везде встречал требования о вышке.
    Ответ написан
    6 комментариев
  • Какие книги/интернет ресурсы почитать для начинающего SQL разработчика (transact-sql)?

    @fakir89 Автор вопроса
    Спустя год , отвечу сам на свой вопрос. Отличные книги для подготовки к экзаменам 70-461 - 70-463 и так далее. Книги можно купить на литресе или озоне.

    Microsoft SQL Server 2012. Создание запросов.
    Microsoft® SQL Server® 2012. Реализация хранилищ данных
    Ответ написан
    Комментировать
  • Есть ли большой туториал для изучения С# desktop + DB?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Лучшей книгой для вас будет Эндрю Троелсен "Язык программирования C# 6.0 и платформа .NET 4.6".
    Прекрасная книга для профессионалов, рассказывает обо всём в языке и почти обо всех возможностях и использованиях. В первую очередь, предназначена для программистов, которые уже умеют программировать, но не знают язык C#. В ей всё структурировано на разделы, каждый из них можно читать независимо и использовать как справочник.
    У этой книги есть только один недостаток - написана для профессионалов, и автор пишет, как делать, но не пишет, почему так делать - вы и так уже это понимаете, иначе книга стала бы совсем уж гигантской.

    Рекомендую взять время и попробовать написать несколько консольных программ на c#, начиная с моего любимого решателя квадратных уравнений :) и работы со списками (простой телефонный справочник). И только после этого начинайте работать с WPF.

    А вот очень приличный учебник по wpf:
    https://professorweb.ru/my/WPF/base_WPF/level1/inf...
    Довольно суховато написано, но с неплохими примерами.

    И опять же, рекомендую не начинать делать вашу программу, а сделать с помощью WPF те же программы, которые написали с консолью. И освойтё MVVM.
    Ответ написан
    1 комментарий
  • Есть ли Обучение C# с практикой?

    @PushMeNow
    .NET Developer
    Понимаете в чём соль: у c# спектр деятельности "немного" шире чем у js или php, следовательно и подводных камней больше, поэтому как-то поверхностно на сайтах с нуля я его изучать не советую ибо потом будут восклицания типа:"Какого ... ты не компилишься!?". Если уж приглянулся c#, то советую всё таки по книге с разбором примеров на практике, отлично пишет о нём Герберт Шилдт. Если я вас не убедил, то можете попробовать сайт Метанит, там расположена очень годная инфа, но опять же всё очень поверхностно. Хотя возможно я не прав и для начального ознакомления хватит и основ.
    Ответ написан
    Комментировать
  • Какую посоветуете (актуальную) книгу для изучения JavaScript?

    @Abcdefgk
    "Хороший учебник" про любой язык - это когда в нём хорошие задачи. А "теорию" может рассказать любой дебил. Отсюда вывод:
    https://learn.javascript.ru/
    Ответ написан
    Комментировать
  • Какую посоветуете (актуальную) книгу для изучения JavaScript?

    konkin_ivan
    @konkin_ivan
    Познаю Web!
    Актуальный учебник: https://learn.javascript.ru/
    Ответ написан
    Комментировать
  • Каков сценарий использования git для одного разработчика?

    KazeZlat
    @KazeZlat
    Погромист-затейник
    Работаете в ветке dev, периодически вливая ее в master. Для крупных задач (не входящих в один коммит) делаете отдельные ветви из dev.

    Вливая dev в master, делаете это с ключом --squash как то так:
    git checkout master
    git merge --squash dev

    Тут теоретически могут быть конфликты, если вы делали коммиты в masterпараллельно с dev, которые вам надо разрешить, а после уже добавляете и делаете один большой коммит:
    git add -A
    git commit -m "Merged dev: %кратко (или нет) основные изменения%"
    git push


    А чтобы не мозолили глаз висящие коммиты с логической незавершенностью, их можно сливать их перед merge с помощью интерактивного rebase:
    git checkout dev
    git rebase -i master

    Откроется редактор, в котором будет список коммитов ветки dev. Здесь можете слепить ненавистные коммиты с помощью команды squash (и тогда вам предложат отредактировать сообщение) или fixup (тут не предложат) и потом сделать git push --force (для одного не критично, в толпе лучше использовать --force-with-lease.

    Или есть еще вариант - лепить к предыдущему коммиту сразу с помощью git commit --amend

    Ну и после merge уже можете на master лейбл версии повесить.
    Ответ написан
    Комментировать
  • Как правильно дождаться выполнения всех потоков, созданных в цикле?

    @kttotto
    пофиг на чем писать
    У Вас не правильный подход. Во первых забудьте про Thread и используйте TPL. Во вторых для распараллеливания запросов в цикле есть замечательный метод Parallel.ForEach. В третьих для ожидания выполнения всех параллельных задач есть Task.WaitAll.
    В общем Вы можете создать список Task-ов и запихнуть их в Task.WaitAll, но лучше пройдитесь параллельным форичем по Вашему периоду и внутри запускайте Ваши методы. Код за форичем будет ожидать завершения всех потоков в цикле.
    Ответ написан
    2 комментария
  • Какие самоучители посоветуете вы для изучения английского?

    @Frel
    На распутье
    Есть один сайт где грамматика в одном месте и не только!
    lingualeo.com
    Ответ написан
    Комментировать
  • Полезные ресурсы, а лучше книги про Паттерны?

    Если по хорошим ресурсам(помимо книг), то вот: https://refactoring.guru/design-patterns

    p/s присутствуют примеры на Java
    Ответ написан
    Комментировать
  • Полезные ресурсы, а лучше книги про Паттерны?

    qonand
    @qonand
    Software Engineer
    Читать стоит классику жанра:
    Э.Фримен, Э. Фримен — Паттерны проектирования
    Э.Гамма, Р.Хелм, Р.Джонсон, Дж.Влиссидес. — Приемы объектно-ориентированного проектирования. Паттерны проектирования
    М.Фаулер - шаблоны корпоративных приложений

    Лучше конечно читать в оригинале, но есть и переводы на русском
    Ответ написан
    Комментировать
  • Чему учиться для работы из дома?

    @klim76
    android/java/sql
    путь первый:
    1) закупитесь дошираком
    2) найдите хоть кого нибудь кто возьмёт вас без опыта не за бесплатно, удалённо со знаниями "никаких кроме HTML"
    3) копайте вглубь и вширь на этом месте
    4) найдите что вам в ваших раскопках будет больше по душе и учите это
    путь второй:
    1) почитайте интернеты, выберите себе, как вам кажется, приемлемое направление развития
    2) пытайтесь изучать это
    2.1) умрите с голоду...
    Ответ написан
    1 комментарий
  • Какой алгоритм подойдет для описания полета насекомого?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Можно сделать цепочку преследования: к случайной точке тянется одна, к ней другая, и т.д., а последняя – муха.

    Очередную точку ставить на плоскости случайно, в любом месте внутри допустимой области. Эта точка – цель, к которой стремится следующая, невидимая точка: каждый следующий кадр её координаты изменяются на k * векторИзТекущегоПоложения-в-Цель:
    x = x + k * (xTarget - x);
    y = y + k * (yTarget - y);

    Так «преследователь» замедляется, по мере приближения к цели, никогда её не достигая.

    Эта невидимая точка – не одна. К ней, как к цели, стремится следующая. К той ещё одна. Наконец, сама муха по этому закону стремится к хвосту этой цепи - очередной точке.

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

    Сделал рабочий пример.

    Можно поменять алгоритм и сделать, скажем, линейную скорость постоянной. Или случайно варьировать параметры k и D – от этого поменяется скорость и траектория от плавной ближе к ломаной.
    Ответ написан
    Комментировать
  • Как эффективно изучать JS?

    dmitry_pavlov
    @dmitry_pavlov
    World-class .NET freelance contractor (remotely)
    Только практический опыт позволит за пару-тройку лет в достаточной мере осознать JS и области его применения (на клиенте и/или сервере, для реализации всей логики и/или только определенного уровня в классической многоуровневой архитектуре, или вообще - только частичного применения для частных задач вроде валидации/анимации вкупе с прочими технологиями вашего основного стэка).

    Важно также понимать разницу между:
    • JS как языком программирования,
    • использованием JS в той или иной парадигме программирования (на нем можно работать и в функциональной парадигме, и в ООП и других при желании)
    • использованием многообразных JS фреймворков с лежащими в их основе архитектурами и подходами
    • использованием JS библиотек/компонентов

    Язык сам по себе такой же простой как любой другой - десяток условных операторов и циклов крестом :) В этом плане тут все просто.
    Ответ написан
    2 комментария
  • В программисты или в тестировщики (идти)?

    x67
    @x67
    Какая работа по душе, туда и идите. Если бы грузчики получали больше инженеров (а иногда так и есть), я бы все равно не пошел работать грузчиком потому что не люблю рутинную монотонную изнурительную работу. С другой стороны, кто-то не любит напрягать мозг - он идет грузчиком. Это ничего не значит, просто каждому свое. Из своего опыта добровольного и бесплатного опыта бета-тестера могу сказать, что это рутинное и неинтересное занятие, от которого сильно тянет в кроватку. Но есть прекрасные тестировщики, балдеющие от своей работы. Кто прав? Тот кто сделал для себя правильный выбор.
    Ответ написан
    Комментировать