Как стать автором
Обновить
31
0.2

Пользователь

Отправить сообщение

Использование потоков WebAssembly из C, C++ и Rust

Время на прочтение12 мин
Количество просмотров9.4K


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

В этой статье вы узнаете, как использовать потоки WebAssembly для переноса многопоточных приложений, написанных на языках C, C++ и Rust, в веб-среду.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии20

Строим аналитическое хранилище данных с готовыми модулями ML на Google BigQuery: просто, быстро, доступно

Время на прочтение10 мин
Количество просмотров11K

Рассказываем как перестать переживать о том, что вы не знаете Hadoop и вывести работу с данными в компании на новый уровень, как быстро и без больших затрат создать в аналитическое хранилище, наладить процессы загрузки туда данных, дать возможность аналитикам строить отчеты в современных BI инструментах и применять машинное обучение.

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии21

Зачем нужен static при объявлении анонимных функций?

Время на прочтение2 мин
Количество просмотров20K

Буквально на днях пришел вопрос от одного из подписчиков касательно одного из постов моего telegram канала. Его смутил вот такой кусок кода:

usort($firstArray, static function($first, $second) { return $first <=> $second;
});

Вопрос звучал так:

"Зачем делать callback’и в функции сортировки (usort), статическими?"

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

Читать далее
Всего голосов 52: ↑50 и ↓2+63
Комментарии14

Разработка REST-серверов на Go. Часть 1: стандартная библиотека

Время на прочтение9 мин
Количество просмотров82K
Это — первый материал из серии статей, посвящённой разработке REST-серверов на Go. В этих статьях я планирую описать реализацию простого REST-сервера с использованием нескольких различных подходов. В результате эти подходы можно будет сравнить друг с другом, можно будет понять их относительные преимущества друг перед другом.

Первый вопрос разработчиков, которые только начинают применять Go, часто выглядит так: «Какой фреймворк стоит использовать для решения задачи X». И хотя это — совершенно нормальный вопрос, если задавать его, имея в виду веб-приложения и серверы, написанные на многих других языках, в случае с Go при ответе на этот вопрос нужно принять во внимание множество тонкостей. Существуют серьёзные аргументы как «за», так и «против» использования фреймворков в Go-проектах. Я, работая над статьями из этой серии, вижу своей целью объективное разностороннее исследование этого вопроса.


Читать дальше →
Всего голосов 35: ↑32 и ↓3+41
Комментарии8

Худшие места в C++ для написания кода

Время на прочтение7 мин
Количество просмотров9K

Любой язык программирования, а особенно C++, предоставляет всевозможные средства для написания кода. В начале карьеры любому программисту кажется, что для того, чтобы мастерски овладеть языком, надо использовать по максимуму его возможностей. Но так ли это? Может, лучше наоборот, ограничиться необходимым минимумом средств, и не использовать сложные, подверженные ошибками конструкции? Давайте посмотрим на те возможности C++, где код нужно стараться не писать вовсе.

Читать далее
Всего голосов 26: ↑8 и ↓18-9
Комментарии82

Telegram-клиент на Golang

Время на прочтение3 мин
Количество просмотров12K

Работая разработчиком в одной веб-студии, пришел клиент с довольно интересной работкой, ему нужен был агрегатор постов из чужих телеграм каналов, так как стек в компании был PHP то решили писать на нем, а конкретно на библиотеке MadelineProto о которой уже есть статья от крутого парня (более подробно об этой либе можете почитать в его статье), вот и началось мучительно создание этого сервиса...

Madeline в общей массе свой очень хорошо, полностью асинхронный и имет под капотом кучу методов для работы как с ботами так и с клиентом, но есть у него одна маленькая проблема (а может и не одна ¯\_(ツ)_/¯) , встроенный EventHandler получает не все новые сообщения из постов (и да я понимаю что есть getHistory, но если бы мы брали сообщения через этот метод, все вышло бы очень медленно работающим и высоконагруженным) Долгие часы и даже дни поиска решения этой проблемы не привели к желаемому результату, все так же процент постов которые пропускались именно Madeline был слишком большим.

Ок, было принято волевое решение забить на данную библиотеку и попробовать найти что-то другое на известном нам стеке, взгляд упал на go-tdlib. Развернули либу и поехали пыхтеть в разработку, и о чудо все посты собираются и все стало чудесно, за исключением одного но... Данная библиотека от пользователя Arman92 сильно отстает от офф методов tdlib и имеет внутри несколько логических ошибок, в общем начали у нас сыпаться паники и другие неприятные вещи. Так как пути назад уже не было, перебрали мы всю либу и обновили методы а так же исправили ошибки и теперь все просто чудесно.

Читать далее
Всего голосов 5: ↑0 и ↓5-5
Комментарии3

Как управлять вашими секретами с git-crypt

