1.1, pavelpat (ok), 09:26, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Хорошая новость. А разработческие сборки есть, чтобы уже сейчас посмотреть? Пусть даже неработоспособные.
| |
|
|
3.17, XXasd (?), 10:36, 15/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
а запускаться без открытия слущающего socket-порта -- оно умеет ли?
| |
|
4.22, Аноним (-), 10:57, 15/03/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
ХЗ, спроси у девелоперов. Писать интерфейс на node.js - верх маразма
| |
|
5.53, Ан (??), 13:39, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну vivaldi же работает, работает. Atom работает, работает. Вполне себе рабочее решение. Так что маразмом это уже не назовёшь.
| |
|
|
|
|
1.2, A.Stahl (ok), 09:31, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
>web-браузера Browser.html
А в каком браузере будет открываться этот html-браузер?
| |
|
2.31, llolik (ok), 11:55, 15/03/2016 [^] [^^] [^^^] [ответить]
| +3 +/– |
Как я понял, от собственно браузера остаётся только ядро на Rust. А весь GUI строится на HTML5 и JS.
Интересно поглядеть, что из этого получится, т.к. ИМХО позволит Mozilla сосредоточится на Servo как таковом, не напрягаясь с XUL и т.д. плюсом получается практически даром одинаковую работу на любой платформе (HTML жеж).
| |
|
3.68, XXasd (?), 16:41, 15/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
> одинаковую работу на любой платформе
А что -- HTML через магию чтоль показывается на экране?
А -- загрузка файлов, webgl, desktop нотификации , ды хоть даже отрисовка шрифтов!
| |
|
4.79, llolik (ok), 21:39, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
А всем вот этим не движок занимается, которым предполагает быть servo? Интерфейс предполагается сделать на html, не весь же браузер в самом деле. Будем посмотреть, что из этого получится.
| |
|
|
|
1.4, Аноним (-), 09:35, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –10 +/– |
>интерфейсом на базе технологий HTML5
Vivaldi
>Страница занимает всё экранное пространство. В верхней части выводится небольшая панель с базовыми управляющими элементами, адаптивно меняющая своё назначение
Yandex.Труселя
Натырили идей из других браузеров.
| |
|
2.42, Аниним (?), 12:39, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
Ты что в яндексе целая команда трудилась год над фишками и идеи сами придумывали.
| |
|
|
2.27, Аноним (-), 11:13, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
На самом деле, они просто не хотят платить хостеру за перерасход траффика и вычислительных мощностей, который получается из-за роста аппетитов при копании в пользовательских данных.
Привет Кандализе Райз :)
| |
|
1.7, A.Stahl (ok), 09:39, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +9 +/– |
>>Интерфейс Browser.html примечателен отказом
>адаптивно меняющая своё назначение
>всплывающих только при подведении курсора
Я тут долго расписывал маты, а потом подумал: "А кому они нужны?".
Остаётся надеяться,что из-за html-ной сущности интерфейса нормальные люди быстро приведут его в юзабельное состояние когда одни и те же кнопки отвечают за одни и те же действия и находятся в одних и тех же местах. И когда ничего не мигает, перерисовывая страницу из-за вечно уезжающих панелей с важной информацией.
| |
1.8, Анаон (?), 09:43, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +10 +/– |
>>Изначально реализация хранилища была написана на языке Go, но показала низкую эффективность с точки зрения потребления памяти при больших нагрузках. Переход на Rust позволил существенно сократить потребление памяти.
Вот это новость :)
| |
|
2.12, Аноним (-), 10:06, 15/03/2016 [^] [^^] [^^^] [ответить]
| +5 +/– |
Тоже удивило. Ещё б деталей бы. Какая версия Go была? Сколько смогли памяти сэкономить? Насколько изменилась производительность?
| |
2.19, angra (ok), 10:47, 15/03/2016 [^] [^^] [^^^] [ответить]
| +6 +/– |
Для большинства программистов и решаемых ими задач выигрыша у Rust по сравнению с Go не будет. Причины использования:
Primarily, for this particular project, the heap size is the issue. One of the games in this project is optimizing how little memory and compute you can use to manage 1GB (or 1PB) of data. We utilize lots of tricks like perfect hash tables, extensive bit-packing, etc. Lots of odd, custom, inline and cache-friendly data structures. We also keeps lots of things on the stack when we can to take pressure off the VM system. We do some lockfree object pooling stuff for big byte vectors, which are common allocations in a block storage system.
It's much easier to do these particular kinds of optimizations using C++ or Rust.
In addition to basic memory reasons, saving a bit of CPU was a useful secondary goal, and that goal has been achieved. The project also has a fair amount of FFI work with various C libraries, and a kernel component. Rust makes it very easy and zero-cost to work closely with those libraries/environments.
Также новость скромно умалчивает о том, что Dropbox использовала Rust для одной единственной подсистемы:
Actually, full disclosure, we really just rewrote a couple of components in Rust. Most of Magic Pocket (the distributed storage system) is still written in golang.
При этом
- Python is our primary development language for most stuff at Dropbox.
- Mobile development and UI code use whatever is appropriate for each platform.
- Go is the primary language for Infrastructure, meaning fairly deep-backend stuff: databases, storage systems, message pipelines, search indices etc.
- Rust is used on Magic Pocket (which is within Infrastructure).
| |
|
|
4.49, angra (ok), 13:13, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Также как Go, Swift и D
Ни один из них не является универсальной заменой, но каждый хорош по-своему. Вряд ли один из них заменит С++ полностью, скорее каждый из них потеснит С++ и Java в одной из занимаемых ими ниш, но друг другу они при этом особо мешать не будут.
Отдельно стоит заметить, что в отличии от трех других Rust может быть заменой не только плюсам, но и чистому С.
| |
|
5.50, Аноним (-), 13:23, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
>Ни один из них не является универсальной заменой, но каждый хорош по-своему.
Правильный вариант:
>Ни один из них не является универсальной заменой, но каждый плох по-своему. | |
|
6.52, angra (ok), 13:32, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну начни с рассказа о том, чем плох Rust в сравнении с плюсами.
| |
|
7.96, Аноним (-), 17:33, 18/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ну начни с рассказа о том, чем плох Rust в сравнении с плюсами.
На плюсах можно программировать даже микроконтроллеры, чем ардуина и занимается. Покажешь такое на rust? Универсальность и масштабируемость инструмента - это хорошо.
| |
|
|
|
6.86, angra (ok), 08:21, 16/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
Ну если плюсы для тебя это только complexity, которую ты именуешь мощь, то мои соболезнования.
| |
|
7.97, Аноним (-), 17:37, 18/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ну если плюсы для тебя это только complexity, которую ты именуешь мощь,
> то мои соболезнования.
Это и есть мощь. На C++ можно написать что-нибудь требовательное к латенси и скорости. Например, игровой движок. На go нельзя - сборщик мусора не отключается, что гарантирует море удовольствия при борьбе с внезапными лагами. Программированием требовательных вещей занимаются люди с высокой квалификацией, им c++ как раз по руке.
| |
|
6.89, й (?), 13:42, 16/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
в отличие от swift? ну-ну
golang и правда не оттуда но из-за csp model
| |
|
|
|
|
2.74, анонимный (?), 18:09, 15/03/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
От go они не отказывались, есть ответ от разработчиков на hn. Просто переписали пару мест на расте, где критична работа с памятью. Вся остальная инфраструктура как и была на Go, на нем и останется, ничего переписывать разработчики не собираются.
| |
|
|
2.18, Аноним (-), 10:46, 15/03/2016 [^] [^^] [^^^] [ответить]
| –3 +/– |
Rust такое же ненужно как и Go, если Firefox и в самом деле когда-нибудь на него переведут, то этот день станет последним днём когда я использовал Firefox.
| |
|
3.20, Аноним (-), 10:48, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
Ох ну твое мнение очень ценное для Mozilla. А еще они спят и видят, как бы сделать так, чтобы ты пользовался их браузером.
| |
3.23, Аноним (-), 10:59, 15/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
>если Firefox и в самом деле когда-нибудь на него переведут
То это уже будет не firefox, будем рнадееться что palemoon не загнется иначе один гобный браузер(Opera) мы уже потеряли, потеряем firefox и останется только qupzilla, которая не умеет нормальный adblock и vim-like управление
| |
|
4.46, iPony (?), 12:59, 15/03/2016 [^] [^^] [^^^] [ответить]
| –6 +/– |
Ну про паленную лисицу смешно упоминать - это пары фурфагов проект, полностью зависящий от основного проекта фурифокса. Не загнуться он по определению не может.
| |
|
5.47, Аноним (-), 13:03, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
Они движок форкнули, кабыла, в результате загнутся только если не кому будет его поддерживать.
| |
|
6.54, iPony (?), 14:05, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Они движок форкнули, кабыла, в результате загнутся только если не кому будет его поддерживать.
Сам по себе форк - это элементарное действие.
Поддерживать форкнутый проект, когда есть Большой Брат, у которого можно 'тырить' код - посложнее, но вполне нормально.
Самому тянуть лямку по развитию движка - кхе, кхе...
Так что в недалеком будущем у паленной лисицы просто нет вариантов кроме загибания.
PS: Хотя у некоторых понятие живости отличается, некоторые и opera presto вполне себе щас пользуются.
| |
|
|
|
|
4.98, Аноним (-), 18:00, 18/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Хорош трындеть, иди ищи утечки в плюсовом коде.
Сборка с -fsanitize=address поймает неправильную работу с памятью, -fsanitize=leaks - утечки. Си++ языка такая сложная, насяльника.
| |
|
|
|
|
2.29, НяшМяш (?), 11:45, 15/03/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
Что лучше - отжирание одного ядра на 100% в течение 4 секунд, или отжирание 4 ядер по 25% в течение одной секунды? Это если не учитывать, что рендеринг в серве весь полностью на гпу, что даст ещё больший выигрыш. В итоге, оно ещё и жрать меньше ресурсов будет.
| |
|
3.32, saahriktu (?), 12:08, 15/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Такая математика справедлива в случае относительно статических страниц, когда браузер отрендерил страницу - и всё. А если контент на странице динамический и активно обновляет те или иные части страницы? Теперь же его распараллелят и у него будет больше возможностей жрать системные ресурсы.
| |
|
4.41, Аноним (-), 12:39, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Просто не заходи на такие сайты, и всё, логика предельно проста. Браузер должен выводить информацию, которую запросил пользователь с максимальной эффективностью. Не устраивает, можешь сам ограничить число потоков. Это делается в диспетчере задач в 3 клика.
| |
|
5.58, saahriktu (?), 15:33, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Просто не заходи на такие сайты, и всё
Я-то могу и не заходить. А вот другие юзеры потом будут плакать над трупами железа, которое склеило ласты раньше времени от того, что параллельно рядом с ресурсоёмкими сайтами в браузере на движке Servo работала куча других ресурсоёмких задач: DE, LibreOffice, Scilab, systemd, pulseaudio, Network Manager,... и т.д. Всё это вместе теперь сможет разогреть разного рода ноута до таких температур, что никакие системы охлаждения не помогут.
| |
|
6.81, Аноним (-), 21:48, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Нефиг покупать непонятно какое оборудование или заниматься моддингом не имея бошки и прямых рук из правильного места.
| |
|
|
|
3.60, Нимано (?), 15:47, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Что лучше - отжирание одного ядра на 100% в течение 4 секунд,
> или отжирание 4 ядер по 25% в течение одной секунды?
А еще лучше уроки не прогуливать ...
1 * 100/100 * 4 = 400/100 = 4
4 * 25/100 * 1 = 100/100 = 1
| |
|
4.65, НяшМяш (?), 16:28, 15/03/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
Так зайди в школу на урок информатики, пусть тебе объяснят, что такое распараллеливание задач. 100% на 4 секунды = 25% за 1 секунду в одном потоке. Если по 25% раскидать на каждое ядро, то эти задачи будут выполняться одновременно, то есть все 100% будут исполнены за время, обратно пропорциональное количеству ядер.
| |
|
5.70, Нимано (?), 17:22, 15/03/2016 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Так зайди в школу на урок информатики, пусть тебе объяснят, что такое
> распараллеливание задач. 100% на 4 секунды = 25% за 1 секунду
> в одном потоке. Если по 25% раскидать на каждое ядро, то
> эти задачи будут выполняться одновременно, то есть все 100% будут исполнены
> за время, обратно пропорциональное количеству ядер.
Ты не юли – речь шла о
> отжирание одного ядра на 100% в течение 4 секунд,
> или отжирание 4 ядер по 25% в течение одной секунды?
Объясняю на пальцах:
Допустим, ядро может делать 100 операций в секунду.
100 * 4 = 400. И того: всего 400 операций за 4 секунды на одном ядре.
Ежели раскидать эти 400 операций на 4 ядра, получим 100 операций на ядро.
Очевидно же, что при выполнении 100 операций в секунду 4 ядра смогут сделать в сумме 400 операций за эту самую секунду. Но только при полной "загрузке" .
Если 4 ядра будут "делать" (уделять этой задаче) только 25 операций в секунду, то за 1 секунду, в сумме это будет 100 (сто) операций, а значит, делая по 25 (из 100 возможных) операций в секунду 4м ядрам понадобятся 4е секунды для выполнения той же работы (400 операций).
А теперь марш уроки делать.
| |
|
|
3.99, Аноним (-), 18:02, 18/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Что лучше - отжирание одного ядра на 100% в течение 4 секунд,
> или отжирание 4 ядер по 25% в течение одной секунды?
Вот извините, но будет нагрузка 400% на 1 секунду. Т.е. 4 ядра занятых на 100%.
> что даст ещё больший выигрыш. В итоге, оно ещё и жрать меньше ресурсов будет.
Как бы не так. Кривые или просто наглые сайты озадачат все 4 ядра и GPU, по поводу чего система превратится в отопитель воздуха или на ноуте - батареи хватит на 2 часа браузинга вместо 8.
| |
|
4.101, _ (??), 23:17, 18/03/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
Хром уже создает новый процесс под каждую новую вкладку, нагрузка в которых естественно может пойти на другое CPU-ядро и GPU.
Servo же просто уменьшит время на обработку новой вкладки браузера распаралелив её обработку, что судя по тестам в 2 - 2,5 раза быстрее Хрома, и ресурсы быстрее будут особожденны.
| |
|
|
|
1.15, Аноним (-), 10:20, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Vivaldi бы вливались тоже, уже два года бьются над блинком, а показатели по памяти и скорости не сдвигаются абсолютно..., может только в худшую сторону
| |
|
2.59, Аноним (-), 15:38, 15/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Што. Откуда два года?
Плюс ты бы за проектом последил, прежде чем ныть. Разработчики открыто заявляли что оптимизациями не занимаются на текущей фазе разработки. Man преждевременные оптимизации.
| |
|
3.75, Аноним (-), 19:25, 15/03/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
>Man преждевременные оптимизации
Ага, у некоторых они по жизни преждевременные.
| |
|
4.100, Аноним (-), 18:04, 18/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Ага, у некоторых они по жизни преждевременные.
Выпадение генов - случается, увы.
| |
|
3.80, Аноним (-), 21:45, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
> преждевременные оптимизации.
"Преждевременные оптимизации" - баян, общепризнанный брехней и давно устаревший, как и сам баян. Из всех, кто писал мне эту фразу в интернете, никто не понимал её истинный смысл. Все воспринимают ее поверхностно, включая Вас. А ведь актуальна она <u>только в единичных</u>, частных ситуациях. И эти ситуации сконцентрированы на стадии проектирования, которую все браузеры на блинке давно прошли.
| |
|
4.88, Аноним (-), 10:05, 16/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
А ничего, что Вивальди еще на стадии проектирования? Может это ты все-таки не понимаешь, а не я?
| |
|
|
|
|
2.26, анон (?), 11:12, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
Я так понимаю на безопасность и многопоточность. Каждая страница имеет свою песочницу с высокой степенью изоляции, что накладывает ограничения на совместно используемые страницы.
| |
|
3.38, Аноним (-), 12:34, 15/03/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
По логике большая часть ресурсов (по объему) абсолютна безопасна и такие ресурсы не должны дублироваться, а должны шариться между потоками. Например зачем теже изображения и шрифты дублировать в памяти?
| |
|
|
1.21, LU (?), 10:51, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
>В качестве основных критериев готовности Servo рассматривается обеспечение качественной обработки сайтов github, duckduckgo, hackernews и reddit
Ну юмористы
| |
|
2.55, ANONYM (?), 14:11, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
А чего смешного. Типичный повседневный набор сайтов обычного пользователя. Все остальные -- либо на safari, либо на edge
| |
|
|
|
3.35, EHLO (?), 12:11, 15/03/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
>> http://rghost.net/8mtnHyBl5/image.png
> просто
> обязан знать, что в soviet russia опеннет вместо православного юникода отдаётся
> в koi8-r.
Content-Type? -- Не, не слышал.
$ curl -I opennet.ru
HTTP/1.1 200 OK
Server: nginx/1.0.9
Date: Tue, 15 Mar 2016 09:10:47 GMT
Content-Type: text/html; charset=koi8-r
Connection: keep-alive
Vary: Host
Accept-Ranges: bytes
| |
|
4.37, Аноним (-), 12:33, 15/03/2016 [^] [^^] [^^^] [ответить]
| –3 +/– |
То есть это чудо даже самых базовых вещей толком не умеет. Однако успех.
| |
|
5.43, Аноним (-), 12:40, 15/03/2016 [^] [^^] [^^^] [ответить]
| +10 +/– |
А они базовые? Разрабы считают, что сайты не в utf-8 должны страдать.
| |
5.62, Вареник (?), 16:02, 15/03/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
> То есть это чудо даже самых базовых вещей толком не умеет. Однако успех.
Защищенный язык защищает от ошибок жеш.
| |
5.66, НяшМяш (?), 16:31, 15/03/2016 [^] [^^] [^^^] [ответить]
| +3 +/– |
> То есть это чудо даже самых базовых вещей толком не умеет. Однако успех.
Потому что движок рендеринга и парсинга дома, который находится в состоянии глубокой преальфы не должен обладать способностями полноценного браузера, чтобы исполнять свою задачу - рендерить и парсить дом.
| |
|
4.40, Аноним (-), 12:38, 15/03/2016 [^] [^^] [^^^] [ответить]
| +3 +/– |
Ну так для них это очень второстепенная задача. Им github и остальные сайты (utf-8) хочется сделать. Если пришлёшь патчи - они будут рады.
| |
|
|
|
1.45, Меломан1 (?), 12:42, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>Mozilla в сотрудничестве с компанией Samsung
Содом и Гоморра
>Интерфейс Browser.html примечателен отказом от использования традиционных
Ценностей, таких как управление клавиатурой и горячие клавишы.
Теперь будете работать
>...только при подведении курсора | |
|
2.91, sh (??), 22:30, 16/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
если ты не в курсе, то можно слушать ивенты и от ввода с клавиатуры, и даже тач. обработку.
сделают хоткеи. - пиши тикет на какую комбинацию и проверяй
| |
|
|
|
3.72, _ (??), 17:28, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
в тексте, или на форумах пишут что будут выкладывать в opensource свои наработки со временем.
| |
|
|
1.69, Андрей (??), 16:42, 15/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Изначально реализация хранилища была написана на языке Go, но показала низкую эффективность с точки зрения потребления памяти при больших нагрузках, после чего хранилище было переписано на Rust.
Эх, жаль, что не open source. Так был бы неоценимый бенчмарк из реальной жизни! И можно было бы спрофайлить, где подпилить Go.
| |
|
2.73, _ (??), 17:29, 15/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
>> Изначально реализация хранилища была написана на языке Go, но показала низкую эффективность с точки зрения потребления памяти при больших нагрузках, после чего хранилище было переписано на Rust.
> Эх, жаль, что не open source. Так был бы неоценимый бенчмарк из
> реальной жизни! И можно было бы спрофайлить, где подпилить Go.
в тексте, или на форумах их сотрудники пишут что будут выкладывать в opensource свои наработки со временем. (речь о RUST)
| |
|
|
2.85, ruof (?), 06:16, 16/03/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
Там всё std статически линкуется. Между прочем libc 1мб с лишним весит, с той лишь разницей что он статически почти никогда не линкуется.
| |
2.92, sh (??), 22:34, 16/03/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Hello world очень толсто компилирует Rust в отличии от C
Если тебе для твоего "Hello World" не нужен libstd, то без него разницы в размере с "C" не будет.
| |
2.93, Аноним (-), 02:33, 17/03/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Hello world очень толсто компилирует Rust в отличии от C
rustc -C prefer-dynamic
| |
|
1.95, Аноним (-), 15:16, 18/03/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Кроме эффективного распараллеливания операций, используемые в Rust технологии безопасного программирования позволяют кардинально поднять уровень безопасности, решив текущие проблемы с безопасностью.
Безопасность, безопасность, безопасность
| |
|