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

    @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 комментариев
  • Как защитить html?

    notiv-nt
    @notiv-nt
    Как ваше ничего? Да, моё тоже
    Как идея рендерить на сервере и отдавать картинку клиенту
    Ответ написан
    Комментировать
  • Какие темы изучить для прохождения отбора на Python?

    1) На какую должность ты хочешь поступить. Ибо Python:

    разработка под веб django/flask
    разработка под веб tornado/aiohttp (отличается от первого)
    разработка тестов в QA
    разработка devops спеков
    machine learning

    Каждое из этих направлений требует отдельные знания.

    2) Открой требования к вакансии, что хочешь - и иди пункт за пукнтом по требованиям. Изи.
    Ответ написан
    6 комментариев
  • Как на самом деле работают типы данных в js?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Это больше академический интерес, хочу разобраться как оно работает.

    Это вы сейчас в очень глубокую нору заглядываете.

    Движки стараются оптимизировать по максимуму, поэтому там очень много всего накручено помимо наличия int32.
    Я не удивлюсь если в вашем конкретно примере они сделают просто a=1.5 в обоих случаях и код будет идентичный до байта.
    а потом эту a подставят куда надо и оптимизируют там еще что-то, например b=c+a превратится в b=c+1.5

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

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

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

    @Oblomingo
    Я в 30 начал программировать на C#. Просто так, как хобби.
    Помимо основной работы (в энергетике), сдал Майкрософтский экзамен и устроился джуниором в одну контору.

    За 4 года сменил две работы, сдал еще около 10-ка экзаменов, прочитал кучу книг по архитектуре. Теперь занимаюсь тем, что пишем энтерпрайз системы для крупных иностранных заказчиков. Месяц назад мне предложили перейти на позицию Senior.

    Я к тому, что никогда не поздно начать, что то новое.
    Ответ написан
    4 комментария
  • Для чего идеальна MongoDb? Примеры приложений, где монга будет лучше mysql?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Я расскажу Вам про личный опыт, без претензий на истину в последней инстанции...

    Для чего идеальна MongoDb? Примеры приложений, где монга будет лучше mysql?
    Для человека который привык работать с реляционными БД, смириться с логикой и вообще с подобными БД - довольно сложно. Для тех, кто работает с реляционными БД профессионально - сделать это ещё сложнее...

    Если сравнивать с реляционными БД и с оглядкой на конкретно MySQL - монга идеально вписывается там, где структура данных заранее неизвестна. Тут я хотел привести пример, но не смог придумать ни одного дельного примера, после того как начал плотно работать с PostgreSQL... Давайте попробую из практики. Мы один раз применяли монгу в проекте где есть десятки и сотни тысяч товарных позиций и у каждой из них свой уникальный набор различных свойств. На основе уже имеющихся свойств, "соседних" товаров, контентщику предлагался наиболее вероятный набор параметров, которые нужно заполнить, но в любой момент он мог удалить или добавить любое поле и/или множество значений одного из них, например, "Цвет: черный, серый, фиолетовый". Всё это дело попадало под разные динамические фильтры и далее по цепочке... В то время, насколько я помню ещё не было поддержки JSONB-формата у PostgreSQL, по этому мы остановились на MongoDB. Ну и конечно же, желание "воткнуть ультра новую и модную БД в проект" сыграло свою роль...

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

    Безусловно, не редко можно встретить проекты в которых даже в реляционных БД не прописаны, например, внешние ключи и контроля целостности данных как такового нет, но обычно это происходит по следующим причинам:
    1. Очень низкая квалификация администратора БД проекта
    2. В попытке выжать из базы больше производительности, не найдя других методов оптимизации
    3. Данных настолько много, что БД/ключи - начинают "сыпаться", не редко это связано с п.1

    Так же, последние тесты показывают, что PostgreSQL почти не уступает MongoDB даже в её родной среде (на уровне данных в формате JSON). А в некоторых аспектах даже превосходит её... Подробности Вы можете увидеть на некоторых конференциях по Postgres (да, на конференциях по MongoDB, Вы вряд ли увидите, как кто-то будет рассказывать, что [их любимая] монга "хуже" некоторых других движков...). Кстати, поддержку формата JSON стандартизировали (наконец-то) на уровне SQL-стандарта (если я не ошибаюсь) и в самом ближайшем будущем, думаю стоит ожидать полноценную поддержку оного в SQL-базах, в т.ч. поддержку в бинарном виде с возможностью индексации данных (кстати, некоторые SQL-базы уже такое умеют).

    Моё понимание, ответа на вопрос, "когда действительно стоит использовать MogoDB?" звучит примерно так: Исключительно в тех случаях, когда Вы понимаете, что она станет действительно хорошим решением для поставленной задачи и сейчас и в будущем. В моей практике, таких проектов можно было бы насчитать ничтожно мало, а точнее около нуля, особенно с учётом развития некоторых современных SQL-БД и вообще направления "JSON в SQL" в целом. Но, безусловно такие проекты могут быть и есть (в данном случае, не у меня). Но, тут стоит обратить внимание на крайне важный факт - когда всплывает такой проект, что бы адекватно оценить наиболее оптимальную БД под него - нужно знать как минимум пару-тройку SQL-БД, со всеми их особенностями, достоинствами и недостатками... причем не просто "знать", а хорошо знать, "изнутри". А так же знать все характерные черты монги, а так же её особенности, достоинства и т.д. То есть, если Вы задаётесь вопросом, "а хорошо ли впишется монга в проект N?" и не можете найти на него однозначного ответа, вероятнее всего, что в долгосрочной перспективе, в "проект N" она впишется плохо.

    P.S. В заключение, хочу ещё раз напомнить, что "JSON в SQL" - активно развивается... Со всеми вытекающими.
    Ответ написан
    7 комментариев
  • Новичкам без опыта во Frontend очень сложно найти работу, а как дела обстоят у опытных Senior Developers?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Новичкам без опыта во Frontend очень сложно найти работу, а как дела обстоят у опытных Senior Developers?
    Хоть работодатели и позиционируют (я бы даже сказал "эксплуатируют") в режиме "FullStack" - я сам себя больше отношу всё-таки к "Backend" отрасли, но, думаю особой разницы в контексте Вашего вопроса не будет. Мой официальный стаж (по трудовой) - более 10 лет (а "не официальный" - без малого как 20). Звонки, сообщения и т.п. поступают постоянно, причём самые разные. От предложений возглавить какую-то новую компанию (стартап), собрать команду и наладить работу, до "просто работать в компании" (иногда предлагают должность тимлида, иногда должность простого работяги). Иногда даже с "Тостера" предложения приходят :) К слову, на HH пишут активно даже не смотря на то, что я не обновлял там резюме уже много месяцев...

    Конечно, "парой дней" как коллега выше - похвастаться я не могу, но за пару месяцев - обычно работа находилась всегда. Сейчас работаю в не маленькой компании, но не так давно получил предложение от которого не смог отказаться, с полной релокацией и достойной з/п, которое собственно и принял.
    Ответ написан
    2 комментария
  • Новичкам без опыта во Frontend очень сложно найти работу, а как дела обстоят у опытных Senior Developers?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Даже не ищущих работу сеньоров постоянно пытаются сманить на лучшие условия, причём рекрутёры со всего мира.

    Я себя к сеньорам не причисляю, но без работы никогда не оставался на срок больше пары дней.
    Ответ написан
  • Проигрывание звука на javascript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Попробуйте сохранять id проигрываемого звука.
    // сначала ваш код
    var idPlay;
    sound.onend = () => idPlay = false; // когда доиграл, сбрасываем id
    window.addEventListener("click", () => {
      if (idPlay) sound.stop(idPlay); // ещё играет - остановим
      idPlay = sound.play(); // играть сначала
    });
    Ответ написан
    6 комментариев
  • Как объяснять кадровикам быстрые смены работы?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    У техдиректора с его "любовницей" были прям такие при-всех-афишируемые отношения, что сразу было понятно, кто есть ху?
    Если это на самом деле так (а так бывает) - невелика потеря. Все равно в такой конторе мерой заслуг будет не умение программировать.
    Если же нет, а это просто Ваши домыслы, слухи, рассказы коллег, что Вася вчера сказал Пете, как Коля видел, как техдиректор шпилил Олю - меньше обращайте на это внимания, больше глядите в монитор :) Даже если это и так - Вам-то до этого что? У Вас есть задача - сосредоточьтесь на ней. Строго. Не надо "руководить за директора", как бывает делают многие (а вот я бы... а вот я бы...). Будете на месте директора милостью Господней - и будете руководить. А пока - вот задача, вот монитор.
    Не переутомляться. По тону чувствуется какое-то внутреннее отчаяние. Красные от недосыпания глаза и гудящая голова - плохие помошники делу.
    Про "мне за 40 и мне кормить семью" - лучше вообще нигде и никогда не упоминать. Хырам ровно параллельно на Вашу семью, а Ваш возраст они и так знают - из CV. Подобная фраза показывает только, что Вы понимаете, что особых достоинств у Вас нет и пытаетесь хыра разжалобить. А это бесполезно, даже если удастся.
    Держаться надо с достоинством. Конечно двери пинками не открывать, но и в "подайте бедному слепому коту Базилио" не впадать.
    Если я прохожу собеседование и не подхожу - я обычно говорю "пусть сдохнут от зависти те работодатели, которым я не достался" :D
    Ответ написан
    Комментировать
  • Как объяснять кадровикам быстрые смены работы?

    DevMan
    @DevMan
    Три места работы по три месяца - это год, а не десять.
    Можно сказать, что фрилансил, можно сказать что не работал по семейным обстоятельствам.
    Адекваты смотрят на человека и его скилы, а не где он работал. А от неадекватов стоит и нужно держаться в стороне.
    Ответ написан
    Комментировать
  • Программное решение для упорядочивания жизни?

    whillson
    @whillson
    помогу, чем смогу ^_^
    Пользуюсь и рекомендую Вам trello.
    Сама по себе канбан доска очень удобна.
    В trello вы можете создавать доски под свои нужды, начиная с работы, жизни, покупок, финансов и так далее.
    Проставляйте себе нужные теги, добавляйте колонки с описанием процессов. Этот сервис очень вам поможет, если вы вникните в суть.
    Ответ написан
    4 комментария
  • Как считать содержимое TXT файла с помощью Telegram бота?

    @Slava0072
    Получить ссылку на скачивание через api, скачай файл каким либо образом и прочитай его средствами языка . А дальше делай с данными всё что тебе нужно.
    Ответ написан
    3 комментария
  • Как получить офлайн-копию современного сайта?

    @BorisKorobkov
    Web developer
    Как получить копию чертежа современного вооружения?

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

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    die('DB ERROR');
    Сразу нет! Класс не должен останавливать приложение, если произошла ошибка. Он должен бросать исключение, а что делать дальше должен решать клиентский код.

    никакой работы с БД не должно быть в модели

    В каком смысле это написано? Где это написано?

    Ухожу с синглтона

    На каждый запрос будете создавать отдельное подключение к БД? Там вообще то есть ограничение на количество открытых.

    Я не заметил особой разницы между работой с mysqli и с вашим классом. Инкапсуляция бинда параметров метод query только? Так унаследуйтесь от класса mysqli и напишите удобный метод для этого.

    И почему вы не берёте какую то готовую обёртку? Благо их написано тысячи!
    Ответ написан
  • Как реализовать камеру в большом canvas для игры?

    Xuxicheta
    @Xuxicheta
    инженер
    1. Взять игровой фреймворк и не морочить голову.
    2. Когда освоишься со всем и привыкнешь, лезть внутрь фреймворка и смотреть как устроено.
    3. Пробовать реализовать что-то похожее.
    профит

    Канвас это холст для рисования, не нужно по нему бегать, нужно на нем рисовать видимые в данный момент объекты.
    Ответ написан
    3 комментария
  • Может ли менеджер проектов быть без технического бэкграунда?

    Sanes
    @Sanes
    Может. Но не так, чтобы совсем нулевой.. На уровне продвинутого заказчика вы должны ориентироваться в теме.
    Ответ написан
    Комментировать
  • Как набрать первоначальную массу пользователей?

    opium
    @opium
    Просто люблю качественно работать
    Вы не пробовали наполнить сайт, тупо, просто, очевидно.
    Ответ написан
    1 комментарий
  • Чем так крута Scala, почему её стоит учить, где применяется, с чем её едят и в чем сложность?

    Чем крута: лаконичностью. Решены болячки джавы (множественное наследование, стирание типов, метапрограммирование). Мощная система типов с поддержкой ко- и контрвариантности. Синтаксис позволяет писать DSL.

    Почему стоит учить: как минимум для расширения кругозора.

    Где применяется: бекенд, фронтенд, десктоп, Андроид.

    С чем едят: чаще всего с akka и spark.

    Сложность в: нужно немного повернуть мозги.

    Почему стоит пересесть: не стоит. Серьезно. Пересесть ради пересесть плохая мотивация. Пересесть нужно когда у вас появится интерес к функциональному программированию.
    Ответ написан
    5 комментариев
  • Возможно ли сегодня устроится на работу верстальщиком зная лишь HTML и СSS?

    BBmike
    @BBmike
    сегодня устроится на работу зная лишь HTML/ СSS можно и полицейским.

    в чем проблема?
    Ответ написан
    Комментировать