Рубрика «Блог компании RUVDS.com» - 80

Из хлама в NAS и немного темы майнинга - 1


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

Итак мы имеем: ПК 11 летней давности в состоянии «трэш».
Если подробнее: у блока питания вздуты все конденсаторы на выходе, у жёсткого диска взорванный полимерный конденсатор на входе питания, видеокарта тоже не стартует. По моим догадкам, по 12в линии явно пошло сильно больше 12в. При этом материнка с процессором остались живы. Чудо!
Читать полностью »

Сегодня, в третьей части серии материалов, посвящённых разработке серверов на Go, мы займёмся реализацией нашего REST-сервера с использованием Gin — одного из самых популярных веб-фреймворков для Go. Вот код, который мы будем тут обсуждать.

Перевод предыдущих частей:
Разработка REST-серверов на Go. Часть 1: стандартная библиотека.
Разработка REST-серверов на Go. Часть 2: применение маршрутизатора gorilla/mux

Разработка REST-серверов на Go. Часть 3: использование веб-фреймворка Gin - 1
Читать полностью »

Юмористичный обзор Rust с перспективы JavaScript - 1


В этой статье я в несколько забавном ключе документирую кое-какие размышления о своем знакомстве с Rust с позиции прожженного энтузиаста JavaScript. Здесь вас ждет импровизированная прогулка по феодам Вестероса, встреча с Ланнистерами и даже замаскированный под остров корабль — занятные аналогии, которые можно провести с работой в этом языке. Читать полностью »

Неочевидные уязвимости онлайн сервисов. Часть первая - 1


Пожалуй, каждый второй программист хоть раз задумывался попробовать создать свой, если не стартап, то собственный онлайн сервис. Может быть, такой инструмент умел бы делать простые SEO-аудиты сайтов, помогал находить технические ошибки, упрощая жизнь вебмастерам или маркетологам.

А может быть, вы популярный хостинг? Хотите привлечь пользователей, используя около-тематический трафик — создаете онлайн сервис который смог бы заменить целые серверные утилиты — nslookup, dig, curl?! Звучит неплохо, но всё ли так хорошо с безопасностью пользователей?

Об интересных и неочевидных уязвимостях онлайн-сервисов поговорим под катом. Читать полностью »

Можно выделить ряд алгоритмов, которые являются базовыми и лежат в основе практически каждой строчки программ, написанных на языках высокого уровня. Хорошо иметь под руками классический многотомный труд Дональда Кнута "The Art of Computer Programming", там детально разобраны многие базовые алгоритмы. Но прочесть и усвоить все — задача, требующая много усилий и времени, которая должна как-то быть мотивирована.

Многие могут предположить, что нюансы необходимо было знать 50 лет назад, а сейчас можно пользоваться готовыми пакетами и функциями и не погружаться в детали. Однако, это далеко не так. Равно как никто не отменял важность понимания представления методов хранения данных в памяти и их обработки в процессоре.

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

Является продолжением серии предыдущих публикаций.

Читать полностью »

Звонит как-то вендор и говорит, что в возврате бракованного железа — не их жёсткий диск.

Странные управленческие решения внутри хостинга - 1


Это местный вендор. Для прода мы покупаем серверное железо у крупных поставщиков, часто возим его в разные страны из одного центра. Но для тестовых новых конфигураций обращаемся к локальным поставщикам, берём железо на тесты или разовые проекты. Один из жёстких дисков оказался бракованным, и мы вернули его назад поставщику по гарантии. Причём знатно ругаясь, что связались с маленькой компанией, что задержало нам график тестов.

Гарантийный отдел ковыряется с диском, а потом звонят:

— А зачем вы подменили диск?

Мы такие:

— В смысле подменили?

— Мы вам продавали другой. А тут корпус тот, а внутри — другой. Какие-то следы от отвёртки.

Дичь полнейшая! Мы начали было ругаться, но потом стали разбираться. Начали смотреть на камеры и увидели, что наш сотрудник очень подозрительно себя вёл, когда работал с этим диском в стойке. Как в плохих комедиях про жуликов: постоянно осматривался по сторонам, отходил в сторону, возвращался. Оказалось, что он подменил диск. Честно, я не знаю зачем. Его финансовая выгода минимальная, скорее всего, даже не окупает время работы по замене корпуса.

У нас было ещё несколько странных ситуаций, и сейчас я о них расскажу. Читать полностью »

Самодельный миниатюрный лазерный гравер на Arduino Uno - 1


Полагаю, что проект, о котором я хочу рассказать, будет интересен всем, кто занимается электроникой. А именно, речь идёт о миниатюрном лазерном гравере, с помощью которого можно наносить изображения на картон, на дерево, на виниловые наклейки и на прочие подобные материалы. Идею проекта я почерпнул из этого руководства, сделав кое-что по-своему.
Читать полностью »

Сборка ядра Linux 5.12.10 c LLVM 12 + Clang и LTO оптимизацией - 1


Технический прогресс не стоит на месте, появляются новые компьютерные архитектуры, компиляторы становятся умнее и генерируют более быстрый машинный код. Современные задачи требуют все более креативного и эффективного решения. В данной статье пойдет речь, на мой взгляд, про один из самых прогрессивных тулчейнов LLVM и компиляторы на его основе Clang и Clang++, для языков программирования С и C++ соответственно. Хоть GCC — конкурент Clang, может агрессивнее оптимизировать циклы и рекурсию, Clang дает на выходе более корректный машинный код, и чаще всего не ломает поведение приложений. Плюс оптимизация программ не заканчивается только оптимизацией циклов, поэтому Clang местами дает лучшую производительность. В GCC же за счет переоптимизации вероятность получить unpredictable behavior значительно выше. По этой причине на многих ресурсах не рекомендуют использовать -O3 и LTO(Link Time Optimization) оптимизации для сборки программ. Плюс в случае агрессивной оптимизации, размер исполняемых файлов может сильно увеличиться и программы на практике будут работать даже медленнее. Поэтому мы остановились на Clang не просто так и опции компиляции -O3 и LTO работают в нем более корректно. Плюс современные компиляторы более зрелые, и сейчас уже нет тех детских болячек переоптимизации и LTO.
Читать полностью »

Можно ли сделать деревянный стеллаж без инструмента используя только отвертку и 3D-принтер? Легко!. - 1

Приветствую! Я хочу поделиться с вами очередной своей разработкой, которая позволяет сделать надежную, крепкую мебель и при этом без необходимости иметь инструмент, пылить в доме/квартире и собрать её буквально за один день. Эта статья для аудитории Хабра, которая любит DIY и получает удовольствие от процесса создания вещей своими руками. Осторожно, в статье много изображений и фотографий.
Читать полностью »

Как я программировал шахматную партию против брата - 1

Это история о том, как я попытался выиграть у брата партию в шахматы. Всего лишь гребаную одну игру. Что в этом особенного? Хорош ли я в шахматах? Вовсе нет. Научился ли я чему-то в процессе игры? Тоже нет. Может, это история о путешествии ради путешествия, а не цели? Не совсем. Получил ли я хотя бы удовольствие от этого? Не уверен.

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js