• Как перебрать все элементы множества в псевдо-произвольном порядке?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Когда длина набора кратна степеням двойки можно перемешивать биты, адресующие элемент.
    В рамках одного порядка перемешивания битов адреса, все множество элементов однозначно («биективно») отображается в такое же по длине «перемешанное» множество.

    Вот пример кода:
    const src = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']; // массив элементов
    const key = [2, 1, 0]; // номера битов для перемешивания адреса
    
    const mapIndex = (n, key) => key.reduce((p,c,i) => p | ((1 << c & n) >> c) << i, 0);
    const biject = (arr, key) => arr.map((e,i) => arr[mapIndex(i, key)]);
    
    console.log( JSON.stringify(biject(src, key)));
    // ["a","e","c","g","b","f","d","h"] 
    
    console.log( JSON.stringify(biject(src, [1,2,0])));
    // ["a","e","b","f","c","g","d","h"]


    Disclaimer. Этот способ не исчерпывает все возможные перестановки, ограничиваясь их небольшой частью. Первый и последний всегда остаются на своих местах (все "0" как ни перемешивай..)

    Upd. отличный способ подсказали на SO. Когда длина массива N, нужно взять любое простое число больше N. Оно гарантированно будет взаимнопростым с любым из чисел меньше.
    Новый адрес элемента получается из старого: адрес умножить на простое и взять остаток от деления на длину.
    {
    const src = 'abcdefgh'.split('');
    const N = src.length; // 8
    const Prime = 37;  // Prime > N
    const mapIndex = (i, N, Prime) => (i * Prime) % N;
    //for(let i  = 0; i< 8; i++) console.log(i, mapIndex(i, N, Prime))
    const shuffle = (str, Prime) => str.split('').map((e,i,a) => a[mapIndex(i, a.length, Prime)]).join('');
    
    console.log( shuffle('abcdefgh', 17));
    console.log( shuffle('abcdefgh', 19));
    console.log( shuffle('abcdefgh', 23));
    console.log( shuffle('abcdefgh', 29));
    
    abcdefgh  // не перемешалось
    adgbehcf
    ahgfedcb
    afchebgd

    Для некоторых простых чисел почему-то не происходит перемешивания: для 17, 37 при длине массива 8.
    Ответ написан
  • Какое ПО наиболее популярно для Linux-серверов разного типа?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    В линухе по большей части используется не "наиболее популярное", а единственное в своем классе - так же как в винде. Поехали.
    - файловый сервер (надо полагает имеется в виду расшаривание файлопомойки) - Samba. Причем the only, другие мне неизвестны.
    - FTP - вот здесь есть выбор. Я предпочитаю proftpd. FTP рекомендуется использовать только в доверенном окружении, потому что там безопасность не ночевала даже.
    - Что такое "сетевые службы" - непонятно, вопрос неконкретный
    - СУБД есть две - mysql и postgresql. Первая как правило для веба, полегче и побыстрее, вторая - этакий Opensource Oracle - потолще, потяжелее, помедленее, но ворочает гигантские обьемы.
    - Веб-сервер есть ровно один - apache. nginx, очень часть упоминаемый как альтернатива - это не веб-сервер. Это реверс-прокси, балансировщик и все что угодно, но построить полноценный сайт только на nginx невозможно. Впрочем, он и писался не для этого, хотя часть функционала веб-сервера он тащит, потому что обычно стоит на фронте.
    - Почтовый сервер - почта бывает разная. Для smtp - sendmail/postfix/qmail, для IMAP - обычно dovecot, хотя возможно есть и другие.
    Ответ написан
  • Какое ПО наиболее популярно для Linux-серверов разного типа?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну коли я встрял в диспут, тоже ответ напишу.
    Есть разные задачи, начиная от рабочей станции-десктопа и заканчивая разными серверными задачами.
    Про десктоп писать не буду, ставите ЛЮБОЙ понравившийся дистрибутив с графической оболочкой по умолчанию - это и будет набор самого популярного ПО. Например я пишу с ноута с убунтой (ноут хороший, стильный и дорогой ультрабук асус ux391), все рабоатет как надо.

    А вот дальше - все интереснее. Для небольших установок подойдет стандартный набор LAMP - Linux, Apache (Nginx), MySQL (PostgreSQL), PHP.
    Для связи с виндовыми машинами - Samba.
    FTP не ставьте никогда (!!!) - используйте ssh/sftp - они в стандартном наборе, это безопаснее и универсальнее.
    Сейчас очень популярна контейнеризация типа Docker/LXC/Kyberners и виртуализация KVM/XEN. Что здесь лучше - не скажу, пользую и то и то. Для быстрых вещей - контейнеры, для разделения - KVM.
    Базы разные и Mysql и Postgres, последний приятнее и может гораздо больше, но не все его могут, увы. Я же предпочитаю Redis/MongoDB/Kafka/Hbase/Elasticsearch но все под задачу.
    Из вебсерверов предпочитаю Nginx, но есть продукты, которые заточены для работы с Apache.

    Для настроек файрвола в каждом дистрибутиве есть генераторы правил - в убунте это ufw. Я же пользую firehol.

    Спрашивайте - дополню список.
    Ответ написан
  • Как можно сделать, чтобы монстры ходили по кругу?

    SagePtr
    @SagePtr
    Еда - это святое
    Если круг имеет радиус R и координаты центра X0 и Y0, то координата точки на окружности будет
    X = X0 + R * Math.cos(T)
    Y = Y0 + R * Math.sin(T)
    Где T - зависит к примеру от времени и задаётся в радианах
    Ответ написан
    9 комментариев
  • С чего лучше начать изучение PHP чтобы в конце достичь уровня профи?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Способные за 9 месяц с нуля добраться до профи даже по одному PHP, таких вопросов здесь не задают. А чтобы стать профи в C++ нужно 9 лет, не меньше.
    Ответ написан
    Комментировать
  • Как обойти граф?

    @alexalexes
    Найдите путь по алгоритму Дейкстры между двумя интересуемыми вершинами.
    Все вершины и дуги, которые не входят в этот путь - зачистить.
    Ответ написан
    Комментировать
  • Загрузка видео по API вк?

    @Jasur0090 Автор вопроса
    Нашел решение проблемы. Оказывается через сервер обычный Acces_token блокируется. Нужно при получении токена в scope прописать права&offline
    Ответ написан
    Комментировать
  • Чем отличается форум с функционалом Q&A от этого?

    @maniac_by
    Двумя вещами: Дизайном и Идеологией.
    Ответ написан
    Комментировать
  • Может кто нибудь помочь дилетанту с интернет-магазином?

    Stalker_RED
    @Stalker_RED
    И лада калина и бентли, например, довольно похожи - имеют 4 колеса, руль, педали и сиденья. Но цена почему-то сильно отличается.
    Или вот заказываете вы видео-съемку на свадьбу. Вон те студенты согласны поснимать на телефон за пиво. Местный профессиональный фотограф хочет уже $200, а если вы пригласите на съемку Спилберга - готовьте миллионы.

    Так и с сайтами. Можете загугить "заказать интернет-магазин недорого", и выбрать самый дешевый вариант, или обратитесь к Лебедеву, он удивительный счет выставит.

    Оптимальным вариантом будет найти мелкую студию, которая еще не задирает цену в космос, но уже выполнила не один десяток заказов. На движке типа опенкарта или вордпресса, чтобы не платить за "коробку" и потом не сложно было найти специалиста для доработок.
    Ответ написан
    9 комментариев
  • Чем отличается форум с функционалом Q&A от этого?

    Stalker_RED
    @Stalker_RED
    Конечно, есть и технические плюшки, типа оценок, избранных ответов, и кнопок "пригласить эксперта", но основное отличие - идеологическое.
    гренок vs крутон
    Ответ написан
    1 комментарий
  • Пропадает память. Как тренировать?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Необходимо найти баланс. Это трудно.
    1. Охранять сон. Послать всех куда-подальше и начать высыпаться.
    2. Ограничить рабочее время. Привет режим с 8 до 5. Я серьезно.
    3. Физическая активность. Заставьте себя ходить хотя бы час в день. Полчаса на работу, полчаса с работы. Выходите на несколько остановок раньше и идите. Если добираетесь на своем транспорте - паркуйтесь дальше от офиса.
    4. Отдых со сменой обстановки - поехать в другой город, на дачу, навестить родителей. Например можно поехать в соседний город. В Москве - в район, где не были или в подмосковье. Обязательно, чтобы была смена обстановки и внешнего вида. В этом плане здорово влияет рыбалка с удочкой в одиночку. Помогает расслабиться, неспешно подумать обо всем. Успокаивает нервы.
    5. Отказаться от вредных привычек. Не переедайте, не курите, не бухайте чересчур. Полностью и резко отказываться не надо, а уменьшить можно.
    6. Жене один раз сказать, что если не перестанет на вас орать, то к 45 вместо вас у нее останется холмик сырой земли. И если у нее есть с этим проблемы, пусть идет к психологу.
    7. Выгружать мелочи из головы в семейный календарик, приучать жену к нему (у меня так много знакомых делает, у кого несколько детей, там секции, праздники, всякие расписания).
    Ответ написан
    1 комментарий
  • Если клиенты часто говорят - "У меня есть сайт, сделайте что-нибудь с сайтом, я хочу его причесать, не знаю что делать", что тогда предлагать?

    Jump
    @Jump
    Системный администратор со стажем.
    У меня есть сайт, сделайте что-нибудь с сайтом, я хочу его причесать, не знаю что делать», что тогда предлагать
    Элементарно же!
    1. Выставляете счет на аудит, и составление ТЗ по необходимым доработкам.
    2. После оплаты счета - выполняете аудит, и составляете ТЗ.
    3. Выставляете счет на работы по ТЗ.
    4. После оплаты - выполняете работы по ТЗ.
    Ответ написан
    Комментировать
  • Какие можете посоветовать курсы по Unity?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Никакие.
    Читайте книги.
    Ответ написан
    5 комментариев
  • Что делать, если на ПК не устанавливаются Windows?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    В продолжение q716417 и q716023.
    Наличие в компьютере компонент, не дающих установить Windows, решается заменой оных на исправные.
    Ответ написан
    2 комментария
  • Что идет вначале Frontend или Backend разработка?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Сначала идёт архитектура и проектирование. На этом этапе появляются интерфейсы и потоки обмана данными. Дальше все бьется на задачи и делается независимо
    Ответ написан
  • Что идет вначале Frontend или Backend разработка?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    При нормальном проектировании вы знаете не образно, а точно.
    Без проектирования параллелить нечего.
    Ответ написан
    1 комментарий
  • Чем лучше анализировать поведение пользователя на сайте?

    ArsenyMatytsyn
    @ArsenyMatytsyn
    Руководитель frontend направления, предприниматель
    Matomo (Piwik)
    Ответ написан
    Комментировать
  • Как будут относится к программисту без образования?

    @Alibaba2018
    не помню точную формулировку, но была такая фраза
    "в 20 лет я думал что все обо мне думают без конца, в 30 лет - мне стало абсолютно всё равно на мнение других, а в 40 я понял что когда мне было 20 и я думал что все только и думают обо мне, всем было на самом деля на меня абсолютно по барабану"))

    я хоть и лично до 40 ещё не дошел))) но с чуть большим тридцатником скажу Вам исходя из своего опыта, что особенно много чего, кроме опыта ничего не меняется, плюс нет ни одного одинакового человека, и всё в жизни определяет результат и конечный успех (а уж как оно там было - вообще без разницы). Более того, в жизни реального серьёзного успеха достигают именно люди кот. умеют и могут сделать что то абсолютно новое или новым способом, и кот. может в корне отличаться от предыдущих методик, а по сути, школа/университет/социум - это всё социальные шаблоны, но супер-успех достигается именно разрывом шаблона, а не будучи массой и стадом
    Ответ написан
    7 комментариев
  • Как называется такой сервис для сайта?

    @nvdfxx
    Senior Pomidor developer
    Допустим, есть сервис Х, который занимается работой по определению пользователей для дальнейшей передачи в маркетинговые агентства с целью лучшей таргетированности, есть сайт А, который вы любите, на котором оставляли свои данные, этот сайт А заключил договор с сервисом Х, чтобы привлекать больше клиентов, взамен на деньги и данные клиентов. И вот, вы заходите на сайт Б, где данных своих не оставляли, но этот сайт Б тоже сотрудничает с сервисом Х, который идентифицирует вас по фингерпринту браузера/устройства и отправляет в отчете для сайта Б всю необходимую им информацию, которую сервис Х получил с сайта А
    З.Ы. на сайте А в политике конфиденциальности 100% указано, что все ваши данный могут быть переданы третьим лицам
    Ответ написан
    Комментировать