Pull to refresh
2
Shishka @Shishkaread⁠-⁠only

ИТ

Send message

Переезд c PostgreSQL на YDB. Кейс сервиса Яндекс Игры

Level of difficultyHard
Reading time12 min
Views11K

Привет! Меня зовут Александр Смолин. Я бэкенд-разработчик в команде Яндекс Игр. Уже два года мы используем YDB для задач сервиса. В статье расскажу, как мы в Яндекс Играх внедряли YDB, зачем это было нужно, с какими сложностями столкнулись и какие результаты у нас сейчас.

Читать далее

Как с помощью ChatGPT писать SQL-запросы. Несколько кейсов

Reading time6 min
Views18K

Привет, Хабр! Меня зовут Анастасия Иванова, я работаю в МТТ (входит в экосистему МТС) техническим писателем МТС Exolve. В статье расскажу о том, как ChatGPT может сэкономить время и усилия начинающего специалиста по SQL.

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

Читать далее

Rust 1.71.0: C-unwind ABI, атрибуты визуализации отладчика и константная инициализация thread local

Level of difficultyEasy
Reading time4 min
Views4.2K

Команда Rust рада сообщить о новой версии языка — 1.71.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.71.0 вам достаточно выполнить команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta) или nightly (rustup default nightly) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать дальше →

Как Intel, NVIDIA и ASML продолжают сотрудничать с Китаем, не опасаясь санкций. Хитрый способ, который устраивает всех

Reading time4 min
Views15K
image

Из-за торгового конфликта США и Поднебесной замедлилось развитие электронной отрасли. Так, в страну запрещено ввозить современные литографические машины, да и вообще практически все современные технологии, в разработке которых принимали участие американские компании. Несмотря на все это, КНР старается развивать собственную отрасль разработки и производства электроники — компании из Китая создают собственные литографические машины, современные чипы и т.п.

Но есть и еще одна возможность для Поднебесной получать «запрещенку». И этот способ разработали как раз западные компании, которым, видимо, не выгодно терять такой крупный рынок, как Китай. Самое интересное — под катом.
Читать дальше →

5 книг по Golang для начинающих разработчиков: на что стоит обратить внимание

Reading time3 min
Views17K

Привет, Хабр! Сегодня поговорим о Golang, вернее, о хороших книгах, которые написаны для начинающих разработчиков. Возможно, какие-то из этих книг пропустили в своё время и более опытные программисты — если так, стоит обратить на них внимание. Если же вы можете порекомендовать книги по Go, которые понравились именно вам, пишите в комментариях, обсудим и их. Ну а пока — поехали.

Читать далее

Митигация SQL-инъекций при работе с PostgreSQL

Level of difficultyEasy
Reading time6 min
Views6.9K

Привет, Хабр! Меня зовут Игорь, я занимаюсь разработкой серверной части в команде RuBackup.

В процессе своей работы мы с коллегами уделяем большое внимание вопросам безопасности наших приложений. SQL-инъекция — одна из самых серьезных угроз этой безопасности. Она заняла третье место в списке 25 самых опасных проблем в программном обеспечении за последние два года. Именно поэтому я решил собрать весь свой накопленный опыт и рассказать о митигации SQL-инъекций.

Наверняка многие из вас знают, что валидирование пользовательского ввода — краеугольный камень процесса безопасной разработки. С одной стороны, нам как разработчикам не хочется ограничивать пользователей в наборе таких входных данных, как символы и выражения, которые они могут использовать в работе, например, в паролях. С другой стороны, нельзя допустить выполнения в СУБД вредоносного кода, который приводит к SQL-инъекциям. А такие случаи время от времени происходят и становятся достоянием гласности. PostgreSQL дает разработчику возможность решить эту проблему экранированием потенциально опасных символов, превращая их в безопасные. Таким образом, для PostgreSQL будет вполне безвредно, если пользователь в качестве пароля использует строку "password' OR 1=1".

Для защиты от SQL-инъекций в прикладных библиотеках PostgreSQL libpq и libpqxx применяется техника «эскейпинг» или экранирование строки. Она заключается в том, чтобы убрать лишние символы разрыва строк в строках, содержащих специальные символы. С помощью этой функций символы удваиваются и более не считаются окончанием строки, а интерпретируются как обычные символы. Я буду рассматривать только библиотеку libpqxx, так как она, по сути, является С++ оберткой над более низкоуровневой С библиотекой libpq, где и реализованы все функции, о которых далее пойдет речь.

Читать далее

6-шаговая коммутация BLDC моторов

Level of difficultyMedium
Reading time19 min
Views28K

В нашем проекте контроллера сервоприводов применяется чип семейства Renesas Synergy S5D9. Чип содержит периферийный блок специально предназначенный для 6-шагового управления. Попробую показать как этот блок применить для управления BLDC мотором и какие грабли разложены на пути.

Читать далее

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Level of difficultyEasy
Reading time8 min
Views233K

Привет, Хабр!

Я решил посвятить свою первую статью SQL. Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.

