• Как выровнять по центру?

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

    Еще можно вот так решить jsfiddle.net
    Ответ написан
    1 комментарий
  • Как хранить IP в базе?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    OK google
    INET_NTOA()
    INET6_NTOA()
    Ответ написан
    Комментировать
  • Как лучше хранить настройки пользователей в БД?

    @DastiX
    Я в одном очень большом проекте подсмотрел классную фичу с "виртуальными столбцами", теперь очень часто пользуюсь в аналогичных, как у Вас случаях.

    Таблица концептов(concept):
    ID | NAME
    200 | Параметры отправки почты
    300 | Параметры отправки заданий
    ....

    Таблица параметров(param):
    ID | CONCEPT | NAME
    1 | 200 | Отправлять в пн
    2 | 200 | Отправлять во вт
    3 | 200 | Отправлять в ср
    ...
    10 | 300 | Отправлять задание 1
    11 | 300 | Отправлять задание 2
    12 | 300 | Отправлять задание 3
    ...

    Таблица Пользователей(users)
    ID | NAME
    1 | Саша
    2 | Петя
    3 | Вася
    ...
    Таблица реальных значений(xval)
    ID | CONCEPT | USR_ID | PARAM_ID | VALUE | ACTUAL
    1 | 200 | 1 | 1 | 1 | 1 | - Отправляем Саше по понедельникам почту
    2 | 200 | 1 | 2 | 1 | 1 | - Отправляем Саше по втоникам почту
    3 | 200 | 1 | 3 | 1 | 1 | - Отправляем Саше по средам почту
    4 | 200 | 2 | 3 | 1 | 1 | - Отправляем Пете по средам почту
    5 | 200 | 3 | 2 | 1 | 1 | - Отправляем Васе по вторникам почту
    ...
    20 | 300 | 1 | 10 | 1 | 1 | - Отправлять Саше задание 1
    21 | 300 | 1 | 11 | 1 | 1 | - Отправлять Саше задание 2
    22 | 300 | 1 | 12 | 1 | 1 | - Отправлять Саше задание 3
    23 | 300 | 2 | 11 | 1 | 1 | - Отправлять Пете задание 2
    23 | 300 | 3 | 10 | 1 | 1 | - Отправлять Васе задание 1
    Запрос
    select 
      u.name as usr,
      p.name as pname,
      x.value as val
    from users u 
    left join xval x on x.user_id = u.id and x.concept = 200
    left join param p on p.id = x.param_id
    where u.id = 1

    вернет вам все параметры отправки почты (concept=200) для Саши.
    USR | PNAME | VAL
    Саша | Отправлять в пн | 1
    Саша | Отправлять во вт | 1
    Саша | Отправлять в ср | 1
    Нужно узнать, какие конкретно отправлять задания?
    Просто меняете концепт на 300 и результатом будут все задания на отправку для Саши.

    Добавить какой-то параметр? Просто добавляете строку в таблицу и все!
    И никаких правок структуры в продакшене и другого геморроя.
    Ответ написан
    5 комментариев
  • Онлайн Менеджер паролей?

    @oni__ino
    Такого решения просто нет, что бы по всем пунктам, недавно искал только с установкой на свой сервер, даже платных решений нет. Хранить все пароли в чужом облаке не хочется.

    upd:
    Мы пока используем TeamPass https://github.com/nilsteampassnet/TeamPass/ он удовлетворяет большинство того что нам нужно.
    - Доступ через браузер;
    - Сервис устанавливается на свой сервер;
    - Шифрование паролей в БД;
    - Разграничение прав доступа пользователей;
    - Opensource (github)

    UPD (20.10.2016): наткнулся на замечательную реализацию KeePass в Web (https://keeweb.info/, топик на хабре https://habrahabr.ru/post/269895/) (из возможностей работать в браузере и запускать со своего сервера) для работы не использовал, но для дома нет слов!
    Ответ написан
    3 комментария
  • Как сделать сортировку большой базы данных?

    Shutik
    @Shutik
    Погромист халявщик
    SELECT id, user_name, rating, @curRank := @curRank + 1 AS rank
    FROM person p, (SELECT @curRank := 0) r
    ORDER BY rating;
    Ответ написан
    1 комментарий
  • Стоит ли использовать ооп?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    То, что легче без ооп - безусловно, для скрипта на 100 строк, это будет лишним.

    В остальном - однозначно нужно.
    ООП дает вам понятие "сущностей данных", как минимум. Можно конечно обмазываться массивами, но в этом случае лучше не используйте в лексиконе слово "безопасность".
    ООП дает разграничение обязанностей. Можно конечно нагородить 1кк функций и сварганить на их основе вермишельку, когда выльете пару ведер крови из глаз - вспомните мои слова.
    ООП дает заменяемость кода по интерфейсу (Полиморфизм), как следствие - возможность варьировать логику, без миллиона switch-case и сложных условий.
    ООП дает сокрытие данных (Инкапсуляция). Если переменную можно изменить в любом месте проекта (глобальную например) - она будет где-то изменена, вы об этом можете не узнать (или попросту забыть), как следствие ваш код будет работать не предсказуемо.
    ООП дает возможность расширять функционал порождаемых сущностей (Наследование), как следствие - DRY.

    То, что Виталий Пухов написал не верно. Легко !== правильно, удобно, человеко-понятно, тестируемо, надежно. Легко как правило писать говно. Фраза "работает же" как правило значит: "да, я понимаю, что оно хреновое, но лучше не могу".

    И писал пару робот на нём сильной разницы в скорости между ооп и не ооп проэктами не замечал.

    Вы не туда смотрите)). Производительность на stateless языке... В общем посмотрите на компилируемые))

    * Про vk вы правильно сказали, но забыли 2 важных нюанса: он писался, когда ООП в php особо не было; у них свой KPHP))
    * Для сравнения у facebook тоже свой php: hhvm, но он очень даже объектный.
    Ответ написан
    1 комментарий
  • Как сделать сортировку большой базы данных?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Если на фильтруемое поле (Rating) не указали индекс - лучше вообще откажитесь от задачи))
    Ответ написан
    1 комментарий
  • За какой период времени можно выучить PHP до уровня совершенства?

    PavelK
    @PavelK
    Всё зависит от способностей...

    Лучше всего об этом расскажет анекдот:
    У студента ПТУ спрашивают: "сколько нужно времени, что бы выучить китайский язык?"
    - ну, наверно, года два.
    У студента МГУ спрашивают: "сколько нужно времени, что бы выучить китайский язык?"
    - ну, наверно, месяц.
    У курсанта военной академии спрашивают: "сколько нужно времени, что бы выучить китайский язык?"
    - сейчас бляху дочищу и пойду сдавать!

    До уровня совершенства примерно бесконечность. У меня лет 5 практического опыта, но я бы не сказал, что знаю в "совершенстве".

    Для того, что бы написать "hello world" минут 20
    а дальше от желания.
    Ответ написан
    2 комментария
  • За какой период времени можно выучить PHP до уровня совершенства?

    dzheka3d
    @dzheka3d
    Всё выучить невозможно, изучить общий синтаксис и натренироваться писать простые модули можно за пару дней. А дальше вы по мере надобности будете пользоваться другими функциями, обращаясь к мануалу.
    В голове держатся всегда только те функции и действия, которыми постоянно пользуетесь, или пользовались часто ранее (они отложатся), остальное - мануал.
    Мне понадобилось полторы недели, чтобы создать простой сайт с добавлением новостей, редактированием их, голосования, комментарии, добавления картинок. Спустя год, я мог написать что угодно, но обращаясь к гуглу и мануалам.
    Кстати, тоже интересно, может я один такой по гуглу шарюсь когда нужно что-то не знакомое сделать или сделанное давно и однажды?
    Ответ написан
    7 комментариев
  • Целесообразно ли разделять таблицу лайков на каждый тип поста?

    ivankomolin
    @ivankomolin
    1. Достаточно одной таблицы
    2. Стоит, возможно пригодится не только для очистки)
    Ответ написан
    Комментировать
  • Правильно ли использовать redis как кешириующий сервер?

    @napolskih
    >> нет поиска по маске
    в редис, он есть, но им лучше не пользоваться в продакшене т.к. это медленно и это написано в доке.

    про теги не понял, что это?!

    как уже сказали в мемкеше есть namespace и поднимать на каждый сайт инстанс не нужно.

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

    Еще редис для кеширования привлекает тем, что там по-мимо алгоритма вытеснения LRU, есть другие способы (expire), которые позволяют надежно кешировать то, что нужно и избежать не санкционированного вытеснения в случае вложенного кеширования.

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

    ЗЫ есть еще тарантул, но он пока не так развит и популярен, хотя очень перспективен и продвинут местами.
    Ответ написан
    1 комментарий
  • Как уменьшить кол-во ajax запросов?

    Feaxer
    @Feaxer
    Программист-фрилансер
    он маузовер {
    если апартментс_дата[id] существует, то информацию взять из апарментс_дата[id]
    иначе { аякс запрос на получение информации; сохранение полученной информацией в массив апартментс_дата с ключем id }
    }
    Ответ написан
    Комментировать
  • Стоит ли отказываться от JS в мобильных версиях сайта?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    В принципе, верно все написали, что экономить трафик вырезанием JS - не лучшая история. Однако, лично меня жутко бесят сайты, что нагромоздили JS донельзя и что не ткнёшь пальцем - подвисает на пол секунды. Сам по себе браузер вещь довольно громоздкая и жрёт ресурсы неимоверно, а JS рад украсть ещё пару... миллионов тактов. Тогда как по производительности нынешние мобильные камни едва догоняют Pentium D, а это, простите, лет десять назад когда рендер JS-ом ещё только появлялся, а красивые странички напичканные (или полностью из) флешем (который имел GPU-ускорение) были пиком моды.
    Так что по правде - важно соблюдать компромисс. Да где угодно его важно соблюдать - пока грузится голый html, а потом рендерится JS-ом ещё несколько секунд (ибо не сразу всё подгружается) и начинает сиять всеми цветами радуги - чувствуется вся убогость www. Просто помните, что Вы пишите под браузер, который далеко не такой умный и быстрый, как хвалят его в Google, Apple, MS или Mozilla, а наоборот - неповоротливый, жадный до ресурсов и очень зависимый от качества Интернет-соединения.
    Так что вот правильный воркфлоу:
    1. Рендер на сервере в html.
    2. Упаковка JS и CSS скриптов в один .js и .css файл соответственно.
    3. Сжатие GZIPом упакованных .js и .css файлов и рендеренный .html файл.
    4. Передача сжатых данных на клиентское приложение (браузер).

    А вот небольшие наблюдения по поводу JS:
    Ответ написан
    4 комментария
  • Стоит ли отказываться от JS в мобильных версиях сайта?

    alexfedoseev
    @alexfedoseev
    React & Rails Dev
    Как правильно делать: рендерить первоначальный html на сервере -> отдавать его клиенту с JS-приложением -> JS-приложение после загрузки первоначального контента забирает дальнейшее управление на себя.

    См. дальше по запросам «изоморфный javascript», «isomorphic javascript».

    Выпилить JS из сайта — это вернуться на пару десятков лет назад. Вас утопят в выдаче поведенческие факторы, в то время как разумное использование JS эти поведенческие факторы улучшит (=> поднимет в выдаче). Главное на мобильных с JS не переусердствовать.

    P.S. Google бот уже рендерит (и, соответственно, индексирует) SPA, которые без рендеринга на сервере, но позиции по ним, думаю, ниже чем у аналогов с серверным рендерингом. Плюс из соображений скорости первоначальный html лучше собирать на сервере.
    Ответ написан
    Комментировать
  • Необычное поле класса PHP?

    trevoga_su
    @trevoga_su
    это не необычное поле, это обыкновенный ключ, созданный выборкой из базы в режиме получения стандартного объекта php. достаточно в sql запросе использовать псевдоним для этой выборки:

    select concat(message.useridfrom, '-', message.useridto) as huita from table ...


    echo $c->huita; // 6-5
    Ответ написан
    Комментировать
  • Сложный проект одним или двумя словами?

    сложная хрень, крупный сайт, здоровый проект, нехилая программа, большой портал, неслабый такой сайтец
    Ответ написан
    2 комментария
  • Надоело говнокодить, как заставить себя продолжать?

    Freika
    @Freika
    Senior Ruby on Rails developer
    Может попробовать другой стек технологий? Это может помочь перестать говнокодить и начать писать хороший поддерживаемый код, над которым приятно работать, а там, глядишь, и удовольствие от работы приложится :)
    Ответ написан
    5 комментариев
  • Надоело говнокодить, как заставить себя продолжать?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1. Спать больше. Не менее 7 часов в сутки. Т.е. ложиться не позже 1:00 и вставать не раньше 8:00
    2. За каждую сделанную задачу надо себя вознаграждать из списка "действия и вещи что меня радуют", к примеру любите кушать мороженное записывайте в список, любите в ванной лежать, туда же и т.д. и т.п. Как только начинаете делать задачу, сразу договоритесь с самим собою: "как завершу задачу, сразу "возьму пряник""
    3. Чаще смотреть позитивные вещи, не связанные с работой воообще!!!
    4. Учиться по мимо работы и другим полезным вещам, к примеру тайм-менджменту, улучшение английского и др.
    5. По утрам отжиматься, зарядку

    вообщем много чего!
    Ответ написан
    2 комментария
  • Что может быть вместо термопасты?

    BuriK666
    @BuriK666
    Компьютерный псих
    Лучше старю всю убрать и намазать новую.

    PS: это не пластилин, это паста так сохнет.
    Ответ написан
    Комментировать
  • Как правильно написать запрос к БД?

    @bromzh
    Drugs-driven development
    Зачёт не сдаётся? Есть же сайты. где решают такое за деньги, иди туда.
    Ответ написан
    8 комментариев