• Полиморфизм в php живые примеры?

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

    Другой пример - mock объекты при тестировании. Также можете посмотреть фреймворки, там полиморфизм активно используется например для того, чтобы вы могли использовать различные движки бд, сохранять файлы на удаленный сервер по фтп, а не на свой, поменяв лишь одно слово в конфиге и не меняя код в ваших классах.
    Ответ написан
    Комментировать
  • Выпускник со специальностью информационные системы?

    sim3x
    @sim3x
    Диплом не гарантирует трудоустройство
    Ответ написан
    Комментировать
  • Где смотреть лучшие практики по верстке элементов?

    @GreatRash
    Вообще такого ресурса нет, но есть несколько полезных ресурсов на которых стоит пастись постоянно. Это:

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

    tympanus.net/codrops/category/blueprints - это сборник концептов, далеко не все решения кроссбраузерны, но зато там можно найти неисчерпаемый источник вдохновения не только верстальщикам, но и дизайнерам.

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

    https://css-tricks.com/ - тоже ресурс, не нуждающийся в особом представлении, сборник туториалов, небольших статей, справочников, тематических блогов, сниппетов, в общем всего.
    Ответ написан
    Комментировать
  • Как сохранить файл с нужным названием?

    @karminski
    Senior React.JS Developer
    Забудьте ваш код, он говно. Что делает функция totranslit? Транслитилирует русские буквы в русские? Много смысла. Что вы хотите сделать то? Просто скачать файл с отображение диалога скачивания? Тогда вам сюда:
    php.net/manual/ru/function.readfile.php
    (пример 1)
    Ответ написан
    1 комментарий
  • База PHP + JQuery за неделю! Каков алгоритм действий?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    За неделю вы ничего не выучите.
    Все курсы, книги или что там еще "научись делать сайты за 23 часа/дня/секунды" и т.п.
    Это мусор.

    В лучшем случае вы hello world напишите за неделю.
    Шансов устроиться на вакансию это прибавит примерно нисколько.
    Уровень ниже плинтуса или половина плинтуса роль вряд ли сыграет.

    Проще тогда уже пойти и сказать как есть, что вы очень полный стажёр.
    Раз они ищут стажёра, они возможно готовы к такому.
    И если повезёт, возьмут и уже научат чему-нибудь.
    Ответ написан
    2 комментария
  • Как верстают в Google?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Роботы верстают прост...нейросети
    Ответ написан
    Комментировать
  • Как обработать коды ошибок PDO?

    Melkij
    @Melkij
    PostgreSQL DBA
    Переключите PDO::ATTR_ERRMODE в единственный адекватный режим PDO::ERRMODE_EXCEPTION.
    Нормальный поток исполнения - вас не заботят ошибки в SQL, раз метод вернул управление, значит он был выполнен успешно.
    Случилась какая-то ошибка - словили исключение. Если для какой-то конкретной ошибки вам нужна своя реакция - то тогда уже выясняете код именно этой ошибки, смотрите в getCode и реагируете на конкретный код ошибки.
    Ответ написан
    1 комментарий
  • Можно ли установить Docker на Windows 7?

    sim3x
    @sim3x
    Для "комфортной" работы нужно переходить на линукс

    А в хелпе тулбокса тебе прямо говорят - тут будет виртуалка с линуксом и ты будешь работать там
    Ответ написан
    1 комментарий
  • Входит ли в обязанности архитектора обзор цен на стек технологий?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Бывает и так и так.

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

    lxfr
    @lxfr
    Код в гите, конфиги в локальной папке, инфраструктура в докер, пароли в менеджере паролей, переписка в скайпе, файлики на почте, задачи в менеджере задач.
    Ответ написан
    19 комментариев
  • Как заинтересовать человека(студента) в IT?

    sim3x
    @sim3x
    Не надо нам тут лишних людей
    Ответ написан
    Комментировать
  • Что выбрать для автоматизации управления малым бизнесом?

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

    Проблема в том, что задачу поставили как обычно, а именно наихудшим образом: "тыжпрограммист, автоматизируй всё... Денег нет, но надо чтобы ВАУ".

    Вкратце дело такое:
    1. Нужен аналитик. Который разберёт и опишет как у вас устроены процессы, соберёт требования к новым системам-организации и тому подобное.
    2. Нужен консультант-советник-эксперт (лучше несколько). Он поглядит на то счастье, что выдал аналитик и подскажет направление (например, как Константин Нагибович выше написал). Несколько нужно для того, чтобы нивелировать туннельность мышления (а она есть практически у всех).
    3. Нужен интегратор. Это уже образно, потому как сюда можно списать и ПМ-а, и проггеров и манаггеров. Они всё это реализуют, внедрят, допилят напильником, сделают инструкции и всё такое.

    Ну... Допустим п.2 более-менее можно перекрыть интуицией, гиглингом, тостерингом и тому подобным.

    Ну... Допустим п.3 будет поставляться продавцом ПО.

    Но собственно первый пункт - это фундамент. Накосячив тут всё пойдёт насмарку, если не развалится.

    Ваш босс хочет малыми силами решить большой вопрос и это понятно. Все мы хотим задёшево купить качественный удобный автомобиль (обувь-холодильник-дом...). Но этого не бывает.

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

    Вам очень непросто, потому что начальнику обычно не скажешь "чудес не бывает". Нечто, что будет автоматизировать закупки-продажи, услуги, производство и аренду одновременно? Ну-ну... Вам покажут какой-нибудь облачный комбайн типа той же Амо, МегаПлана или чего-то такого и вы пойдёте по их рельсам.

    Другой вариант - найдёте занедорого поставщика-разработчика, вам что-то впарят, что будет "полностью соответствовать ТЗ" (они же сами его будут писать, верно?), снимут денег и поставят нечто несуразное.

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В чем отличие абстрактного класса от интерфейса в Java?


    Все упирается в понятие "тип". В былые времена, то есть во времена языка Simula, из которого черпали вдохновение создатели C++, были только классы. И на классах базировалась система типов. Причем механизм наследования был реализован так, как реализован, исключительно для экономии памяти, которая в те времена была очень дорогой.

    Для того чтобы достичь полиморфизма, мы должны иметь возможность объявлять абстрактные типы. Мол "любая хрень которая имеет такой тип будет работать как надо". Потому в языках типа C++ появились абстрактные классы. Поскольку иногда нам хочется делать композицию абстрактных типов, в C++ реализовали множественное наследование.

    В Java, которая во многом черпала вдохновения из C++ и smalltalk, решили ввести еще одну сущность - интерфейсы. Это был своего рода упрощенный способ задать абстрактный базовый тип. По итогу чтобы не решать проблему бриллианта (или ромба) от множественного наследования было решено отказаться и дать возможность классам имплементить несколько интерфейсов.

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

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

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

    Так же рекомендую к прочтению: www.javaworld.com/article/2073649/core-java/why-ex...
    Ответ написан
    9 комментариев
  • С#/Unity с нуля. Так много вакансий по С# и Java, но одновременно программисты пишут, что тяжело с работой, особенно без опыта...В чем подвох?

    VortomS
    @VortomS
    I want to find myself
    Успехов. Но вот совет в пару лет - очень сомнительный. Ты будешь колупаться в простейших, нерабочих проектах. Это будет скорее минус, чем плюс. Лучше полгода-год позаниматься хорошо, сделав пару живых проектов. Заниматься лучше не по курсам - а найти ментора + читать книги и практиковаться. А затем уже искать место на Junior.
    Не бойся проходить собеседования. Чем больше ты пройдешь их, тем лучше. Поймешь что от тебя хотят и что нужно знать. Да и шансы успешно устроится возрастут.
    Ответ написан
    5 комментариев
  • С#/Unity с нуля. Так много вакансий по С# и Java, но одновременно программисты пишут, что тяжело с работой, особенно без опыта...В чем подвох?

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


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

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

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

    UPD: по поводу юнити, если у вас есть свободное время, то просто начните, попробуйте хотя бы месяц учится и делать что-то. у юнити низкий порог входа, даже с небольшими знаниями уже можно добиться какого то интересного эффекта, что будет мотивировать двигаться дальше. тут как говорится - лучше попробовать и жалеть, чем не попробовать. (я работаю в вебе, юнити/C# изучал для себя, потому что интересно, не для перспектив заработка)
    Ответ написан
  • Что делать если project manager идет на поводу в клиента?

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

    Дополню интересной книгой, которую вы обязаны прочесть, если поймете её то сами ответите на вопрос правильно. Читается за пару вечером и очень интересна
    Ответ написан
    Комментировать
  • Фоновые задачи в PHP без клиента, альтернатива cron?

    gobananas
    @gobananas
    finishhim.ru
    Демоны на php были есть и будут, гуглите:
    https://daemon.io/
    profyclub.ru/docs/274
    Пробуйте, читайте отзывы и т.д. Проблема демонов в том, что к ним нужна ещё какая-никакя, а система мониторинга, работает демон или нет (сервер был перезагружен, выржрал всю память, просто завис и т.д.) и всякие системы автозапуска на случай профилактических работ в ДЦ.

    Решение на cron обычно проще и надёжнее, но только в одном случае: есть гарантия что когда скрипт запускается по крону, предыдущий скрипт уже завершил свою работу, иначе падение сервера это просто вопрос времени или стечения обстоятельств.
    Ответ написан
    1 комментарий
  • Как указать путь racer для vs code?

    Удобнее всего раст устанавливать через rustup (https://www.rustup.rs). Он установит и rust и cargo, и обновлять их будет (по команде "rustup update", https://github.com/rust-lang-nursery/rustup.rs). Прописываем в PATH путь в cargo/bin, хотя rustup и сам может прописать.

    Что касается VSCode, то надо установить расширение Rusty Code.

    Далее, устанавливаем racer (для автокомплита), rustfmt (форматирует код при сохранении файла, https://github.com/rust-lang-nursery/rustfmt), rustsym (для go to sym, https://github.com/trixnz/rustsym), cargo-check (при сохранении файла будет компилировать его на лету и выдапвать в консоли VSCode сообщения об ошибках, https://github.com/rsolomo/cargo-check). Лучше устанавливать через команду "cargo install", так удобнее.
    Т.е. в консоли просто выполняем команды:

    cargo install rustfmt
    cargo install racer
    cargo install rustsym
    cargo install cargo-check

    Это все установится в каталог cargo/bin, куда у нас уже прописан путь в PATH и потому VSCode их легко найдет.

    Я еще устанавливаю cargo install cargo-edit (https://github.com/killercup/cargo-edit), тогда крейты в Cargo.toml для своих проектов можно не вручную прописывать (doc.crates.io/guide.html), а командой "cargo add".

    Для racer нужно установить переменную среды окружения RUST_SRC_PATH, указав путь к скачанным отдельно и распакованным исходникам rust (подкаталогу src).

    PS: Ошибки у вас выдаются из-за того, что cargo install пытается установить программы, а бинариники уже по указанным путям лежат. Нужно просто вручную их удалить, или вызвать соответствующие команды "cargo install --force ..." для обновления бинарников.
    Ответ написан
    Комментировать
  • Где найти сообщество мэйкеров?

    Jump
    @Jump
    Системный администратор со стажем.
    Нужен ли человек с огромным желанием но без какого-либо опыта в таких вещах?
    Нет, не нужен.
    В смысле когда уже есть команда - он там не нужен без опыта и умения, там нужны специалисты.
    Вот если человек с огромным желанием сам соберет команду - заинтересует, или заплатит, вот тогда он будетнужен.
    Ответ написан
    2 комментария