Данная информация предполагает знание основ языка запросов и я надеюсь, она окажется полезной для разработчиков, которые сейчас активно ищут работу а также, что ты прочитаешь этот текст до конца и добавишь свой вопрос к перечню (ну или поправишь неточности в существующих)

Читать далее

Эффективная работа с битами при помощи Go

Level of difficultyHard
Reading time12 min
Views18K

Это статья познакомит вас с использованием возможностей Go для выполнения манипуляций с битами. Здесь мы разберём установку, очистку, инвертирование, сдвиг битов, использование техники SWAR, эффективную обработку Юникода и прочие приёмы, позволяющие повысить продуктивность программирования.
Читать дальше →

Типы, методы и интерфейсы

Level of difficultyEasy
Reading time13 min
Views7.4K

Большая часть того, что называют написанием идиоматического кода на Go — это изучение использования преимуществ определяемых пользователем типов Go. Интерфейсы — единственный тип в Go с динамической диспетчеризацией. Поскольку они реализованы неявно,то позволяют разработчикам создавать несвязанный, удобный для сопровождения код. Встраивание типов в Go позволяет совместно использовать код без сложностей наследования. Наконец, способность Go прикреплять методы к любому определяемому пользователем типу, позволяет использовать некоторые очень умные функции, включая типы функций с методами, которые могут реализовывать интерфейсы.

В статье вы узнаете про:

- Объявление собственных типов;
- Добавление методов к типам;
- Объявление и использование интерфейсов.

Читать далее

Гайд по беспроводной связи в кружке робототехники

Level of difficultyEasy
Reading time10 min
Views14K

По моим наблюдением, создание управляемых роботов – самая популярная тема во время занятий по освоению Arduino. Ученикам нравится мастерить не просто автоматику – но контролируемые ими напрямую устройства.

В статье я рассказываю о некоторых модулях беспроводной связи и их применении в занятиях робототехникой. Даны описания их преимуществ и недостатков, а также указаны особенности их использования именно в учебном процессе.

Читать далее

Ниже… есть куда: SSD продолжают дешеветь, и текущая ситуация — не предел

Reading time5 min
Views21K
image

Совсем недавно мы писали о том, что стоимость твердотельных накопителей продолжает снижаться. Плюс они постепенно отбирают долю рынка обычных жестких дисков. Причины простые — SSD гораздо быстрее HDD, они бесшумные, плюс их надежность понемногу повышается. Соответственно, как обычные пользователи, так и компании предпочитают покупать SSD. О ценах и перспективах рынка — под катом.
Читать дальше →

Как мы сделали справочник о диджитале для старших

Level of difficultyEasy
Reading time2 min
Views1.9K

Наверняка у многих были ситуации (не одна и не две), когда старший родственник просит помочь с этим вашим компьютером. А то и смартфоном. Поэтому мы решили помочь, с одной стороны, родителям, бабушкам и дедушкам, а с другой стороны — айтишникам, которые (со всей любовью к родным) задумывались об автоматизации таких советов.

Так мы разработали справочник по технологиям и трендам современного мира. В нём рассказывается и про популярные IT-сервисы, и про современные профессии, и даже про кибербезопасность. Просто вручаешь справочник —  и не приходится объяснять, чем дата-аналитик отличается от фронтенда, и где вообще эта кнопка "Пуск".

Причём темы мы брали не с потолка, а по результатам многих фокус-групп с добровольцами старше 55 лет. И вдобавок собрали истории от более молодых добровольцев о том, как они помогали старшим родственникам с технологиями. Тем, кто поделился с нами ценными инсайтами или особенно интересными историями, мы, конечно, подарили экземпляры таких справочников. Теперь вот хотим поделиться с вами.

Читать далее

Как сэкономить свои нервы и деньги компании на перестроении структуры больших таблиц без простоя в PostgreSQL

Level of difficultyMedium
Reading time7 min
Views8K

Привет! Меня зовут Васильев Виктор, я DBA в компании UIS и CoMagic. В этой статье на реальных примерах расскажу, как можно сэкономить время разработчика, администратора баз данных и ресурсы сервера(ов), используя утилиту pg_rebuild_table. Сопровождая большие, высоконагруженные системы, с бо’льшей вероятностью каждый сталкивался с кейсами, о которых будет рассказано дальше. Некоторые технические подробности пройду без детализации, чтобы сильно не усложнять и не делать статью очень громоздкой. Лучше отвечу на вопросы в комментариях.

Читать далее

Интероперабельность между С++ и Rust

Level of difficultyHard
Reading time13 min
Views9.2K
image

image

Этот пост основан на презентации, с которой автор выступил на конференции EuroRust 2022 в Берлине. Доступны слайды и видеозапись.

Автор, работающий в компании Slint, участвует в создании UI-инструментария, написанного на Rust. Этот UI-инструментарий может использоваться и с другими языками и экосистемами, кроме той, для которой был написан, поэтому в Slint предусмотрены API для C++ и даже для Javascript. Естественно, эти API должны восприниматься как совершенно нативные для разработчиков, имеющих дело с этими языками. Именно поэтому ребром стоит вопрос о том, как создать нативно воспринимаемые API к коду Rust для пользователей, привыкших работать с C++.

