• Какие ресурсы "экономить" при алгоритмизации?

    kumaxim
    @kumaxim
    Web-программист
    Задача "экономить" технические мощности встает в трех случаях:
    1. Вы Марк Цукерберг и Вашему Facebook не хватает мощностей всех датацентров для нормального функционирования
    2. Вы программируйте тостер/утую/кофеварку и т.п. где в принципе ресурсов нет
    3. Вы мазохист и используйте шаг 0,000000001 в методе приближения чего-либо


    С моей точки зрения, написанный Вами код должен в первую очередь быть понятен другому разработчику, он должен легко читаться, возможно, расширяться. Если клиент стоит перед выбором "Нанять разработчика за 1к у.е./месяц или арендовать под свой проект еще один сервер за 250 у.е./месяц", то я сомневаюсь что он выберет первый вариант, кроме случая №1 из списка выше.
    Ответ написан
    2 комментария
  • Какие ресурсы "экономить" при алгоритмизации?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Задача программиста не писать алгоритмы, а решать конкретные задачи, посредством написания алгоритмов.

    Как только вы будете правильно расставлять приоритеты, вы будете понимать что и в каком случае следует экономить.
    Ответ написан
    Комментировать
  • Какие ресурсы "экономить" при алгоритмизации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    и увеличить при этом количество переменных

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

    Да и вообще, все очень зависит от языка программирования и компилятора.

    По самим алгоритмам можно только предсказать сложность на очень больших объемах данных и исходить из этого.
    Ответ написан
    Комментировать
  • Какие ресурсы "экономить" при алгоритмизации?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    В 99% случаев надо экономить ресурс под названием "время программиста".
    А в оставшемся 1% - исходить из реальной задачи и реальных условий по объему данных, имеющимся аппаратным ресурсам и требуемому быстродействию.
    Ответ написан
    Комментировать
  • Как на самом деле передаются биты по сетевому кабелю?

    @throughtheether
    human after all
    Как на самом деле передаются биты по сетевому кабелю?
    В честь первого апреля открою вам страшную тайну, а в случае нашествия апологетов ISO/OSI ("на физическом уровне биты, потому что так написано в стандарте/Олифере") скажу, что это шутка.

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

    Итак, биты по кабелю не передаются, по кабелю (точнее, в среде) передаются сигналы. Каждому типу среды - свой сигнал. В электрическом кабеле сигнал представляет собой изменение тока или напряжения во времени. В оптоволоконном - изменение интенсивности излучения во времени. При передаче при помощи радиоволн - изменение напряженности электрического и магнитного полей или же наведенного в антенне тока во времени.

    Далее, при помощи различных видов модуляции (modulation, keying) можно поставить в соответствие группу бит (абстрактных двоичных циферок, придуманных для удобства) некоему "кусочку" (иногда используют термин "чип", "chip") сигнала определенной формы. Допустим, биты 00 представляются как напряжение +5 вольт в течение установленного периода, 01 - +2.5 вольт, 10 - -2.5 вольт, 11 - -5 вольт. Если при этом в этот же период на кабель наведена внешняя помеха или другой трансивер передает по этой же линии, то напряжения просто-напросто сложатся (например, будет +5.1 вольт вместо +5). Тогда перед принимающим трансивером встает задача - из наблюдаемого сигнала сложной формы извлечь и обработать установленный паттерн. Это к вопросу "как один и тот же проводник одновременно может иметь напряжение и не иметь?". Более того, некоторые трансиверы отправляют сигналы по тому же каналу и в то же время, что и принимают (1000BASE-T, по-моему), то есть в кабеле наблюдается "каша" из двух передаваемых сигналов одновременно, что решается путем применения различных DSP-алгоритмов. Именно поэтому, если не ошибаюсь, нет внятного способа снять дамп трафика с гигабитной Ethernet-линии на витой паре при помощи пассивного устройства.

    Если что-то непонятно объяснил или остались еще вопросы, готов пояснить.
    Ответ написан
    3 комментария
  • Как на самом деле передаются биты по сетевому кабелю?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Наличие-отсутствие сигнала в проводе было во времена телеграфных аппаратов, т.е. примерно лет двести назад. С тех пор много чего изменилось. В современном сетевом кабеле (возьмем для примера только медь), по кабелю передаются импульсы с частотой 100, 250, 500 и более МГц, причем, не по одной, а по 2, 4 или даже 6 парам. (Вообще-то, там все несколько сложнее, но для понимания сути вполне достаточно считать пары параллельными линиями передачи.) Принято говорить о парах проводов, т.к. не бывает уровня (потенциала), самого по себе; уровень - он всегда относительно чего-то другого, например, в одном проводе относительно другого провода. Отсюда пары, а почему они называются витыми - гуглить самостоятельно. Передаваемый сигнал промодулирован т.н. Импульсно-Амплитудной модуляцией (PAM), т.е. передающая и принимающая стороны различают 3, 5 или даже 16 разных уровней сигнала, которыми, грубо говоря, и закодированы соотв. биты.

    66e6c58266524ec6bb132fb384638d75.jpg

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

    Теперь о скорости и расстоянии. Скорость распространения сигнала в проводнике на уровне школьной физики (если там, конечно, сейчас об этом вообще рассказывают) принято считать равной скорости света в вакууме, около 3m за 1 ns, но на практике она меньше, т.к. проводник не идеален и, как правило, находится не в вакууме, а в изоляции из диэлектрика. Привносимая диэлектриком паразитная емкость снижает скорость распространения сигнала в проводнике (не путать со скоростью распространения поля!) Но те, кто не прогуливал физику с математикой, вполне могут прикинуть порядок цифр для проводника длиной 1000км, как для поезда, идущего из А в Б или даже "расстояние" между двумя соседними битами, передаваемыми по одной паре :)

    Правда, полученые таким нехитрым рассчетом результаты (пусть даже с учетом волновых характеристик кабеля) все еще далеки от реальности для расстояний в тысячи км, т.к. даже в самом лучшем кабеле такой длины вся энергия сигнала передающей стороны превратилась бы в тепло и излучение, и принимающей стороне осталась бы только дырка от бублика. Длина реального сетевого кабеля между двумя устройствами (витая пара!), грубо говоря, не может превышать 100м. Дальше сигнал попадает в другое устройство, которое вносит свои задержки, и т.д. и т.п. от Таганрога, и до самого Ютюба. Конечно, не все эти устройства соединены медью, но мы не станем вдаваться в тонкости распространения света в разных оптических средах, и радиоволн в ионосфере, чтоб у среднестатистической аудитории Тостера ненароком не снесло крышу. Тут важно только то, что на практике мы имеем уже не ns, а десятки, сотни и более ms задержки.

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

    Spetros
    @Spetros
    IT-шник
    Сеть интернет состоит из множества сетей, современные сети используют технологию коммутации пакетов. Единовременно пакет существует лишь на небольшом участке сети, после прихода на маршрутизатор он передается в следующую сеть(сегмент сети).

    Насчет пакетов, есть такое понятие как Инкапсуляция.

    Рекомендую взять почитать книжку "Компьютерные сети. Принципы, технологии, протоколы" авторов: Виктор Олифер, Наталия Олифер.
    Ответ написан
    Комментировать
  • Как на самом деле передаются биты по сетевому кабелю?

    @n3k0
    Сетевая модель ISO/OSI подробно расскажет об этом. Возможно даже с картинками.
    Ответ написан
    Комментировать
  • Какой логический элемент лучше использовать для оптимальности?

    @RokkerRuslan
    Зависит от задачи. Есть ли еще надобность в ИЛИ-НЕ? Как сказали выше, можно собрать на ЛА3, но это (максимально) требует 4 И-НЕ элемента. Но если у вас есть уже инвертированные значения этих двух переменных, то потребуется только 2 элемента. А значит, если вы используете какие либо ЛА3 в режиме неиспользованного элемента (дважды), то получится сократить одну микросхему.
    Один из вариантов.
    А вообще тут большой простор для минимизаций, но нужно знать полную схему.
    Ответ написан
    Комментировать
  • Какой SSL тип подсвечивает надпись "https" зелёным?

    beatpavel
    @beatpavel
    internet marketing specialist
    EV сертификаты. Предполагают расширенную проверку организации, включая документы, звонки и т.д. Значительно повышает доверие посетителей сайта, отчего пользуются популярностью у финансовых организаций, крупных интернет-магазинов и т.д.

    ISPsystem- от 12 696 р/год
    FirstSSL - от 10 907 р/год
    RU center - от 18 550 р/год
    Ответ написан
    Комментировать
  • Какой логический элемент лучше использовать для оптимальности?

    @Eddy_Em
    ПЛИС, конечно же! ☺

    Как можно судить об оптимальности, не имея общего представления о данном устройстве? Если вам просто блок в детский конструктор нужно сделать, то это одно. А если в какую-нибудь сложную схему — совсем другое (там ради такой элементарщины дискретный элемент не имеет смысла напаивать, да еще и в DIP-корпусе — это ж вообще жесть!).
    Ответ написан
    Комментировать
  • Есть ли основные правила супер оптимизации?

    smart
    @smart
    вы меня знаете
    Тут хорошо ответили про оптимизацию написанного приложения и про то, что не надо с ней торопиться. Но также очень важно до начала написания кода правильно спроектировать архитектуру вашей системы. На задачах какого масштаба она будет использоваться? В каком окружении она будет работать? Какие требования к отказоустойчивости и резервированию?

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

    Аналогично, если вы делаете софт, запускающийся в один поток на одном компьютере – это одно, а если проектируете систему, которая будет работать параллельно на десятках ядер на сервер и сотнях этих серверов, стоящих в одном дата-центре – совсем другое (а если не в одном, а в разных дата-центрах, то вообще третье).
    Ответ написан
    Комментировать
  • Какой SSL тип подсвечивает надпись "https" зелёным?

    edinorog
    @edinorog
    Троллей не кормить!
    выданный доверенным корневым центром сертификации.
    Ответ написан
    3 комментария
  • Почему на файл стал жаловаться антивирус?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Неоднократно имел такую неприятность. В этих случаях подсовываю проблемный файл на VirusTotal, чтобы его обнюхали полсотни разных антивирусов, и по результатам принимаю решение. Этим решением чаще всего оказывается "записать в исключения", "пометить как ложную тревогу".
    Ответ написан
    Комментировать
  • Почему произошел откат?

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

    сохраняются туда, куда были настроены, восстановить базу из консоли можно так:
    mysql -u root -p
    \u databasename
    \. full-path-to-dump.sql
    Ответ написан
  • Действительно ли StowmWall пользуется каналами OVH?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Они у них арендуют выделенные сервера и настраивают на них L7-фильтрацию.

    OVH фильтрует только сетевые атаки (то есть заливание по трафику), остальное (http-флуд, например) фильтруют StowmWall
    Ответ написан
    Комментировать
  • Является ли нормальной практикой выносить что-либо в инклюд (библиотеку)?

    GavriKos
    @GavriKos
    include и библиотека могут быть совершенно разными вещами.

    А так - зависит от того, что выносится. Обычно в библиотеку выносят некий модуль, который полностью атомарен и может (должен) использоваться в других проектах.
    Ответ написан
    3 комментария
  • Может ли mysql не вытащить 30 тысяч запросов UPDATE подряд?

    opium
    @opium
    Просто люблю качественно работать
    да ему хоть миллиард запросов подряд на апдейт
    вообще с выполнением запросов подряд на апдейт почти ни одна база не испытывает проблем
    Ответ написан
    Комментировать