• Для чего нужно повторное возбуждение исключений?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Повторное возбуждения исключения позволяет вашему коду среагировать на исключение, но не проглатывать его, а пробросить вызывающему коду, чтобы он тоже мог как-то на него среагировать.
    Ответ написан
    Комментировать
  • Взял первый заказ на UpWORK от индуса. Как разрулить проблемы?

    yetanothercoder
    @yetanothercoder
    java(script) coder
    Печальная ситуация, вызванная видимо прежде всего недостатком опыта в подобных доработках да и в целом, поэтому на будущее несколько правил:
    1) не связываться с индусами (ну только если на хлеб не хватает и кроме индусов работы/заказов нет).
    2) выяснять заранее максимальные подробности заказа перед его принятием (тут очевидно этот ад можно было заранее предвидеть)
    3) не лезть сразу на боевые сервера (production), если у клиента только боевой сервер или он предлагает делать сразу на нем - то учитывая п. 2) посылать лесом.

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

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Перед формой, в экшене или прямо во view:
    $order->name = 'Вася';
    Но правильнее в моделе сделать метод, который заполняет дефолтными данными. И вызвать его в экшене, при создании экземпляра модели. Только в моделе это будет
    $this->name = 'Вася';
    Ответ написан
  • PHP PDO Как добиться синхронной работы COMMIT?

    Melkij
    @Melkij
    PostgreSQL DBA
    Для приложения commit синхронен. Если вы вышли из commit() - значит транзакция уже зафиксирована.

    Проверяйте код приложения #2. Может быть вы уже в транзакции и потому не видите изменения. Может быть вы подключаетесь к асинхронной реплике
    Ответ написан
    5 комментариев
  • Возможно ли в linux-системе(ubuntu) установить php 7.х сразу со всеми доступными расширениями?

    2ord
    @2ord
    Можно одинажды настроить виртуальную среду в Vargant (виртуализация ОС) либо Docker/rkt (контейнерная виртуализация). Фишка в том, что (почти) не имеет значения какой дистрибутив Линукса (главное, из современных) и какая версия.
    Настройки виртуальной среды хранятся в файлах:
    Vargant: Vagrantfile
    Docker: Dockerfile
    Ответ написан
    Комментировать
  • Как использовать ооп на практике?

    @Wentixon
    ООП гораздо сложнее чем ты думаешь. Самый оптимальный способ изучить его это делать проекты на современных фреймворка и изучать сами эти фреймворки и разбираться, почему разработчики сделали именно так. Паттерны, solid поизучай. Это необходимо, иначе ты будешь делать не ооп а какую то пародию, которая скорее будет создавать проблемы, чем решать их
    Ответ написан
    1 комментарий
  • Парсить содержимое HTTP_X_FORWARDED_FOR или нет?

    SagePtr
    @SagePtr
    Еда - это святое
    X-Forwarded-For содержит цепочку адресов, которые были переданы клиентом, каждый последующий прокси в цепочке (если он так сконфигурирован) добавляет туда адрес, с которого был совершён запрос. Соответственно, доверия к этим адресам быть никакого не может, клиент может что угодно туда вписать.
    X-Real-IP - это тот IP-адрес, с которого был произведён запрос к nginx. Доверие к нему возможно в том случае, если бэкенд невозможно запросить, минуя ваш nginx (в противном случае - туда тоже можно передать всё что угодно).
    Ответ написан
  • Почему говорят, что postgress лучше для более-менее серьезного проекта чем что-либо иное?

    @abroabr
    Не так.

    Серьезные проекты, например, у того же Google прекрасно работают и с MySQL

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

    У MySQL функционала меньше, он проще, и потому во многих случаях быстрее.

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

    Как пример, JSONB (рекомендую его в PostgreSQL, работает эффективно, позволяет реализовать schemeless). Не путать с JSON (это старая реализация в PostgreSQL, не рекомендуется).

    Смотрите выступления Олега Бартунова на Youtube - он разработчик PostgreSQL и проводит просветительскую работу по некоторым особенностям PostgreSQL.
    Ответ написан
    8 комментариев
  • Есть ли на github лицензия "not for commercial use"?

    neuotq
    @neuotq
    Прокрастинация
    Используй Creative Commons вариации с NonCommercial, например CC BY-NC 3.0 или CC BY-NC-SA 3.0.
    Ответ написан
    2 комментария
  • Английский для программиста или на что лучше ставку сделать?

    gobananas
    @gobananas
    finishhim.ru
    правильно ли я сделал бросив все свободное время только на английский

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

    Вы сейчас выбрали английский. Ок. Язык это не цель, а средство. Для чего вы будете использовать это средство? Что бы учить программирование? Ок. Тогда почему бы сразу не взять эту книгу по С + словарь и не совместить? Слишком сложно? Хорошо, возьмите книгу на английском из разряда "Устройство ПК" или типа Биты и байты для новичков и просто прочитайте её на английском со словарём переводя каждое непонятно слово. А потом уже за С сядете.

    Долго? А что делать... Вот прекрасная статья недавно вышла как чувак десятки тысяч долларов на изучение английского потратил https://vc.ru/34462-lichnyy-opyt-kak-ya-potratil-d... там пишут что 4 часа в день каждый день = английский за 3-4 месяца. У вас час в день, это значит около года...

    P.S. При таком семейном положении думаю проще (быстрее) искать источник повышения дохода в русскоязычном сегменте, а потом уже как стабилизируетесь - займётесь английским.
    Ответ написан
    1 комментарий
  • Как осуществляется грамотная передача объекта DI в конструктор?

    artem90
    @artem90
    TeamLead, Developer
    Докину в кучу ответов:

    В точке входа приложения создается контейнер.
    Дальше первое и единственное место где должно быть обращение к контейнеру это, к примеру:
    $controller = $container->get(MyController::class)

    Все остальное уже инжектится в нужный контроллер.

    Пример, конечно, сильно утрирован, но смысл в том, что про контейнер зависимостей должен знать только 1 участок кода - точка входа.
    Все остальное приложение не должно иметь представления о контейнере, и только должны получать зависимости.
    Иначе приложение будет зависеть на конкретной реализации DI контейнера и в целом на каком-то контейнере. Контейнер это всего лишь инструмент для управления зависимостями, но не зависимость)
    Ответ написан
    1 комментарий
  • Регистратор R01 поднимает цены. В 6 раз. Куда податься?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    хаха, на днях только закончил перенос от рег.ру к р01.
    И всё зря)))

    Видимо не осталось больше райских мест)

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

    Из вариантов теперь держать домены пустышки на р01, чтобы тариф был хотя бы 247 рублей.
    Ибо
    24*890=21360
    25*247=6175

    У меня сейчас уже 9 рушек, и продлить выйдет дороже(9*890=8010р) чем держать 25(6175р) рандомных доменов.

    up
    Зарегистрировал 16 рандом доменов, кстати это сделать еще выгоднее пока старые тарифы работают.
    У меня тоже сейчас по 155р.
    Ответ написан
    3 комментария
  • Как правильно решить задачу на php?

    Stalker_RED
    @Stalker_RED
    array_chunk() чтобы разбить на части.
    foreach по этим частям, каждую оборачиваем в группу, и выводим элементы.
    Ответ написан
    Комментировать
  • Javascript фреймворки - дань моде или быстрота и удобство?

    @maxbublik
    JS фреймворки уже несколько лет - это будни фронтэнда, и это не мода, и это никуда не уйдет. Также как никуда не уйдет традиционная верстка. Они будут жить вместе. Четкую границу между веб-сайтами и веб-приложениями провести нельзя, но суть вопроса автора вопроса понятна.

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

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

    Короче, если вы верстаете но на JavaScript ничего сложней jQuery вы не умеете, то вы в заднице. И каждый год вы все глубже.
    Ответ написан
    Комментировать
  • Какие стратегии повышения зарплаты существуют?

    petermzg
    @petermzg
    Самый лучший программист
    А вы не думали откуда деньги беруться? Ваши вопросы как-то обходят стороной этот момент.
    Есть бюджет проекта в который заложен обьем человекочасов разработки и стоимость часа, вот от этого и отталкиваются.
    Ответ написан
    2 комментария
  • Какие стратегии повышения зарплаты существуют?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Центральный показатель для бизнеса, а следовательно и руководителей, как людей представляющих интересы этого самого бизнеса - это коэффициент возврата инвестиций (ROI). Соответственно, сотрудник должен приносить компании больше денег, чем потребляет. Естественно, что чем выше разрыв между затратами и прибылью, тем лучше, поэтому фонд оплаты труда руководитель должен держать на том минимальном уровне, который гарантирует бесперебойную работу сотрудников. Один из факторов этой бесперебойности - низкая текучка. Сотрудников терять нежелательно. И чем ценнее для компании сотрудник, чем более он профессионален и/или чем больше на него завязано, тем дороже обходится его потеря. Натурально в деньгах. Придётся затратить больше, чем обычно, денег на поддержание работы без него. Придётся затратить деньги и время (те же деньги) на поиск, найм, введение в работу, возможно, обучение нового сотрудника. При этом он может оказаться совсем неподходящих и цикл придётся повторить. Или может оказаться просто хуже прошлого и эффективность отдела снизится. Поэтому, когда сотрудник приходит просить прибавку, руководитель оценивает может ли этот сотрудник уйти или только блефует, насколько легко его будет заменить, какой урон компании будет нанесён его уходом. Потом руководитель оценивает стоимость расширения ФОТ - есть ли резервы, какой сейчас ROI, будет ли больший ROI от реинвестиции этих средств во что-то другое? Если уход сотрудника будет стоить меньше, чем увеличение ФОТа, сотруднику откажут.

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

    Из этого вывод, стратегия проста - увеличивайте собственный профессиональный уровень на столько, чтобы свободно менять компанию, как только вас что-то перестало устраивать.
    Ответ написан
    4 комментария
  • Клиент на Upwork угрожает международным судом, возможно ли это?

    kumaxim
    @kumaxim
    Web-программист
    Допустим, я и Вы - оба граждане Российской Федерации. Мы с Вами подписали договор, по которому я Вам плачу условные 5 т.р. за 10 часов Вашей работы в месяц. Все у нас было хорошо 6 месяцев, однако, потом с моей стороны возникли проблемы, скажем клиент/партнер меня кинул, на счете у меня осталось 25 рублей, откуда брать денег не понятно. В данном случае, не получая денег от меня Вы останавливайте работу и имеете право подать на меня в суд с требованием взыскать условныу 5 т.р., которые я Вам задолжал. С Вашей стороны, да и со стороны закона все чисто, гладко и ровно.

    Теперь давайте переместимся на мою сторону. Денег у меня на счете сейчас нет и не предвидится. Взять бысто деньг мне не от куда. С Вами по существу мне спорить не о чем. Я прекрасно понимаю, что если Вы получите решение суда и предъявите его приставу, то мой счет будет очень быстро заблокирован и как-то рассчитаться с Вами я не смогу. В таком случае, моей стратегий будет затягивание времени. Скажем, Вы подаете на меня в суд, я в суде заявил возражение, мол истец не выполнил в полной мере процедуру досудебного урегулирования конфликтов, предусмотренную договором. Разумеется, в нашем договоре есть пункт типа "Все споры и претензии решаются путем переговоров...", однако, не прописан их формат, условия согласования и т.п. На этот момент я давлю и прошу отложить рассмотрение дела по существу на 8 недель. Затем, через 2 месяца я предоставлю в суд справку о том, что мол ложусь в стационар на неделю, поэтому присутствовать не могу и т.п.

    Всеми этими действиями я добиваюсь одного - максимально отсрочить блокировку моего счета, как план минимум. Мне это нужно для того, чтобы найти способ залатать дыру, которая у меня появилась из-за недобросовестных действий моего клиента/партнера. Для того чтобы Вы не подали на меня в суд вовсе, я могу начать докапываться до всяких мелочей, в духе а вот тут две запятые не в том месте... либо я могу начать пугать Вас, мол по Вашей вине у меня вот сайт упал, я понес убытки, для тебя это такая-то статья ГК РФ... либо я могу развести Вас на какое-то правонарушение, и имея на руках на Вас компромат сказать: "Да, я Вам должен условные 5 т.р.,однако, если Вы подадите на меня в суд, тогда я достану вот эти вот факты и заставлю Вас заплатить условные 10 т.р." Эти дела никак не связаны, однако, в Вашей голове промелькнет: "Да ну его нафиг, не буду с этим му###м связываться", чего мне собственно и нужно.

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

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

    Категорически нельзя соглашаться на предложение Вашего клиента получить оплату за пределами Upwork. Категорически нельзя как-то оскорблять оппонента или его ближайшее окружение. Вы не должны дать ему ни единого повода, чтобы разыграть другую карту. Ни в коем случае не опускайтесь до уровня оппонента, если он начинает вести себя как быдло. На угрозу про суд отвечай: "Хорошо, поговорим в суде вместе с моим юристом".

    Мой главный совет - не будь мудаком, как в данной ситуации, так и вообще по жизни.
    Ответ написан
    4 комментария