• Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Какая среда разработки лучше для Python?

    longclaps
    @longclaps
    Да вот сегодняшняя среда отличная.
    ps. Забудь, чувак. Ты нагенерил 144 вопроса, но корм оказался не в коня. Нет такой среды.
    Ответ написан
    Комментировать
  • Как параллельно работать с несколькими запросами?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос: если в папку, где идёт работа с файлами одного пользователя, залить файлы другого пользователя, то они смешаются.
    Ответ: не валить файлы разных пользователей в одну и ту же папку.

    При этом скрипту обработчику необходимо передавать адрес рабочей папки.
    После обработки рабочая папка удаляется
    Ответ написан
    Комментировать
  • Есть ли смысл переходить на другой стек?

    1) Уходить с удаленки, которую ты смог найти на опыт джуна - это прямо мега глупо. Надо хотя бы получить 9-12 месяцев работы, тогда тебя уже начнут рассматривать, как разраба.

    А пока HR-видит, что ты через месяц слился и думает: "Да ну его нахер, то ли он конфликтный, то ли он "мамкин айтишник, который хочет 100к со старта", то ли он рукожоп"

    т.е. этот опыт лучше вообще убрать из резюме. (ну это так намек)

    2) Удаленку без опыта реальной разработки на уровне Джуна - очень сложно найти. Будь ты хоть JS, хоть PHP, хоть Java разработчик. Тут дело не в стеки.

    3) В идеале, тебе надо получить строчку в трудовую, что работал программистом условно 9 месяцев (хоть на чем) - после этого, уже и удаленку можно будет найти проще, либо уже уезжать на офер в СПБ, Москву или другой город
    Ответ написан
    Комментировать
  • Чем плохо написание кода функциями?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Зачем нужен ООП?
    Кратко зачем ооп вместо функций:
    1) Снижение сложности кода(да, звучит странно, но на самом деле именно так и есть - сложные вещи пишутся 1 раз, а далее вы пользуетесь практически предложениями естественного языка и описываем реально существующие манипуляции с реальными объектами, например $user->getName(), $image->rotateLeft()...)
    2) Инкапсуляция - все что делает объект изолированно внутри одного инстанса, вы работаете по сути с отображением реальных объектов в цифровой мир(+ этот объект может быть сколь угодно сложным внутри, наружу он смотрит простыми методами для возможности операций над ним).
    3) Снижение затрат памяти - классы подгружаются только в необходимом объеме и в нужно месте, в процедурном подходе все функции грузятся сразу.
    4) Локализация кода - всегда логика одной сущности доступна в одном месте, не размазана по функциям и коду. Это такой нехилый бонус к инкапсуляции, и при рефакторинге вам не надо переписывать кучу кода, если объект был изначально правильно построен, максимум поменять немного логику внутренней обработки данных.

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

    Я понимаю что это плохо и не правильно, но оно работает, хотел бы попросить у Вас совета, насколько это плохо, и можно ли использовать данный подход?
    Почему нельзя?
    Оно работает?
    Оно решает проблему бизнеса на сейчас?
    Бизнес устраивает решение которое "будет работать только здесь и сейчас, а стоимость погашения технического долга и расширения будет равна написанию приложения с нуля, но это будет потом"?
    Если все ответы - "да" значит все не так уж плохо на сегодняшний день, и билет на само в порядке, по крайней мере пока вы работаете там.
    Но я бы серьезно задумался о будущем в плане развития.
    Ответ написан
    Комментировать
  • Зачем в современном php фреймворки?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Ну вот вы сами себе противоречите
    плохо не использовать фреймворки в современном php?

    наш микро фреймворк документирован

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

    Ну а на Ваш вопрос - Зачем в современном php фреймворки можно ответить очень просто - А зачем Вы в процессе разработки создали свой микрофреймворк?
    Ответ написан
    Комментировать
  • PHP работает только с базами MySql?

    SagePtr
    @SagePtr
    Еда - это святое
    Не только. https://www.php.net/manual/en/pdo.drivers.php - это только список реляционных, которые поддерживает PDO.
    А это - список расширений для работы с разными БД не через PDO - https://www.php.net/manual/ru/refs.database.vendors.php
    Ответ написан
    Комментировать
  • PHP работает только с базами MySql?

    sim3x
    @sim3x
    https://www.php.net/manual/en/refs.database.php

    Vendor Specific Database Extensions
    CUBRID
    DB++
    dBase
    filePro
    Firebird/InterBase
    FrontBase
    IBM DB2 — IBM DB2, Cloudscape and Apache Derby
    Informix
    Ingres — Ingres DBMS, EDBC, and Enterprise Access Gateways
    MaxDB
    Mongo — MongoDB driver (legacy)
    MongoDB — MongoDB driver
    mSQL
    Mssql — Microsoft SQL Server
    MySQL — MySQL Drivers and Plugins
    OCI8 — Oracle OCI8
    Paradox — Paradox File Access
    PostgreSQL
    SQLite
    SQLite3
    SQLSRV — Microsoft SQL Server Driver for PHP
    Sybase
    tokyo_tyrant
    Ответ написан
    Комментировать
  • Где лучше обсуждать Тостер, кроме самого Тостера?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Обидно, когда вкладываешь время, деньги и душу в сервис, вычитываешь каждую запятую в правилах к ресурсу, переписываешь чтобы было понятно любому.

    А пользователи пользуются сервисом как им вздумается, считают, что правила не обязательны, еще и предъявляют претензии.
    Ответ написан
    Комментировать
  • Какую справедливую формулу можно использовать для вычисления истинной симпатии (лайки) к ответу на Тостере?

    sim3x
    @sim3x
    https://www.reddit.com/r/OutOfTheLoop/comments/4dl...
    https://medium.com/hacking-and-gonzo/how-reddit-ra...

    Тк справедливости не существует
    А без четких дефиниций за данным слово чаще всего скрывается обман большинства в пользу определенной группы особ

    А вот max/min и нормализация (не уверен в данном термине) - реально существуют, предсказуемы и их можно протестировать

    google: reddit ranking algorithm
    Ответ написан
    Комментировать
  • Что подразумевается под "знание" в требованиях в вакансиях?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Что угодно.
    Узнаете когда придете на собеседование.

    Просто не знаю стоит ли пытаться пробовать отправлять резюме или это считается, что я все-таки не дотягиваю по требованиям

    До тех пор пока вы не научитесь ставить задачи и действия выше сомнений и рефлексии - не стоит.
    А когда научитесь, вам будет не до того чтобы писать такие вопрос на тостер, вы будете заняты поисками работы и прохождением собеседований
    Ответ написан
    2 комментария
  • Как сократить выражение в условном операторе?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Сложить допустимые значения в массив, посмотреть, присутствует ли в этом массиве проверяемое значение:

    const names = [ 'DIV', 'P', 'SPAN', ... ];
    if (names.includes(el.nextSibling.nodeName)) {
      ...
    Ответ написан
    2 комментария
  • Почему не парсит вот этот сайт https://vstup.edbo.gov.ua/offer/538114/?

    hzzzzl
    @hzzzzl
    их не существует на момент загрузки страницы, они подгружаются уже потом
    view-source:https://vstup.edbo.gov.ua/offer/538114/
    (интересно, выйдет ли вставить такую ссылку)

    но может выйдет сделать POST и получить сразу массив с данными без парсинга (см в консоли разработчика)
    5d3233407e4fb797929382.png
    Ответ написан
    8 комментариев
  • Нужно ли PHP разработчику знать модель OSI?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, web-приложения - это разновидность сетевых приложений. Поэтому обязательно нужно понимать, как работают сети. Во-вторых, чем больше знает разработчик, тем он лучше, тем больше на него спрос, тем лучше условия, тем выше зарплата. То есть ваш вопрос звучит примерно так "Зачем мне получать больше денег и не боятся сокращений?"
    Ответ написан
    6 комментариев
  • Трудоустройство в IT сфере, обязательное высшее образование?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Обязательно умение пользоваться поиском. Этот вопрос задают на Тостере еженедельно.

    Многие компании, насколько я знаю, заинтересованны в твоем непосредственном дипломе.

    Бумажки никому не интересны, кроме ежегодно уменьшающегося процента компаний с жёсткой кадровой политикой. Да и таким компаниям ваш диплом не нужен, они просто поставят галочку "имеет ВО" в личном деле и подошьют скан диплома, даже не заглянув в него.

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

    Вы ошибаетесь. Во многих странах диплом заменяется пятью годами профильного стажа. И опять же, ежегодно Запад ослабляет требования к кандидатам, так как у них темпы роста кадрового голода ещё больше, чем в РФ. Если раньше хантили только топовых сеньоров, то сейчас уже готовы брать на себя расходы по релокации даже для мидлов.
    Ответ написан
    9 комментариев
  • В чем преимущество localStorage перед cookie?

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

    5d306aa4354a6462085788.png
    Ответ написан
    Комментировать
  • Оцените качество кода?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    PEP8 не соблюдается, названия переменных невнятные, количество переменных избыточное, количество строк кода избыточное, ведение лога навелосипежено, файл в случае остановки цикла не закрывается.

    5d306e1883e8b985877430.png
    Ответ написан
    2 комментария
  • Какие есть годные практики для работы с большим количеством записей в таблице (1M+)?

    Melkij
    @Melkij
    PostgreSQL DBA
    Объединение нескольких колонок в одну, для однотипных данных. Они будут храниться в формате JSON.

    JSON объёмнее плоской таблицы хотя бы из-за необходимости в хранении ключей.
    И, насколько знаю, mysql пока умеет только btree. Что подходит для произвольного поиска от слова никак. Только для заранее известного критерия.

    3. Партиционирование.

    планирую создать новую, "горячую" таблицу с идентичной структурой.

    Слово неплохое упомянуто. Осталось понять зачем всё остальное. Партицировать таблицы умеет штатно даже такая удивительная штука как mysql и очень давно.

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

    Типичная ошибка - пытаетесь строить аггрегаты и прочие count(*) поверх миллионов строк налету.
    Ответ написан
    Комментировать