Данная заДанная заметка является своего рода комментарием к другой статье на Хабре Удивительная история document.write, которая, в свою очередь, представляет из себя перевод публикации с сайта https://eager.io/ The Curious Case of document.write. Я же здесь хочу лишь подчеркнуть определённую полезность данного метода клиентского JavaScript (https://developer.mozilla.org/ru/docs/Web/API/Document/write), а также немного порассуждать о подходах и проблемах, связанных с генерацией разметки.
Новости
Сказ о том, как мы Python-микросервисы для облака шаблонизировали
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/d27/818/2dc/d278182dca59a477387bfcba4013beb6.jpg)
Большая боль разработчиков, которые приходят на новый проект — для развертывания сервиса локально нужно пообщаться минимум с десятком людей, не говоря уже про интеграцию с CI/CD-сервером. В один момент мы решили реализовать это удобнее, заодно сократив время онбординга новых сотрудников.
При этом мы хотели получить не только быстрый ввод новых сервисов в эксплуатацию и минимальное время развертывании любого сервиса локально — мы хотели, чтобы все наши сервисы использовали более или менее одинаковые версии библиотек, настройки линтеров и конфигурацию. А поскольку мы финтех, то должен был сохраняться высокий уровень безопасности, а риск человеческих ошибок — снижаться.
Меня зовут Олег Чуркин. Я больше 10 лет занимаюсь разработкой на Python и сейчас руковожу разработкой нового процессинга платежей в QIWI. Расскажу, как мы реализовали boilerplate-шаблон для сервисов — на примере небольшого стартапа внутри нашей большой компании.
О бедном Arcanum замолвите слово
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/b66/2e5/e23/b662e5e234077bb038feab708b30aaf4.jpg)
В Arcanum, как и в любой другой игре, существует масса собственных бинарных форматов. Эта статья познакомит вас с форматом упаковки изображений, который использовала студия Troika Games.
PostgreSQL Antipatterns: когда мешает внешний ключ
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/92f/2ad/059/92f2ad05935bd488c6bd849fec7d337d.jpeg)
Внешние ключи (foreign keys) - мощный и удобный механизм контроля логической целостности данных в базе. Но он бывает не только лишь полезен, и может неплохо пригрузить вашу БД.
Внимательный взгляд на план запроса поможет избежать многих проблем - как при чтении из базы, так и при вставке в нее.
Security Week 2219: мобильные трояны со встроенной подпиской
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/webt/zp/xp/0f/zpxp0felyje4hciis69eksmclzm.png)
На скриншоте выше показаны три примера приложений с вредоносной добавкой, которые какое-то время висели в официальном магазине приложений Google Play. Во всех присутствовал троян семейства Jocker. Так как в данном случае стоит задача прорваться сквозь проверки в аппстор, первоначальная версия приложения не содержит вредоносного кода. После установки активируется загрузчик, подгружающий «дополнительную функциональность», но и он срабатывает после простой проверки: опубликовано ли приложение в магазине? Если нет, программа считает, что выполняется в сендбоксе проверяющего и скрывает вредоносную функциональность.
Защита от спама и зловредного ПО в Carbonio
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/93f/6f8/182/93f6f8182ee2587d783f3dae89d8df5a.png)
Электронная почта, которая является одним из наиболее распространенных форматов корпоративного общения, как правило становится основной целью злоумышленников, которые используют электронные письма как средства доставки зловредного ПО во внутреннюю сеть предприятия. В результате таких атак появляются утечки важной информации или потери корпоративных данных, которые влекут за собой не только финансовые, но и репутационные потери. Надежная защита почтового сервера от кибератак позволяет купировать большую часть киберугроз и именно поэтому защита почтового сервера предприятия становится приоритетом номер один среди системных администраторов и специалистов по кибербезопасности. В Carbonio для защиты от угроз используются такие Open-Source решения, как антивирус ClamAV, антиспам SpamAssassin и интерфейс для их взаимодействия с почтовым сервером new-amavisd. В данной статье мы расскажем о том, как правильно использовать их для обеспечения безопасности почтового сервера Carbonio.
Некоторые станции международной службы лазерной дальнометрии перестали предоставлять данные для ГЛОНАСС
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/4de/518/719/4de518719efb8fd4628078cf9117b32f.jpeg)
В системе ГЛОНАСС пользователь ориентируется по навигационным спутникам как по маякам. Эти маяки удалены на расстояние около 20 000 км и движутся относительно поверхности земли со скоростью более 3 км/с. Но при этом спутники непрерывно передают параметры, позволяющие рассчитать их положение с точностью порядка метра. И чем точнее эти параметры, тем точнее вы, как пользователь системы, можете определить своё местоположение...
Как мы создавали движок на Unity (часть 0)
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/22c/955/f66/22c955f66f442b56b664d59504e0e62e.png)
Привет, Хабр!
В данном цикле статей мы расскажем, как группа студентов создавала свой игровой движок для визуальных новелл, используя Unity. Звучит не оптимизировано, но почему бы не попробовать?
Разработчик и колпак
Развитие микроэлектроники, ИТ технологий и широкого спектра программных продуктов открыло новые возможности по контролю всего. Датчики, камеры, цифровые следы… Магнитофон в чемодане уже неактуален.
Разработчики пишут, а компании внедряют различные системы для мониторинга эффективности работы сотрудников. Казалось бы, в зоне опасности банковские операционисты, кассиры, сотрудники колл-центров и т.д, а разработчики на коне.
По факту оказывается, что разработчики могут находиться под куда более жестким контролем.
Как же так???
Критическая информационная инфраструктура Индии
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/c8a/89f/fe6/c8a89ffe630bbd2dc3f88a8528607dd9.jpg)
Автор: Евгений Баклушин, руководитель направления
Нестабильная геополитическая обстановка и непрерывное развитие ИТ-технологий и инструментов способствуют постоянному росту киберпреступлений (вплоть до кибертерроризма) в отношении критических информационных инфраструктур государств (далее – КИИ). Дополнительное влияние оказывает постоянное появление новых тактик и техник реализации угроз нарушителями. В этой связи все более актуальным становится сотрудничество между государствами и международное сотрудничество бизнеса по противодействию киберпреступлениям в отношении КИИ и совершенствованию систем и средств защиты КИИ. Перспективным направлением в данной области может стать обмен опытом по предотвращению, ликвидации и предупреждению последствий компьютерных атак.
С учетом влияния внешних обстоятельств и изменений в геополитической обстановке первостепенным вектором сотрудничества становится Азия. При этом Китай и обе Кореи довольно самостоятельны и закрыты внутри себя, а Япония активно взаимодействует с западным альянсом. Таким образом наиболее перспективным является взаимодействие (союз) с глобальным ИТ-хабом или «новым информационным чудом» – Индией.
В данной статье мы рассмотрим, как обстоит ситуация с защитой КИИ в Индии, а также чем она отличается от обстановки в России.
Мультиклеты: влияние реконфигурации на бенчмарки и задачи майнинга
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/018/da5/db6/018da5db613ff9fedd8733d9c792d623.jpg)
В 2014 году была опубликована статья о первом мультиклеточном процессоре с реконфигурацией. За прошедшее время накопился опыт ее использования и понимание, где она может применена с максимальным эффектом.
Как известно, физические и технологические ограничения, объективно существующие при проектировании и изготовлении новых микропроцессоров, постепенно перешли из теоретической в практическую плоскость. Планарные транзисторы перестали уменьшаться в 2D размерах и стали переходить в 3D измерение. Расстояния на чипе стали ограничивать тактовую частоту, а размеры чипа привели к тому, что на пластине годным стало считаться то, что хоть как-то работает. При этом, микропроцессоры стали напоминать ламповые компьютеры 60-х годов прошлого века, на корпусе которых можно было жарить яичницу.
Сегодня большинство бенчмарков процессоров, в первую очередь, оценивают производительность. Насколько быстро рисуется картинка на дисплее, насколько быстро перемножаются матрицы или как быстро осуществляется поиск в базе данных. Это, безусловно, важно. Но почему-то мало кто задается вопросом, насколько это оптимально. Может быть, лучше увеличить время решения на 10% и при этом уменьшить энергопотребление на 50%?
Как изменилась стандартная библиотека Python за последние годы
Когда выходит очередная версия Python, все внимание достается новым фичам языка: моржовому оператору, слиянию словарей, паттерн-матчингу. Еще много пишут об изменениях в асинхронной работе (модуль asyncio
) и типизации (модуль typing
) — эти модули на виду и бурно развиваются.
Остальным модулям стандартной библиотеки достается незаслуженно мало внимания. Хочу это исправить и рассказать, что интересного появилось в версиях 3.8–3.10.
Что происходит с лицензиями в open source
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/f4b/706/a2b/f4b706a2b794aaa8ddb430eb79c3afb0.jpg)
Все больше разработчиков модифицируют лицензии с целью защитить свои открытые продукты от перепродажи сторонними компаниями. Такая практика разделила профессиональное сообщество на два лагеря. Мы решили обсудить ситуацию и разные точки зрения по этому вопросу.
Книга «Изучаем Arduino. 65 проектов своими руками. 2-е издание»
![image](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/webt/o4/q_/cg/o4q_cghswywfwk9u4m2jidqrlxq.jpeg)
Управление агрегацией логов с помощью Logstash-operator в Kubernetes — opensource-решение от М2
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/a17/01b/a48/a1701ba48dc105d445269c0d31fb1e32.png)
Писать, собирать, агрегировать и сохранять логи для последующего анализа важно: это наиболее подробное представление того, как работает система.
Логи можно собирать и отправлять в централизованную систему по-разному, например используя библиотеки в самом приложении или сторонние агенты вроде Filebeat, Fluent Bit, Vector. Есть множество систем хранения вроде Elasticsearch, Loki, Splunk, файлы на диске или объекты в S3.
Мы в М2 тоже занимаемся этим вопросом и постоянно ищем схемы и инструменты, помогающие улучшать централизованную систему логирования. Я, как инженер развития инфраструктуры, непосредственно принимаю в этом участие. В статье хотел бы поговорить об этапе агрегации и поделиться нашими наработками.
Используем клиентский процессор по максимуму. Часть 1: Rust + WebAssembly
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/webt/xk/bd/57/xkbd578u6n9xyxgci4blbazcnli.jpeg)
На Хабре существует немало статей, посвящённых повышению производительности программ за счёт параллельных вычислений и использования векторных команд. Я решил дополнить этот список и рассказать о том, как можно оптимально задействовать все ресурсы процессора клиентской стороны веб-приложения.
В этой части мы поговорим о том, как, используя Rust в связке с WebAssembly, можно ускорить тяжёлые вычисления на примере программы для рендеринга фрактала Ньютона. В следующей части будет подробно рассказано о векторных командах и мультипоточных вычислениях в браузере.
Прирост производительности при использовании всех техник оптимизации по сравнению с реализацией на чистом JS может составлять ~1000%: от 8–9 до 100–110 фпс. Это можно проверить на интерактивном онлайн-демо, позволяющем также поиграться с числом потоков, способом вычислений и формой фрактала.
Парадоксальный рост популярности Python в научных вычислениях
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/d20/f94/d8e/d20f94d8ea3dfd1acee1fe27a2d71c73.jpeg)
Чтобы уверенно пересечь незнакомую местность, можно или двигаться быстрее, или подыскивать удобную дорожку. Другими словами, слишком пристальное внимание к скорости как таковой может вас притормозить. То же касается и разработки программного обеспечения.
Прыжок горбатой лошади или как мы обновляем наши системы
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/06c/479/c7d/06c479c7d2afaffc37430056b571635b.jpeg)
Привет! Меня зовут Евгений Сальников и я тимлид одной из команд Outbound, которая входит в департамент Business Process Automation в Lamoda. В нашем направлении мы отвечаем за сервисы доставки.
Эта статья написана по мотивам реальной задачи по обновлению нашей большой системы, а именно — переход с очень старой версии Apache Camel на актуальную. Я не расскажу чего-то особо нового, но если у вас уже есть Apache Camel и вам «только спросить», как с ним управляться — милости просим.
Смарт-карты: особенности протокола T=0 и на что они влияют
Когда начинаешь изучать смарт карты, то все выглядит достаточно понятно и логично: команды APDU несложны и описаны в ISO 7816-4, интерфейс winscard описан в MSDN. В глубины PCSC погружаться особо и не приходится. Первые программы можно написать довольно быстро. Непонятные особенности вылезают чуть позже, и выясняется, что известные два протокола T=0 и T=1 на самом деле совсем разные протоколы, и они просто похожи друг на друга. Поначалу возникает соблазн работать с ними одинаково, а это может доставить много хлопот вплоть до сбоя коммуникации в самый неожиданный момент.
Зачем разработчикам игр на Unity использовать статический анализ?
![](https://webcf.waybackmachine.org/web/20220511140000im_/https://habrastorage.org/getpro/habr/upload_files/06b/63f/f1e/06b63ff1e9ef224d4747d5a89083dfe5.png)
С годами стоимость создания игр стала больше, вырос их масштаб, а следовательно, и их кодовая база. Разработчикам становится всё сложнее уследить за ошибками. А забагованная игра влечёт финансовые и репутационные убытки. Как же с этим может помочь статический анализ?