Проблема в том что её нет.
Контакты
Местоположение
Беларусь, Брестская обл., Брест

Достижения

Все достижения (32)

Наибольший вклад в теги

Все теги (131)

Лучшие ответы пользователя

Все ответы (287)
  • Какая часть от всей стоимости проекта, как правило, достаётся дизайнеру?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Для этого есть несколько вещей. Скажу заранее - они очень логичны, но они никогда у меня не срабатывали.

    Идея примерно такая:

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

    Цена зависит от себестоимости продукта
    Это минимум по рынку, устанавливается чтобы в принципе за работу можно было хотя бы кушать

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

    Есть у некоторых людей очень разумный подход - они работают бесплатно, но вместо денег используют связи. Дескать захотелось кушать? Есть знакомый повар, которому я помогал в 41-м на фронте. Захотелось машину? Есть знакомый автоинвестор, который за смешные деньги продаст машину вам, потому что вам должен. Не стоит забывать одно - деньги вам все равно понадобятся, поэтому на всех бесплатно не поработаешь. При всем этом друг - много не даст. Поэтому быть другом и думать о том, что у вас будет много денег - так не получится. Деньги зарабатываются у _не_друзей_, а уважение - у друзей.

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

    Цена зависит от познаний клиента
    Если вы делаете что-то, о чем он даже не слышал, он скорее всего не даст вам дополнительных денег. А вот если вы можете ему рассказать, какую пользу это приносит и зачем вы это делаете - цена повышается. Но не наступайте на МОИ личные грабли. Работаешь бесплатно и загоняешь, что делаешь очень важное дело. Ваш клиент будет вам улыбаться и поддакивать, но вы как работали бесплатно, так и дальше будете бесплатно работать. Ничего личного. Бизнес.

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

    ===
    Дело вот в чем:
    Назначение цены это игра в ответственность. Клиент со всех сил пытается сохранить в разговоре инициативу и при этом скинуть сложные вопросы на тебя. Дескать ты работай, и цену говори, а я при этом всем хочу заработать и ничего не делать. А ты пытаешься у него почву из под ног выбить, забрать инициативу и доказать, что это стоит столько, потому что он сам этого без тебя не сделает. При этом не обидив его, не унизив, и не нагрубив, то есть очень вежливо.

    ===
    То есть порядок цены он такой:
    - себестоимость
    - желание клиента
    - твои амбиции
    - уровень доверия
    - состояние клиента

    Если ты по всем пунктам прошелся и вы согласовали цену - то тут уже считай, что ты согласился и отключай любые мысли о цене. То есть ты же думал о том, что тебе хватит? Ну вот, все, теперь делай.

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

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

    Твой ответ почти на автомате - "если тьфу - так чего ты ко мне пришел?"

    Но опять же, для него тьфу может быть 10 долларов, а может быть 2000 долларов. А для тебя тьфу это сколько?

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

    Знаешь, обычно, на этой фразе почти все клиенты говорят тебе, что ты психолог и куда то уебывают. Ну что поделать, ты раскрыл их коварный замысел. А клиентов с таким замыслом больше 90%.
    Ответ написан
  • MVC реализованый через Controller, Entity, Repository, Service это как?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Новая версия 02.10.2020

    (поскольку я не встретил никого, кто сказал мне "я точно понял DDD", а опросил в телеге человек 30 разного уровня, попробую написать своё видение - ну в смысле свое - то, которое получилось после сборки мнений этих людей)

    Смысл DDD в данном случае не столько во вселенской крутости, сколько в работе большой командой. Когда вы заставляете новых людей в команде долго изучать структуру проекта, класть все так же и следовать правилам - вы замедляете процесс и повышаете нервозность команды, никто не знает - как действительно правильно делать. Доменная модель отличное решение, которое говорит - клади Провайдеры, Сервисы, Репо, Сторейджи и Контроллеры/Таски одинаково, остальное можешь хоть как-угодно делать, мы будем проверять как работает твои Сервисы. Что там у тебя под капотом - лично твоя ответственность.

    - Domain/
    -- (Catalog)/
    --- Di/
    ---- CatalogProvider.php
    CatalogProvider.php
    Основной файл модуля. Биндим интерфейсы. Загружаем конфиги. Определяем порядок загрузки и модули без которых модуль не запускается.

    --- Controllers/
    ---- (Any)Controller.php
    (Any)Controller.php

    Контроллеры содержат действия. Действие на вход принимает объект запроса Request, а возвращает обычно объект Response. Иногда разумно сделать, чтобы можно было возвращать, например, массив или строку текста, которая уже потом автоматически оборачивается в Response. Смысл Response в данном случае в том, чтобы позволить задавать заголовки, куки, отчеты хранилищ в виде очереди - в любом месте программы добавляешь в массив, и в конце они соединяются и отсылаются вместе с данными в виде полей или дополнительных заголовков, а не постоянно это помнить

    --- Tasks/
    ---- (Any)Task.php
    (Any)Task.php

    Таски это как контроллеры, только работают из консоли, а не из браузера. Разница в разборе входных аргументов - в браузере разбирается строка URL и Query, а в нашем случае разбирается $argv. В запросе из браузера может быть прикреплен файл, тогда как в консоли файл можно передать, например, с помощью pipe php://stdin. На выход отправляется как правило строка, но лучше чтобы она формировалась по той же логике, как и Response, т.к. отчеты хранилищ тоже могут добавляться по ходу работы программы

    --- Services/
    ---- (Any)Service.php
    (Any)Service.php

    Сервисы, они же - Фасады. Класс, имеющий много функций и не имеющий свойств и хранимой информации. По сути они просто вызывают другие классы и говорят им, что делать. Удобно проверять функционал выданной разработчику задачи, написав тесты на методы сервисов, т.к. если кто и будет пользоваться модулем - то только используя эти методы, остальные - под капотом и вообще не должно волновать как оно там и что. Может быть несколько штук, но можно и один на модуль. Даже лучше чтобы один. Но поди сделай один для своей библиотеки полезных штук - там будет один сервис для массивов, один для дат, один для строк, один для денег и т.д.

    --- Models/
    ---- (Any)Model.php
    (Any)Model.php

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

    ---- (Any)Vo.php
    (Any)Vo.php

    ValueObject - это объекты без методов, такие же как модели. Основное отличие состоит в том, что ValueObject как правило одноразовые, не имеют идентификатора, создаются, выводятся на экран или передаются в другую часть программы, но никогда не меняются. Например в Vo удобно заворачивать сумму и валюту. Или язык. Или еще что. Иногда им пишут методы сравнения по свойствам, методы больше меньше, сортировки.

    Это в отличии от моделей, равность которых определяется их идентификаторами в момент времени. Для программы - uuid, для базы - id.


    *** СОДЕРЖИМОЕ /(Catalog) ***

    --- (Any)Folder/File.php
    (Any)File.php

    Все остальные файлы, которые вы создаете как вам вообще хочется. Обычные классы, свойства методы, как закодите, так и будет. Их публичные методы потом переносятся в сервисы/фасады и крепятся поверху интерфейсами, если хочется подменяемость.

    - Repository/
    -- Mongo/
    --- MongoProductRepository.php
    -- Eloquent/
    --- EloquentProductRepository.php
    EloquentProductRepository.php
    Репозитории содержат методы типа "найти по", "достать несколько", "сохранить один", "сохранить много", "вставить", "обновить" и им подобные.
    В случае поиска (операция GET) на вход подается что хочешь, но лучше обойтись встроенными типами, чтобы разработчик не задавался вопросом - из какого модуля программы здесь на вход прилетел CategoryFilter или что-то такое. Пусть фильтр умеет преобразовывать себя в массив вложенный, а репозиторий умеет его понимать. На выход - нулл, модель или массив моделей. Все остальные обертки в коллекции - от лукавого таракана.
    В случае записи (операция POST/PUT/DELETE) на вход подаются модели. На выход можно отдавать или статус true/false, или те же самые модели, т.к. в случае массовой вставки через INSERT у моделей может изменится идентификатор - например вы закидываете на вход 10 моделей, а на выход возвращаете те же объекты, только проставив им айдишники.

    Важное замечание для тех, кто привык к моделям Yii или Laravel - выдаются НЕ их модели. Модели лежат у вас в папке с модулем и представляют собой класс со свойствами без методов (желательно, очень настойчиво желательно, без методов) - в папиных языках это еще называют "структурами". Если мы имеем EloquentModel-и или другие AR-модели - они размещаются неподалеку, как часть репозитория. А по программе ходят наши стандартные модели без методов. Их еще называют Entity, я как то разбирался чем отличается Entity от ValueObject. Тем, что у Entity могут быть и могут меняться идентификатор (ID) и даже быть их два - ИД в оперативке (например Uuid) и айди в источнике данных.

    --- Models/
    ---- Product.php
    --- Migrations/
    ---- 2020_10_02_120030_create_categories_table.php
    ---- 2020_10_02_120130_create_products_table.php
    2020_10_02_120030
    Обратите внимание на дату - она является ключом сортировки в алфавитном порядке. 30 секунд установлено для того, чтобы в рамках одной таблицы менять порядок после того, как миграции уже созданы. У чего-то станет 29, и у чего-то 31. А минуты позволяют управлять таблицами по порядку, меняя 01 на 02 и т.д.

    --- Seeds/
    ---- ProductSeed.php
    ProductSeed.php

    Сиды это файлы базовых данных. Их можно хранить прямо здесь в пхп, можно создать SQL файл и запускать его отсюда, а можно и вовсе положить на удаленную базу данных. Лучше всего себя показывает SQL файл сжатый в архив (мало места занимает, т.к. текст), но если данные действительно тестовые или часто меняются (пароли) - то обходимся массивом. Разумеется, сид запускается один раз после создания таблицы. Другой вопрос, что при разработке пересоздавать базу данных с нуля приходится часто.

    - Storage/
    -- File/
    --- FileImageStorage.php
    -- Aws/
    --- AwsImageStorage.php
    -- AbstractImageStorage.php

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

    Хочется верить что наступят времена когда вместо "невозможно" начнут применять "интересно, как это возможно" и вместо "да ты гонишь" начнут применять "а не мог бы ты рассказать почему это работает", но за 2000 лет ещё не навоевались.
    Ответ написан
  • Что нужно знать про ООП?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    А я бы добавил что ООП это украшение кода, а не его суть

    Cейчас есть способы платить Амазону и вообще не писать код, создавая апишки в админке с помощью мышки. Все что будет нужно от ПХП - это делать простые скрипты которые передают данные из точки А в точку Б. Там вообще не нужен будет ООП, потому что не будет понятия "цельный проект" в рамках папки с файлами. Цельный проект это будет куча компьютеров, а на этом конкретно есть передача из А в Б. И тут уже PHPшники посмеются)) Они то готовы к такому

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

    (статья перенесена на Google Docs за необходимостью уточнений)
    https://docs.google.com/document/d/1zs71d9OlgnaeIj...

    думаю сейчас ты увидишь как набегут великие архитекторы, которые давали тебе советы по этим словам и начнут говорить что то не про это, а это не так и это не здесь. вот это еще одно что надо знать про ООП. Ты никогда не услышишь, что ты прав, потому что термины заменили им мозг, а если им сказать об этом - они объединяются в стаи, чтобы завалить тебя стикерами и унижениями.
    А я бы добавил что ООП это украшение кода, а не его суть
    Ответ написан
  • Реально получить заказ веб-мастеру и контекстологу на бирже ФЛ?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Ну если на секундочку тебе кажется что человек у которого есть что делать идет на биржу фрилансеров - то это очень не всегда так. На бирже сидят матерые волки, которые ищут как сделать ЕЩЁ дешевле.

    Это как прийти на рынок где бабки сидят, и надеяться, что бабки тебе помогут стать рядом с ними. Неееет. Они заразы сделают всё чтобы ты не дай бог рядом с ними не стала.

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

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

    Кстати маленький пример. Вот есть сайт МойКруг где периодически светятся вакансии со средними зарплатами "в целом по селу" и есть премиум вакансии, который ну это ж еще проплачивать надо, то есть ну ооочень нужен специалист. И там вот зарплаты указаны. По этим зарплатам можно видеть что отличная зарплата айтишника - это вот что-то 2-2,5 тысячи долларов. А на собеседование приходят ребята, которым я даю задачу, а они начинают там выкручиваться - не такая задача, нету тз, нету того, нету этого, плохая задача, плохой Гриша... А когда они с моей помощью каким-то чудом её решают, они вдруг радуются и называют зарплату в 3 тысячи зелени. Или четыре.

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

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

    Это во многом доказывает почему "технологии" никуда не движутся. Их двигают те, кому пора уже подымать зарплату, придумывая новую упаковку для существующих техник работы. А те кто придумывают новые концепции - сидят, блин, дома и никто про них не знает. Плохо? Нет, просто пока существуют деньги - по другому невозможно. (ps. для тех кто придумывает дома придумали классную мышеловку - приходите на собеседование уже с готовой идеей (звучит так обычно = "у вас есть свой проект на github, сбросьте на оценку", иначе - не тратьте наше время. Таким образом твою идею бесплатно получает кто-то ещё. А потом тебя могут не взять, и никто, как говорится, не виноват, вы же сами пришли)
    Ответ написан
  • Как защитить сайт от копирования?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Демонстрация с экрана через скайп однозначное решение. Почему? Потому что простое.

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

    Учить заказчика - дело неблагодарное. Если заказчик ХОЧЕТ учится - держитесь за него обеими руками. Обычно ваша попытка чему-то его научить воспринимается как понты, и снижает вашу ценность как профессионала. Главное что - ни в коем случае не делайте на его хостинге. За примером далеко не надо ходить - когда директорам и чиновникам что-то нужно - они не взывают к любви, они просто убивают тех, кто им мешает. Так и тут, пока вы "играете в бизнес" - он добрый, появляется возможность вас кинуть - вас кинут. Люди изменились. Очень сильно.

    При попытке ныть - предупреждение его, но вежливо и нежно, дескать извините, это я на прошлой работе еще так привык
    Вторая попытка - ныть - оправдываешься что у тебя принцип
    Третья попытка - выносишь мозг с обьяснением своей позиции
    Четвертая попытка - кидаешь его на бабло

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

    Больше уверенности, осознай что единственная цель нео-бизнесмена - сколотить бабла. Осознание со временем придет, когда кинут тебя раз 20 за жизнь. Пока кинули 2-3 раза еще бесит несправедливость, потом пройдет, поймешь что есть люди толковые - ради них на все идешь, а есть хитрожопые, таких через некоторое время начинаешь детектить.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (121)