• Как хранить пользовательские данные в базе?

    yttrium
    @yttrium
    Это одна из нормальных форм реляционной модели.
    Django позволяет абстрагироваться от непосредственного использования id пользователя, для этого следует использовать поле ForeignKey.
    Для картинок используйте ImageField. Оно само положит картинку в файловую систему и в базу данных положит путь к файлу. Надо лишь в настройках проекта указать нужные каталоги. На начальном этапе и для небольших проектов этого вполне достаточно.
    Ответ написан
    Комментировать
  • Как закрывается код известных cms?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Силой слова - лицензионным соглашением :)

    Обфускация немного ограничит возможности по незаконному использованию.
    Ответ написан
    7 комментариев
  • Как определить свой уровень программирования?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Эти уровни - абстракция, причем зависящая от компании. Пройдите несколько собеседований и спросите, что думает о вас интервьюер.

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

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

    Синьйор - понимает не только то зачем использовать ту, или иную технологию, а еще и как она работает, например почему при HL форин ключи сожрут io hdd. Может спроектировать и вести средний по размерам проект. Получив новое задание он уже знает как его решить кучей способов, выбор заключается только в правильности интеграции решения.

    -----------------

    Многое зависит от интервьюера.
    У меня был случай, собеседование на php senior developer: поговорили про HL оптимизации, архитектурные предложения для решения неких задач, способы оптимизации и т.д., а потом:
    - перейдем к практике: что произойдет в таком коде:
    $a = 5 + '5abc' + 'abc5';
    - произойдет следующее: я посмотрю blame скрипта и поговорю с автором этой строчки, что бы узнать, что такого хренового в жизни может произойти, что бы он позволил себе это написать.
    - ну, тут вопрос на приведение типов
    - 10, но вы в своей практике с подобным сталкивались?
    - нет
    - вот и я не сталкивался...
    Ответ написан
    1 комментарий
  • JavaScript: какая разница в объявлении переменных?

    Первый вариант:
    var a = 0, b = 0; имеет несколько явных недостатков:
    1. При наличии системы контроля версий, добавление новой переменной будет неинформативно. Будет изменена вся строка, что незначительно усложнит ревью кода.
    2. Субъективно подобная запись мешает восприятию кода. В ней плохо различимы переменные без присвоенного значения. Т.е. var a = 0, b = 0, c, d = 0;

    Второй вариант:
    var a = 0;
    var b = 0;

    Является наиболее расширяемым в плане версионирования (не имеет проблемы с выставлением запятой, как в приведенном ниже третьем варианте), но перегружен служебными словами.
    Лично я предпочитаю пользоваться этим синтаксисом в nodejs модулях для подгрузки библиотек в верхней части скрипта:
    var fs = require('fs');
    var path = require('path');


    Третий вариант:
    var a = 0,
        b = 0;

    Несколько проигрывает второму в плане удобства версионирования (при добавлении переменной С будет изменено две строчки, а не одна), но наиболее распространен в js best practices. Одинаково применим как с выравниванием по 4 пробелам для выстраивания переменных в столбик, так и без надуманного выравнивания.
    Из минусов этого варианта, можно отметить забытую запятую после a = 0. В таком случае переменная b будет объявлена глобально, если не используется "use strict"
    Ответ написан
    1 комментарий
  • Всегда ли нужен подготовленный запрос в PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я так понимаю, что речь о статических запросах вида
    SELECT * FROM catalog WHERE parent=1

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

    Пример:
    $categories = $db->getAll("SELECT * FROM catalog WHERE parent=1");
    $categories = $db->getAll("SELECT * FROM catalog WHERE parent=?i", $parent);

    Как видим, при наличии единого API для выполнения запросов, у программиста не возникает ненужных вопросов.
    Ответ написан
    Комментировать
  • JavaScript: какая разница в объявлении переменных?

    VirmarY
    @VirmarY
    Full-stack web developer
    Никакой разницы.
    Просто запись в одну строчку как-то быстрее воспринимается, если нужно просто изучить код. Читаешь и просто понимаешь, что "вот тут переменные объявляются".
    Ответ написан
    3 комментария
  • Какая PHP IDE под Mac лучше?

    @Nc_Soft
    PhpStorm
    Ответ написан
    Комментировать
  • Что сделать с недобросовестным заказчиком?

    XXX
    @XXX
    Решение где-то рядом
    Сергей Карвасарный не удаляйте и не говорите что могли удалить. Не портите себе карму под новый год. Сейчас не прав он, скупой когда-нибудь дорого заплатит. Фрилансеры тоже разные бывают.

    На любую хитрую гайку найдется свой болт с резьбой. ;)
    Ответ написан
    1 комментарий
  • Как отрендерить html на сервере?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Менее ужасно будет просто менять в тексте буквы на мешанину, а на клиенте накладывать размытие. И да, восстановить назад размытый текст - дело не хитрое.
    Ответ написан
    3 комментария
  • Почему is_file не видит корректных файлов?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    php.net/manual/ru/function.is-file.php

    Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().
    Ответ написан
    3 комментария
  • Как «наказать» горе-хакеров, пытающихся взломать сайт?

    SteveDent
    @SteveDent
    Информационная безопасность там это все такое...
    Понять и простить.
    Задуматся над ИБ.
    Почитать мануалы по безопасной конфигурации Nginx.
    Провести assessment средствами Nessus(есть полноценный триал), Acunetix, Netsparker, Nikto(OpenSource).
    Опционально metasploit или armitage исходя из опыта и знаний.
    Обратится в "отдел К" или специализированные организации.
    Ответ написан
    Комментировать
  • Как избавиться от тормозов на Mac OS?

    Alexious_sh
    @Alexious_sh
    Не верю что у вас при открытом макете в фотошопе и запущенном Chrome, "оперативы свободной достаточно". Все это дело рано или поздно начнет само свопить, и других в подкачку выталкивать. Отсюда возможно и "остаточные" тормоза, после закрытия приложений. По-моему сейчас все же 4 гигабайта памяти маловато для комфортной работы с подобным набором приложений.
    Ответ написан
    1 комментарий
  • Редактор кода на linux?

    Vanger
    @Vanger
    sublimetext?
    webstorm?
    Ответ написан
    Комментировать
  • Как и чем быстрее всего начать зарабатывать на программировании/веб-программировании?

    @CAMOKPYT
    Забудь про фриланс, сколько бы про него не говорили, это биржа ДЕШЕВОЙ рабочей силы со всеми вытекающими последствиями в виде кидалова, низкой зп, скучной работы, туда идут люди с серьезными проблемами вроде невозможности перебраться в город, социопатии, инвалидности, "утонченная личность", фриланс это почти всегда вынужденная мера. Вообще фриланс и стабильный заработок несовместимые понятия, просто потому что фриланс подразумевает постоянный поиск мелкой работы, никакой заказчик не будет давать большой серьезный проект фрилансеру никогда, потому что это большая ответственность, посмотрите соседние вопросы, пацики с рейтами 150баксов в час работают 10 часов в месяц, а остальное время ищут заказы, причем это люди с опытом и портфолио + отличный английский. Начинать карьеру с фриланса это 100% гарантия того что, все что можно сделать неправильно (техническая сторона), будет сделано неправильно, потому что работает, дедлайн вчера, а подсказать или сделать код ревью некому, никакие книжки тут не помогут, выбора не будет, ты либо читаешь либо работаешь. Так что не советую ввязываться в эту тему. Лучше начать работы в офисе под строгим надзором. Ну и конечно html+css+js это мало, нужно знать еще около программисткие штуки вроде систем контроля версий, багтрекеры, несколько ide/ текстовых редакторов, если это веб почти гарантированно надо иметь представления о http/https, ООП, возможно sql. Не то чтобы для 20к месяц все это нужно отлично знать, но как минимум иметь представление, чтобы не отвлекаться. Вот по фронтэнду. Для большой гарантии устройства на работу, как уже сказали выше, лучше сделать себе сайт, а еще лучше сделать небольшое портфолио и выложить на гитхаб, это сейчас очень модно. На изучения всего вышеперечисленного уйдет 1-2 месяца если сидеть по 8-4 часа в день примерно, свой сайт где-то неделю на разработку визитки и еще неделя на вылизывание, но оно того стоит, а в процессе поиска работы можно и на гитхаб по чуть-чуть кидать, хотя вряд ли получится много. Удачи.
    Ответ написан
    8 комментариев
  • В чем тестировать мобильную вёрстку?

    Voltmod
    @Voltmod
    Обновите Chrome до последней версии.
    Откройте страницу, нажмите f12 или Ctrl+Shift+i (Инструменты разработчика).
    Нажмите в правом углу иконку Show console. (Не путать с просто надписью Console)
    Перейдите на вкладку Emulation.

    Эмулируются многие параметры как Touch, Swipe, Media queries... всё что нужно.
    Ответ написан
    Комментировать