• Где найти готовое GEO решение?

    @Valeriyat
    Если нужны адреса по России – посмотрите https://dadata.ru/api/detect_address_by_ip/
    Ответ написан
    Комментировать
  • Ваши действия, если джуниор не успевает выполнить задачу?

    darqsat
    @darqsat
    PM
    Вопрос довольно каверзный, так как имеет несколько путей решения.
    1) Можно сместить сроки (Они смещаются даже на самых дорогих и страшных проектах где казалось нельзя ничего сместить. Нужно лишь правильно аргументировать...);
    2) Можно посадить помощь в пару (Ваш "запоздалец" будет излагать задачи и будет подсказывать по архитекутуре и логике проекта, а "новый" свежим взглядом окажет помощь. Помогает всегда, вопрос лишь в реалиях уложится конкретно в 1 день, если там трудозатрат на 3 дня. Тут уже надо подключать больше людей. Лишь бы хватило компетенции поделить задачу на это количество людей)
    3) Упростить задачу (наверное, самое простое и применяемое на практике решение. Если по бизнесу задача критична, то её можно довыписать в доделку. Важно уловить на чем разработчик завис и постаратся эту сложность срезать но обеспечив задаче "сдачу" по требованию хотя бы в минимально подобном виде)
    4) Перенести дедлайн (дедлайн он чем то обусловлен. релиз, показ, тест, либо же стопер для другой задачи. ну если речь про джуна, то необходимо избегать поручения зависимых задач на джунов. ну а если отойти от уровня и говорить о дедлайне, то можно исключить задачу из релиза или показа. Частенько такое практикуется. Ни кто пока от сотрудничества не отказался. Чаще всего на сдаче крупных годичных проектов у нас 5-15% требований не сделаны к релизу до конца и в него не включены. Да, кланяемся, извиняемся, работаем ночами но это все равно решение лучшее когда другое уже не поможет)

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

    Ресурс должен работать! Каким бы галимым он не был. Если издержки перевешивают профит от ресурса, то да, следует выгнать. Чаще всего, издержки мизерные. Нужно лишь правильно это построить.

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

    С некоторыми даже происходили невероятные метаморфозы из-за этого. Кто то перестал курить по 15 раз на день бегая на балконы с кофе. Кто то перестал читать ленты вконтакте и лайкать смешные видео. И не пришлось никого наказывать или ставить жуткие правила в офисе. Сверхурочная работа выбила дурь из людей и они ходят с 9 до 18 что бы делать работу не показывая головы из неё пока не сделают.
    Ответ написан
    Комментировать
  • Ваши действия, если джуниор не успевает выполнить задачу?

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

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Адекватный джуниор не должен ПРОСТО сидеть и не успевать в срок.

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

    В этом заключается разница между чайником и ламером, между адекватным человеком, который со временем вырастет, и тем, за которым ВСЕГДА придется бегать.

    Лично мои действия - если Джуниор не выполнил задачу в срок и я об этом узнаю с окончанием срока - нафиг такой человек в команде (ну разве что попробовать дать еще одну задачу, чтобы убедиться что это не случайность). А если Джуниор подойдет за помощью вовремя - задача будет решена в срок.
    Ответ написан
    6 комментариев
  • Ваши действия, если джуниор не успевает выполнить задачу?

    @PolkovnikBrumel
    Контролировать в процессе исполнения, а не когда уже сроки поджимают.
    Ответ написан
    6 комментариев
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    Decadal
    @Decadal
    чтобы тянуть на джуна, нужно вовремя закрывать задачки. Работа джуна - просто закрывай задачки которые тебе выдают. Поэтому списки технологий и все эти стеки - одна большая условность, фильтр для вакансии. Ну что значит "знать jquery"? или "знать ajax"? Работайте и запоминайте, где что и для чего используется, а если попросят экзотику - вы её, что поделать, выучите.
    В конечном счёте, всё упирается во время и компанию, на которую собираетесь работать. Для джуна в известной крупной компании нужно действительно хорошо натаскаться в тех стеках, которые они перечислили (не факт что они пересекаются с перечисленными здесь, так что нет смысла заучивать всё подряд),
    для джуна в какой-нибудь компании может не понадобиться вообще ничего кроме базовых знаний, а всё остальное вы приобретёте на ходу.
    Ответ написан
    Комментировать
  • Сколько Nodejs сервер должен есть памяти сервера?

    По умолчанию процесс Node.js расчитывает, что ему доступны аж 1.5 Gb памяти.

    Параметр --max_old_space_size задаёт максимальный размер т.н. Old Space – части Heap, куда попадают неактивные и не нужные данные. Это, на практике, область, занимающая наибольшую память. Именно её есть смысл ограничить, чтобы процесс Node занимал поменьше памяти.

    Но у меньшей памяти есть и своя цена: чаще будет запускаться «сбор мусора» (garbage colleciton) – процесс очистки из памяти неиспользуемых данных, к которым более нет ссылок из глобальных или активных локальных переменных. Это блокирующий процесс – Node полностью останавливается на время очистки памяти, не реагирует на запросы и не выполняет никаких действий.

    Итого, чтобы занимать меньше памяти, нужно запускать Node с параметром:
    node --max_old_space_size=128 index.js
    Тут указано занимать под old data не более 128 Mb памяти, т.е. весь Node займёт незначительно больше.

    Можно задать переменную окружения WEB_MEMORY которой установить доступный процессу node.js объем памяти в Mb: WEB_MEMORY=128 bash startup.sh , если использовать для запуска node приложения скрипт, предложенный автором статьи (на англ.), откуда я всё это только что сам узнал )
    Ответ написан
    1 комментарий
  • Что использовать на backend для SPA приложений?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Мне не понятно что использовать на сервере для обработки API запросов приложения

    www.yiiframework.com/wiki/748/building-a-rest-api-...

    Сейчас я понимаю в необходимость SPA архитектуре

    Возможно в этом и есть необходимость, но из описания не очевидно

    Вот если я буду использовать Yii2 или другой php фреймворк, то какой вообще в нем смысл

    Создание REST api почти в две строчки кода

    Есть вариант использовать Node.js

    Да есть такой вариант

    использовать базу mySql или же переходить на mongoDB

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

    Что лучше на данный момент использовать на бэкенде и что на практике используют чаще

    Лучше использовать то что знаешь и то что подходит под проект. А вот чаще используют wp, но вряд ли это значит, что стоит его использовать.
    Ответ написан
    Комментировать
  • Как быстро попробовать себя в разных сферах?

    AlexanderShapoval
    @AlexanderShapoval
    PHP maker
    начни с веб разработки. эти знания пригодятся при создании мобильных приложений. порог вхождения само собой ниже. главное не задерживайся на самописах, начни использовать фреймворки где это только возможно, это сэкономит годы. хотя да, что бы стать более-менее специалистом в этой области - придется потратить 1.5-3 года, так как это пожалуй самая разношерстная область ИТ.
    Из советов - ни в коем случае не пользуйся материалами с сайта Русакова, это дно. Лучше искать инфу на официальных форумах, сайтах
    Ответ написан
    Комментировать
  • Где искать middle/senior backend программиста?

    TheTalion
    @TheTalion
    Я так понял, вам не просто senior backend нужен, а senior backend + senior architect?
    Таких людей с горящими глазами нет В ПРИНЦИПЕ.

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

    У вас вариант только один - искать финансирование. Стартапы, зачастую, дико скучная для обучения сфера. Это не создание игр, где местами весело.
    Ответ написан
    9 комментариев
  • Как правильно и быстро определить тень из photoshop'a?

    iamd503
    @iamd503 Куратор тега CSS
    Верстальщик
    Посмотреть в стилях слоя.
    Ответ написан
    Комментировать
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    Я бы не назвал ваш уровень Junior. Если вы в состоянии самостоятельно
    - развернуть девелоп-среду
    - вести гит
    - писать код и обкладывать его тестами
    - настроить деплой

    то значит, в состоянии самостоятельно ставить себе задачи. А это уже на Миддла тянет )
    А у Миддла способ развиваться только один - практика. Самообучаемость, как видно, присутствует. Не зацикливайтесь на парадигмах, фреймворках и ЯП - берите проекты и выполняйте их
    Ответ написан
    1 комментарий
  • Что посоветуете еще подучить что бы тянуть на Junior PHP разработчика?

    gobananas
    @gobananas
    finishhim.ru
    Да всё у вас в порядке для джуна, дальше только опыт. Всё правильно выше сказали про требования конкретной компании - этого не угадаешь. Где-то mongodb нужен где-то postgresql где-то трейты юзают и php7 а кто-то на 5.3 сидит ещё. Ваших знаний считаю достаточно.
    Ответ написан
    Комментировать
  • Как удалить директорию в Git?

    @fathom
    Если вы случайно закоммитили ненужный файл или папку в git-репозиторий и уже сделали push, то чтобы удалить все следы этого файла или папки в том числе и из истории, достаточно выполнить команду:

    git filter-branch --tree-filter "rm -rf PATH" HEAD

    где PATH - это относительный путь до файла или папки.
    После этого выполните (чтобы перезаписать историю изменений):

    git push origin master --force
    Ответ написан
    1 комментарий
  • Как "ВКонтакте" умудряется обходиться без "CloudFlare"?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    примерно такой + ФСБ не разрашит через зарубеж трафик пускать, какой тут Cloudflare ?
    Ответ написан
    7 комментариев
  • Как и в каких случаях использовать DI в Yii2?

    SamDark
    @SamDark
    Yii2 core team
    DI именно в вашем случае не при чём. Это способ реализации, а не сама идея. Идея состоит в том, что вам нужно реализовать принцип инверсии зависимостей. То есть начать работать с интерфейсами, а не с конкретными реализациями.

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

    Для вашего примера делаем в модуле Article делаем интерфейсы:

    interface ArticleInterface
    {
        public function getTitle();
        public function getAuthor();
    }
    
    interface ArticleAuthorInterface
    {
        public function getName();
        public function getID();
    }


    Далее в пределах модуля используем только интерфейсы, а не сами модели:

    public function renderArticle(ArticleInterface $article)
    {
        return $this->renderPartial('_article', [
             'author' => $article->getAuthor(), 
             'title' => $article->getTitle()
        ]);
    }


    Вне модуля нам придётся реализовать интерфейсы в моделях:

    class Article extends ActiveRecord implements ArticleInterface
    {
       // ...
    }
    Ответ написан
    34 комментария
  • Как правильно организовать внешние ключи в MySQL?

    @Vicom
    Следующий вопрос,как организовать передачу этого самого id_people в таблицу комментарии?

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

    PS чтобы подойти с нужной стороны определите сначала для себя в голове такие понятия как:
    - реляционная СУБД
    - структура таблицы реляционной СУБД
    - поля таблицы
    - колонки таблицы
    - внешний ключ (одна из тех самых колонок, связывающий те самые поля одних таблиц с другими через их значение)

    доки из моих закладок по JOIN
    100 различных вариантов толкования одного и того же (максимально доходчивых для меня)
    - MySQL немного о JOIN'ах
    - Наглядное объяснение принципа объединения таблиц в...
    - Объяснение SQL объединений JOIN: LEFT/RIGHT/INNER/OUTER
    - MySQl: использоваение операторов JOIN на примерах
    - Разработка → MySQL и JOINы

    ну и когда подтянитесь уже - Top 20+ MySQL Best Practices

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

    удачи!
    Ответ написан
    1 комментарий
  • Проектирование сервиса на YII2. Как грамотнее?

    vyachin
    @vyachin
    Ищу работу
    У нас для каждого клиента свой поддомен и своя база данных. Клиенты регистрируются после бюрократической процедуры - заключения договора. Если хранить всех клиентов в одной базе - вы все равно придете к процедуре партиционирования таблиц, иначе все будет Очень медленно работать.

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

    private function getDsnAttribute($name, $dsn)
        {
            if (preg_match('/' . $name . '=([^;]*)/', $dsn, $match)) {
                return $match[1];
            } else {
                return null;
            }
        }

    Использование в любом месте:
    $this->getDsnAttribute('dbname', Yii::$app->getDb()->dsn);

    Использование в модели:
    $this->getDsnAttribute('dbname', static::getDb()->dsn);

    $this->getDsnAttribute('dbname', ModelName::getDb()->dsn);

    тогда функцию запихнуть в хелпер какой-нибудь, но если вам миграцию написать, тогда зачем вам модель?
    В миграции:
    $this->getDsnAttribute('dbname', $this->db->dsn);
    Ответ написан
    Комментировать