• Оперативка ecc и non ecc?

    hint000
    @hint000
    у админа три руки
    ECC DDR3 лично пробовал без поддержки - просто не запустилась (без последствий для материнки и для памяти).
    Интереснее этот вопрос для DDR4 в сочетании с Ryzen; процессоры поддерживают ECC, и как минимум система должна запуститься, но будет работать как с обычной памятью. Чтобы работала функция коррекции ошибок, нужна поддержка на уровне BIOS.
    Ответ написан
    Комментировать
  • Почему приложение на C# съедает в 5 раз больше ожидаемого объема памяти?

    @asvishnyakov
    Программист
    1. List<> выделяет память кусками «про запас». Это называется capacity и отвечает за него одноимённое свойство. Если вы знаете, что ваш список в среднем будет содержать не больше N элементов, то это N нужно передать в соответствующий конструктор List<>.
    2. Можно подсчитать байты и использовать выравнивание. Процесс трудоёмкий, но если сейчас много «пустого места», то в итоге вполне могут выйти желанные ~80МБ.
    3. Ну и упомянутые утечки памяти. GC.Collect и memory profiling вам в помощь.

    Ну а людям ноющим о медленности «управляемых» языков, больших DLL и 100 МБ памяти для .NET по-умолчанию и предлагающих перейти на другие языки, я предлагаю пойти поучиться у англоязычных коллег, которые не ноют по каждому случаю, а стараются действительно помочь разобраться в проблеме, в данном случае — увеличить производительность. Извините, накипело.
    Ответ написан
    Комментировать
  • Как работает Timer в WPF?

    FirstX
    @FirstX
    .net developer
    Для общей справки в дополнение к первому ответу, есть грубо говоря 2 основных разновидности таймеров:

    1. System.Threading.Timer - Ставит задачу в пул потоков, поэтому подходит для тех, случаев, когда задача выполняется по таймеру в фоновом режиме. Например ваш объект изменяет параметр Х, но на форме этого не видно.

    2. System.Windows.Forms.Timer (для WinForms) / System.Windows.Threading.DispatcherTimer (WPF и Silvelight) и System.UI.XAML.DispatcherTimer для приложений Win Store еще есть - это все аналоги, которые вызывают исполнение метода в том же потоке, что и был вызван. Благодаря этому, обеспечивается доступ к элементам графического интерфейса, но при этом сюда лучше не помещать сложную вычислительную логику
    Ответ написан
    Комментировать
  • Получится ли сохранить файлы в торрентах или IPFS, на десять лет?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    ... а потом они выходят на улицу и обнаруживают, что мир вовсе не таков, каким он казался из уютненькой соцсети...

    Бесплатного ничего не бывает. Даже "бесплатный" софт - он либо идет в паре с таким же, но платным с большим количеством фич, либо его оплачивают спонсоры.
    И уже тем более не бывает бесплатных систем хранения, ни от кого не зависящих. Любая система хранения кому-то принадлежит - государству, корпорации, частной фанатской группировке. И этот кто-то, кому она принадлежит, устанавливает правила пользования ею такие, какие ему вздумается.

    ValdikSS дал замечательный ответ. Вот смотрите, вот есть у него свой сервис по файлообмену - будет ли он существовать через десять лет?
    Ответ написан
    3 комментария
  • Какой оптимальный размер буфера?

    @Ivankon
    Смотрел исходники Майкрософта, и там применительно к C# для копирования файлов выбран буфер 81920, объясняется это так: "Выбираем значение, которое является самым большим кратным 4096, но которое по-прежнему меньше порога кучи больших объектов (85K)." Считаю что это самый оптимальный буфер для копирования.
    Ответ написан
    Комментировать
  • Как правильно соединяться с базой в нагруженных проектах?

    Stdit
    @Stdit
    Однажды ошибка в этом месте (делать одно глобальное соединение с БД) стоила мне целых выходных. Сразу оговорюсь, что использовался не mysql, а модуль node-postgres, но суть должна быть одинаковой. При большой нарузке длинные запросы блокировали сокет базы, и как следствие работу всего сервиса. Поэтому нужно было срочно переделывать модель на Connection Pool, который на этапе разработки как-то ушел из внимания, так как на одном коннекте с небольшой бд тестовых данных вроде бы все было хорошо. :)

    Пул может организовать несколько параллельных подключений, которые не будут мешать друг другу. По окончании запроса подключение освобождается и уходит в пул. При отсутсвии свободных слотов в пуле запрос ставится в очередь до освобождения одного из слотов. Что касается доступа в БД, я использовал простейший вариант — непосредственный доступ через модуль и его параметры подключения по умолчанию. В каждом файле, который нуждается в БД, делается require драйвера БД и через него происходит обращение в базу. При использовании пула надо обязательно следить за освобождением соединений (функция done). Количество соединений в пуле задается опцией настроек модуля.

    О том, как использовать пул в pg, можно почитать здесь.
    Ответ написан
    3 комментария
  • PHP: как вызвать метод из родительского класса, который мы переопределили?

    Использовать конструкцию языка
    parent::showField();
    Ответ написан
    Комментировать
  • Что такое slug в разработке?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Чаще всего, как уже написали, встречается в URL, но все же его значение чуть более шире - slug это уникальная строка идентификатор, понятная человеку (в отличие от ID) и содержащая только "безопасные" символы:
    - 0-9
    - a-z (общепринято - в нижнем регистре)
    - символ -
    - иногда еще символ _
    Могут использоваться не только в URL для понятности, но и, например, в запросах к БД (в первую очередь - на уровне АПИ) - ведь
    SELECT * FROM pages WHERE category="some-slug"
    более понятно, чем
    SELECT * FROM pages WHERE category=126.
    На уровне API это выглядит как
    get_pages_in_category( 'some-slug' )
    или
    $object->get_pages_in_category( 'some-slug' ).
    В общем, это человеко-понятный уникальный идентификатор.
    Ответ написан
    1 комментарий
  • SaaS: одна БД на клиента, или общая база данных?

    darkdimius
    @darkdimius
    В postgresql есть еще один уровень, кроме табличного — scheme. По умолчанию все таблицы создаются в схеме public, в разных схемах могут быть таблицы с совпадающими именами.
    В результате можно было бы для разных пользователей создавать схемы в одной бд.
    Возможно и у mysql есть подобный функционал?
    Ответ написан
    Комментировать
  • SaaS: одна БД на клиента, или общая база данных?

    abarmot
    @abarmot
    Решал аналогичную задачу и столкнулся с теми же вопросами, что и вы.

    С одной стороны по базе на клиента — недопустимое расточительство. Как правило саасы подразумевают тысячи компаний-клиентов, а тем кто просто зайдет посмотреть не будет числа.

    Если же база одна — в скором времени какая-нибудь быстро растущая таблица станет «неуправляемой» и серьезно просадит производительность. Конечно можно разносить такие таблицы на партиции, но в нашей ситуации есть более интересное решение.

    Надо держать несколько БД и в каждой несколько сотен компаний. При этом новые базы можно добавлять по мере развития.
    Какое-то время вам вообще будет достаточно одной базы.

    Несколько рекомендаций:

    1. одну из БД (очевидно первую) назначаем мастер- или «системной» базой. только в ней будет хранится данные общие для всей системы. Например новости вашей системы, глобальные настройки и конечно главное — список компаний клиентов.

    2. во все таблицы с клиентскими данными внести поле COMPANY_ID. Более того внести его в состав всех первичных и внешних ключей. Т… е. первичный ключ таблички ORDER будет (COMPANY_ID, ID)

    3. ID инкрементировать в рамках компании, а не всей таблицы. Т.е. у каждой компании будет заказ с ID = 1,
    2 и т.д.

    Пример:

    COMPANY (id, name) — «системная» таблица с компаниями-клиентами

    ORDER( company_id, id, customer ) — «клиентская» таблица заказов
    PRODUCT( company_id, id, name ) — каталог товаров компании
    ORDER_ITEM( company_id, order_id, product_id) — продукты в заказе

    первичные ключи:
    в ORDER и PRODUCT — (company_id, id)
    в ORDER_ITEM — (company_id, order_id, product_id)

    внешние ключи в ORDER_ITEM:
    (company_id, order_id) → ORDER( company_id, id)
    (company_id, product_id) → PRODUCT( company_id, id)

    Такой подход дает во-первых максимальную изолированность данных компании.
    Во-вторых — возможность переселиения компания из одной БД в другую без конфликта первычных ключей.

    Если будут вопросы — пишите в местную почту ;)
    Удачи.
    Ответ написан
    3 комментария
  • Куда уйти с PHP?

    KOLANICH
    @KOLANICH
    Знаю JS, PHP, C++, C#
    Но одно но - постоянные срачи.

    Вы из-за какого-то быдла собираетесь сменить ЯП?
    PHP отлично подходит для своей ниши - странице-ориентированный вебдев.
    Не fastcgi, не вебсокет-сервер, а именно "отдал документ и умер".
    Для остального нужны другие технологии, например node.js или вовсе nginx с модулем на си.
    Ответ написан
    Комментировать
  • Какие камеры для видеонаблюдения на основе linux посоветуете?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    а причем тут камеры???? Выбирать камеры, опираясь на ОС регистратора - это как выбирать автомобиль, основным критерием поставив цвет гаража....
    Ответ написан
    3 комментария
  • Блокировка IP в nginx после определенного числа 404-ых запросов (подряд или в час)

    @rozhik
    Есть хороший модуль
    limit_conn_status 404
    Самплов много в гугле по диррективе.
    Ответ написан
    Комментировать
  • Переустановка операционной системы через удалённый доступ?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Еще могут помочь хорошие друзья иммигрантов, оставшиеся на родине. Особенно в обмен на помощь в приобретении и пересылке чего-нить с ебая.
    Ответ написан
    1 комментарий
  • Переустановка операционной системы через удалённый доступ?

    Alukardd
    @Alukardd
    Ну или да как вариант у любой ОС, будь то Windows или GNU есть возможность подготовить unattended установку (так называется для винды, для различных дистрибутивов Linux есть FAI и т.н. preseed).
    Ответ написан
    Комментировать
  • Упал ЖК монитор. Можно ли починить?

    nZeus
    @nZeus
    2. Не опасно, она давно уже выветрилась. Можно обрабатывать место разбития люминесцентной лампы мыльно-содовым раствором(4% раствор мыла в 5% содовом растворе). В вашем случае надо было всего лишь проветрить помещение где упал монитор.
    Про ремонт не скажу- не сталкивался.
    Ответ написан
    1 комментарий
  • Какой корпоративный мейл-сервер вы предпочитаете?

    alekciy
    @alekciy
    Вёбных дел мастер
    Стандартный набор: Postfix+Dovecot+SpamAssasin+Sieve
    Ответ написан
    5 комментариев