• Как реализовать динамическое изменение класса в C#?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Если я правильно понимаю, то вы про полиморфизм)
    Что-то вроде:

    // Каждая локаль должна иметь в себе словарь с переводами
    public interface class ILocale {
        Dictionary<string, string> Translation { get; }
    }
    
    // реализации разных локалей
    public class English : ILocale {
        public Dictionary<string, string> Translation {get; set;} = new Dictionary<string, string> {
            ["test"] = "Test"
        };
    }
    public class Russian : ILocale {
        public Dictionary<string, string> Translation {get; set;}  = new Dictionary<string, string> {
            ["test"] = "Тест"
        };
    }
    public class Ukrainian : ILocale {
        public Dictionary<string, string> Translation {get; set;}  = new Dictionary<string, string> {
            ["test"] = "Тест"
        };
    }
    public class Kazakh : ILocale{
        public Dictionary<string, string> Translation {get; set;} = new Dictionary<string, string> {
            ["test"] = "Сынақ"
        };
    }

    И, допустим, читаем из какого-то конфига:
    namespace TestLib{
        class Program {        
            static void Main(string[] args) {
                ILocale locale = GetLocale();
                WriteLine(locale.Translation["test"]);
                ReadKey();
            }
        }
    
        private static ILocale GetLocale() {
            // Мы можем получать ее динамически из конфига
            // но вызывающий код знает лишь, что это будет некая локаль, но какая
            // точно - неизвестно
            return Configuration.GetLocaleFromXml(); // псевдокод
        }
    }
    Ответ написан
    2 комментария
  • Есть ли ляпы в коде?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Одна логическая ошибка в коде точно есть. Объясню ее на примере.

    function setHandler(el){
    
       var obj = new MyController(el);
    
      $(el).on("click", function hand(){
          alert(obj.name);
      });
    
    }
    
    setHandler(element1);
    setHandler(element2);


    После выполнения данного кода в память браузера попадают:
    • Функция setHandler
    • Два объекта типа MyController
    • Две функции hand - обработчики события onclick.


    Да-да, для каждого вызова setHandler создается своя функция hand. Две (три, десять или даже миллион) разные функции с одинаковым телом. Все, что их отличает - область видимости, в которой они объявлены (к примеру, внутри каждой из них доступен свой obj).

    Но, спрашивается, как мы можем оптимизировать потребление памяти в данной ситуации? А вот так:

    function hand(){
    
      var obj = $(this).data("obj");
    
      alert(obj.name);
    
    }
    
    function setHandler(el){
    
       var obj = new MyController(el);
    
      $(el)
        .data("obj", obj) //Как вариант
        .on("click", hand)
      ;
    
    }
    
    setHandler(element1);
    setHandler(element2);

    Вынесем hand в более высокую область видимости.

    Теперь в памяти сохранены:
    • Функция setHandler
    • Функция hand
    • Два объекта MyController
    Ответ написан
    7 комментариев
  • Как составить план обучения на ближайшиее время?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день, Дмитрий.

    1. В такой последовательности:
    Python
    a) Майкл Доусон - рус ... eng
    b) Марк Лутц - рус ... eng
    c) Дэвид Бизли + Лучано Рамальо
    Дальше - самостоятельный выбор, исходя из личных потребностей.
    Django
    a) Джейкоб-Каплан Мосс и Адриан Головатый - рус ... eng
    b) Django Girls Tutorial
    c) Гринфилды + Равиндран

    Параллельно читаем Django documentation

    2. HTML5 + CSS3 + JS + SQL.
    Знать на уровне, достаточном для реализации собственного проекта с нуля (скажем, свой сайт). Для этого, правда, достаточно HTML и CSS, в объеме указанных книг. Другой вопрос, что и JS, и SQL практически всегда требуются в багаже знаний при устройстве на работу (достаточно посмотреть вакансии).

    3. Нет, просто нету смысла. Актуальной качественной литературы по Python хватает. Есть некоторые исключения (некоторые из них мною упомянуты), но в целом, повторюсь, с современной литературой у Python все в полном порядке. Ищите на Amazon, сортируя по дате выхода.
    Ответ написан
    9 комментариев
  • Как составить план обучения на ближайшиее время?

    @JuniorNoobie
    Сижу в поддержке, пишу мелкие проекты
    Смотря что вы хотите. Есть разделение на frontend, backend, database. Есть технологии (фреймворки, библиотеки), лежащие на стыке этих трех "китов". Есть различный инструментарий для работы. Я бы рекомендовал начать ознакомление с web-разработкой с основ: HTML, CSS, базовый JavaSript. Попутно нужно читать про различные протоколы (в основном, интересуют транспортные: HTTP, UDP, FTP). Как работает браузер, сервер, какие спецификации сейчас в ходу. Затем начните изучать серверную сторону вопроса: язык, web сервер, деплой приложения. Можно также начать изучать основы Баз данных: на уровне создания/редактирования/удаления таблиц/процедур, добавления данных. Получив базовые знания, можете начинать изучать библиотеки/фреймворки на стыке технологий. Здесь такое раздолье, что даже изучая какую-то одну вещь вы можете никогда не изучить ее до конца по ряду различных причин.
    Вот я лично сейчас изучаю такой стек:
    HTML, CSS, Javascript
    Jquery(Javascript), Bootstrap(Javascript+CSS), LESS(препроцессор CSS)
    C#, MVC (паттерн), Entity Framework (DB+C#, ORM)
    MS SQL, ORACLE (DB)
    Из инструментов: Git/SVN, VS 2013, Notepad++, Photoshop.

    В-общем, сначала база, алгоритмы, потом библиотеки/фреймворки. Если начать с фреймворков, то все равно рано или поздно вы вернетесь к "а как же эта штука работает?"...
    Ответ написан
    Комментировать
  • Что изучать после Битрикса для фриланса за рубежом?

    opium
    @opium
    Просто люблю качественно работать
    рынок интернет магазинов на западе подмял под себя magento а он на php zend mysql
    Ответ написан
    Комментировать
  • Как подготовиться к закону Яровой?

    @nirvimel
    1. Купите недорогой VPS (от $15/год, можно даже дешевле) и поднимите на нем личный VPN. В Сети есть куча подробных руководств как это делается. Только не надо говорить, что у вас нет на это денег, интернетом вы же не бесплатно пользуетесь. Просто примите это как небольшую дополнительную плату за интернет за ваш спокойный сон.
    2. Работая через VPN (обязательно), заведите себе новый почтовый ящик на зарубежном сервере у компании, у которой нет никакого бизнеса и любых коммерческих интересов в РФ. Пусть это будет не мажорный гигант индустрии, а скромная компания, малоизвестная в РФ. Главное - это наличие SSL в веб-интерфейсе и в IMAP, в остальном почта есть почта, она просто работает, и этого достаточно.
    3. Работая через VPN, заведите себе новый аккаунт в vk facebook и/или google (если вы неспособны полностью отказаться от использования социалок). При регистрации указывайте место проживания подальше от РФ. Учитывайте, что все гиганты индустрии, имеющие большой бизнес в РФ, полностью сотрудничает с ГБ, но аккаунты нерезидентов, зарегистрированные и посещаемые с зарубежных IP, они не станут сливать по умолчанию (но по первому запросу сольют мгновенно). Так что забудьте про любые приваты в социалках, ведите все общение так, как будто все это читает весь ваш квартал и все те, кому бы вам меньше всего хотелось это показывать. Для приватного общения пользуйтесь только безопасной почтой (пункт 2) и защищенными чатами, на telegram jabber на зарубежных серверах. Все это касается только тех, кто не может окончательно завязать с пагубной зависимостью от соц.сетей. Очевидно, наиболее безопасным (и полезным для здоровья) вариантом является полный отказ от социалок.
    4. Не вбрасывайте в старые ящики и соц.аккаунты адреса и ссылки на новые чистые, не указывайте новые адреса в любых исходящих и старайтесь, чтобы они не попали во входящие. Помните, что в любой социалке и любом веб-интерфейсе почты (сотрудничающей) кнопка "удалить" скрывает удаляемое только от вас самих и не более того.
    5. (Самый неприятный пункт) Забудьте про vk, mail.ru и российские gmail и facebook. - КАК? - Так! Я понимаю, что это не легко, что они давно стали частью вашей жизни. Но это придется сделать! Поговорите сами с собой, спросите себя что для вас важнее: ваша личная безопасность, спокойствие и крепкий сон или старые привычки, которыми вы опутаны, и которые не хотят отпускать вас? Учтите, что продолжая пользоваться местными социалками (и сотрудничающими иностранными), вы продолжаете каждый день генерировать на себя тонны компромата, который может обернуться против вас в самый неожиданный момент самым неприятным образом. Проявляя активность в своих старых аккаунтах, вы не даете им "протухнуть" и не даете даже формального повода добрым компаниям снести их через пол года, после истечения отведенного законом срока хранения (как известно, vk не ограничивается минимальным сроком хранения, а хранит все метаданные и текст практически вечно за исключением видео/аудио).
    Ответ написан
    26 комментариев
  • Стоит ли продолжать изучать Android develop?

    vaux
    @vaux
    Курящий лыжник
    Освойте сначала что-то одно на приличном уровне, а уже потом будете гнаться за трендами, следить за выходом новых технологий и т.п. В первую очередь вам нужна база: алгоритмы, структуры данных, понимание ООП, знание паттернов, TDD и т.д. Потом вам нужен опыт программирования. Чем больше вы пишите, тем больше понимания того, что вы делаете. Устройтесь джуном в контору, где над вами будет стоять опытный сеньер или тимлид. В конторе обязательно должен практиковаться code review, где ваш код будут разбирать и указывать на ошибки и спорные моменты. C++ и андроид не исчезнут в одночасье, можете спокойно развиваться в том, что вам интересно. А технологии рождаются и умирают. Это нормально и вам с этим жить, если решили стать программистом. Вам постоянно придется изучать что-то новое, но для начала освойте что-то одно на хорошем уровне.

    Более того. Если вы программист, то вы в первую очередь software engineer. Вам не должно быть дела до языка или технологии. Это всё вторично, потому что вы должны знать всё. Вам дали задачу, вы выбрали наиболее подходящий инструмент и решили эту задачу. К этому нужно стремиться.
    Ответ написан
    1 комментарий
  • Какие плагины использовать веб разработчику в sublime text 3?

    Extremum
    @Extremum
    Человек спросил про Sublime, ему в ответ IDE. А если через FTP только доступ есть и надо файл стилей поправить, тоже запускать PHPStorm?

    По теме лично я юзаю: Emmet, Git, AutoFileName, ColorPicker, Sublime SFTP
    Ответ написан
    11 комментариев
  • Как увеличить скорость разработки и внимательность?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Скорость работы штука мутная и неоднозначная. Давно установлено как факт, что мозг может одновременно хранить в сознании 7+-2 объекта, т.е. от 5 до 9, в зависимости от кучи факторов. Все что свыше того, нужно как-то хитро организовать, иначе получится каша. Да и продуктивно напрягать мозг больше 4-5 часов в сутки в совокупности могут только продвинутые джедаи...

    Любая работа любого программиста начинается с построения модели приложения/модуля, над которым предстоит поработать. В этом процессе немаловажным звеном является моделирование потоков входящих и исходящих данных.

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

    В процессе простраивания архитектуры заодно всплывают все сопутствующие технологии, и возможно неоднократное пересматривание как модели так и архитектуры, т.к. это вещи взаимосвязанные.

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

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

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

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

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

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

    Вторая рекомендация осознать, что джун - это такой ремесленник-подмастерье, который делает кирпичи руками, как правило медленно и криво.

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

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

    Четвертая рекомендация - постоянно прокачивать скиллы, много читать доки, вникать, задавать много вопросов и искать на них ответы, и пробовать все на практике. Критерий истины - практика.

    То, что джун не шибко быстр - это нормально, до 70% времени джун должен штудировать доки, из оставшихся 30%, до 95% времени - это дебаггинг. :) Так-что на реальный дев остается не так много времени, 0.3*0.05...

    Понятно, что в идеале джун должен этим заниматься не только в рабочее, но и в свое свободное время. Когда я вгрызался в основы, я мог маньячить по 12-16 часов в сутки, без праздников, выходных и каникул. Благо обстоятельства позволяли...

    И, главное, терпение+усидчивость. Путь это нелегкий, не простой, учиться придется постоянно, и постоянно будут критиковать, что мог бы поточнее, побыстрее, побольше и подешевле.... :)
    Ответ написан
    Комментировать
  • Как получить первую работу на upwork?

    opium
    @opium
    Просто люблю качественно работать
    нахрена вы пишите как вас зовут если это так видно из вашего профиля
    нахрена вы пишите про свой пояс тем самым вы отталкиваете 100% клиентов так как часовой пояс от них отличается от американского на 9 часов
    квик про таск может быть хорошо так как вы не написали что в него пишите

    а вот это нахрена ?

    and I am ready to explore deeper on interviews.

    I am very intrested in this project because I like to program in *.net, java*.

    In my profile, you can see more info about me.

    Kind regards.

    проверять первый ли ты или нет надо после того как забидил , а не до.
    бидить надо первым
    бидить надо в часовом поясе американцев

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

    Игорь
    Привет! (имени, увы, не знаю)
    Ссылку нашел на тостере. Правильно ли я понял, что работая в Тае, ты можешь предложить какие-то удаленные вакансии/фриланс?
    03.02.16

    Puma
    А что умеешь и по чем?
    04.02.16

    Игорь
    В первую очередь C# .net, больше опыта на Desktop (WPF), расту в ASP.NET. Могу и С++. Есть вообще что-то удаленное по таким технологиям? По цене - для начала 15$
    04.02.16

    Puma
    Не мой профиль
    04.02.16
    А так на апворке куча работы

    Игорь
    Для .net куча?
    04.02.16

    Puma
    Да
    04.02.16
    Недавно только дотнет приложения разворачивал

    Игорь
    отлично) думал, что с .net можно об удаленке и не мечтать. Спасибо, поищу

    А вот десятого августа, прошло по сути 6 месяцев

    Игорь
    Доброго времени)
    С нашего последнего разговора многое произошло, я сделал 3 проекта на UpWork, побывал на Самуи, и решил туда переехать. Поможете парой советов?
    10.08.16

    Puma
    Помогу
    10.08.16

    Игорь
    На Самуи интернет нормальный (видео-скайп, remote desktop) реально пробить?
    10.08.16
    и второй вопрос, вот это за 20 тыс бат - дорого? Мне надо жилье найти, я пока не в теме вообще:
    Ответ написан
    2 комментария
  • Как получить первую работу на upwork?

    lunaticman
    @lunaticman
    Дерзкий айтишник
    Привет.

    Я успешно забустил свой профайл на Апворке до 80 баксов в час (сейчас я уже апворком не пользуюсь), порекомендовал свою систему други друзьям которые удачно нашли проекты потом. Поэтому постараюсь коротенько объяснить:

    - Первый проект тяжелее всего найти, я искал около месяца.
    - Нужно искать что-то "безопасное", проект который не займет у вас много времени и которые вы уверены что сделаете.
    - Советую даже не думать о почасовых работах, шанс крайне маленький.
    - Если у вас есть возможность, попросите кого то из существующих клиентов нанять вас (либо просто дайте им сто баксов, чтобы они вам якобы оплатили вашу работу).
    - На апворке есть несколько "прайм таймов" - периоды в которые появляются новая работа, я обычно мониторил работу пару часов в день. Не стоит тратить на "охоту" много времени. :)
    - Отказаться от любых шаблонов письм, я рекомендую как наниматель , шаблонные письма видно сразу - доверия не вызывает.
    - Попробуйте записать видео в качестве cover letter - только это вам поможет выгодно отличится в ряду других кандитатов
    - Выделите самые важные элементы в предложении о работе и объясните как вы их хотите изящно решить. В конце предложите обсудить все требования, задайте какие-то наводящие вопросы, дайте советы (нужно чтобы ваш клиент, узнал что-то новое от вас). То что вы сразу по описанию составляете план работ и архитектуру - без каких-либо уточнений и вопросов - звучит крайне фантастично.
    Ответ написан
    21 комментарий
  • Программирование с ноля. Не студенческий возраст. С чего начать?

    Итак, раз для домашнего пользования, то Java лучше отложить. В принципе они примерно равны с C# по весовой категории и областям применения, но ИМХО на Шарпе проще набросать какое-нибудь десктопное приложение. Для написания десктопной карточной игры вполне подходящий вариант.

    Для Ардуино понадобится C/C++, это вам правильно говорят. По сравнению с C# синтаксис похож, но различаются многие концепции, C++ и тем более Си значительно ближе к железу.

    Играю семь бубей!
    Ответ написан
    1 комментарий
  • Что выбрать для углубления знаний (backend)?

    @Bojczuk
    Оставайся в дотнете. Переход в указанные области я бы посчитал шагом назад во всех смыслах.

    Если работаешь на работе, которая не мотивирует развиваться и делать что-то сверх нормы, поменяй её, здесь не в языке проблема.
    Ответ написан
    1 комментарий
  • Выучил базовые основы Python 3. Куда копать дальше?

    werevolff
    @werevolff
    Если для Web, то Django + Scrapy. На scrapy можно сразу начинать делать парсеры. Парсеры нужны очень часто, и можно сразу брать проект и делать. Для десктопа и кроссплатформенности - не знаю. Возможно, что Kivy.

    Да, чуть не забыл: Peewee. Можно и SQLAlchemy, но pewee выглядит очень изящно.
    Ответ написан
    5 комментариев
  • Как поступить с заказчиком который не платит?

    werevolff
    @werevolff
    50% - абстрактная цифра. Необходимо показать менеджеру работу. Но не код. Т.е. на доступном серваке разворачиваете код, кидаете ссылку, сверяете по пулу задач/ТЗ, какие пункты сделаны. Если полноценно ни одного - какие требования оплаты вообще могут быть? Если там реально наберётся процентов 40 сделанных тасков, то можно обсудить условия оплаты и предоставления кода. Но с такими прокатами я бы лично не стал работать дальше в этом проекте. Если только ребята согласятся поднять оплату и заплатить сразу 50% от новой суммы, а не аванс от старой. И дело не в том, что это хорошо или плохо. Просто разработчик и заказчик берут на себя обоюдные обязательства. Искать нового программиста для доделки 60% проекта - это гарантированное увеличение бюджета и трата времени. Если люди реально готовы платить, а не обманывать, они вам предложат такое увеличение при условии адекватной демонстрации с вашей стороны.

    Резюмирую:

    1. Поднимаете проект на своей стороне.
    2. Проводите демонстрацию.
    3. Отмечаете закрытые пункты заказа.
    4. Ставите заказчика перед фактом: "исходник он получает при условии оплаты обещанного аванса, но при таком отношении, после передачи кода вы уходите из проекта". Основание: вы не получили пока ни копейки. Договора нет. Со стороны заказчика устное соглашение не соблюдалось и нет гарантий, что будет соблюдаться. Если заказчик настаивает на исполнении обязанностей, говорите, что отдадите код после подписания договора. Юридически, если нет договора, факт оплаты подтверждает сделку. Т.е. договор или оплата. Предпочтительно - оплата.
    5. Если сошлись на оплате, и заказчик просит пересмотреть ваш уход из проекта, отказываетесь до тех пор, пока заказчик не поднимет ценник. Сами ищите другой проект. Не факт, что заказчик пойдёт на уступки. Если второго проекта не будет, а заказчик согласится поднять цену, пусть доплатит сразу так, чтобы в сумме вышло 50% от общей суммы. Завершаем проект, радуемся.
    Ответ написан
  • Как передать параметр id в контроллер?

    @springimport
    Как на счет этого?

    И вообще.
    Ответ написан
    Комментировать
  • Как деплоются приложения Java EE?

    @bobzer
    Java EE Developer
    нужно обновить частично, только один модуль
    Соответственно, этот модуль должен быть самостоятельным артефактом Maven. Обычно, артефакт для EAR описывает формирование приложения из других модулей и конфигурационных файлов. Следует разбить приложение на артефакты (обычно jar/war), которые входят в состав EAR.

    Вообще, при сборке для промышленной среды надежнее собирать всё приложение (EAR в вашем случае) целиком. А при сборке для окружения разработчика вообще удобнее использовать не сборщик Maven, а среду разработки. Idea, например, прекрасно понимает формат конфигураций Maven и на их основе может создавать свои артефакты (и настоятельно порекомендует это сделать при обнаружении pom.xml). Если собирать артефакты с помощью Idea, то даже при сборке EAR целиком фактически будут обновляться только изменённые файлы, что ускоряет процесс сборки на порядки, в сравнении с Maven. Это достигается за счёт того, что у Idea есть свой контроль версий и она знает что именно следует пересобрать, а что можно оставить как есть. Наибольший выигрыш получается для exploded артефактов (которые не архивируются, а выкладываются в виде структуры папок с файлами), т.к. в таком случае не приходится перепаковывать модули целиком при изменении небольшого количества файлов в них.

    Для каждого артефакта Maven Idea создаст две версии своих артефактов - упакованную и не упакованную (exploded). В случае, если ваше приложение состоит из нескольких модулей, может потребоваться ручное вмешательство в сгенерированные артефакты, т.к. exploded-артефакт верхнего уровня в конфигурации по-умолчанию содержит подчинённые артефакты в упакованном виде. Потребуется удалить вариант в упакованном виде и на его место вставить exploded-вариант. Минус состоит в том, что при изменении артефакта Maven, Idea предложит перегенерировать и свои артефакты, все ручные настройки при этом пропадут. Но настройки топологии проекта меняются нечасто, поэтому лишней минутой работы по ручной реконфигурации обычно можно пренебречь...

    Если Вы только начали экспериментировать с Java EE, то создание EAR может быть неоправданным усложнением, т.к. во многих случаях веб-артефакт более низкого уровня - WAR - прекрасно справляется со всеми задачами Enterprise-приложения. При этом получается более простая структура, соответственно и с настройкой сборки проблем меньше.
    Ответ написан
    4 комментария
  • Как добавить комментарии ВК (Django)?

    ImmortalCAT
    @ImmortalCAT
    C# loving
    Ответ написан
    Комментировать
  • Что нужно знать php разработчику для изучения фреймворка? Ваше мнение?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    За любым фреймворком лежит опыт и мировоззрение его разработчиков. У любого фреймворка есть глубинная философия, его смысл, для чего он создан, какие проблемы решает, в каком контексте. Не смотря на то, что, казалось бы, разные фреймворки решают набор примерно одних и тех же проблем, делают они это очень по разному.

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

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

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

    И вот тут, чтобы действительно справляться, необходимо ПОНИМАТЬ, как это работает, почему так а не иначе, и как с помощью этого решать поставленные задачи. Если чего-то не хватает, или оно работает не так как надо, а это весьма частые явления, то ПОНИМАНИЕ процессов дает свободу РЕШАТЬ эти тупиковые, казалось бы, вопросы.

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

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

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

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

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

    В результате я плюнул на тщетные попытки, и просто, из проекта в проект, собрал свой мини фреймворк, который решает задачи в том контексте, который выработался за годы у меня, решает понятным и прозрачным для меня способом, под полным, 100% контролем с моей стороны.

    Сейчас же я взял паузу, и намерен полностью мигрировать с PHP на JavaScript. При всей моей любви и уважении к PHP, в нем определенные вещи даются слишком большими усилиями, так-что игра не стоит свечей.
    Ответ написан
    1 комментарий
  • Тестирование в Django - лучшие практики?

    @marazmiki
    Укротитель питонов
    Насколько я понял, речь не о лучших практиках тестирования как таковых, а именно о заполнении моделей.

    Штука тут вот в чём: тесты должны быть по максимуму независимы, поэтому заполнять модель целиком обычно никогда не нужно: достаточно заполнить одно или несколько полей и протестировать их. Поэтому задача сводится к другой: как можно упростить себе жизнь при заполнении моделей.

    Лучшее, из того что я видел — mixer. Вообще-то это просто генератор случайных данных, но есть и бэкенд для работы с моделями джанги.

    Через него можно создавать модель, содержащую только нужную информацию. Всё остальное (включая реляции) будет заполнено автоматически, если нужно. Очень удобно и очень просто. И очень гибко.
    Ответ написан
    Комментировать