• Предел 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
    Внимание! Изменился адрес почты!
    Ну почему "не рассказывайте"? Чем плох пример? Берется софт, базовая часть делается под 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 комментарий
  • Должен ли программист знать ассемблер?

    Adamos
    @Adamos
    Программисту желательно понимать, что происходит "под капотом" того, что он пишет.
    Но это не обязательно изучать "снизу", от машинных кодов.
    Веб-программисту полезнее будет знать, например, каким образом PHP реализует свои объекты и массивы, или что творится в памяти, когда используешь замыкание в JS...

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) Сам ассемблер знать не нужно
    2) нужно знать что ассемблер вообще есть и полезно хотя бы минимально представлять как оно там внутри все работает и что есть семантический разрыв. Ну то есть не сам ассемблер даже важен, а принципы как оно что там выполняется, что есть конвееризация и т.д. Кэш процессора, зачем он нужен и т.д.
    3) это не must have, это скорее факультативные штуки
    4) это нужно для тех кто занимается разработкой систем, для которых критична производительность (так или иначе при оптимизации приходится ковыряться в опкодах/байткоде/разбираться что там делают оптимизирующие компиляторы).
    5) это нужно для тех кто разрабатывает средства для дебага и профилирования.

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