Задать вопрос
  • Верен ли такой подход к изучению программирования?

    Denormalization
    @Denormalization
    В современном мире 80% задач решается копипастом чужого кода и небольшой правкой. (Британские учены доказали).
    Для типовых задач уже давно существуют готовые решения. Не нужно изобретать велосипеды, а тем более комплексовать из-за этого.

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

    Такой подход будет более эффективен.

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

    @vilgeforce
    Раздолбай и программист
    Определяете какие там будут данные храниться и выбираете под них соответствующий тип, не?
    Ответ написан
    Комментировать
  • Как автоматически привязывать товары к категориям?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Скорее у Вас не категория, а свойство 2016, такие свойства вписываются через таблицу связей в таблицу свойств, соответственно читаем связь типа многие ко многим.
    Ответ написан
    Комментировать
  • Вопрос по подключению системы кэширования?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Почитайте, optimization.guide и вот вам немного теории:

    Кешировать можно:
    • целиком всю страницу (для каждой страницы своя запись в кеше)
    • отдельные части сайта


    Кешировать можно в файлах:
    • генераруя готового html
    • генерируя html+php, так работают smarty и прочие шаблонизаторы собирая множество шаблонов в один
    • в виде бинарного содержимого, сюда и готовый html и готовые значения вычислений и прочее
    • в виде сериализованного массива с чем угодно, от предыдущего пункта отличается только форматом хранения


    Кешировать можно в базе:
    • в mysql/postgresql и прочих SQL - будет храниться на диске и горячие данные в памяти
    • в mysql/postgresql и прочих SQL в in-memory таблицах - будет храниться в оперативке, но без дополнительных усилий кеш пропадёт при рестарте сервера
    • в in-memory базах данных, часто это memcache, redis и прочее - опять таки выключили сервер - данные пропали
    • в in-memory базах данных с сохранением на диск, это Tarantool, memcachedb и прочие если там заявлена такая функциональность


    Так же можно:
    • кешировать всё кроме вставок динамики
    • кешировать куски вставляя их в динамику

    Это два противоположных подхода которые при особом желании можно смешивать в рамках одного проекта.

    Обновлять кеш можно:
    • при каждом запросе проверяя что старый кеш устарел
    • предкеширование - отдельным кроном/демоном/сервисом генерировать кеш раз в N минут
    • по мере изменения данных сбрасывать кеш и следующий запрос сгенерирует новый
    • по мере изменения данных сбрасывать кеш путём генерации сразу нового и замены старого на новый


    Кеш можно хранить:
    • на том же сервере что и сайт - нет задержек в сети, но зато ресурсы теже, CPU, диск, оперативная память
    • на внешнем сервере - задержки в сети, зато ресурсы отдельно


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

    Если используете CMS/CMF - посмотрите готовые плагины для кеширования. Если у вас не sharing-хостинг с мини-сайтом - озаботтесь профилированием (xhproof) и мониторингом, это поможет понять где и что кешировать.

    Так же стоит рассмотреть кэширование байт-кода:
    • OpCache
    • APC
    • XCache

    Стоит прочитать вот эту статью:
    Сравнение скорости исполнения кода Drupal для PHP 5.3-5.6 и 7.0. «Битва оптимизаторов кода» apc vs xcache vs opcache https://habrahabr.ru/post/264775/

    Так же стоит:
    • увеличить буферы в MySQL (если памяти много)
    • потюнить другие системы, например поставить nginx вместо apache, раздавать статику с другого хоста
    • и конечно же - посмотреть как долго работают SQL запросы и по возможности их облегчить


    Кеширование в MySQL с использованием HandlerSocket:
    • данные хранятся в MySQL innodb базе, а значит чтение и запись можно делать как по старинке через SQL так и через HandlerSocket
    • можно сделать любое количество колонок, лишь бы это позволял MySQL
    • быстрая вставка
    • быстрая выборка
    • бинарный протокол передачи данных
    • есть несколько библиотек для PHP, как относительно новых так и старых
    • в Percona Server (форк MySQL) HandlerSocket.so есть в поставке по умолчанию, разве что нужно включить
    • в MySQL необходимо собрать HandlerSocket самостоятельно и включить в MySQL


    Можно почитать вот тут:
    Ответ написан
    3 комментария
  • С чего начать в программировании микроконтроллеров?

    trampick
    @trampick
    Веб-разработчик
    Приветствую. Сам web разработчик и как хобби играюсь с железом. Для работы с микроконтроллером как минимум необходимы какие то знания электронике и схемотехнике. Затем я советовал бы взять arduino. На него очень много уроков и схем плюс среда ide простая для понимания. По цене не соглашусь. Можно саму плату взять за рублей 500 с китая. К нему еще стартовые радиодетальки - светодиоды, резисторы, кнопки и т.д. - тоже не дорого. Все это можно собрать за 1000-1500р - в наше время это не много.
    Как более сложный уровень я бы советовал взять какую-нибудь платку stm32. К ней тоже будут нужны компоненты.
    За 2000 можно собрать неплохой комплект.
    На этому сайте есть недорогие платки
    Ответ написан
    Комментировать
  • Как правильно замерять время?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если Вы занимаетесь решением поставленной задачи в рамках проекта Заказчика, то любые действия - должны быть оплачены.
    Даже, если Вы собираете консилиум по скайпу.
    Ответ написан
    9 комментариев
  • Чтобы загрузить через php картинку в папку, у папки обязательно должно быть 777 права?

    Finesse
    @Finesse
    Достаточно прав на запись пользователю, от имени которого работает веб-сервер.
    Ответ написан
    Комментировать
  • В чем моя причина провала тестового задания Яндекса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну давайте я покритикую:

    возьмем файлик

    1) вы не разобрались как объявлять методы у прототипов с новой нотацией `class`:

    class Travelsort {
        constructor() {}
        sortTickets(tickets) {}
    }


    2) вы не умеете пользоваться исключениями.
    if (!Array.isArray(cards)) {
        throw new ValueError('Wrong input');
    }


    3) использование let там где должен использоваться const

    4) в принципе использование переменных там где их быть не должно

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

    6) Общие замечания по кодинг стайлу. snake_case там где должен быть camelCase, пишите с большой буквы то что должно быть с маленькой и т.д.

    7) нарушения принципа единой ответственности. У вас объеткт умеет и сортировать и писать куда-то. Это категорически плохо.

    8) Если исправить 7-ой пункт то наш класс превращается просто в функцию.

    Далее... берем следующий файлик

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

    2) вы зачем-то тут в прототип объекта строки впихиваете функции для парсинга CSS. Таким образом мы нарушаем принцип единой ответственности. Да и в целом расширять без надобности прототипы объектов как-то не ок.

    Чуть дальше проскролил - вы пытаетесь расширить прототип строк для того что бы добиться API jquery? ух, батенька.

    3) очень много дублирования.

    4) очень плохо с protected variations.

    Справедливости ради, ваш код входит в категорию ">50% JS кода", так что не расстраивайтесь. Просто для работы в яндексе нужен чуть более высокий уровень и понимание вещей.
    Ответ написан
    17 комментариев
  • Как свернуть меню при 992 bootstrap?

    HamSter007
    @HamSter007
    HTML/CSS верстальщик
    Переопределить медиа запросы.
    @media (min-width: 992px) {
    		ваши стили 
    }
    @media (min-width: 767px) {
    		ваши стили 
    
       
          .collapse.navbar-collapse.in { ... }
      
    }


    Вот как сделала бы я
    Есть еще вариант влезть в стили бутстрапа и там править стили на свой вкус. Проблема если кто-то после Вас будет еще править верстку.
    Ответ написан
    5 комментариев
  • В чем проблема обработки строки со слешем php?

    trevoga_su
    @trevoga_su
    Ответ написан
    Комментировать
  • Не работает header php почему?

    Возможно вы указываете php header после контента?
    Важно! указывать header до вывода любого контента.
    Вот вам немного информации по этой теме :3
    Ответ написан
    5 комментариев
  • Где находить open source проект Java для новичка?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Нигде.
    Open Source не для новичков.
    Все эти хипстерские отзывы в стиле - пилите проекты на гитхаб и работодатели сами за вас хвататься будут - полный бред.
    Не тратьте время. Ищите стразу стажировку у работодателей.
    Ответ написан
    1 комментарий
  • Перепродажи на объемах - каково это?

    @lakegull
    Если смотреть с позиции сеошника, то бизнес-модель почти без рисковая получается. Он понимает, что заявки сегодня нужны всем и без работы он не останется до тех пор, пока генерируется поток этих заявок. Риск разве что в том, что кого-то из клиентов могли некорректно обработать впоследствии (некачественный товар подсунуть, общитать и т.д.), и этот клиент может впоследствии оставить негативный отзыв о сайте, на котором он оставил заявку. Но это, в сегодняшней реальности меньшее зло, чем отсутствие заявок.
    С позиции компании, которая нанимает сеошника, работающего по этой схеме, риски те же, что и при продажах на аутсёрсе. Получается, что клиентская база контролируется сеошником и ему становится выгодно отдать заявку тому, кто больше заплатит. БОльшая часть клиентов получается одноразовыми. Если вы с сеошником как-то не договоритесь, то он с лёгкостью сменит вас на другого исполнителя. Это примерно тоже самое, как взять кран из которого бежит вода и повернуть его так, чтобы вода бежала не в раковину, а в ванную. Примерно тоже самое можно сделать с потоком заявок.
    В этом случае всегда должен быть план Б: альтернативный и рабочий канал сбыта.
    Ответ написан
    2 комментария
  • Как понять, что разные вариации написания слова "Высшая математика" имеют общего предка?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    См. тут
    Ответ написан
    Комментировать
  • Подмена контента на основе UTM, стоит ли?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Это никак не скажется на поисковой оптимизации.
    Пример из жизни такой подмены: Вы заходите в магазин. Вас спрашивают "Вам что-то показать?". Это дефолтный сценарий работа скрипта сайта. А если продавцу заранее известно, что вы пришли купить хлеб, он задаст вопрос иначе "Какой хлеб вам предложить?". То есть суть (попытка продать товар) не изменилась, меняется только подход и методы. Если вы "угадаете" желание клиента - это только повысит конверсию.
    А поисковые роботы будут видеть только дефолтный сценарий, так как они не используют метки.
    Это конечно имеется ввиду в идеальных условиях.
    Ответ написан
    Комментировать
  • Что делать, если запутался в css?

    Elwen
    @Elwen
    1) Адаптивная - это, грубо говоря, фиксированная верстка, которая использует медиа запросы для того, что бы подстроится под устройство просмотра. Отзывчивая - это резиновая верстка с использованием тех же медиа запросов для того же. В свое время именно такое объяснение показалось мне самым простым и понятным. Но большинство заказчиков все равно воспринимает это как одно и тоже, так что объяснять будет дольше.
    Есть замечательный сайт liquidapsive.com, который очень наглядно показывает разницу между разными типами верстки (адаптивная, отзывчивая, фиксированная и резиновая) на примере одного макета. К нему же есть отличная статья на frontender.info, где довольно доходчиво рассказано о разных подходах, их плюсах и минусах.
    2) Как бы то ни было, это все же зависит от проекта. Резиновая верстка отлично подходит для большинства сайтов, но есть проекты, где целесообразней все же сделать отдельно мобильную версию. Например, соц. сети.
    3) Нет.
    4) К сожалению, есть много вопросов относительно возможностей и развития css.
    5) Единственного верного способа решить поставленную задачу в программировании нет. В большинстве случаев есть несколько способов. Бывает что одно решение выигрывает по тем или иным параметрам у другого. И каждый программист иногда чувствует, что его творение больше походит на монстра, чем на чистый код. Это вовсе не означает, что это так (хотя случается и такое, чего таить). В любом случае, взглянув на свой код, который сейчас вам кажется хорошим, через несколько лет, скорее всего, вы схватитесь за голову) Стремитесь совершенствоваться, но не зацикливайтесь на этом.
    Ответ написан
    2 комментария
  • Как эффективно изучать angular js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) продолжаем учить "ванильный JS", паралельно почитывая про babel, es2015 и т.д.
    2) когда мы ищем информацию в интернетах - учитываем что сейчас актуальная версия ангуляра - 1.5, второй ангуляр в бете, так что 90% информации устарело. Я даже больше скажу - даже официальная документация устарела, обновленный вариант сможете найти на github проекта в пул реквестах.
    3) https://github.com/gdi2290/ngExam - рекомендую этот список тем того, что вам надо знать про ангуляр (ну и не только).
    4) https://github.com/AngularClass/NG6-todomvc-starter - тут я попытался собрать полезные статьи на тему что надо учить и как + пример маленького современного приложения. Так же в ишусах к NG6-starter обсуждается как лучше его готовить.
    5) https://habrahabr.ru/post/277087/ - про angular 1.5 и то как я готовлю ангуляр.

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

    Ну и да - обязательно прочитать документацию к ангуляру. Возможно не всю сразу но базовые понятия что бы раскрыть. И разобраться с тем что значит "декларативное представление".
    Ответ написан
    4 комментария
  • Как не стать недоспециалистом?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Если вы задаетесь такими вопросами, значит у вас уже есть потенциал.

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

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

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