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

    opium
    @opium
    Просто люблю качественно работать
    Вопрос из разряда я говнопрограммист и плохо учусь, кто бы взял меня на работу.
    таких у нас в универе отправляли читать матчасть
    Ответ написан
    2 комментария
  • Правильный подход к организации вывода данных с сервера в Angular?

    Расширить Model свойствами "canFinish", "canContest" и не парить себе мозг
    Ответ написан
    Комментировать
  • Правильный путь связывания checkbox-group, как массив аргументов с ng-model?

    AMar4enko
    @AMar4enko
    В случае с ng-model вам нужен будет хэш. Типа такого:
    query.skills = {
      1: true,
      2: false
    };

    <input type="checkbox" ng-model="query.skills[1]"/>
    <input type="checkbox" ng-model="query.skills[2]"/>

    false-значения можно изначально не ставить, но надо помнить, что после того, как пользователь включил и выключил чекбокс, в хэше появится соотв. ключ с false.
    ngChanged нужен в большей степени для того, чтобы обрабатывать изменения без необходимости их отслеживать через $scope.$watch.
    Ответ написан
    2 комментария
  • Использование jQuery и AngularJS вместе. Это плохо?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Это не плохо. Ибо в самом ангуларе столько всего сделано через жопу, что использование jQuery в некоторых местах будет вашей наименьшей проблемой. Но тут очень важно понимать, где и как этот jQuery юзать, ибо простое подключение глобального файлика с jq-кодом особых результатов не даст из-за асинхронности angular'а, по этому вам все равно придется запихивать jq-код во всякие link функции и прочие места, так что код в итоге получится вполне нормальным.
    Ответ написан
    Комментировать
  • Как получить доступ к дочерним элементам в директиве?

    @kostiknoir
    angular
      .module('app', [])
      .directive('myDirective', function() {
        return {
          restrict: 'A',
          scope: {},
          link: function(scope, el) {
            var childItems = el[0].querySelectorAll('.item');
            childItems = Array.prototype.slice.call(childItems);
    
            childItems.forEach(function(node) {
              console.log(node);
            });
          },
          transclude: true,
          template: '<div class="directive-div" ng-transclude></div>'
        };
      });
    Ответ написан
    Комментировать
  • Как получить доступ к дочерним элементам в директиве?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну так вы всю ноду заменяете на темплейт.

    Если вы хотите сохранить содержимое - используйте transclude
    Ответ написан
    2 комментария
  • Почему transclude не работает с input?

    @kostiknoir
    angular.module('app').directive('rtNumber', [
      function() {
        return {
          restrict: 'A',
          link: function($scope, $el) {
            var wrapper = document.createElement('div');
            wrapper.className = 'wrap';
            
            var el = $el[0];
            el.parentNode.insertBefore(wrapper, el);
            wrapper.appendChild(el);
          }
        };
      }
    ]);
    Ответ написан
    7 комментариев
  • Почему transclude не работает с input?

    @telray
    А какого результата вы ожидаете? И что у вас получается когда div элемент?
    transclude служит для подстановки содержимого элемента на который вешается деректива в ng-transclude.
    И когда вешаете на импут, импут остается и в него вставляется template. Хотя это странно, зачем в тег импут вообще что-то помешать, это не правильно совсем уж.
    Ответ написан
    6 комментариев
  • Как спроектировать БД для работы с уведомлениями?

    @shoomyst
    dumb
    Отдельные таблицы для каждого типа уведомления не рассматриваются?
    Сущности у вас же будут разные, какой тип для resource_id вы выберете? Bigint надо брать :)
    Можно иметь общую таблицу уведомлений (notifications) для удобства выборки, в которой будет помимо прочего пара полей FK (notification_type + notification_id) и на каждый тип своя таблица (comment_notifications, like_notifications) с любыми наборами полей, необходимыми для каждого типа.
    Ну это так, первые мысли вслух.
    Ответ написан
    Комментировать
  • Стоит ли учить Ruby если на работе пишу на PHP?

    @Ramallah
    Главное построить верно архитектуру приложения. А наговнокодить на любом языке можно.
    Учить надо хотя бы из-за того, что бы перенять некоторые приемы и расширить свой кругозор.

    По поводу PHP-кал... Жигули тоже есть кал, но на них ездят. А 7-ая версия пыхи обещает быть интересной.
    Ответ написан
    Комментировать
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    kumaxim
    @kumaxim
    Web-программист
    Для начал ответь сам себе на вопрос "А чем тебе неудобна текущая золотая клетка"? Можешь не писать здесь, но определись для себя.

    Далее нужно осознать, что фриланс - это подвид бизнеса. Есть книжка Р.Киосаки "Квадрант денежного потока". Там всех людей, работающих в экономике разделяют на 4 части:
    1. Р - наемные работники
    2. П - предприниматели
    3. Б - бизнес
    4. И - инвесторы

    Фриланс - это сегмент П. Ты работаешь один, возможно зарабатываешь больше чем работая по найму, но вот ты заболел, продуло тебя где-то, температура 38.5.... Сомневаюсь что ты из стали сделан и сможешь в таком состоянии писать код.
    Сегмент П очень хорошо охарактеризовал г-н Залогин из Локус Медиа. Он сказал примерно так: "Вы человек-велосипед - пока крутите педали - едите, как только перестали - упали"

    Переходя к твоему вопросу о выходе из зоны комфорта.
    Первое что рекомендую перед началом своего бизнеса - оплати все долги. Закрой ипотеку, погаси автокредит, все потребительские заемы и т.д. В случае если ты провалишься(первый блин, обычно, комом) по крайней мере ты со своей семьей не под мостом окажешься.
    Второе - содержание семьи. Никакие твои заработки не должны влиять на твою жену/ребенка. Твои родные, как минимум, должны иметь крышу над головой + еду на столе. Посчитай сколько ты платишь за комуналку + еду. Далее умножаешь эту сумму на 24 месяца. Это финансовая подушка твоей семьи.
    Третье - планирование. Бизнес без бизнес-плана - это не более чем хобби. С 16 лет стремился зарабатывать в сети. Продавал ссылки на sape.ru в 2008-2009, работал с трафиком в 2010-2012, продавал китайские безделушки с 2013-2014... Сейчас ушел в разработку одного SaaS-решения. Первые пару месяцев оптимизм из ушей хлещет, думаешь "Да все будет, да это фигня, преодалею...." Но вот начинаются черные полосы: ТИЦ сайта в планируемый апдейт не вырос до нужного значения, твой сайт на 9 месте в выдаче, вместо требуемой тебе 3-4 позиции, товар из Китая на таможне завис.... Да я могу до бесконечности перечислять проблемы, которые возникали у меня... А время - деньги: тебе нужно платить аренду, зарплату, рекламу, кредиты и т.д. Не платишь - начинается ругань, из Максима Александровича я сразу превращаюсь в мошенника, кидалу, сволочь... эх, во общем суть ты понял. Думай на 2 шага вперед, вот что я хочу сказать
    Четверное - не делай бизнес с полного нуля. Перт Осипов(проект Бизнес Молодость) в каком-то из видео говорил, что мы не ценим самое ценное что у нас есть, мы воспринимаем это как должное, когда для других людей это может быть сравни бриллианту среди кучи стекляшек. Вы не первый день работайте в ИТ по какой-то специализации, так ведите эту специализацию и дальше. Занимайтесь своим любимым делом.
    Пятое - не пытайтесь все делать сами. Когда я запустил свой самый первый интернет-магазин по Китайским безделушкам я все делал сам: рисовал дизайн, верстал его, настраивал рекламу, обзванивал клиентов, носил товар на почту.... В общем занимался вообще всем! Причем за всей этой рутиной я не видел, что мой сайт работает не эффективно, я упускаю из виду 20% горячих клиентов, 10% моих бандеролей исчезают в глубинах Почты России... Вы как первое лицо компании должны знать все процессы своего предприятия, иначе Вы не сможете им управлять, но Вам не нужно все процессы делать самому. Отдайте часть на аутсорс или делегируйте наемному сотруднику.
    Шестое - я на этом очень сильно обжегся около 3-х лет назад.... Ставьте своим сотрудникам четко достижимые KPI(ключевые показатели эффективности). Например, есть у меня форма заказ обратного звонка на сайте. Человек пишет туда своего Имя и номер телефона, после чего эти данные попадают в CRM. Для менеджеров, которые у меня обрабатывают вызовы клиентов один из KPI звучит так: перезвонить клиенту в течении 15 минут после поступления от него заявки, если она поступила в рабочее время. Причем все KPI Вы должны сформулировать максимально точно и подробно. Я сам с KPI работаю так: есть у человека базовый оклад и базовый набор KPI, которые ему необходимо выполнять. Если он их выполняет - получает оклад, выполняет лучше - получает оклад + премию. Причем оклад у меня сам небольшой, около 6 т.р., но нижняя з/п у меня примерно в 2,5 раза выше.

    Первые 4 пункта - это как мягко выйти, вторые два - как не свалиться.

    В целом о бизнесе в РФ могу сказать что его делать относительно легко. Достаточно просто делать что-то хорошо и по человечески относится к своим клиентам. Примерно за 1 год Вы нарабатываете определенную базу контактов(поставщики/партнеры/клиенты), которые Вас знают и доверяют Вам. А далее главное все это не растерять.

    Вам могут все Ваши родные/коллеги/друзья говорить "Да ты что, сейчас санкции, налоги, коррупция..." Поверьте, все это херня! Под прессом можно работать и зарабатывать, причем когда его снимут - Вы получите взрывной рост. А все эти отговорки про санкции, коррупцию, высокие налоги... Да просто у кого-то очко играет!
    Ответ написан
    14 комментариев
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

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

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

    И да, имхо: фриланс для проф. развития не подходит. Стремительное развитие возможно только в перспективной компании, создающей для этого условия. А фриланс - место для реализации уже имеющихся навыков.
    Ответ написан
    2 комментария
  • Что изучать после js?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    Но ведь в программировании лишь ~20% теория, остальное практика. Сможете Вы легко на своих знаниях создать какое либо веб-приложение? Чтобы вот так легко сказать "Я закончил с front-end", нужно как минимум усердно 3 года поработать в этом направлении, и то я работаю 4-5 лет, и такое сказать не смогу :-) Учитесь дальше, практикуйте, делайте свой проект, а там Вам станет ясно, что делать дальше.
    И профессиональный программист - это не универсальный солдат :-)
    Ответ написан
    5 комментариев
  • Хорошая архитектура symfony app?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Хорошая архитектура - это очень понятная архитектура, когда для каждого типа задачи созданы логичные и понятные средства. Когда приложение построено таким образом, то его получится и тестировать, и изменять/расширять. Если нужно добавить новый класс, то в хорошей архитектуре понятно, куда его нужно добавить.

    Всего существует не так много типов задач:
    1) хранение данных приложения - модель. Модель ничего не должна знать о базе данных.
    2) слой доступа к БД - репозиторий. Вся работа с БД - здесь, и всё, что связано с одной сущностью - в репозитории этой сущности. Если нужно взаимодействие нескольких сущностей, то, скорее всего, репозиторий одной из сущностей не подойдёт, эта задача пойдёт в сервис.
    3) бизнес-логика - сервисы. Сервисы умеют получать данные (модели), обращаясь к репозиториям или лучше к другим сервисам (служебным).
    4) служебные задачи - сервисы. Например, кэширование данных реализуется в специальном сервисе.
    5) отображение данных - шаблоны. Весь html - только в шаблоне, а также логика отображения тоже в нём (вывод списков, некоторые фильтры)
    6) подготовка данных к отображению - контроллер. Запрос пользователя приходит в контроллер, контроллер же обращается к сервису (или в простом случае к репозиторию) за данными. Возможно, для обработки запроса нужно получить данные из нескольких сервисов/репозиториев, а скорее, правильный сервис сам подготовит все данные для запроса.

    Получается, контроллер вызывает сервис, который предоставит готовые данные, и будет очень простым - "тонким". Основной код, отвечающий за работу задач приложения - в сервисах. Один и тот же сервис часто будет вызываться из разных контроллеров. Работа с БД - не в сервисе и уж точно не в контроллере, для этого нужен репозиторий.
    Если структура БД изменится, то в хорошей архитектуре поменять придётся только репозиторий, но не сервисы/контроллеры. С другой стороны, изменение схемы БД чаще всего связаны с новыми фичами, поэтому придётся добавить новый сервис или изменить существующий.
    Модель же умеет не так много - выводить свои данные, возможно, в разных форматах (данные, возвращаемые моделью не обязаны совпадать с полями сущности - см. пример в комментарии keltanas в ответе Владимир Балин).

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

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

    P.S. Я вот написал, что модель не должна ничего не знать о базе данных, получается, что неправильно использовать аннотации для маппинга полей сущности на поля таблиц. После ответа на этот вопрос я, скорее всего, пересмотрю свои взгляды на @ОRМ-аннотации в моделях.
    Ответ написан
    23 комментария
  • Хорошая архитектура symfony app?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если все приложение можно без проблем покрыть юнит тестами, если у вас тонкие контроллеры и довольно тонкие сервисы и жирные модели, если вы соблюдаете принципы SOLID и т.д... то у вас выходит код который очень легко поддерживать и расширять. Для проектов посложнее есть всякие там DDD, CQRS, есть гексагональная архитектура...

    Короче все сводится к такому параметру как maintainability.

    https://github.com/phptodayorg/php-must-watch#arch...

    updated
    если интересно, есть пример "хорошей" архитектуры (ну или основы для нее), ну или как минимум интересной:
    https://github.com/qandidate-labs/broadway

    Конечно этот пример не подходит для всех предметных областей, но как один из вариантов "посмотреть как люди делают" - как по мне неплохо.
    Ответ написан
    4 комментария
  • Бесплатная или платная Cms для сайта недвижимости?

    @dklokov
    php developer
    Разве имеет значение платная/бесплатная? Важно ведь, насколько система удовлетворяет требованиям заказчика. Платность того же битрикса стартует от 1 990 руб. (Хотя с этой редакцией, ни разу не сталкивался), если условно считать час вашей работы = 1000 руб, вы напишите админку меньше чем за 2 часа?
    Ответ написан
    2 комментария
  • "Запасная" профессия для программиста?

    Сантехник... без шуток... за эту работу деньги ВСЕГДА будут платить...
    Ответ написан
    3 комментария