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

    Stdit
    @Stdit
    Галереи тоже вполне могут содержать язык, особенно если изображения содержат текст. Если у какой-то записи не указан язык, устанавливается язык «unknown» или null, который поступает в запросы с другими языками, грубо говоря where lang in ('ru', 'en', 'unknown') или where lang = 'ru' or lang is null. Есть ещё специфическая задача, когда у сущности должно быть несколько языков одновременно, но она сложнее в реализации, особенно на RDBMS. В других БД могут быть расширенные возможности для этого, например в MongoDB запрос всех статей на русском, английском или неопределенном языках в категории 123 будет выглядеть как-то так: find({lang:{$in:['en','ru','unknown']}, category: 123}), при этом исползуется индекс по lang и в выборку попадут как статьи с lang:'en' или lang: 'default', так и например с lang: ['en', 'en-US']
    Ответ написан
    2 комментария
  • Бистрое создание сайтов. Что-то вроде сайт билдера?

    Stdit
    @Stdit
    Для начала попробуйте задачу попроще: создать простую и удобную админку для уже знакомой вам CMS (человеческий редизайн, верстка). Если это удастся, то решение можно будет как использовать для создания своей CMS, так и для продажи студиям, пользователям или авторам исходной CMS (если позволит лицензия).
    Ответ написан
  • Номера страниц в постраничной выборке - зачем?

    Stdit
    @Stdit
    У каждого типа постранички своя специфика. Помимо собственно просмотра, постраничная навигация иногда нужна, чтобы пользователи могли давать друг другу ссылки на конкретные страницы. При этом, более логичным представляется использование в качестве точки отсчета не номер страницы умноженный на количество записей, а уникальный идентификатор сущности, по которому отсортированы записи и по которому составлен индекс в БД. Ссылки на такие страницы не ломаются, если в начале списка (на первой странице) появились новые записи. В другом случае, в статических списках (например в словарях или книгах), будет удобна классическая постраничная навигация + закладки на разделы или главы.
    Ответ написан
    Комментировать
  • Возможности HTML5

    Stdit
    @Stdit
    Игра, всё-таки, 3D. WebGL (судя по демкам) наверняка должно хватить для чего-то подобного. Естественно, обычных html5/js программистов нанять для изготовления такой игры будет не достаточно, это не сайт всё-таки. Здесь в первую очередь нужны дорогой художник, дизайнер, 3д-шник, аниматор, звукорежиссёр и другие специалисты, занятые в индустрии игростроения, а не веба. Для создания «достойной игры» нужны крупные инвестиции, а платформа WebGL + html5 ещё довольно молодая и сырая (стандарты даже толком не приняты). При этом, исходный код таких игр открыт.
    Ответ написан
    2 комментария
  • CMS своими руками

    Stdit
    @Stdit
    Написание CMS — это огромная работа. Ничего плохого нет в том, чтобы попробовать самому написать CMS в образовательных целях, это лучший способ изучить на практике проектирование и получить опыт, который поможет в дальнейшем понимать готовые CMS и писать на них нормальный код. Прежде чем писать CMS, нужно написать Framework для неё. Можно начать с изучения готовых решений, например Symfony2. Перед практикой обязательно изучение теории, паттернов проектирования, способов оптимизации и т.д. Не стоит рисковать применять свою CMS на боевых сайтах и серверах, потому что почти наверняка в ней будут уязвимости и архитектурные ошибки, которые в дальнейшем создадут вам или коллегам немало проблем.
    Ответ написан
    2 комментария
  • Macbook Pro 13' или Macbook Air 13'?

    Stdit
    @Stdit
    На основе своего опыта использования этих девайсов, могу совершенно однозначно порекомендвоать Air.
    В качестве дополнительного монитора использую стандартный FullHD монитор, переходник родной (DVI), никаких проблем не замечено, кроме того, что раз в неделю он в процессе работы отваливается и надо перевоткнуть.

    Преимущества:
    1. Air — это, конечно же, небольшой вес и отличная мобильность, можно брать куда угодно, домой или в длинную очередь госконторы.
    2. Разрешение экрана, в прошке 1280x800, в Air 1440х900.
    3. У Air отличное антибликовое покрытие (возможно в прошке тоже можно заказать, но я никогда ни у кого не видел)
    4. Запястья лежат ниже, потому что он тоньше. Возможно, я один такой, однако удобнее.

    Из недостатков:
    1. В Air нельзя (по крайней мере, официально) воткнуть 8 гигов памяти, однако по этому поводу я не испытываю неудобств, всё что нужно и так работает хорошо.
    2. В Air отсутствует привод для компакт-дисков. Если ваша работа не связана с ними, проблемой не является.
    3. Нельзя купить модель с HDD, любителям музыки, захвата видео и прочих мультимедийных радостей нужно подключать внешний винт.
    Ответ написан
    2 комментария
  • Посоветуйте проксирующий сервер для маппинга запросов

    Stdit
    @Stdit
    Вот тут всё во всех подробностях написано: nginx.org/ru/docs/http/ngx_http_proxy_module.html
    Если коротко, то нужно поставить location c proxy_pass, и при необходимости (если меняется uri) с rewrite. Если на внешний сервис идёт много одинаковых запросов, можно дополнительно установить proxy_cache.
    Ответ написан
  • Вывод значений базы MySQL

    Stdit
    @Stdit
    База спроектирована нормально, гораздо хуже было бы с таблицей вида (деталь, магаз1, магаз2, магаз3).
    Попробуйте группировку, например так:
    select номер_детали, group_concat(номер_магазина) as мазагины from детали group by номер_детали
    
    Ответ написан
    3 комментария
  • Какую защиту использовать от спам ботов?

    Stdit
    @Stdit
    Капчу стоит предлагать только в крайних случаях, когда есть подозрение на бота. Например, если не передаётся проверочная кука, отключен яваскрипт. Не думаю, что капча по указанной ссылке надёжнее классической, тут скорее присутсвует элемент «вирусного маркетинга». При составлении капчи важно смотреть на неё с точки зрения программного анализатора изображения. Например, лишние шумы на фоне легко удаляются алгоритмами, и только осложняют восприятие пользователю. Неплохим вариантом может быть reCaptcha.
    Ответ написан
    3 комментария
  • Генерирование нового окна с помощью JS

    Stdit
    @Stdit
    Возможно. Пример из Википедии:
    window.open('data:text/html;charset=utf-8,%3C%21DOCTYPE%20' +
      'html%3E%0D%0A%3Chtml%20lang%3D%22en%22%3E%0D%0A%3Chead%' +
      '3E%3Ctitle%3EEmbedded%20Window%3C%2Ftitle%3E%3C%2Fhead%' +
      '3E%0D%0A%3Cbody%3E%3Ch1%3E42%3C%2Fh1%3E%3C%2Fbody%3E%0A' +
      '%3C%2Fhtml%3E%0A%0D%0A','_blank','height=300,width=400');
    Ответ написан
    3 комментария
  • Стоит ли бросать работу ради учёбы?

    Stdit
    @Stdit
    Если позвляют финансы, есть смысл доучиться.
    Ответ написан
    1 комментарий
  • Отвечать ли на старые неотвеченные вопросы в QA?

    Stdit
    @Stdit
    Отвечать. Даже если автору уже не нужно, другим читателям может быть полезно, включая тех которые нагуглят этот вопрос.
    Ответ написан
    2 комментария
  • CSS: помогите написать selector черезстрочной подсветки без учета определенного класса

    Stdit
    @Stdit
    Насколько мне известно, селектор nth-child выбирает только по номеру потомка. Селектор nth-of-type тоже не годится, потому что нечем заменить tr. Если эта задача связана с формированием секций в таблице, то выходом может быть использование для каждой своего tbody:
    <tbody>
        <tr><td>a</td></tr>
        <tr><td>a</td></tr>
        <tr><td>a</td></tr>
    </tbody>
    <tbody>
        <tr><td>a</td></tr>
        <tr><td>a</td></tr>
        <tr><td>a</td></tr>
        <tr><td>a</td></tr>
    </tbody>
    Конечно, такую таблицу немного сложнее генерировать, но всё же я думаю лучше, чем писать class=«odd», class=«even» в каждой строке, к тому же это не приведёт к искажениям после динамического удаления или добавления строк в секцию.
    Ответ написан
  • Вопрос по интеграции магазина с 1С

    Stdit
    @Stdit
    Попробуйте так: $postdata = file_get_contents(«php://input»);
    Ответ написан
    1 комментарий
  • Почему NOSQL БД становятся популярными?

    Stdit
    @Stdit
    К примеру, многие разработчики предпочитают ORM (Object-relational mapping). NoSQL база (не любая, конечно) предоставляет нативный интерфейс для этой модели, ликвидируя осложнения от реляционной прослойки. В том числе для объектов с нефиксированным набором свойств. Из-за этого упрощается приложение, увеличивается производительность и облегчается шардинг. Естественно, NoSQL не является абсолютной панацеей и заменой SQL, но в некоторых решениях имеет более высокую эффективность и удобство, поэтому и находит там своё применение.
    Ответ написан
    Комментировать
  • Игра для ребёнка?

    Stdit
    @Stdit
    Симуляторы вождения для изучающих ПДД. И драйв, и польза.
    Ответ написан
    1 комментарий
  • Серверная кластеризация геометок карты?

    Stdit
    @Stdit
    Взять все точки и поделить нацело на длину ячейки масштабной сетки. Полученные точки занести в хеш-таблицу и закешировать. Для каждого масштаба хранить свою таблицу. При обновлении данные вносить изменения в каждую таблицу. При запросах доставать данные из таблицы в зависимости от масштаба. В качестве хранилища я бы использовал MongoDB (Geospatial Indexing)
    Ответ написан
    Комментировать
  • Генерация тайлов карты?

    Stdit
    @Stdit
    ImageMagick.
    convert source.jpg -crop 100x100 tile_%d.jpg
    Ответ написан
  • Как вернуться в строй?

    Stdit
    @Stdit
    Бывает такое, особенно если проекты старые, жирные, с костылями и шрамами. Или когда ваша квалификация давно выросла из тех «проектов», которыми вы занимаетесь. Я бы на вашем месте сменил работу. Отпуска не люблю, как и праздники, после них очень тяжело вернуться обратно в ритм. Возможно, есть смысл сменить область деятельности, если есть возможнось обучения. Мне в своё время очень помог в этом отношении переход с десктопного программирования в веб.
    Ответ написан