Pull to refresh
398
0
Evgeny Vrublevsky @VEG

C++ Developer, Reverse Engineer

Send message
Это всё равно не скажется на производительности.

Во-первых, менеджер памяти может выгружать из RAM неиспользуюмую память только страницами, по 4 килобайта. То есть если по коду разбросано много вот таких вот блоков «if», и все они не слишком велики — то большая часть этого кода всё равно будет оставаться в памяти.

Во-вторых, кода, который занимался загрузкой старых расширений, там не так много. Представьте себе HTML-документ, в который вы динамически подключаете дополнительные скрипты, которые меняют поведение этого HTML-документа как им вздумается. Вот примерно так и работали старые расширения. Код, который загружал их — крошечный, по сравнению с остальным кодом браузера. Погоды он не делает. Расширения сами по себе могли сильно замедлять работу браузера (особенно самые старые, которые работали с интерфейсом браузера через синхронные вызовы), но не сам код их загрузки.

К слову, этот код загрузки старых расширений на самом деле даже не отключён. Это я дезинформировал вас. Он работает. Ему просто запретили загружать пользовательские расширения. А вот расширения, подписанные самой Mozilla (не addons.mozilla.org!) — работают, и Mozilla этим пользуется для расширений, которые нельзя сделать средствами WebExtensions. Подробности вот тут, смотрите «legacy extension», как видите даже в обычных релизах они доступны, но только для расширений от самой Mozilla.
Обе ссылки про Firefox. Mozilla переносит некоторые наработки из Servo в Gecko, и обозвали этот проект Quantum. Если бы вы прочитали хоть немного то что по ссылке, то поняли бы, что это это не только про парсинг. Это ещё и про быстрый ответ на вопрос «нужно ли применять это правило для этого вот элемента?», которое браузер задаёт этому движку CSS каждый раз при каждом рендеринге любого элемента на странице. Там же объясняется почему этот процесс не так тривиален, как кому-то могло бы показаться.
Ну да, 65535 кодпоинов оказалось маловато. В последнем стандарте уже 136755 символов. Текущая схема кодирования UTF-16 позволяет использовать до 1112064 кодпоинтов.
Вы не следите за развитием Firefox, поэтому делаете такие неверные выводы. Они переделывают движок.

hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo
hacks.mozilla.org/2017/10/the-whole-web-at-maximum-fps-how-webrender-gets-rid-of-jank

Старые расширения имели доступ ко всем потрохам браузера (никакого стабильного внешнего API не было), и это связывало разработчикам браузера руки. Поэтому сейчас, во время больших внутренних изменений в браузере, они отключили поддержку старых расширений. На самом деле она ещё имеется в браузере, и в ночнушках (и Developer Edition) можно активировать её обратно. Но разработчики сейчас активно выпиливают старые технологии из браузера. Например, вот прогресс по выпиливанию XBL-компонентов из браузера. Как видите, подавляющее большинство всё ещё на месте. Такие изменения не делаются за одну ночь. Тут возможно на несколько лет работы. Но на данный момент поддержка старых расширений отключена искусственно. Код их поддержки и всех соответствующих технологий (XUL, XBL) всё ещё в браузере. Впрочем, это не они замедляли работу браузера. Их выпиливают просто для унификации и упрощения движка. XBL заменяют на стандартные Web Components, а XUL заменяют на HTML. Вот когда XBL и XUL не останется внутри кода интерфейса браузера — тогда их поддержку можно будет убрать из кода движка. Но это случится не так скоро.
А вот 50% времени разработки на 50% скорости — редкость. Тому же скайпу 50% не помогут — он все равно будет тормозить.
Если прирост производительности будет 50% за год разработки даже с 75% замедлением появления новых фишечек из-за этого, то глядишь за столько лет сколько он тормозит — им стало бы приятно пользоваться. И кто-то даже может быть начал бы рассматривать его как адекватный мобильный IM. А тормозит он с самого появления в 2010 (говорю про версию под Android).
Не вижу причин, почему UTF-16 мог бы быть оптимальнее. С первыми версиями стандарта Unicode казалось, что UTF-16 удобнее, потому что один кодпоинт гарантированно занимал 2 байта. Можно было легко получить длину строки из количества занимаемых ей байт, нельзя было случайно обрезать строку посреди символа. Но так как теперь один кодпоинт в UTF-16 может занимать и 4 байта, то эти преимущества исчезают. Зато появляется зависимость от порядка байт и повышенный расход памяти.
Я лично сравнивал Firefox 52, PaleMoon и Firefox 57. Всё без расширений. Firefox 57 был ощутимо проворнее. Обратное, думаю, можно будет увидеть на слишком старых машинах — требования к RAM, конечно же, несколько подросли. Накладные расходы на поддержку нескольких процессов.
Если важно именно как можно скорее выкатить продукт — то можно оптимизацию отложить на потом. Если же продукт уже на рынке, и выполняет свои задачи, то можно потратить время и на оптимизацию. Facebook писался сразу на обычном PHP, а потом они начали вкладывать деньги штуки типа HHVM для оптимизации. Последние версии PHP также гораздо быстрее предыдущих — разработчики потратили немало времени на оптимизацию. Правда, конечные веб-разработчики часто съедают возросшую проворность PHP использованием тяжёлых фреймворков.

