• Как спроектировать архитектуру большого проекта с начальным знанием программирования?

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

    Sanes
    @Sanes
    На фрилансе трудно прогрессировать. В офисе, если интересные проекты и сильная команда, прокачаешься гораздо быстрей.
    Ответ написан
    5 комментариев
  • Как организовать доступ к ресурсам в REST API?

    gobananas
    @gobananas
    finishhim.ru
    Перемудрили. Всё должно быть очень просто. Что такое тип медиа? Музыка или видео? Так по
    /movies/genre/{id}/film/{id} - фильмы
    /music/albums/{id}/tracks/{id} - музыка

    Далее. Если я знаю id трека или фильма мне надо дать возможность обратиться непосредственно к нему:
    music/track/{id} - всё

    Если я не знаю какой трек мне нужен я прошу все треки из направления музыкального, например rap у него id=13
    music/style/13

    По этому запросу выдаются пачки направления по 100, 300 или 1000 штук в зависимости от ресурсов и можно указать пагинатор
    music/style/13/2 - вторую страницу направлений мне покажите

    Именно поэтому параметры лучше передавать в явном виде в url типа style=13&page=2 потому что так не запутаешься что такое 13 и что такое 2.

    Если я совсем ничего не знаю и жанры тоже должен быть вспомогательный метод для получения всех жарнов, как у ВК для получения городов например. Запрос вида:
    music/allganre?page=0

    отдаёт 100 пар вида "название жарнра -> id" так сделав 5 запросов с page=0/1/2/3/4 я в своём приложении смогу иметь всю базу возможных жанров. Можно сделать метод что бы получить жанр конкретной песни:
    music/getganre?track=1456

    И т.п.
    music/getalbums/1456 - получить все альбомы исполнителя
    music/detailalbum/1456 - получить все данные об альбоме (год выпуска и т.п.)
    music/tracksalbum/1456 - получить список треков конкретного альбома

    В общем идите не от частного к общему а наоборот, представьте с чего начать работу человеку который ничего не знает. Максимальную атомарность запросов введите что бы они были между собой никак не связаны. И человек сначала получит жарны, по жанру список исполнителей, по нему список альбомов, по нему список песен, по нему данные о нужной песне. И это всё отдельные запросы.
    Ответ написан
    Комментировать
  • Селекты из таблицы на 5 млн строк. Если разбить её на 100 таблиц - будет выигрыш в производительности?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Прироста не будет.
    Но давайте посмотрим на проблему под другим углом:

    5кк строк - это ничтожное кол-во. Если у вас происходят селекты по 30 секунд, значит либо у вас не выставлены правильные индексы на те колонки, которые вы селектите, либо вы совершаете LIKE, начинающиеся с %. Индексы не используются при запросах LIKE %...%. Только при LIKE ...%

    Ещё одна возможная причина - это хранилище. Посмотрите, не упирается ли всё в этот момент в диски. Если окажется, что в момент тяжёлых запросов у вас высокий iowait, попробуйте мигрировать на площадку с SSD.
    Ответ написан
    Комментировать
  • Как применять знания javascript?

    EreminD
    @EreminD
    Кое-что умею
    Общая идея всегда в том, что нужно делать какой-то проект
    Я советую такой путь:
    1. Регистрируешься на www.freecodecamp.com/
    2. Проходишь простые задачи - изучаешь приемы JS (не основы, а приемы)
    3. Там же дальше делаешь проекты по заданию. Есть для фронтэнда. Например,
      сделать с нуля такую штуку
    4. Потом задачи для бэкэнда на JS. например, онлайн-голосовалку и еще куча проектов
    Ответ написан
    7 комментариев
  • Переход с постоянки на фриланс, стоит ли игра свеч?

    Epsiloncool
    @Epsiloncool
    Программер, веб-девелопер, гейм-девелопер
    Фриланс. Однозначно ДА. Сейчас объясню почему.

    Стабильность/офисная работа/работа с одним клиентом - прекращает твоё развитие как специалиста и как предпринимателя. Самое главное - ты не развиваешься в первую очередь как личность. За тебя кто-то несёт ответственность за весь проект, кто-то говорит тебе ЧТО делать и кто-то ищет тебе задачи в большом море, называемом "открытый рынок". В итоге все деньги получает твой начальник, а ты только $8.5 в час.

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

    У тебя есть сомнения? Смотри. Как только ты начнёшь фрилансить, можешь поставить себе часовую планку в $15 в час. Это нормальная цена для зарубежного рынка. Ты будешь некоторое время нереально впахивать по 8-10 часов в сутки, семья может быть даже тебя ненадолго потеряет. Но это всё временно. Потому что за это время ты должен научиться писать хорошие пропосаулы (а это и есть продажа себя). После того как накопишь некоторое портфолио, список положительных отзывов и научишься писать предложения - повышай планку. Ищи длинные заказы с часовой стоимостью в $20-30. Такие заказы встречаются реже, так что ты можешь потратить несколько дней в поисках, но это окупится с лихвой, т.к. ты можешь уменьшать количество времени на работу в день и вновь вернуться в нормальную жизнь. Через полгода вновь поднимай планку. $40-50 в час - совсем не предел.

    Такое случилось со мной после прочтения книжки "как работать 4 часа в неделю". Я тогда работал фрилансером на $10-15 в час и принял одно простое решение. После этого начала работать 2-4 часа в сутки и при этом моя прибыль увеличилась в 3 раза.

    Хотя теперь я уже не фрилансер (см. про точку Б выше), но без фриланса туда было бы сложновато прийти.

    Поэтому ещё раз - фриланс и ещё раз фриланс. Прими как лекарство.
    Ответ написан
    13 комментариев
  • Переход с постоянки на фриланс, стоит ли игра свеч?

    search
    @search
    мама говорит что я особенный
    Ох как я вас понимаю. Перейти на фриланс страшно. А вдруг не будет клиентов? А вдруг я получу негативный отзыв? А вдруг меня кинут? В общем куча а вдруг. В 2010 году я осуществил следующие приготовления перед переходом на фриланс на апворке:
    • сдал все профильные тесты на топ 10%. Для этого понадобилось где-то 3 месяца и прочтение нескольких книг. Оно того стоило
    • накопил 2 месячных зарплаты на случай полного провала
    • объяснил начальнику свою ситуацию и договорился что смогу вернуться если ничего не выйдет


    Клиента я нашел дня через 2. Она платила мне фантастические на тот момент 10 баксов в час, а потом подняла до немыслимых 18.

    Общие рекомендации:
    • берите только почасовую работу, если не хотите получить стресс и переработку
    • работайте только с иностранцами, потому что им можно не объяснять что за каждый час работы нужно платить всегда и при любых раскладах
    • объясните заказчику что 8 часов на фрилансе под наблюдением всевидящего ока - это не 8 часов в офисе, прогуливаясь к кофемашине. Вы не сможете долго работать по 8 часов, перегорите. 6 - это в лучшем случае
    • сделайте оплату комиссии проблемой заказчика. Так и говорите "мой рейт, например, 10 баксов в час, комиссия сайта 30%, так что вам это будет стоить 13 долларов". Будет дополнительный фильтр для хитросделанных заказчиков, с которыми работать не нужно


    Посмотрите на биржу Toptal. Это как постоянная работа, только платят хорошо.
    Ответ написан
    2 комментария
  • Переход с постоянки на фриланс, стоит ли игра свеч?

    @McBernar
    У вас скромный рейт. Хотя, возможно, для Чехии это нормально.

    Я работал и работаю на фрилансе уже много лет. И в штате много лет тоже работаю.
    Поэтому могу кое-что сказать.

    Минусы

    1. Все байки про фриланс — правда.

    2. Нужно иметь железную дисциплину, чтобы работать в строго отведенные часы, а в другое время отдыхать. И чтобы вставать вовремя, а не спать до обеда.

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

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

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

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

    7. Забудь про стабильность. Сегодня ты заработал двойную зарплату, а в следующем месяце процентов 50. Нет никого, кто строго раз в две недели будет тебе перечислять деньги на карту.

    Плюсы

    1. Свобода в выборе задач и проектов. Это прям кайф.

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

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

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

    5. Есть много времени и сил на свои проекты. То, до чего не доходили руки целый год офисной работы, может быть сделано довольно быстро.

    Где работать
    Попробуй везде. И на фл и на апворке есть свои плюсы и минусы.
    Но самые лучшие клиенты — это, конечно, которые приходят напрямую.
    Ответ написан
    3 комментария
  • Плохо ли создавать проекты с нуля? Что значит быть про?

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

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

    @Plus3x
    c10c573f52694badb316d1aa222bc323.png
    Ответ написан
    Комментировать
  • Upwork как правильно получить первого клиента?

    entity1313
    @entity1313
    Веб-разработчик, проект-менеджер
    Хз, в чём магия, но я вышел на апворк года с два с лишним назад. Взял пару заказов, сделал, получил хорошие оценки, и на год забил. Не могу сказать, что у меня было нечто особенное в работах или в навыках - WordPress, немного по веб-анимации. Но проблем с получением первого заказа не было. Через год у меня было уже не сильно актуальное портфолио, но я пришёл обратно и решил работать всерьёз. Каких-то проблем тоже не помню, народ потянулся. При этом не могу сказать, что занимался чем-то специфичным - WP-разработка и вёрстка, в основном.

    Возможных проблем вижу несколько:
    - плохой английский
    - плохое портфолио
    - негативные отзывы
    - высококонкурентная сфера, где сложно показать, чем вы лучше
    - плохие кавер-леттерс (лучше писать сразу под задачу клиента, предлагая варианты решения)

    Думаю, имеет смысл прокачать специализацию и двигать её. Я сделал себе WordPress-портфолио, предлагал "всё для WP" - разработку плагинов, тем, WooCommerce, REST. За год получил "top rated" и шквал заказов - разве что, серьёзный по российским меркам кеш сделать не получилось (2к-3к на пределе) - видимо, для WP это непросто, ну или я поймал не ту волну. Сейчас думаю расширяться на более серьёзные фреймворки, будет интересно, что предложат там.

    Да, и идея с низкими ценами - она плохая. Ставьте нормальную для себя цену и убеждайте заказчика, что вы отличный специалист. Индусов он и без вас найдёт :). Я обычно просто повторяю цену, заявленную в объявлении, а если вижу, что она слишком низкая для задачи - повышаю до комфортной для себя.

    А чем новички отталкивают - должно быть любому фрилансеру очевидно. Низкий уровень коммуникации, низкое качество работы, пропадание со связи, конфликтность в плане доработок.
    Ответ написан
    Комментировать
  • Какие вопросы на собеседовании ожидать по JS?

    ArMikael
    @ArMikael
    Front End разработчик и E-Learning специалист
    Почитайте о том, как работает "хойстинг", если ещё не знаете.
    Разберитесь в том, как работает setTimeout() и почитайте о том, что такое Call Stack.
    Если будет время почитайте о существующих паттернах разработки (JS Design Patterns). Например, Factory, PubSub/Observer, Singleton.
    Ответ написан
    Комментировать
  • Какие вопросы на собеседовании ожидать по JS?

    @kahi4
    Коварные вопросы, говорите?

    1. Какое из нововведений es6 принципиально не полифилится в es5? Почему? (И на какой черт оно вообще нужно, вдогонку). (И я бы заодно вдогонку попросил набросать полифил какой-то из фичей, например, this в arrow function).

    2. Какие условия должны быть соблюдены для того, чтобы v8 мог скомпилировать функцию в нативный код? Ну и разумеется, почему?

    3. Почему до es5.1 включительно typeof null === "object"?

    4. Что на самом деле произойдет, если вы напишите
    const arr = [];
    arr[3484] = 5;


    5. Аналог второго вопроса, но все же: с чем, по вашему мнению, могла быть связана бага в одной из версий хрома, приводящая к следующему результату:
    function foo() {
        return typeof null === 'undefined';
    }
    for(var i = 0; i < 1000; i++) console.log(foo());
    
    >>> 121 false
    >>> 879 true


    6. Какие вы знаете способы заставить js произвести несколько операций одновременно (буквально, за такт)?

    7. Сработает ли documeny.onready, если скрипт загружать с аттрибутом async? В каких случаях и когда именно он сработает?

    8. Что можно и что нельзя делать в событии document.beforeunload?

    Но, справедливости ради, эти вопросы даже не на мидла, некоторые из них не сколько каверзные, сколько упоротрые и если их вам зададут -- следует задуматься в адекватности компании.
    Ответ написан
    2 комментария
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    @ralaton121
    В сфере ИТ не было кризиса даже в разгар кризиса. Переориентация была в некоторых направления, но вакансий незаполненных как было много, так мгоно и оставалось в кризис. Спрос в сфере ИТ огромнейший. Не найти своего места в нем в 20, 30, 40 или 50 лет - нонсенс. Возможно, что вы просто выбрали не ту профессию.

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

    Если вы к 40-50 так и не станете специалистом и так и будете искать свое место в жизни, то у меня для вас сюрприз. Неприятный. На 40-50 летнего который умеет на уровне 20 летнего не смотрят уже снисходительно.

    ПС
    Мне немного за 50. Не испытываю проблем со спросом на свои услуги. Напротив, считаю, что только после 45 жизнь начинается. Я в этот момент бросил старый бедных клиентов, которых до этого боялся бросить. Как оказась оставшиеся те что побогаче достаточны. Работы меньше, денег больше. Работа сложнее, работа интереснее.
    Ответ написан
    3 комментария
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    @kgbplus
    Мне 39, я часто работаю с молодыми командами. Самая главная проблема, которая возникает - это ситуация "мы просрали все сроки, поэтому будем работать ночами и по выходным, а ты хоть и сделал все вовремя, но должен нам помочь". После отказа (семья, дети) на меня обижаются и работать со мной какое то время не хотят, типа ненадежный товарищ.
    Ответ написан
    Комментировать
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Трудно - и с каждым годом будет все сложнее и хуже. С каждым годом растет объем пула "минимально-необходимых для программиста компетенций" . Каждый год появляются какие-то новые фреймворки, инструменты, фишки - которые по идее должны облегчать и упрощать разработку - но на деле вырастают непреодолимой стеной между тобой и "реальным миром веб-разработки". Потому что ты стареешь, а технологии молодеют.

    Я бы картинку нарисовал, но там очень уж нецензурный вид получается ;-)

    И "впихнуть" в себя все новые технологии ну не получается никак - ты или распыляешься и все знаешь по верхам... или идешь вглубь темы. Но тогда приходится откладывать новые технологии в сторону, потому что на них тупо не хватает времени и/или сил. В молодости - времени. Позже - сил.

    Уже сейчас чтобы тебя считали верстальщиком/программистом/фронтэндером/бэкэндером - надо знать в 2 раза больше технологий, чем 2 года назад. Этакий Закон Мура наоборот. Да вы сами просто посмотрите эти списки "компетенций"!

    Читаешь список требований к "Web-программистам" и видишь, что месяц за месяцем, год за годом HR-ы и те, кто там им задачи ставит, вписывают в требования все больше умных словечек, которые они сами услышали и не понимают, зачем оно им нужно и нужно ли? Все ближе и ближе ситуация подходит к "Если бы водителей принимали на работу как програм.... В 2010 году это была "шутка юмора". Сейчас это уже почти реальность.

    Пример хотите?

    Одна государственная организация выставила список требований к "веб-программисту". При зарплате в 35000 рублей он должен уметь чуть ли не МКС программировать и чуть ли не кластера из сотен серверов настраивать. А на деле основной задачей человека будет - таскать проекторы из аудитории в аудиторию, чистить мышки студентам, переставлять winxp и изредка, раз в полгода - добавлять статью на сайт гос.организации. Откуда информация? Связался с человеком, которому 45, который в этой организации работает уже 18 лет. Ему стаж капает, а деньги он зарабатывает совсем в другом месте.


    Что уж говорить об организациях коммерческих? Особенно тех, для которых веб-программист - и чтец, и жнец, и на дуде игрец?

    Но это все лирика и крик души. Извините.

    И да, к 35-40-45 годам по мнению "молодых и амбициозных IT-специалистов" ты должен обладать строго определенным списком компетенций как в профессии, так и по жизни (к примеру, я столнулся с отказом в приеме на позицию программиста потому что у меня нет... автомобиля. Зачем программисту автомобиль? Ну там сложная и длинная логическая цепочка, сводящася к "раз у тебя нет автомобиля - ты лох, а лохи нам не нужны").
    Мне кажется, проблема в том числе и в том, что подавляющее большинство этих самых "молодых и амбициозных" специалистов совершенно не думают о своем будущем. Нет, я не про то будущее, которое "куда я пойду, когда закончу вот этот крутой проект". Я о реальности. В их понимании 35 лет - это недостижимо далёкое будущее, а до 50 они не доживут (а если и доживут - то в мечтах тимлидами в гугле).

    Соответственно "молодые и амбициозные специалисты" с презрением смотрят на людей, которые отдали 15 лет разработке определенной платформы, платформы, которую сейчас тщится заменить какой-то пул новых технологий. По их мнению - все что старше 5 лет - ненужное устаревшее говно мамонта. А те, кто не знают появившуюся полгода назад технологию - отставшие от жизни ламеры.
    Also, Эффект Даннинга—Крюгера тут работает в полную силу.

    Резюмирую: трудно, если у тебя нет в резюме стапятисот сделанных проектов. И чем дальше - тем сложнее и труднее будет. Но тебе может повезти - если ты компетентный специалист в узкой области (даже если она 'legacy'). Или ты можешь найти синекуру - гос.организацию, в которой ты присоединишься к когорте таких же скинутых с паровоза прогресса "молодыми и амбициозными". Не переживай, через 20 лет скинут их. А ты останешься.

    Вот только кушать хочется сейчас. Хотя бы просто хлебушка.
    Ответ написан
    23 комментария
  • Как наладить поток клиентов на бирже?

    Sanes
    @Sanes
    На фрилансе недостаточно быть хорошим технарём. Ты должен быть хорош во всем. В первую очередь, как продавец и проект-менеджер.
    Ответ написан
    6 комментариев
  • Что такое Redux простыми словами?

    @KnightForce
    Чтобы понять как работает Redux тебе нужно норм вкуривать React.
    Хотя бы для того, чтобы не пугаться props.

    Есть у тебя React. Это все просто JS объекты.
    <Component /> - так позволяет писать движок jsx, который и React его использует.
    Так как структура компонентная, ты должен думать как обновить компоненты в в другой части страницы.

    Принцип такой: компонент обычно обновляется при получении новых свойств - props или когда меняется его объект состояния - state.

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

    Что делает Redux:
    Он не призывает отказываться от state.

    Но есть общий контейнер данных. И когда данные меняются - меняются и компоненты, которые отображают именно эти данные.

    Когда нужно что-то поменять - вызываешь dispatch - специальная функция reducer реагирует на это - и меняет данные как тебе нужно. Когда данные заменятся - компонент Propvider - вызывает рендер у своего дочернего компонента (тот что оборачивает Provider).
    Например:
    <Provider>
       <MyComponent />//Вот сюда Provider пробросит (запишет) новые props.
    </Provider>


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

    mapStateToProps - указывает какую часть этого глобального хранилища будет предоставлять provider.
    Если у тебя оно такое:
    {
       chunkStore: {},
       some: {}
    }

    То если mapStateToProps вернет{store: store.chunkStore}то Provider в props своего потомка пробросит такое: store: store.chunkStore. И ты будешь обращаться внутри к store, но там будет только часть chunkStore (не весь объект, а его поле).

    mapDispatchToProps - т.к. subscribe нет, то это возвращает функции, которые могут внутри себя вызывать dispatch().

    action - описывает то что и на что ты хочешь поменять. Какое поле и какие данные туда поместить.
    Ответ написан
    Комментировать
  • Тестирование верстки сайта в 4K без монитора 4K?

    Я просто в FF ставлю нужную ширину:
    joxi.ru/Dr86O0DI4yEZk2
    Как раз вчера была необходимость такого тестирования, заказчик проверял на огромном маковском мониторе. В общем проблем не обнаружил, все как я видел на свое мониторе, так же отображалось у заказчика.
    Ответ написан
    Комментировать
  • Как вы делаете бэкапы?

    @dady_KK
    PM
    Мы делаем аналогично, но у нас на проектах очень маленькие базы. А Вам бы я посоветовал настроить репликацию мастер-слейв и делать бекап со слейва, в инете много туториалов на эту тему. Это должно решить вопрос с доступностью сайта + всегда можно дамп сжимать ганзипом и проверять после этого архив, а лучше делать распаковку и импорт в тестовую базу и следить за возникновением ошибок во время этого.
    Ответ написан
    2 комментария