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

    Kerman
    @Kerman
    Если бывают перебои с интернетом - лучше почтовый сервер не ставить. Но если очень хочется:
    1. Оплачиваем корпоративный сводный ящик у гугла. Привязываем к своему домену.
    2. Устанавливаем exim, dovecot, fetchmail, настраиваем.
    3. Тащим почту фетчмейлом у гугла по POP3.
    4. Раскидываем полученную почту по ящикам экзимом.
    5. Довекотом раздаём клиентам по POP3 или IMAP.
    6. Вырубаем плагин касперыча, чтобы аутлук не вис при работе с IMAP =)
    Ответ написан
  • Почему появляется ошибка "На этой странице обнаружена циклическая переадресация"?

    Kerman
    @Kerman
    А чего на тостер-то? Это разработчикам нужно писать, пусть правят баги. По поводу "циклической переадресации" - это хром так реагирует на серию переадресаций, когда оказывается уже в том месте, где только что был.
    Ответ написан
    Комментировать
  • Существует ли "база данных", в которой бы можно было сделать выборку N случайных записей из отфильтрованного по условиям набора?

    Kerman
    @Kerman
    Если нужен именно честный выбор действительно случайных и равномерно распределённых 10000 строк из пятимиллионной таблицы, то лучше SQL с этой задачей ничто не справится. Разве что самописная база, заточенная конкретно под этот случай. Нужно просто расставить индексы на нужные поля, чтобы облегчить поиск.
    Мой совет: добавьте памяти на сервер, проиндексируйте поля. Всё будет хорошо, используйте стандарный RAND(), оптимизировав его до приемлемого значения.

    Для редких случаев ещё помогает выборка массива ID по условию и дальнейший выбор нужного количества случайных ID из массива.
    Ответ написан
    Комментировать
  • Есть ли способ быстрого создания php кода, который выводит всю MYSQL таблицу?

    Kerman
    @Kerman
    Предыдущий совет был явно вредный. Для разбора полей существует SHOW COLUMNS FROM `table`. Но отчасти и правильный, т.к. для вывода информации о столбцах генерировать php код не нужно. Можно сгенерировать сразу HTML, но PHP и так предназначен для генерации страниц на лету.
    Ответ написан
    2 комментария
  • Как сделать картинку в пространстве (перспектива)?

    Kerman
    @Kerman
    Не знаю, как в люстре, но в фотошопе Ctrl+T (transform) и потом, удерживая Ctrl, можно двигать вершины независимо. Вот так получается любая перспектива.
    Ответ написан
    9 комментариев
  • Как правильно выносить код в разные файлы?

    Kerman
    @Kerman
    Вам нужен рефакторинг. То, что Вы описали, говорит о том, что Ваш код далёк от совершенства.
    Вам нужно для начала применить extract method, затем exctract class или подобные методы. После чего можно будет спокойно классы разнести по отдельным файлам.
    Ответ написан
    Комментировать
  • Как оптимизировать базу данных?

    Kerman
    @Kerman
    Две таблицы в этом случае не нужны. Совершенно никому не нужный, бессмысленный и беспощадный оверинжиниринг. Только замучаетесь LEFT JOIN делать с поводом и без, и поддерживать целостность такой связки.
    Оптимизировать нужно в первую очередь так, чтобы проще было работать. И уж только потом, когда это работает, и в случае, если это тормозит, тогда и только тогда оптимизировать быстродействие.
    Да и если в таблице всего 40к записей, то это тормозить не будет (разве что если Вы на калькуляторе запускаете базу) и небольшие проблемы с производительностью решатся грамотной расстановкой индексов в таблице.
    Ответ написан
    Комментировать
  • Как оптимизировать большую таблицу mysql, у которой очень много update/insert встают в очередь?

    Kerman
    @Kerman
    1. Поможет. InnoDB при Update блокирует запись, а не таблицу целиком, как MyISAM. Alter Table будет пересоздавать таблицу, так что это будет обрабатываться долго.
    2. В другую таблицу вынести можно. И ночью делать INSERT INTO Archive SELECT * FROM Dayly; DELETE FROM Dayly;
    Но это не поможет без смены движка.
    Ответ написан
    8 комментариев
  • Как правильно использовать ключи MySQL?

    Kerman
    @Kerman
    Primary key нужно повесить на ОБЕ колонки. Заодно это не даст возможности одному юзеру дважды подписаться на другого. Отдельный id для этой таблицы не нужен. Два индекса тоже не нужны.
    Ответ написан
  • Как повернуть текстуру на какой то определенный градус, не вращая при этом полигон, на который наложена текстура?

    Kerman
    @Kerman
    Вынесу, пожалуй, наилучшее решение отдельным ответом:
    //Переключаемся в режим матрицы текстур
    glMatrixMode(GL_TEXTURE);
    //Получаем матрицу по умолчанию
    glLoadIdentity();
    //Смещаемся в центр, вокруг которого будет вращение
    glTranslatef(0.5,0.5,0.0);
    //вращаем
    glRotatef(angle,0.0,0.0,1.0);
    //возвращаем центр на место
    glTranslatef(-0.5,-0.5,0.0);
    //возвращаем режим матрицы назад
    glMatrixMode(GL_MODELVIEW);

    После этого можно рисовать квадратик. После рисования квадратика надо сбросить матрицу текстур, чтобы остальные текстуры не поворачивались:
    glMatrixMode(GL_TEXTURE);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    Ответ написан
    Комментировать
  • Как побороть проблемы с производительностью LAMP сервера?

    Kerman
    @Kerman
    БД тут не при чём. Если бы отваливалась БД, то апач отдавал бы ошибку соединения с базой. Файловая система тоже ни при чём. Проблемы с ФС сразу были бы видны в логах и при старте.
    Более вероятная причина в сети, к которой оба сервера подключены. Просто тупо не проходят HTTP пакеты в какой-то промежуток времени. Или с файерволлом беда. Нужно смотреть, каким путём идёт ICMP и каким TCP/IP.
    Менее вероятная причина - превышение лимита подключений к апачу. Тут NGINX Вам в руки.
    Ответ написан
    2 комментария
  • Как повернуть текстуру на какой то определенный градус, не вращая при этом полигон, на который наложена текстура?

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

    Kerman
    @Kerman
    Если хочется изучать линукс, то это самое лучшее решение. Правда есть шанс потерять работу.
    Если уж хочется виртуализации, то нужно ставить Hyper-V - он бесплатный. А под ним уж хоть винду, хоть FreeBSD разворачивать.
    Для 1С лучше всего ставить винду. Ибо это кривое поделие работает ещё кривей под линуксом. Под видеонаблюдение берите ось, под которую расчитано ПО производителя. Под файлопомойку тоже лучше винда, если нет очень специфичных задач, вроде ежедневного бэкапа снэпшотами.
    А по сути, здесь не нужен ни линукс, ни виртуализация. Всё делается на одной семёрке. Уж на одну лицензию семёрки у руководства есть деньги? Но это, правда, не так интересно для сисадмина.
    Ответ написан
  • Почему программа глючит и закрывается?

    Kerman
    @Kerman
    Начнём с того, что 9000 строк в текстбоксе находиться не должны. Он тупо для этого не предназначен. Это нужно заливать в файл перед обработкой. А лучше читать в массив, уже преобразовав данные.
    Во-вторых, это что за 3,14здец?
    BeginInvoke(new MethodInvoker(() => label1.Text = (Convert.ToInt32(label1.Text) + 1).ToString()));

    Нельзя было сделать локальную переменную с инкрементом внутри цикла и выводом в label? Или вообще выводить значение i в label1.Text (и offset от i задать, если надо).
    Куда девается text_check, являющийся результатом всей этой непонятной конструкции?
    Зачем ставить sleep(100), если конструкция подразумевает брутфорс по ip адресам, сгенерированным случайным образом?
    И наконец, надо за собой закрывать открытые соединения, как уже сказал @maxaon.
    Ответ написан
    Комментировать
  • Как составить запрос, чтобы выводить похожие материалы?

    Kerman
    @Kerman
    Нужна табличка Keywords. В ней должны быть id и ключевое слово.
    И ещё нужна таблица связи Keywords и таблицы материалов.
    И ещё нужен парсер, который создаст таблицу ключевых слов.

    При выполнении этих правил задача становится выполнимой. Но это уже шаманство с IN(), GROUP BY, HAVING и ORDER BY.
    Ответ написан
    Комментировать
  • Поиск array по MySQL

    Kerman
    @Kerman
    Это Вы, уважаемый, столкнулись с плохой архитектурой базы. И, к сожалению, тут нужно кардинально менять структуру БД.
    Нужна отдельная таблица связи тегов и постов. Тогда всё будет просто и можно будет воспользоваться при выборе конструкцией MySQL WHERE tags IN(теги через запятую).
    Ответ написан
    7 комментариев
  • Как будет лучше

    Kerman
    @Kerman
    Если делать по-уму:
    1. Нужно сделать промежуточную таблицу между name и album. Там будет всего два поля id_name и id_album. Оба поля должны являться индексами. Уникальными индексами.
    2. Left join нужно делать двойным при выборке по album. Да и по name тоже.
    3. name переименовать в Artist. Это же таблица исполнителей, да?
    4. Добавить таблицу Band. Держать в ней название группы.
    5. Добавить id_band в таблицу album.
    Ответ написан
    Комментировать
  • Как лучше спроектировать базу данных (mysql)?

    Kerman
    @Kerman
    Я бы для каждого раздела создавал свою табличку. Так проще потом информацию вносить.
    А для того, чтобы выбирать на главную новости можно создать VIEW, которая объединяет все объекты из всех таблиц в одну с помощью UNION.

    Если точнее, для сводной таблицы можно вынести только несколько параметров:
    ID объекта, раздел, дата (чтобы сортировать). После выборки для показа на главной уже можно запросить нужные поля из профильной таблицы.
    Ответ написан
  • Как избавиться от мобильного телефона?

    Kerman
    @Kerman
    Если цель такого поступка - оградить себя от прерываний внешнего мира, то лучше электронной почты ещё ничего не придумали. Главное - выключить все уведомления о приходящих письмах на мобильных устройствах.

    Если нужно лишить себя возможности отвечать, то тут сложнее.
    Ответ написан
    Комментировать
  • C чего начать програмиирование?

    Kerman
    @Kerman
    Программирование нужно изучать с постановки задачи. Как и изучение любого другого дела. Сначала выбирается задача, которую интересно реализовать, а уже потом, под задачу выбирается язык, книги, методики и прочее.

    И да, зарабатывать денег - это не задача. Задачу должно быть интересно решить.

    Если интересно сделать сайт, то можно начать с PHP, JS. Если игру, то C++ или C#. Если браузерную онлайн игру, то, возможно, Java и JS. Интересно сисадминить Unix - bash, perl.

    Если пытаться понять, как работает ВСЁ, то не хватит никакого времени. Постановка задачи мотивирует двигаться в каком-то одном направлении и не даёт потерять кучу времени зря.
    Ответ написан
    Комментировать