Задать вопрос
  • Предел I/O на вебсервере?

    Smithson
    @Smithson
    20+ лет админю
    как узнать какой их предел
    Вот это только опытным путём. Начнёт сервер тормозить и при этом видно, что тормозит по IO - значит, уперлись в предел.
    Смотрите на выводы iostat и top. Еще могу порекомендовать пакет sar, но его а) надо ставить б) уметь готовить.
    Ответ написан
    Комментировать
  • Оптимальное количество подключений к vpn?

    @iSergios
    Python-разработчик
    Эта VPS'ка по железу не пукнув потянет over 30 клиентов, и еще останется куча ресурсов - канал забьется раньше.

    На одной из моих VPS'ок (1 core CPU, 512Mb RAM) с полным комфортом тусят 5 клиентов (правда, без пиринга), при этом ни проц, ни память ни разу не достигли 70%.
    Ответ написан
    5 комментариев
  • Каким образом после преобразования long в Long я смог получить null?

    Olej
    @Olej
    инженер, программист, преподаватель
    Возможно ли, что это редкий косяк JVM?

    Практически исключено.

    Или какие еще могут быть варианты?

    Возможно, это косяк в вашем коде ... и не столь редкий. ;-)
    Ответ написан
    Комментировать
  • Должен ли Web-разработчик уметь администрировать сервера?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Администрировать - нет. В нормальных компаниях это делают отдельные люди, хотя бы по соображениям безопасности.

    Пользоваться консолью на уровне "скопировать файл / запустить скрипт", уметь отредактировать crontab, знать чем хардлинк отличается от софтлинка итд - да.
    Но не надо называть это администрированием.
    Ответ написан
    Комментировать
  • Можно ли заработать в мире Unix-like, unix-way?

    @Z-r
    Мне известно четыре основных способа заработка, напрямую связанных со свободными программами:

    — Первый, самый прямой, но от того почему-то всем не менее неочевидный — брать и продавать копии свободных программ. Аудитория: любые конечные пользователи. Примеры: Parted Magic, ряд программок для «Андроида», ну например, «Conversations». Высокоморальность: в полном порядке.

    — Второй — это уже известная вами продажа поддержки. А фактически иногда и просто своего имени, когда какая-то реальная поддержка начинается с сумм несколько больших, чем базовый контракт. Аудитория: те, для кого ваша программа есть орудие производства, то есть компании и предприниматели. Пример: уже озвученный вами Canonical. Высокоморальность: в полном порядке.

    — Третий — это продажа исключений из авторского лева. Аудиторией будут разработчики несвободных программ, а программа ваша должна быть библиотекой под (как нетрудно догадаться) авторским левом, причем чаще сильным. Суть в том, что для добрых людей ваш продукт свободен на условиях, скажем, GNU GPL или GNU AGPL, а проприетарщики пусть платят за возможность использовать его в своих шкурных интересах. Примеры: GhostScript, MySQL. Высокоморльность: прихрамывает маленько.

    — Четвертый — это то, о чем помянул тов. CityCat4 — т. н. free crippleware, то есть полноценная ваша программа несвободна и платна, но у нее есть свободный урезанный вариант. Причем урезано может быть как что-то существенное, так и сущая ерунда. Аудитория: кто угодно. Примеры: Odoo, GitLab, ProcessMaker. Высокоморальность: от невысокой до никакой, смотря сколько отрезано.

    И разумеется, все вышеперечисленно можно комбинировать: Qt, к примеру, и поддержку (обучение) предоставляет, и исключения из авторского лева (причем слабого!) продает, и совсем ерундовую несвободную часть имеет. А упомянутый вами Red Hat — продает копии и предоставляет поддержку. А иногда и такое бывает: программка для «Андроида» под названием OsmAnd полностью свободна, но поставляется в Гуглоплэе в двух вариантах: полном за копеечку и урезанном бесплатно. Еще раз: обе версии свободны, то есть никакой моральной проблемы здесь нет.

    ――

    P. S. Я перечислил только способы заработка на программах как таковых, полагая, что схемы, где свободные программы участвуют косвенно, и без того очевидны, но в комментариях только о них и говорят, так что надо, наверное, упомянуть, что да, конечно, свободная программа также может быть:
    — Частью продаваемой услуги — чаще всего услуги специфического хостинга, как ставимый здесь в пример Openshift или (если ближе к народу) Feedly.
    — Частью продаваемого устройства, причем само устройство может быть как свободным, так и нет. Тысячи их.
    — И наконец, просто частью приносящего прибыль техпроцесса. То есть компания пишет (заказывает) программу себе для внутреннего использования и могла бы ее вообще не распространять, но, не считая ее своим «ноу-хау», ведет себя благородно и просто свободно делится ею со всеми. Известнейший пример — Reddit (хотя в последнее время они подскурвились).

    ――

    И не могу все-таки не отметить, что unix-way отношение к свободе имеет такое же, как мелкое к горячему.
    Ответ написан
    2 комментария
  • Можно ли заработать в мире Unix-like, unix-way?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Ну почему "не рассказывайте"? Чем плох пример? Берется софт, базовая часть делается под OSS-лицензией, а для получения дополнительных плюшек (без которых работает базовая часть) - покупай либо Pro-версию (расширенную, какую-нибудь еще), либо покупай поддержку - в общем несите ваши денежки. Очень часто поддержка идет в нагрузку. Так работают не только RH/Canonical, так работает не менее успешная VmWare :) - гипер на один хост ставишь забесплатно, ограничений там, существенных для одного хоста нет - а для расширенных инструментов - покупай :) Так работает Zimbra, да много кто.
    Ответ написан
    7 комментариев
  • Существует ли "карта программиста"? Что и за чем учить?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Нет одинаково эффективного пути для всех и каждого.

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

    Тут главное - настолько сильно хотеть достичь результата, чтобы любые препятствия только добавляли азарта. Чтобы ночами спать не мог и думал о задаче. Это ключевой момент обучения. Все остальное - декорации, способы, инструменты...

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

    Каждый модуль запиливаешь и тестируешь до умопомрачения, пока он не станет идеальным. Тут мнения могут расходиться, но я считаю на этапе обучения необходимо выработать рефлексы, иначе в дальнейшем говнокод неизбежен.

    Далее из модулей, как из кубиков лего пытаешься собрать функциональные блоки. Тут важно понимать, что чем более автономные модули и блоки у тебя получаются, тем лучше, особенно для целей тестирования. Если ты забиваешь болт на тестирование, то тебе нечего делать в разработке.

    На первых порах, тестирование будет занимать до 99% времени и сил. Заодно подтягивается синтаксис используемых языков (вообще не важно каких), вырабатывается внимательность, концентрация, тренируется память и пр.

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

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

    Только так, только жесткий хардкор! Если ты не прошел эту фазу, то ты либо родился гением, либо тебе нечего делать в профессии... Это как детские болезни - ими нужно переболеть в детстве.

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

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

    Ах да, обложись справочниками по любому инструменту и научись быстро вникать и подхватывать необходимый минимум. Обычно достаточно на 20% владеть инструментом, чтобы решать 80% задач.

    В любом случае я за критерий истины держу платежеспособный спрос.
    Ответ написан
    3 комментария
  • Какими методами можно узнать доставлено ли email письмо?

    1. Основной метод контроля доставки - слежение за ошибками отправки (bounce). Ошибка чаще всего дается непосредственно в SMTP-сессию. В некоторых случаях сервер получателя принимает письмо, но в дальнейшем формирует сообщение о невозможности доставки (NDR).
    По стандартам, выдача сообщения о невозможности доставки в SMTP-сессию или отправка NDR являются обязательными, если ваше письмо прошло авторизацию (SPF и/или DKIM) - вы можете быть уверены, что получите баунс в SMTP-сессию или NDR если письмо не будет доставлено практически на 100%. Поэтому если на письмо в разумное время не получено отлупа, можно считать его доставленным. Сообщения о невозможности доставки идут на адрес отправителя SMTP-конверта (envelope-from). Чтобы точно знать, на какой адрес какое письмо не было доставлено, можно для каждого отправляемого письма формировать уникальный envelope-from.

    2. Есть расширение SMTP которое называется delivery status notification
    https://tools.ietf.org/html/rfc3461
    при отправке письма можно запросить, чтобы подтверждение доставки письма в ящик или на сервер получателя, не поддерживающего DSN пришло в явном виде. Подтверждения формирует MTA без участия пользователя. Поддерживается не всеми (например, postfix поддерживает, exim нет).

    3. Есть нестандартный заголовок Return-Receipt-To, который работает примерно так же как DSN. Но поскольку он нестандартный, его поддержка крайне ограничена.

    4. Есть стандартный (RFC 3798) заголовок Disposition-Notification-To упомянутый выше, это не уведомление о доставке, а уведомление о прочтении. Запрос на это уведомление как правило показывается пользователю и требует его подтверждения. Не надо использовать этот заголовок, если вы не хотите, чтобы вас прокляли.

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

    6. (привет модератору). Таки есть службы типа postmaster.mail.ru и postmaster.yandex.ru, которые позволяют отслеживать доставляемость писем получателям данных сервисов, а это порядка 70-80% всех получателей. В данных службах можно смотреть статистику по доставляемости писем, попаданию в папку спам, действия с письмами (чтение, помечания спамом, удаления с прочтением/без прочтения). Причем можно задавать категории писем через специальный заголовок или селекторы DKIM и получать статистику раздельно по категориям писем. Это позволяет получить информацию даже по отдельному письму, задав ему отдельную категорию. Но делать так массово не стоит.
    Это основной источник данных по попаданию в спам / удалению без прочтений, etc.

    Немного не в тему, но может помочь:

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

    8. Почти все крупные сервисы поддерживают FBL. Вы можете в реальном времени узнавать, если на вашу рассылку идут жалобы пользователей.
    Ответ написан
    2 комментария
  • Что учить, чтобы расти в сторону DevOps?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    DevOps расшифровывается как Development Operations.
    В повседневные задачи DevOps инженера входит управление инфраструктурой приложений (в основном веб).
    Что должен знать и уметь такой инженер - например по клику кнопкой в нужном датацентре произошел деплой приложения. DevOps должен суметь создать этот интерфейс с кнопкой и автоматизировать процесс приобретения инстанса (например в AWS), установки операционной системы и необходимых пакетов, доставки приложения на этот инстанс, прописывания всех настроек в приложении и приведение приложения в полную боевую готовность, т.е. состояние, в котором к приложению можно пускать пользователей.

    По пунктам, что нужно знать и уметь:
    • неистово учиться и гуглить
    • сетевые технологии, на уровне маршрутизации, TCP/IP, DNS, SMTP и остальных протоколов начиная с 3 уровня модели OSI
    • сетевые операционные системы (преимущественно семейства Linux) на уровне автоматизирования установки, обновления, настройки безопасности и мониторинга
    • системы виртуализации (Xen, OpenVZ) и контейнеризации (Docker, Vagrant)
    • настраивать сервера и мигрировать конфигурации, например перейти с Apache на Nginx, или с PHP на HHVM
    • Chef
    • Puppet
    • Ansible
    • Capistrano
    • VCS
    • AWS/OpWorks/CloudFormation/CodeDeploy, OpenStack
    • Munin/Logstash/Kibana и другие связки для мониторинга
    • Continuous delivery
    • Программировать на Bash, Ruby, Python, Go, Perl, уметь понимать конфиги на самых экзотических языках, например YAML
    • TDD
    • продукты hashicorp
    • автоматизировать создание и восстановление бэкапов баз данных
    • масштабировать приложения по горизонтали (настраивать балансировщики, реверс-проксирование, шардинг и репликацию в базах)
    • рассчитывать и оптимизировать издержки на поддержание инфраструктуры приложений
    • видеть будущее инфраструктуры приложения и компании, двигать инфраструктуру в это будущее


    DevOps - это хипстерный вариант программирующего сисадмина. Нужно уметь очень быстро учиться и непрерывно осваивать новые технологии. Если какая-то технология только в альфе, вы уже должны учиться уметь ею пользоваться. В момент беты вы ее уже должны обкатывать в пилотных проектах, а релиз должен автоматизированно устанавливаться в продакшене.
    Ответ написан
    13 комментариев
  • Ошибка времени выполнения: Значение было недопустимо малым или недопустимо большим для Int32, как это решить?

    @Mercury13
    Программист на «си с крестами» и не только
    1. У вас неправильная формула корней.
    2. Хотелось бы узнать, чему равны a, b, c.
    3. Зачем вы округляете?
    4. Собственно причина ошибки. Думаю, у вас отрицательное d, sqrt(d) = NaN (не-число), и ваша реализация Паскаля вот так поступает, когда нужно округлить NaN.
    Ответ написан
    Комментировать
  • Как узнать какие ATA стандарты поддерживаются жёстким диском?

    15432
    @15432
    Системный программист ^_^
    Используем ATA команду IDENTIFY DEVICE (0xEC), в ответе будет содержаться наиболее полная информация об устройстве.
    Поля ответа:
    https://msdn.microsoft.com/en-us/library/windows/h...
    Пример посылки ATA команды:
    stackoverflow.com/questions/12942606/ata-command-d...

    Для выполнения запроса для внутреннего диска нужны права админа.

    Ещё можно спросить общую информацию, используя средства винды, например, через STORAGE_QUERY_PROPERTY, админских прав вроде не требует, но и информация не такая полная
    https://msdn.microsoft.com/en-us/library/windows/d...
    Ответ написан
    5 комментариев
  • WIFI мост на 70+км?

    Jump
    @Jump
    Системный администратор со стажем.
    1)Вы уверены что есть прямая видимость?
    2)Зона Френеля около 30м
    Не знаю горы у вас там или равнина, но даже если там идеальная равнина, деревья все равно присутствуют, т.е мачты должны быть с обоих сторон не менее 50метров.

    В принципе если нет препятствий на пути сигнала и в зоне Френеля, то можно попробовать, хотя деньги конечно космические.
    Ну и ожидания скорости явно завышены 5 мегабит вполне может получится, но никак не 50.
    Но это если рядом нет крупных городов и беспроводных сетей.
    У вас по схеме одна из точек будет размещаться в мегаполисе - а это уже нереально.

    Неужто там так плохо с интернетом, что даже ADSL нельзя протянуть?
    Ответ написан
    5 комментариев
  • Какие есть компиляторы си, которые могут генерировать "сырые" бинарники?

    @Mirn
    например в сборке GNU GCC для ARM есть такая утилита как objcopy, она конвертирует форматы, в том числе может перегнать ELF в голый бинарник, например так:
    arm-none-eabi-objcopy -O binary "Boot_F4_fast_uart.elf" "Boot_F4_fast_uart.bin"
    так что советую ознакомиться с маном на objcopy
    https://sourceware.org/binutils/docs/binutils/objc...
    Ответ написан
    1 комментарий
  • Как установить систему на старый жесткий диск?

    @LiguidCool
    Скорее всего надо поставить режим HDD из AHCI в Legacy.
    Ответ написан
    Комментировать
  • Вопрос про безопасность в режиме невидимки в браузере?

    SagePtr
    @SagePtr
    Еда - это святое
    В режиме невидимки у браузера отдельный набор куки, и этот набор действует одну сессию, до закрытия невидимки. Само собой, от других видов атак это никак не защитит.
    Ответ написан
    2 комментария
  • Как сделать форму запроса данных на сайте и не иметь проблем с Роскомнадзором и 152 ФЗ?

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

    Возьми текст соглашения об обработки персональных данных в интернетах. Галочку с подтверждением по дефолту делай чекнутой.
    Ответ написан
    2 комментария
  • Каков набор утилит для компьютерной помощи?

    @skazi_premiere
    Верстаем как умеем ;) HTML/CSS/JS
    Почему обычно чаще всего рекомендуется переустановка системы, КПД поиска ошибок стремится к 0. Да мы знаем где почистить лишние хвосты или изменить настройки, но говорить RegCleaner, AWDCleaner или KAVBootCD пользуйся не пожалеешь? Да ну бред же.
    Из стандартов тест памяти и диска (можно на вирусы), если причина не в них то при средней по больнице от 300-500р в час, поиск и устранение неисправностей будет стоить очень дорого для заказчика. Поэтому переустановка самый верный вариант, в случае если это не критичный сервер.
    Ответ написан
    5 комментариев
  • Адекватный регистратор ru, рф со сменой Администратора по безбумажке?

    Насколько мне известно, требования Ру-центра таковы, что все сделки по ru/рф доменам должны быть официально оформлены. Те, кто предоставляют "безбумажную смену" используют костыль в виде оформления домена на себя. Так что придётся выбирать одно из двух.
    Ответ написан
    1 комментарий
  • SSD + Linux как поступить?

    Jump
    @Jump
    Системный администратор со стажем.
    ОБщий принцип размещения файлов такой -
    На SSD размещается информация с которой часто и много работают - читают, пишут изменяют.
    Т.е своп, профили пользователей, временные файлы - в первую очередь. Ну и желательно систему.
    На HDD размещается информация которую больше хранят чем используют, либо скорость работы с которой не критична - архивы, видео, фото, и прочие объемные и относительно редко используемые файлы.

    В итоге на SSD однозначно -
    /tmp
    /var
    /lib
    /root
    А вот
    /home - тут надо смотреть, по идее тоже весь на SSD надо, но если там есть тяжелая статика, то ее желательно вынести на HDD.

    Много споров, о том стоит ли отключать журналирование
    Споры тут бессмысленны.
    Если логи нужны (а они нужны), то они должны быть.
    Никакого серьезного негативного влияния на диск они не оказывают, и отключать их ради сбережения ресурса диска попросту не имеет смысла.
    Тоже самое насчет журналирования.

    Желательно проверить работу TRIM, не забивать диск под завязку.
    Если предполагается регулярная запись на SSD больших объемов информации желательно оставить over provisioning, то же самое если TRIM не работает.

    Своп не нужен, ОЗУ хватает.
    Достаточный объем памяти гарантирует то что своп будет использоваться редко и мало. Но ни в коем случае не отменяет его необходимости. Своп нужен при любом количестве памяти.
    Ответ написан
    8 комментариев
  • Большой проект на С. Как строить работу чтобы не завалило кодом?

    Декомпозировать проект на несколько проектов с независимой разработкой и документированным API.
    В случае серверной системы - разбить на несколько независимых взаимодействующих сервисов, что, кроме всего прочего, еще и упростит горизонтальное масштабирование и переход к высоким нагрузкам.
    Выделить в отдельную разработку отдельные компоненты и библиотеки, для упрощения интеграции и сборки можно сделать библиотеки динамическими/разделяемыми.

    Это потянет за собой новые проблемы и необходимость содержать системного архитектора, но рано или поздно все равно потребуется при таком объеме кода.
    Ответ написан
    Комментировать