Время на прочтение7 мин
Количество просмотров11K

Большинство программных проектов используют секреты – обычно, как ключи к удаленному API или данные для доступа к внешнему ресурсу, например к базе данных. Вашему приложению необходимы эти ключи во время работы, поэтому вам нужно предоставить их при развертывании приложения или на этапе подготовки окружения.
В данной статье я покажу вам, как использовать git-crypt так, чтобы вы могли безопасно хранить секреты ваших приложений в репозиториях исходного кода, даже публичных.

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии10

Релиз CLion 2021.2: улучшения в отладчике, проверка времени жизни объектов, поддержка CMake Presets

Время на прочтение7 мин
Количество просмотров4.2K

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

В конце июля в JetBrains стартует очередной релизный «паровоз». На этой неделе обновились многие IDE на платформе IntelliJ, на следующей запланированы обновления наших продуктов для .NET. И сегодня мы хотим поговорить о CLion 2021.2 — новейшей версии нашей кроссплатформенной IDE для разработки на C и C++.

Коротко о главном. CLion 2021.2 защитит ваш код от типичных проблем доступа к памяти в C++, автоматически загрузит настройки сборки приложения из CMake Build Presets, откроет проект с использованием GNU Autotools, поможет с профилированием на удаленном хосте и на WSL. Кроме того, значительно улучшен отладчик (самые крупные обновления ждут наших пользователей на Windows). А для тех, кто пока только изучает C++ или прототипирует новое приложение или библиотеку, мы добавили интеграцию с Cling — интерпретатором С++.

Дьявол в деталях
Всего голосов 13: ↑12 и ↓1+12
Комментарии35

Как искать и выбирать npm-пакеты? Шпаргалка для начинающих

Время на прочтение4 мин
Количество просмотров11K

Что делает разработчик, если ему нужно раскрасить кнопку в красный цвет? Ищет в npm пакет, окрашивающий кнопки в красный цвет

В реестре npm — более миллиона пакетов почти для чего угодно. Например, с их помощью можно минифицировать код, удалять и переименовывать файлы, создавать спрайты, отправлять сообщения в центр уведомлений операционных систем, работать с препроцессорами Less и Sass и выполнять многие другие действия, упрощающие и автоматизирующие работу над проектом. 

Конечно, бездумно использовать менеджер пакетов не стоит: некоторые задачи можно решить и без него. Но всё же npm-пакеты полезны и постоянно применяются в веб-разработке. Поэтому важно знать, как их правильно выбрать, где искать и на что обратить внимание перед установкой.

Читать далее
Всего голосов 8: ↑6 и ↓2+5
Комментарии7

Cам себе облако: установка ELK и TICK стеков в Kubernetes

Время на прочтение13 мин
Количество просмотров14K

Казалось бы простая задача - развернуть Kubernetes кластер и в нем запустить централизованный мониторинг TICK стек и логирование ELK стек. Но для меня она осложнилась тем, что с этим технологиями я столкнулся впервые. Чтобы понять, как все работает, хотел пройти простые Quick Start инструкции. К своему удивлению, не нашел детальных актуальных описаний - либо отдельные статьи со своей спецификой, либо многостраничные книги по Kubernetes. Пока собирал пазл из многочисленных материалов, решил написать статью, в которой рассмотреть общую концепцию развертывания TICK и ELK стеков в Kubernetes. 

Для чего, вообще, решать задачу централизованного мониторинга и логирования в Kubernetes? 

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии10

С++ на практике

Время на прочтение11 мин
Количество просмотров43K


Все мы знаем, что С++ — мощный язык, у которого много сторонников. Но чем могут быть недовольны даже сторонники? Где сталкиваешься с неудобствами и чем они вызваны? Почему в примитивном приложении могут вылезти неожиданные сложности и чего не хватает в стандартной библиотеке? А главное, что можно сделать для улучшения ситуации?


Антон Полухин (antoshkka), состоящий в комитете по стандартизации C++ и работающий в «Яндекс.Такси», рассказал обо всём этом в докладе «C++ на практике». Сам доклад появился ещё в 2019-м, и с выходом C++20 что-то изменилось, но главные тезисы и вывод остались актуальны. Поэтому теперь, готовя новую конференцию C++ Russia 2021, мы решили сделать для Хабра пост на основе этого доклада. Под катом — и текст, и видеозапись. Далее повествование идёт от лица Антона.

Читать дальше →
Всего голосов 43: ↑38 и ↓5+49
Комментарии168

Взрослый back-end на node.js возможен?

Время на прочтение6 мин
Количество просмотров45K

В экосистеме Node.js существует довольно много библиотек и фреймворков, которые пользуются определенной популярностью в сообществе. Но ни один из инструментов не решил главную проблему, с которой сталкиваются разработчики, когда пытаются писать бэкенд на Node.js. Это проблема выбора архитектуры.