Хороший антипример: Skype на мобильных платформах. Он похож на неповоротливого монстра. В итоге этим IM я практически не пользуюсь на телефоне. Только при крайней необходимости запускаю, и каждый раз это боль. Кажется, я не один такой: на мобильных платформах популярны совершенно другие IM, которые гораздо более шустры. И все они появились гораздо позднее Skype.
Сама Mozilla, которая развивает Rust, сейчас тратить немало денег на оптимизацию и переписывание своего браузера. Firefox 57 реально ощутимо проворнее Firefox 52. Впереди ещё много работы в этом направлении. Может быть, это поможет Mozilla предотвратить потерю пользователей, которая происходит уже много лет. Браузер пишет, скажем, 50 разработчиков. А пользуются миллионы.

Любой код, который выполняется на миллионах машин, имеет смысл оптимизировать даже на самом низком уровне, под конкретные архитектуры и наборы инструкций. Например, libjpegturbo — оптимизированный декодер JPEG — спонсируется и используется Mozilla, Google и рядом других компаний. Наблюдаю за разработкой Opus. Периодически вижу, что разработчики (помимо повышения качества кодирования) отдельно занимаются оптимизацией кодека даже для конкретных наборов инструкций конкретных процессоров (SSE, AVX и т.д.), сейчас проект спонсируется Mozilla. В разработке видеокодек AV1 — более десятка гигантов мира IT собралось для того, чтобы сделать самый лучший в мире видеокодек. И уж поверьте, без вкладывания денег в оптимизацию оно не обойдётся. Миру нужен эффективный кодек, который и жмёт хорошо, и за разумное время.

Всё зависит от задачи. Если вы пишете сайтик — его можно и на PHP написать, и то что код на этом языке, грубо говоря, в 100 раз медленнее — не так страшно, так как основной тяжёлый код (та же БД), который будет выполняться — всё равно достаточно оптимальный код на C/C++. Вот код той же MySQL имеет смысл оптимизировать. Если бы её можно было бы магически ускорить на 50% — этим стоило бы заняться. Потому что 50% ускорение для такой штуки — это реально очень много и ощутимо. Выигрыш от такой оптимизации сложно оценить в цифрах, потому что от неё по сути выиграли бы вообще все. Проспонсировать такую оптимизацию мог бы кто-нибудь, кто сам очень активно использует эту БД, и хотел бы в первую очередь сократить свои расходы на сервера, а польза для остального мира — это уже как бонус.
Но это уже не штучные тиражи. И потом — ну сэкономили вы 5 тысяч долларов на тысяче серверов. Сколько недель работы команды вы этим деньгами оплатите?
Давайте пересчитаем.
Угу. Только приведите мне пример задачи, где реально выгоднее замедлить на 50% разработку ради получения на 50% более быстрого кода?
На 50% более быстрый код, говорите? Ну так значит вместо тысячи серверов у нас будет уже 500. Предположим, сервера у нас — середнячки, по 2500$ каждый. Экономия — 1250000$.
Многие искренне считают что обновления ставить не нужно и даже вредно. Вина ли это Windows?

Я лично всегда задавал этот пароль. И смотрел с недоумением на то, что некоторые отсутствующий пароль у администратора выдавали за косяк Windows, когда на самом деле это был косяк того кто ставил систему. Надо хоть немного смотреть то, что инсталлятор спрашивает тебя, вместо «не глядя покликал по кнопкам Next и Accept».

