Задать вопрос
  • Один профиль на две линукс системы?

    fkvf
    @fkvf
    могу ошибаться.
    В /etc/password сделать пользователям одинаковые uid и gid — вроде должно помочь
    Ответ написан
    5 комментариев
  • Есть ли способ запретить к пересылке некоторые части email?

    Мне только одно в голову пришло, правда костыльное:
    В письме разместить картинку на внешнем сервере. На этой картинке отобразить некоторый код активации. Смысл в том, что картинку показывать только 1 раз, т.е. при втором запросе писать юзверю что-то типа «повторите запрос авторизации». Хотя этот способ конечно тоже не фантан, ибо никто не мешает переслать письмо не открывая.
    Ответ написан
    1 комментарий
  • Как узнать что конкретно кроется за httpd pid?

    Добавьте в access log информацию о pid (http://httpd.apache.org/docs/2.0/mod/mod_log_config.html#formats)
    Ответ написан
    1 комментарий
  • MySQL и память

    rakot
    @rakot
    Возникает пара вопросов, кто вам настраивал MySQL и какой тип таблиц вы используете?

    Всё же навскидку могу сказать, что память уходит скорее всего из-за скортировок по неключевым полям. MySQL выделяет память под сортировку на каждое соединение, по умолчанию 8 мегабайт, память выделяется как только приходит запрос с сортировкой, причем выделяется сразу вся порция внезависимости от того, надо вам 100кб под данную операцию или все 8 мегабайт.

    Во время нагрузки посмотрите SHOW FULL PROCESSLIST.
    По сложным запросам посмотрите EXPLAIN.

    Несколько стратегий:
    1. Добавлять ключи для выборок и сортировок, если это приемлимо и их еще нет.
    2. Увеличивать шансы на попадание запросов в кеш MySQL.
    3. Кешировать данные на уровне приложения.
    4. Перенести некоторые операции на уровнь приложения.
    Ответ написан
    3 комментария
  • Выбор репозиториев CentOS/Debian?

    @gribozavr
    Для Debian — Debian testing.

    А для CentOS… К вам вопрос: зачем ставить CentOS или RHEL, подключать к нему кучу неофициальных репозиториев и пересобирать руками то, чего в этих репозиториях не оказалось. Какой профит от CentOS, кроме нестабильной системы из-за помойки пакетов, собранных разными людьми, вы получаете? Почему бы просто не установить Debian testing/unstable?
    Ответ написан
    1 комментарий
  • Интернет-радио: оптимизируется ли broadcast-трафик?

    Такая штука называется Multicast.
    И, броадкаст — это всё же совсем не то, что вы описываете. То что вы описываете — это стандартный unicast (один поток к одному клиенту, +1 клиент — +1 поток). В броадкасте данные идут сразу всем, но броадкаст не распространяется выше L2 или L3 (см вики про броадкаст), т.е. не применим в рамках интернета, а используется только в локальных сетях. Multicast же может работать как на уровне локальных сетей, так и на более высоком уровне всего интернета. Но, на сколько я знаю, multicast достаточно геморно организовать в техническом плане (т.е. это не тупо галочка у сервера вещания), да и не все провы (не все маршрутизаторы) кушают такой трафик (хотя в этом плане могу ошибаться, давно не копался).
    Ответ написан
    3 комментария
  • Стоит ли постить на хабр небольшие статьи по техническим моментам?

    @lesha_penguin
    Если вы чувствуете, что какой-то рассматриваемый вопрос это «killer feature», во первых малоизвестная, а во-вторых, позволяющая сьэкономить кому-то кучу времени и сил, то да, возможно, стоит постить. Кстати, лучший критерий-обоснование достаточности материяла статьи — это ваш личный опыт. «Как я сьэкономил неделю используя фичу xxxx» или «Как я снизил в три раза нагрузку на сервер засчет применения yyyyy».

    Если же большинство из этих фич не дает такого «сразу суперэффекта», то лучше, как сказал выше IllariPosselt, выложить сразу статью. Но при этом, я бы дополнил, что намного интереснее не просто «статья-сборная солянка», а именно что-то вроде «тематического сборника», либо «книги коротких рецептов».

    Согласитесь, вам было бы намного приятнее и практичнее читать статью «Практическое использование расширений gcc для рефакторинга кода», неже ли просто куча разрозненных кусков «Малоизвестные фичи gcc» которые во первых, у кого было время сам уже вкурил в мануалах, а во вторых даже те кто вкурил врядли приходит в голову куда это приткнуть.

    То есть, читателю ценна информация не о том, что вы вычитали в доках фишку которую никто не вычитал, а ценный рассказ о вашем даже небольшом но успешном/провальном опыте использования чего-то. Это действительно интересно читать (информация пропущенная через ваш личный опыт).
    Ответ написан
    Комментировать
  • Стоит ли постить на хабр небольшие статьи по техническим моментам?

    IllariPosselt
    @IllariPosselt
    Если на полноценную статью не тянет — может, стоит подкопить материала и потом выложить большую статью?
    Ответ написан
    1 комментарий
  • Администрирование офисов и настройка интернетов

    @smartlight
    для фильтрации юзеров лучше использовать squid.
    я использую squid + squidGuard + HAVP. мануалы в гугле есть.

    использование на сервере dhcpd будет плюсом. я использую isc dhcpd.
    Желательно про BIND почитать.

    так же неплохим икспириенсом будет изучение десктопных линуксов — рекомендую, как это ни банально, Убунту
    Ответ написан
    1 комментарий
  • как сгенерировать уникальный integer id в кластере?

    @lesha_penguin
    Варианты решения uniqid от лучшего к худшему:
    1) Если 64bitный bigint то вообще проблем никаких: в старшие 32 бита засовываем заведомо уникальный идентификатор машины (например ip-адрес, или crc32/adler32 от hostname). а младшие 32 крутим как обычный сиквенс.
    Достоинства: для любого идентификатора можно в случае «жесткого дебага» найти «откуда ноги растут» — т.е. однозначно идентифицировать тачку на которой возникла запись с исследуемым id.
    2) Если есть желание убраться в 32bit (разумное желание, ведь не все хорошо работает даже в наш 64разрядный век с большими числами) лучше применять кешированый сиквенс. При запросе сиквенс увеличивается не на 1 а сразу на большое значение, например на 1000 или на 10000. Соотвественно, нода, получив от сиквенса диапазон 320000..329999 спокойно может не обращатся снова к сиквенсу, пока не израсходует этот диапазон. Плюсы: опять-таки возможно логировать. Минусы (правда устранимые резервным сиквенсом с резервным диапазоном): придется выбирать порцию отдачи.
    3) Экстремальный вариант. Еще расширяем integer до 128 бит и используем хеши или что-нибудь uuid-подобное. Минус очевиден — 99.9% софта не сможет работать с таким значением как с числом.
    4) Hardcode-вариант. Если вам известно, что нод будет не более чем N, каждая нода просто крутит сиквенс S а id получает по ф-ле id=S*N+n; где n-номер ноды. Плохой вариант, очень чреват нехорошими последствиями, если вдруг вы ошиблись в смелых оценках.
    5) Метод проб и повторов. еще хуже, поскольку сработает если у вас записей мало и добавляются они редко и вообще надежно будет работать если источник добавления записей только один.
    Ответ написан
    3 комментария
  • C поступления на какой счет платятся налоги по ВЭД?

    a3x
    @a3x
    Так налоги платятся исходя из системы налогообложения на которой вы сидите? С нее наверное стоит начинать вопрос.
    Плюс при ВЭД если это была экспортная услуга, то налогов (НДС) как бы и нет.
    Ответ написан
    9 комментариев
  • nic.ru ликвидируют?

    MiXei4
    @MiXei4
    По-моему теперь просто вместо АНО РСИЦ есть ЗАО РСИЦ и все домены и тп перешли новой организации. Старую соответственно ликвидировали.
    Ответ написан
    1 комментарий
  • Какой ИБП для ТВ?

    @smartlight
    APC LINE-R
    телик ЛСД филипс 42 инча 5000 серии. год полета нормальный.
    на него заведен комп + телик, через переходничок, т.к. выходы ИБП предназначены под компьютерные шнуры питания.
    Ответ написан
    2 комментария
  • Опознать радиокомпонент?

    Ocelot
    @Ocelot
    А это не может быть сдвоенный фототранзистор? Такой, как на картинке слева.

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

    Nicolette
    @Nicolette
    На C++ — разбить предложение на слова, загнать их в vector и использовать next_permutation.
    Ответ написан
    Комментировать
  • Си: передача предопределённых строк в функцию

    Livid
    @Livid
    Дело в разнице между массивами и указателями. Она, вообще говоря, есть.

    При инициализации
    char array[] = «abc» выделяет память для нового строкового массива и устанавливает его элементы в «a»,«b»,«c» и "\0"
    char *pointer = «abc» устанавливает pointer на строку «abc», которая, вообще говоря, может находиться (как строковой литерал) в защищенной области памяти (i.e. только для чтения).
    Ответ написан
    5 комментариев
  • ORDER BY `вероятность`?

    @zibada
    тупое решение, если записей немного и не пугает делать full scan на каждый селект:

    в каждой записи хранить:
    — собственный приоритет (любое положительное число)
    — сумму приоритетов всех предыдущих элементов (в порядке добавления, например, по id)
    и где-то хранить сумму всех приоритетов (на самом деле, можно получать из записи с максимальным id)
    можно их нормализовать, но тогда не получится сделать быстрый insert.

    select сводится к генерации нескольких рандомных чисел из диапазона [0, сумма_всех_приоритетов), и выборке элементов, где диапазон [сумма, сумма+свой_приоритет) включает хотя бы одно из выбранных чисел.
    insert — простое дописывание в конец, обновление суммы приоритетов
    delete — простое удаление
    update (изменение приоритета) — удаление+вставка если приоритет увеличился, простой апдейт, если уменьшился.

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

    итого — все операции за амортизированную O(1), кроме селекта, с которым все печально.

    для его оптимизации можно использовать spatial index (не в курсе насчет поддержки в современных БД), т.к. у нас запрос на принадлежность точки отрезку.

    честное и быстрое, но сложное решение:

    строить дерево, в листьях которого — id из таблицы и приоритеты, в промежуточных узлах — суммы приоритетов в поддеревьях.

    select одного элемента (для простоты далее рассматривается бинарное дерево):
    генерируем число от 0 до суммы приоритетов (хранится в корне), идем от корня:
    — если число меньше суммы приоритетов в левом поддереве, то налево
    — иначе — направо, и вычитаем из числа сумму приоритетов в левом поддереве
    — когда дойдем до листа — вернуть его id

    update/insert/delete — обычные операции с деревом с обновлением суммы приоритетов во всех промежуточных вершинах.

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

    производительность всех операций — O(logN), выборки — O(KlogN), где K — размер выборки.
    тоже есть проблема, что один элемент может выбраться несколько раз, чтобы это побороть, можно выбранные элементы удалять сразу после выбора (ну или просто обнулять приоритет), а в самом конце вставлять обратно.

    как все это хранить?
    ну если все влезает в память — то отлично, вешаем отдельного демона, который при старте строит дерево по исходной табличке и поехали.
    если нет — либо в базе (но эффективность работы с деревьями на реляционных базах это большой вопрос), либо в файлах, т.е., по сути, писать свой движок базы…
    но это уже явный overkill =) наверняка существуют готовые решения, которые все это уже делают.
    Ответ написан
    1 комментарий
  • Raid 5: изменить размер разделов

    @Sudo
    Опыт, сын ошибок трудных
    Не помню возможно ли это в 2003-м, но в 2008-м R2 можно сделать так: преобразовать диск в динамический->сжать диск D->расширить диск С на освободившееся пространство. Все делается из-под Windows через оснастку «Управление дисками»
    Ответ написан
    Комментировать