Хочу обратить ваше внимание на относительно молодой фреймворк Nest.js. Из коробки он предлагает заранее предопределенную архитектуру, которая заточена под максимально удобную поддержку и масштабируемость вашего приложения. Заложенные архитектурные подходы проверены временем и давно используются в других, более зрелых платформах: Java(Spring), Python(Django), PHP(Laravel) и прочих.

Авторы Nest.js не скрывают, что их вдохновил один из популярных фреймворков для клиентских приложений — Angular.js, а его авторы ориентировались на походы, используемые в Java и C#. Если вы знакомы с Angular.js, то увидите в Nest.js много схожих идей.

Читать далее
Всего голосов 45: ↑39 и ↓6+40
Комментарии49

Современные Unix программы

Время на прочтение3 мин
Количество просмотров26K
Наше внимание привлёк один интересный репозиторий, который называется Modern Unix. В нём собраны, в основном, современные альтернативы классическим Unix-командам. Всего там имеется почти три десятка описаний таких команд. Надеемся, вы найдёте среди них что-то такое, что вам пригодится.


Читать дальше →
Всего голосов 50: ↑44 и ↓6+56
Комментарии48

Часто забываемые правила безопасности Docker: заметки энтузиаста ИБ

Время на прочтение7 мин
Количество просмотров14K

Последние пару лет я помогаю клиентам нашего облака внедрять DevOps-практики и делюсь своим опытом инженера DevOps. К сожалению, вопросы про информационную безопасность возникают у клиентов зачастую тогда, когда уже что-то произошло. У меня как у любителя киберзащиты постепенно накопилась целая подборка ИБ-кейсов, которыми хочется поделиться. 

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

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии3

Как успешно пройти собеседование на английском в ИТ?

Время на прочтение5 мин
Количество просмотров27K

У нас в компании много иностранных проектов. Пройти интервью не всегда легко, даже если много и регулярно общаешься на английском. Поэтому наша команда преподавателей создала курс Project Interviews in English, который мы решили сделать доступным для всех желающих. Меня зовут Инна, я координировала создание курса и сегодня поделюсь  полезными советами из него.

Читать далее
Всего голосов 15: ↑6 и ↓9-1
Комментарии16

Разработка REST-серверов на Go. Часть 6: аутентификация

Время на прочтение13 мин
Количество просмотров32K
Перед вами — шестой материал из серии статей, посвящённых разработке REST-серверов на Go. Наша сегодняшняя тема — безопасность, а именно — аутентификация. Если бы сервер, разработанный в предыдущих материалах, был бы развёрнут, и к нему мог бы обратиться кто угодно, то у любого, имеющего выход в интернет, был бы полный доступ к его API. Хотя некоторым REST-серверам это вполне подходит, такой сценарий работы с сервером желателен далеко не всегда. Обычно как минимум часть API должна быть защищена таким образом, чтобы доступ к ней могли бы получить лишь аутентифицированные пользователи.



Читать дальше →
Всего голосов 19: ↑18 и ↓1+27
Комментарии3

Валидация в приложении на PHP (часть 1 — валидация доменного слоя)

Время на прочтение6 мин
Количество просмотров10K

Как по мне достаточно важная, хотя и холиварная тема. Думаю каждый из нас задавал себе вопросы: "можно не дублировать проверки?", "а не усложняю ли я?", "да как же это сделать нормально?!".

Эта статья аккумулирует в себе те практики, которые мне близки и которых я придерживаюсь в разработке.

Текст рассчитан не на новичков, потому нормально, если по ходу чтения какие-то понятия будут вам неизвестны, я постарался коротко раскрыть их здесь, а также указал ссылки на посты в моём телеграм канале Beer::PHP ​, которые могут чуть подробнее раскрыть то или иное понятие.

Начнем мы сразу с доменного слоя нашего приложения, то есть с бизнес логики нашего приложения.

Читать далее
Всего голосов 11: ↑10 и ↓1+12
Комментарии118

Интеграция пресетов CMake в Visual Studio и Visual Studio Code

Время на прочтение6 мин
Количество просмотров14K

В CMake 3.19 и 3.20 был зарелижен CMakePresets.json, который позволяет пользователям указывать общие параметры настройки, сборки и тестирования и делиться ими с другими пользователями. Мы добавили поддержку CMakePresets.json в Visual Studio и создали расширение CMake Tools для Visual Studio Code. Теперь вы можете вызывать CMake с CMakePresets.json в Visual Studio, в Visual Studio Code, в конвейере непрерывной интеграции и из терминалов в Windows, Linux и macOS.

Интеграция CMake Presets теперь доступна в Visual Studio 2019 16.10 Preview 2 и CMake Tools 1.7.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Информация

В рейтинге
2 244-й
Зарегистрирован
Активность