В Slint предусмотрена возможность пользоваться имеющимся кодом на C++ для дальнейшей его интеграции в другие экосистемы для разных операционных систем. Это касается таких тем, как оформление виджетов, обеспечение доступности и пр. Вот почему не менее важно открывать из мира Rust удобный доступ к коду, уже написанному на C++.

В этом посте хотелось бы исследовать оба направления интеграции между Rust и C++ и представить некоторые инструменты, используемые в Slint.
Читать дальше →

От стеков к деревьям — новая модель псевдонимов в Rust

Reading time15 min
Views5.9K

С прошлой осени Нивен проходит стажировку, разрабатывая новую модель псевдонимов для Rust: древовидные заимствования (tree borrows). Секундочку, уже слышу, как вы вопрошаете: а разве в Rust ещё нет своей псевдонимной модели? Разве вы, автор, не рассказываете повсюду о «стековых заимствованиях»? Действительно, так и есть, но стековые заимствования — всего лишь один из возможных вариантов реализации для модели псевдонимов, и с этим вариантом есть свои проблемы. Древовидные заимствования призваны учесть опыт, усвоенный при работе со стековыми заимствованиями, и построить новую модель, не такую проблемную. Также при её проектировании принимаются немного иные решения, с учётом некоторых нужных компромиссов и той тонкой настройки, которая, возможно, должна быть привнесена в эти модели, и только потом настанет время решать, какую же из этих моделей принять в Rust в качестве официальной.

У себя в блоге Нивен написал подробное введение в древовидные заимствования, и не помешает сначала прочитать этот ознакомительный материал. На прошедшей недавно конференции RFMIG он выступил с лекцией на эту тему, и его доклад вы также можете посмотреть, вот здесь. В этом посте я сосредоточусь на том, чем древовидные заимствования отличаются от стековых. Предполагаю, что вы уже ориентируетесь в стековых заимствованиях и хотите понять, что меняется с введением древовидных заимствований.

Для краткости я буду иногда называть стековые заимствования «СЗ», а древовидные заимствования — «ДЗ».

Читать далее

Typst — современная альтернатива LaTeX

Level of difficultyMedium
Reading time7 min
Views18K


Языки разметки хорошо подходят для создания и редактирования структурированных документов. Они лучше автоматизированы и гибки, чем аналоги с WYSIWYG. Здесь контент отделён от представления, задаётся текст и его структура, далее на основе выбранного шаблона форматируется документ. Подобную систему компьютерной вёрстки TEX (TeX) разработал Дональд Кнут в 1978 году, окончательный релиз оформился в 1979-м. Системы на основе TeX до сих пор являются актуальными в этой области и продолжают развиваться. Вот несколько примеров.
Читать дальше →

Матирование изображений, или как получить фотореалистичный передний план

Reading time7 min
Views4.1K

В последнее время в области компьютерного зрения произошло много революционных событий, но есть ряд классических задач, решение которых остается актуальным. Одна из них —  матирование, которое применяется для редактирования изображений и видео через извлечение нужных объектов с субпиксельной точностью. Решения этой задачи вы можете видеть в программах для кинопроизводства и фоторедакторах. В этой статье мы хотим познакомить вас с нашим новым подходом к матированию изображений. Изначально мы в SberDevices стремились решить задачу для портретов, но обобщающая способность модели позволяет использовать её и для изображений, выполненных в полный рост, для картинок с животными и так далее.

Читать далее

Как записать данные в Excel, используя C#

Level of difficultyEasy
Reading time4 min
Views17K

Excel - широко используемое электронное таблицы программное обеспечение, которое можно использовать для анализа данных, создания отчетов и многих других целей. Мы часто должны записывать данные в Excel для дальнейшей обработки и анализа. В программировании мы можем использовать различные способы записи данных в Excel, например, использование встроенных в Excel COM-компонентов, использование сторонних библиотек и т.д. Free Spire.XLS for .NET - это мощная сторонняя библиотека, которая может помочь нам легко записывать данные в Excel. В этой статье будет описано, как с помощью Free Spire.XLS for .NET записывать различные типы данных в Excel.

Читать далее

Получение подписантов в ЭДО через API СБИС и Диадок

Level of difficultyMedium
Reading time22 min
Views5.2K

Всем привет. Эта статья будет полезна тем, кто столкнулся с проблемой проверок доверенностей при работе с электронным документооборотом через СБИС и Диадок.  Речь идет не о МЧД (машиночитаемой доверенности), а о проверке обычных бумажных доверок.

Так же возможно кому то просто будет полезно почерпнуть принципы работы через API.

Ко мне эта задача прилетела от юристов, нашей компании, которые постоянно проверяли документы вручную. (смотрели вручную кем подписан документ и потом искали эту доверенность в сканах.

Читать далее

Information

Rating
Does not participate
Location
Макеевка, Донецкая обл., Украина
Date of birth
Registered
Activity