Задать вопрос
  • Для чего нужны Nginx или Apache и что выбрать?

    megafax
    @megafax
    web-программист
    В своей практике применяю такой подход:
    nginx служит для проектов на php/nodejs/etc прослойкой, которая распределяется запросы - на статику (картинки, css, js) или динамику (html). Статику отдает самостоятельно, а вот динамикой уже занимается apache/nodejs/etc. Причем "наружу" смотрит только nginx, все остальное слушает только 127.0.0.1, куда и проксирует все запросы nginx.
    Это в двух словах, если нужно более подроное или тонкая настройка - то маны Вам в помощь.
    Ответ написан
    Комментировать
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    sim3x
    @sim3x
    В вопросе идет подмен понятий
    В заголовек предлагается обсуждать: с 0 или используя фреймворк
    А в теле фопроса: ООП противопоставляется функциональному стилю

    Писать с 0 плохо потому, что время не бесконечно и переиспользование кода основной подход для ускорения разработки

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

    @kgbplus
    > //Вроде любому вменяемому разработчику понятно что делает, тут же даже в самом запросе чуть-ли не объяснение
    > mysqli_query($bd,"UPDATE `users` SET `group` = '1' WHERE `id`='$user' LIMIT 1");

    Про таких специалистов даже есть специальный комикс:
    exploits_of_a_mom.png
    Ответ написан
    Комментировать
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я понимаю, о чем вы пишите и почему. Ваш код работает, т.к. решает поставленные задачи и удовлетворяет потребности ваших клиентов. Имеет ли он право на жизнь? Да, но только в вашем отдельно взятом случае.

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

    Что если вам потребуется сделать блог, в котором нужно иметь комментарии, которые обновляются в режиме реального времени? И комментарии могут содержать HTML, но такой, чтобы ваш сайт не могли взломать?
    А еще комментарии короче 2000 символов по воскресеньям платные. Оплата через Яндекс.Деньги.
    Вы все это делаете, все работает.
    Затем заказчик вам говорит, я хочу запустить такую же систему другу, но с оплатой по понедельникам через WebMoney.
    Вы копируете сайт, переписываете функцию оплаты.
    Дальше ваш заказчик видит, что у друга больше денег, он просит добавить WebMoney к себе.
    Вы опять переписываете код. Добавляете условия.
    Потом к вам приходит друг заказчика и хочет другое оформление. Вы переписываете его функции.
    Затем он просит добавить поиск по названиям записей к себе на сайт. Вы делаете. Буквально на следующий день к вам приходит заказчик и тоже просит поиск, но не только по названиями, но и по телу статей и по комментариям. Вы делаете.
    Затем ваш заказчик видит, что дела у него идут в гору и он просит отменить платные комментарии и сделать просто платные аккаунты для всех. Вы переписываете.
    Тем временем друг просит вас сделать все тоже самое, но с его оформлением.
    Дела у заказчика идут в гору и сайт начинает тормозить. Вы делаете кэширование.
    Внезапно сайт заказчика попадает в топ и нагрузка резко увеличиваете настолько, что один сервер уже не справляется. Вы переносите все на самый мощный, но он его тоже мало.
    Нужно делать горизонтальное масштабирование.
    Для этого нужно переписать все функции, которые работают с базой данных. А их уже больше двухсот. И просто замена не подходит.
    Сайт открывается через раз, заказчик звонит вам каждые 2 часа и спрашивает, как там прогресс.
    И тут вам присылает письмо друг заказчика и говорит, что хочет перейти с MySQL на PostgreSQL.
    И вы понимаете, что вам надо будет переписать еще 300 функций, но на другом сайте. Вы его посылаете, поскольку вы и так в мыле.
    Друг жалуется на вас заказчику. Заказчик, не ставя вас в известность, нанимает другого исполнителя, у которого отваливается челюсть от того, что творится в системе. Он объясняет, что ему нужно будет потратить полгода, чтобы вникнуть в то, чтобы понять ваш код, но он может сделать все тоже самое за 4 месяца, причем для заказчика и его друга так, что это будет расширяемо и поддерживаемо не только им.
    Тем временем, спустя двое суток жизни на кофеине вы героически переписываете все функции заказчика и идете отсыпаться. После суток сна вы обнаруживаете на автоответчике сообщение, что вы уволены. А все потому, что забыли проверить функцию логина.

    А теперь разберем эту историю по частям. Почему же вас уволили?

    Незнание абстракций и шаблонов проектирования привело к тому, что вы вынуждены были поддерживать 2 разных проекта с практически одинаковой логикой.
    Например ORM смог вам помочь поддерживать 2 разные базы данных без каких-либо усилий. Сменить одну базу на другую стоило бы исправления конфигурации, а не переписывания 300 функций.
    Использование фреймворков позволило бы сократить время на реализацию подключений платежных систем. Многие из них имеют готовые реализации.
    Опять же в современных фреймворках, например в той же Doctrine реализован шардинг. В большинстве случаев ваши проблемы свелись к изменению настроек.
    Но даже если бы вы накосячили, то интеграционные тесты не позволили бы попасть говну в продакшен. А если бы оно и попало, ну накосячили вы с тестами тоже, то проблема была бы обнаружена на раннем этапе благодаря "сине-зеленому" развертыванию и она бы не затронула всех пользователей.
    И да, ваш код не прошел внешний аудит.

    Чтобы быть настоящим профессионалом, нужно не только знать, но и уметь применять на практике ООП, популярные фреймворки, шаблоны проектирования, тестирование и средства непрерывной интеграции, а еще пользоваться нормальными IDE и нести ответственность за сделанную работу.

    Когда пишете свой код, почаще задавайте себе вопрос: А если бы это был код для моего кардиостимулятора? Это поможет.
    Это вам для общего развития.
    Ответ написан
    5 комментариев
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    ТС, надеюсь никому никогда не придется работать с тобой в команде и поддерживать твой код. Одно дело не знать, спрашивать и прислушиваться, другое дело гнуть свою кривую линию.
    Ответ написан
    4 комментария
  • Теперь это норма для фриланса?

    syschel
    @syschel
    freelance/python/django/backend
    Начнём с того, что Вы видать сами не поняли. MVP это считайте прототип, а дословно "minimum viable product — минимально жизнеспособный продукт — простейший работающий прототип продукта". То есть тут не требуется высококлассный законченный продукт. Уже есть почти на любом языке фреймворки/программы, которые позволяют создать на своём языке приложение, а потом нажать "сгенерировать под андроит, иос и т.д.". Да, работать они будут хуже чем писалось бы на нативных языках, особенно с логикой. Но ведь тут просят MVP.

    Клиентов которые НЕ программисты, тоже полно. Они могут шапочно знать какие-то "страшные слова", но сами не являясь специалистами в НАШЕЙ сфере, не понимают что пишут. Так же наверно и на медицинском форуме, народ обсуждает "клиентов", которые "пьют слабительное вместе со снотворным, перепутав рецепты". Часто видел клиентов, которые просто по незнанию написали "бред". Либо задачу ставил HR, вообще далёкий от темы и тупо скопировавший "похожие" объявления.

    Ну а клиентов которые хотят всё и сразу, при том за копейки (второй фейсбук за 100 долларов! сам бы сделал, да времени нет, делов на пару вечером), полно. При том за мои ~15 лет фриланса/офиса, это было постоянно. Уже даже не обращаю внимания на них, как на рекламные баннеры взгляд перестал цепляться. По этому ваше "удивление" мне не понятно. Такое было всегда, везде и будет так же всегда и везде. Просто отсеивайте.
    Ответ написан
    2 комментария
  • Скрипт, выполняемый на JavaScript за секунду, на PHP за 30 секунд проходит только 20%. В чём причина?

    Adamos
    @Adamos
    А вам никто еще руки не оторвал за такой код? Привыкли, что за вас компиляторы думают?
    Например, проверять $a != $b внутри десяти вложенных циклов - это [к сожалению, цензурных слов не нашлось].
    Кстати, РНР проверяет условия по порядку, и ставить первым самое тяжелое - это [ну, скажем, саботаж...].
    Ответ написан
    4 комментария
  • Питон считают медленным из-за того, что он скриптовый?

    nikolay_karelin
    @nikolay_karelin
    Ведущий разработчик, пишу на Python, Tcl, Matlab
    Во первых, строго говоря, Python компилируется в байт-код, как и Java.

    Насколько я знаю ситуацию, довольно большой вклад в медленную работу Python дает его динамическая природа: когда виртуальная машина Python встречает выражение типа a + b, ей надо проверить, какие именно типы имеют величины из этих двух переменных, определены ли специальные методы типа __add__() и т.п. - это может занять вагон времени, особенно если происходит внутри цикла.

    Хочу заметить, что доступные компиляторы для Python: PyPy (JIT), Numba (JIT, для численных расчетов), Cython (конвертер в C) - основаны на выводе типов и/или специальных аннотациях, иначе большой скорости программы не будет и после них.

    Я на эту тему пару докладов делал в прошлом году: https://www.youtube.com/watch?v=aVriaZJDHks (на английском) и https://dev.by/lenta/space-blog/pycon-belarus-2016 (на русском).
    Ответ написан
    1 комментарий
  • ИП, валютный контроль по инвойсам, без договора?

    ikoolik
    @ikoolik
    Страстный php разработчик
    Да.
    Только это будет не просто инвойс, а счет-договор. Вот вам пример.

    Пользуюсь таким документом уж скоро год как, никаких проблем с ВК нет.
    Обслуживался в Модульбанке и Тинькофф банке.
    Ответ написан
    2 комментария
  • ИП, валютный контроль по инвойсам, без договора?

    @pochvennik
    Вообще без договора - не знаю. Можно заключить один большой договор в нем прописать условие, что оплата инвойса влечет за собой принятие работы и потом в банк присылать только инвойсы, а договор новый не переподписывать. Я делаю так.
    Что можно вообще без договора, хотя бы оферты - я честно говоря сомневаюсь.
    Ответ написан
    Комментировать
  • Как сэкономить ресурсы оперативной памяти при кодинге в Ubuntu?

    Melkij
    @Melkij
    PostgreSQL DBA
    swap в наличии. Так что описываемое поведение вполне норма, когда начинает подходить к концу свободная памяти и ОС лезет в swap (что можно проконтролировать вызовом free при начале проблем). Немного странно выглядят падения расширений, но, возможно, их отстреливает хром за слишком долгий отклик.
    Для начала стоит покрутить swappiness, чтобы ОС лезла в свап только в крайнем случае.
    Затем поиграть в Zswap, zram. Что порежет производительность CPU, но поможет от нехватка памяти.

    Раз на всё памяти не хватает - то есть варианты действий:
    - отчаянно тормозить в свапе
    - звать на помощь OOM killer, который будет убивать какой-нибудь на его усмотрение бесполезный процесс. Для этого достаточно вырубить swap и ядро само позовёт при необходимости.
    - добавлять память
    - уменьшать потребление памяти. Следить, кто сколько памяти жрёт, может у вас кто-нибудь не особо нужный просто течёт по памяти. Можно запускать текущие процессы в cgroup с жёстким лимитом памяти, тогда они будутт отстреливаться при превышении лимита.
    Ответ написан
    1 комментарий
  • Как сэкономить ресурсы оперативной памяти при кодинге в Ubuntu?

    theurs
    @theurs
    screenfetch показывает занятую/всего памяти
    попробуй установить пакет zram-config и перезагрузить
    Ответ написан
    2 комментария
  • Django: CBV или функции?

    aRegius
    @aRegius
    Python Enthusiast
    Я не столь многоопытен в Django, но имеющейся информацией поделиться готов. Возможно, вам также пригодится...

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

    Это Daniel & Audrey Roy Greenfeld, авторы небезызвестной Two Scoops of Django и Arun Ravindran, developer member of the Django Software Foundation и автор Django Design Patterns and Best Practices.

    И первые, и второй предпочитают CBV. Но это, в большей степени, личные предпочтения. Сами Гринфилды отмечают, что знают немало своих коллег, предпочитающих работу с FBV (цитирую: "...Some developers prefer to err on the side of using FBVs for most views and CBVs only for views that need to be subclassed. That strategy is fine as well...."). Одним словом, это действительно вопрос личных предпочтений и характера разрабатываемого продукта.

    Единственный категорический совет от них - не использовать CBV для написания обработчиков ошибок ("...Don’t use CBVs to write custom 403, 404, and 500 error handlers. Use FBVs instead....")

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

    titov_andrei
    @titov_andrei
    All my life I learn - and die a fool!
    Если брать пример из жизни, то вы пытаетесь управлять дождём. А это трудозатратно, поэтому человек управляет потоками воды после дождя. Попробуйте и вы управлять не текущей деятельностью, а направлять планируемые последствия в то или иное русло, как водостоки с крыш или ливневые системы на дорогах. Иначе завал, заторы, лужи, грязь и разочарование.
    Ответ написан
    Комментировать
  • Как вы используете Mac OS?

    @silverjoe
    Добавлю про многоэкранность:
    Можно по CTRL+влево/вправо смещаться между экранами

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

    Про Dock вам написали.

    Про Launchpad - зажимаете иконку любую в лаунчпаде и соединяете с другой - система как в iOS для создания папок. Группируете и раскладываете программы по папкам.
    Для быстрого поиска по имени вверху есть поисковая строка.
    Так же можно быстро запустить программу или службу, нажав CTRL-Пробел (запускается Spotlight) и начав вводить имя софта. Народ заменяет Spotlight Alfred-ом
    Ответ написан
    Комментировать
  • Как вы используете Mac OS?

    SnapSh0t
    @SnapSh0t
    iOS-Developer
    тоже всегда пользуюсь Spotlight для поиска каких-либо программ или выполнения каких-либо операций.

    Терминал немного проапгрейдил программой "oh my Zsh" его плюсы можно найти во всемирной паутине.
    Ответ написан
  • Как изучаем Python?

    s0ci0pat
    @s0ci0pat
    I'm Awesome
    Только лучшее по Python'у, без лишних слов и воды: https://docs.python.org/
    Ответ написан
    2 комментария
  • Фриланс и налоги, стоит ли платить?

    reffy
    @reffy
    Я молодец.
    В Российской Федерации никого не трогают за мелкие доходы. Я лично много лет так нелегально работал с намного большим доходом, чем у вас. Чтобы вами начали интересоваться доход должен быть очень большой, 100-200 т.р. в месяц это минимум, и то такие суммы не интересуют налоговую. У меня есть примеры, где люди от 500 тысяч в месяц зарабатывают, и от 1 млн, и их никто не трогает.

    Вопрос легализации очень интересный, я например, с радостью легализовался. Сейчас это очень просто. ИП на УСН платит всего 6% налога с дохода. Конечно ещё нужно платить в ПФР, там 18 тысяч в год. Но тут очень интересный момент. Если платить в ПФР поквартально(авансовыми платежами), то на сумму пенсионных отчислений, налоги списываются.

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

    Но на вашем месте, я бы не думал о легализации пока это не ваш основной вид занятости и пока доход меньше 30-50 т.р. в месяц.
    Ответ написан
    Комментировать
  • Как разрабатывать в жару без кондиционера и не сойти с ума?

    dintsec
    @dintsec
    Маркетолог, копирайтер
    12d910b4946742148e403769014c5ae8.jpg Как-то так...Жара 38, Волгоград.
    Ответ написан
    Комментировать