Инсталлятор чётко говорит, что создаст учётку Администоратора, с помощью которой можно будет получить полный доступ к компьютеру, и просит пароль для неё. Даже если не обращаться к документации за подробностями, эту учётку можно было увидеть, например, хотя бы раз загрузившись в безопасный режим, где она предлагается среди прочих.
Пароль для администратора явно задавался при установке.
11. Можно ли навесить свои функции на автозагрузку?
Очень настоятельно не рекомендую это делать.
Но всё же, смог ли кто-то навесить выполнение своих команд при перезагрузке модема?

Мне нужно добавить выполнение одной команды для того чтобы я мог из интернета через Wake On LAN включить свой компьютер. Просто в панели модема настроить порт-форвардинг нельзя — он не пересылает пакет Wake On LAN когда не видит, что комп включен. И чтобы решить эту проблему, нужно выполнить в модеме команду типа этой (192.168.1.2 — IP компа, ab:ab:ab:ab:ab:ab — MAC сетевухи):
ip neigh add 192.168.1.2 lladdr ab:ab:ab:ab:ab:ab nud permanent dev br0 || ip neigh change 192.168.1.2 lladdr ab:ab:ab:ab:ab:ab nud permanent dev br0

Я создал файл /userconfig/init.sh с приведённой выше командой. Осталось придумать как заставить его выполняться сразу после загрузки модема, чтобы в случае если вдруг кратковременно пропадёт свет, модем сам сделал необходимую инициализацию.

/etc/inittab и сами скрипты, выполняемые при загрузке, находятся на read-only разделе. Перемонтировать раздел для записи командой "mount -n -o remount,rw /" не получается, ругается что не может найти соответствующую запись в /etc/fstab. Пошёл гуглить в интернете и встретил несколько человек, кто угробил свои модемы в попытке перемонтировать этот раздел для записи. Вот я и интересуюсь, известен ли правильный способ :)
У меня speaking B1+ (типа не дотянул чутка до B2) и writing B2, то есть у меня очень хороший такой Intermediate. Аттестация была пару недель назад на работе. Никаких проблем с общением. Порой, меня не остановить (когда я в ударе — говорю много и быстро), и люди вынуждены выслушивать мой монолог минут на 10. Случаются, конечно, затыки (на случай чего у меня всегда есть электронный словарик под рукой). Впрочем, чаще всего вспоминается какой-нибудь синоним или удаётся сказать то же другими словами. Говорю не всегда грамотно. Но общаться можно. Я понимаю собеседника, и собеседник понимает меня. Язык выполняет свою функцию. Для этого вполне достаточно B1.
Скорее всего у вас заниженное представление об уровне Intermediate (B1 или B2), и то что вы себе представляете себе под этим уровнем, на самом деле Elementary (A2).

image
Это не игра в «максимально выйти из зоны комфорта». Чтение книг и просмотр кино на английском — вполне себе выход из зоны комфорта. Общение на англоязычных форумах, общение с другими изучающими и иностранцами на английском — тоже выход из зоны комфорта.

И тут следует дать определение что подразумевается под «научиться на этом языке думать и получить чувство языка». Я под этим понимаю способность сразу выдавать (в достаточной мере корректные) предложения на английском, не занимаясь в голове переводом с русского, и этому можно научиться дома.
А чем reinterpret_cast плох? Вроде его для этого как раз и придумали же, и рекомендуют его использовать вместо union-ов.
В последней версии клиента в этом же меню появился пункт, который позволяет сбросить эту скрытую копию телефонной книги. Так что проблема как бы решилась. Но лучше, конечно же, было бы автоматическое решение.
Похоже, что в код редактирования комментария закрался баг, и иногда вместо изменения текста исходного комментария создаётся новый. Именно так появилось сообщение ниже (и исходное сообщение, что было выше, я удалил потом). Теперь вижу в других статьях, что люди жалуются на то же самое.
Пожалуйста, дайте возможность отключать автоматический типограф. Я всегда когда пишу — сам использую полноценное тире, «кавычки» и тому подобное, независимо от того на каком сайте я это делаю. То есть ваш автоматический типограф мне никак не помогает. Напротив, он часто мешает написать именно то что нужно. Например:
! текст
!test
Какого-то чёрта между восклицательным знаком и «текст» автоматически вставляется пробел, и никак это не обойти. Много раз попадал тут в ситуацию, когда хочу написать какой-то конкретный текст в каком-то конкретном виде, но автоматический типограф его ломает и не даёт написать так как нужно.

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

Но это не дело. Лучше вернуть старый межстрочный интервал и старые отступы.

Information

Rating
Does not participate
Location
Финляндия
Date of birth
Registered
Activity