• Зачем нужны Dependency containers?

    FirstX
    @FirstX
    .net developer
    Для того, чтобы отделить мух от котлет.

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

    Первое, что приходит в голову - создание абстрактных интерфейсов, через которые все взаимодействие и происходит. Ок, создали. Но абстрактные интерфейсы делать ничего не могут, на то они абстрактные. Значит где-то нужно явно создавать реализацию для этой абстракции. Становится вопрос где это делать. Создавать внутри одного класса - экземпляры другого, это уже тоже сильная связанность между ними. Для этого и придумали ящик, где будут храниться все соответствия между интерфейсами и реализациями. Захотел получить реализацию такого-то интерфейса, попросил ответственного менеджера, он сам заглянул в свой ящик и вытащил то, что тебе требуется. И назвали это все Контейнер Зависимостей (Dependency Container). То есть это конкретный инструмент для создания слабых связей между модулями.

    Ну а слабая связанность модулей и абстракции между ними дают всякие полезные фишки по типу быстрого переключения между реализациями (например реальное/тестовое окружение), позволяет проще рефакторить отдельные модули и так далее.
    Ответ написан
    Комментировать
  • Зачем нужны Dependency containers?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Что бы руками сервисы не инициализировать. Пишите свой компонет/сервис, в конструктор передаете реализацию интерфейса (то есть ваш класс зависит только от интерфейса) а контейнер в зависимости от настроек подсунет нужную реализацию.

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

    Так же можно разграничивать доступ к различным слоям приложения что бы небыло соблазнов из одного слоя (например представления) дернуть что-то из слоя обработки запросами... ну или не знаю...

    Так же есть варианты с коллекторами. То есть мы собираем все сервисы реализующие какой-то интерфейс (например драйвера) и регистрируем их в другом сервисе.
    Ответ написан
    Комментировать
  • Java vs C# ASP .NET MVC?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    но неужели нельзя написать для других операционок (Android, iOS) приложение на C#, или будет страдать скорость?

    Можно xamarin.com
    медленнее java не будет.
    Ответ написан
    Комментировать
  • Как отключить слежку Google?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    То есть, Вы реально думаете, что Яндекс не собирает о нас никакой информации и не передает ее куда надо?))) Слив подобной инфы - это "бонус" интернетов. Не нравится - не пользуйтесь интернетом, компьютером, смартфоном, телевизором и вообще электронными устройствами. Уезжайте из города в деревню, топите печку дровами, выращивайте картошку и пусть эти всякие Гуглы удавятся - не получат ни байта Вашей личной информации!
    Ответ написан
    21 комментарий
  • Сертификация PHP программиста. Что выбрать? И стоит ли вообще?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В мире PHP есть только два вида сертификации - Zend и Symfony.

    Ценятся или нет... думаю грамотно подать это можно, например в LinkedIn или просто в резюме.

    А вообще - пройдите. Это больше для вас а не для потенциального клиента.
    Ответ написан
    2 комментария
  • Что теряет разработчик под Android используя не родную Java, a C# Xamarin?

    @gleb_kudr
    Да ничего он не теряет. Знаете C# берите xamarin и вперед. Тем более, шарписты обычно от джавы плюются. Производительность такая же +-. Поддержка платформы полная. Про язык сами можете сравнить, Android это официально до сих пор Java 6 (хотя умельцы прикручивают версии посвежее на свой страх и риск). Если что, там даже нет Switch по строковым литералам.

    Ну и до кучи - среда разработки у Xamarin значительно приятнее чем бесплатный Eclipse.
    И да, я про промышленное качество.
    Сам я в основном под iOS пишу на ксамарине, но платформа отличная. Родные sdk я щупал и могу сравнивать. Слушать хай от тех, кто ее в глаза не видел просто противно.
    Ответ написан
    2 комментария
  • На чем написан сайт?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Судя по всему, сайт написан на слове божьем.
    Ответ написан
    Комментировать
  • Как изменить поведение кнопки Tab в Resharper?

    @AlexP11223
    Не понял что вы с табом по умолчанию делаете, у меня не работает. Да и закрывающую скобку и ; не ставит же без решарпера.

    Можно так делать с решарпером:
    1. cw
    2. Enter
    3. Ввод строки
    4. Ctrl+Shift+Enter, выйдет из всего и поставит курсор на новую строку.

    В IDEA и прочих их IDE по-моему более короткое сочетание клавиш для этого, по-моему Ctrl+Enter, вероятно оно поставится если выбрать в решарпере схему хоткеев решарпера, а не VS.
    Ответ написан
    Комментировать
  • Есть ли в С# замена type паскаля?

    @Sumor
    Можно использовать такую конструкцию до объявления классов:
    using MyInt = System.Int32;
    Или, если класс не запечатанный(sealed), можно от него отнаследоваться:
    public class MyIntList : List<int>{}
    Ответ написан
    Комментировать
  • Почему тип Varchar определяется как TWideMemoField?

    svd71
    @svd71
    Отсуствие длинны может дать понять датасету, что предоставленные данные из BLOB-полей. Поэтому попробуйте задать длинну или же добавляйте поля нужного типа вручную в дизайнере или перед открытием в рантайме.
    Ответ написан
    1 комментарий
  • Как редактировать joined поля в одном DbGrid?

    @Lacaille
    Вариант1. CxGrid позволяет удобно редактировать связанные таблицы. Пользователь на нужном блюде нажимает "+" и редактирует список ингридиентов.
    sme_cx.gif
    Вариант2. Можно добавить компонент UpdateSQL и привязать его к DataSet.UpdateObject. В свойстве UpdateSQL.ModifySQL прописать запрос на изменение записи. Компонент UpdateSQL знает такую переменную как OLD_<имя ключа> по которому можно обратится к нужному полю, пример запроса:
    UPDATE <имя таблицы>
       SET <имя поля для изменения> = :<имя поля для изменения>
     WHERE <ключ таблицы> = :OLD_<ключ таблицы>
    Ответ написан
    Комментировать
  • Как расшарить postgresql по локальной сети?

    opium
    @opium
    Просто люблю качественно работать
    У вас через дробь указывается маска подсети, а не диапозон.
    То есть вот это ерунда 100/145
    если хотите разрешить на всю подсеть то надо
    192.168.0.0/24
    Ответ написан
    2 комментария
  • Как правильно спроектировать БД?

    metamorph
    @metamorph
    Зависит от того, что именно Вы делаете.

    Если это, грубо говоря, лабораторная работа по нормализации таблиц - тогда ТОЛЬКО через промежуточную таблицу, за иные варианты Вам снимут голову.

    Many-to-many через pivot table чаще всего не нравится тем, что для добычи результата приходится делать двойной джойн, а потом каким-то образом разгребать дублирующиеся данные "основной" таблицы.

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

    Обычный вариант обхода - добавить немного скриптовой части:
    - выгребаем данные основной таблицы: select * from meals where ...;
    - скриптом собираем полученные ID в массив и выполняем второй запрос: select * from ingredients inner join meals_ingredients where meals_ingredients.meal_id IN (...тут список полученных на первом шаге id)
    - разгребаем полученные данные по конкретным meal_id.

    Немного более извращенный - сериализовать список использованных ингредиентов в отдельное поле блюда (например, тип text). При этом в базах, отличных от mysql, можно будет еще и отлично искать по этому полю. Этакий noSQL в условиях, максимально приближенных к боевым.

    Фишка в том, что классическая нормализация many-to-many заранее учитывает тот факт, что первичные ключи могут (внезапно!) меняться. На практике же это ооооочень редкий случай.

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

    Так что, как говорится, не Коддом единым.
    Ответ написан
    1 комментарий
  • Как правильно спроектировать БД?

    akashtrih
    @akashtrih
    Идея с промежуточной таблицей хорошая, способов лучше не вижу. Если вам не нравится то, что придётся возиться с промежуточной таблицей, можно чуть-чуть упростить себе задачу, используя внешние ключи. То есть, например, сделать так, чтобы при удалении блюда, автоматически удалялись и соответствующие записи из промежуточной таблицы.
    Ответ написан
    Комментировать
  • Eclipse vs AndroidStudio: что выбрать?

    @ProkletyiPirat
    про AndroidStudio точнее intellij-idea можно говорить много и очень долго!

    сижу на ней пол года, ненарадуюсь! в прямом смысле не проходит недели что бы я не воскликнул "БОЖЕ, да ты и ЭТО, умеешь?!?!!" причин таких эмоций море достаточно зайти на хабр и почитать про линейку intellij от JetBrains или зайти на ютьюб и глянуть их TV, буквально вчера-позавчера опять статья про PhpStorm и её возможности....

    что касается Eclipse то в нём можно сделать тоже что и в intellij-idea но это нужно ставить 100500 плагинов, а с учётом того что есть бесплатная версия intellij-idea CE и что сама intellij-idea стоит для индивидуального лица 200$ а для фирмы 500$ то надобность в самом Eclipse и плагинов под него отпадает.
    Ответ написан
    Комментировать
  • Eclipse vs AndroidStudio: что выбрать?

    svd71
    @svd71
    Люди может я чегото не понимаю, но AndroidStudio тот же Eclipse, но с выкинутыми пакетами. Я так же в нем и для Java использую и для C/C++. И использую remote control который вроде бы для PHP создан.
    Ответ написан
    2 комментария
  • Eclipse vs AndroidStudio: что выбрать?

    @DevAndrew
    Долго работал в Eclipse, с июня перешёл на Android Studio. Всем доволен, есть плагин для для работы с git (работаю с bitbucket). Конечно пока что есть минимальные косяки, но в целом я очень доволен переходом на AS.
    Ответ написан
    Комментировать
  • Eclipse vs AndroidStudio: что выбрать?

    kivsiak
    @kivsiak
    software engineer
    Тут и думать нечего. Гугл отказывается от Eclipse в пользу AndroidStudio. Как платформа для java IDE по удобству Idea, на которой базируется AS, уже давно обогнала eclipse.
    Ответ написан
    Комментировать