Рубрика «vds» - 2

Что необычного пишут люди в поддержку VDS-хостинга - 1


Клиенты пишут в поддержку по рабочим вопросам — ну знаете, всё то, что ещё не автоматизировано и нельзя сделать из личного кабинета — и по странным. С учётом, что у нас разработка постоянно добавляет функции в ЛК по мере накопления тикетов, которые надо автоматизировать, постепенно работа поддержки всё больше сводится к разбору странного.

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

Клиент на демопериоде: Разблокируйте. Просто хотел блокчейн запустить на сервере и получил бан.

Сотрудник: Данные в паспорте не соотносятся с тем, что вы заполнили, поэтому либо заполните согласно паспорту, либо предоставьте надлежащую копию.

Клиент: Готово. Исправил ошибку.

Сотрудник: Разблокировали.

Клиент: Снова разблокируйте.

Сотрудник: Укажите назначение и цель использования программ, за которым поступили блокировки одна за одной.

Клиент: Еммм. Взлом своего бтц-кошелька. Жалобы от кого? )

Сотрудник: К сожалению, разблокировка сервера в этой ситуации возможна только после его оплаты на общих основаниях.

Клиент: Ахааххах, странные вы ) очень ) идите на**й )

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

Конечно, самое ценное — это когда нам присылают баг. Или жалуются на что-то, что легко исправить и получить ещё одно преимущество. Вот, например, недавно был случай, когда выяснилось, что в личном кабинете можно менять 1 рубль на 1 доллар, — курс получался вполне себе даже ничего. Читать полностью »

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

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


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

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

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

Мы такие:

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

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

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

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

Собираем и устанавливаем свою Linux-систему на микроконтроллер STM32MP1 - 1

В этой статье мы автоматизируем процесс сборки и установки Linux-системы на микроконтроллер STM32MP157-DK2. ОС будет обладать минимальной функциональностью, но зато мы соберём из исходников собственную систему. А поможет нам в этом Buildroot — система сборки Linux-дистрибутивов. 

Что такое Buildroot?

Сначала вспомним, что Linux-система состоит из достаточно большого количества разных компонентов. Так как мы здесь говорим про embedded-платформы, выделим следующие компоненты:
Читать полностью »

Синхронный АМ приёмник Полякова - 1

Владимир Тимофеевич Поляков (RA3AAE) широко известен в нашей стране как разработчик любительской радиоэлектроники. Его конструкции всегда отличались простотой и хорошей повторяемостью. Ещё в них всегда присутствовала какая-то «сумасшедшинка».

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

Речь идёт о синхронном АМ приёмнике, схема которого была опубликована в журнале «Радио» №8 за 1984 год.
Читать полностью »

image

Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:

Примитивы: string, number и boolean

В JS часто используется 3 примитива: string, number и boolean. Каждый из них имеет соответствующий тип в TS:

  • string представляет строковые значения, например, 'Hello World'
  • number предназначен для чисел, например, 42. JS не различает целые числа и числа с плавающей точкой (или запятой), поэтому не существует таких типов, как int или float — только number
  • boolean — предназначен для двух значений: true и false

Обратите внимание: типы String, Number и Boolean (начинающиеся с большой буквы) являются легальными и ссылаются на специальные встроенные типы, которые, однако, редко используются в коде. Для типов всегда следует использовать string, number или boolean.

Массивы

Для определения типа массива [1, 2, 3] можно использовать синтаксис number[]; такой синтаксис подходит для любого типа (например, string[] — это массив строк и т.д.). Также можно встретить Array<number>, что означает тоже самое. Такой синтаксис, обычно, используется для определения общих типов или дженериков (generics).

Обратите внимание: [number] — это другой тип, кортеж (tuple).

any

TS предоставляет специальный тип any, который может использоваться для отключения проверки типов:

let obj: any = { x: 0 }
// Ни одна из строк ниже не приведет к возникновению ошибки на этапе компиляции
// Использование `any` отключает проверку типов
// Использование `any` означает, что вы знакомы со средой выполнения кода лучше, чем `TS`
obj.foo()
obj()
obj.bar = 100
obj = 'hello'
const n: number = obj

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

История нефтеперевозок. От танкеров с бакинской нефтью до современных монстров - 1

В 1847 году английский химик Джеймс Янг был занят перегонкой нефти, которая, в очень скромных количествах, выделялась в угольных месторождениях. Янг хотел получить легкое ламповое масло (сразу скажем, что до керосина дело у него так и не дошло), но получил масло тяжелое и вязкое.

Для лампового масла эта субстанция не очень годилась, зато она отлично подходила для смазывания деталей механизмов, которых к тому времени в Англии было довольно много, и спрос на «нефтяной воск», предотвращающую порчу металлических деталей, вдруг скакнул до небес.

Правда, новое производство Янга и его компаньонов Мелдрама и Бинни испытывало постоянные проблемы с поставками сырья, потому что «естественного просачивания нефти» было явно недостаточно для удовлетворения спроса на парафин. Янг проявлял чудеса изобретательности (например, догадался получать нефть из горючего сланца), но в конце концов новые фабриканты неизбежно встали перед проблемой завоза нефти.
Читать полностью »

Разукрашиваем вывод в консоли: теория и практика - 1

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

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

Игра в Нострадамуса - 1

Давайте спрогнозируем, сколько еще, как минимум, осталось жить масочному режиму, Интернету или Хабру? Прикинем на пальцах, ничего не зная, кроме того, сколько времени уже с нами эти явления, а обоснуем свои предсказания нехитрыми трюками из статистики и принципом Коперника.

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

Инструменты для аудита CSS - 1

Аудит (здесь и далее слово «аудит» употребляется в значении «оценка качества») CSS не относится к повседневным задачам при разработке веб-приложений, но иногда приходится этим заниматься. Это может быть частью процесса определения критического CSS, удаления неиспользуемых селекторов, улучшения доступности, когда все цвета в кодовой базе оцениваются на предмет контрастности, и т.д.

Существуют некоторые инструменты, облегчающие выполнение указанных задач. Но давайте начнем с того, что понимается под «аудитом» CSS.

Аудит CSS — задача не из легких

Как правило, оценка качества кода включает в себя его анализ в поиске багов и других проблем, например, проблем с производительностью. Для большинства языков программирования концепция аудита кода проста: она работает или не работает. Но CSS — это особенный язык, большая часть ошибок которого игнорируется браузером. Один и тот же стиль можно применять совершенно по-разному. Это обуславливает сложность аудита CSS. И «сложность» — это еще мягко сказано.
Читать полностью »

Отслеживание и визуализация положения МКС с помощью 30 строк JavaScript-кода - 1

Предлагаю вашему вниманию перевод этой замечательной статьи.

В этом туториале мы создадим веб-приложение, визуализирующее положение любого спутника, например, Международной Космической Станции (далее — МКС), в режиме реального времени (ну, почти).

Мы создадим приложение с нуля и примерим на себя роль настоящего ученого в области ракетостроения.

  • Мы узнаем, где найти данные для отдельного спутника, известные как двухстрочный набор элементов (two-line element set, TLE) (далее — ДНЭ)
  • Мы используем библиотеку ”satellite-js” для предсказания орбиты спутника по ДНЭ (это часть напрямую связана с ракетостроением)
  • Мы используем библиотеку ”CesiumJS” для визуализации результата, однако, вы можете использовать любую библиотеку/движок, которые умеют работать с долготой, широтой и высотой

Превью конечного результата:

Здесь мы видим движение МКС по орбите со скоростью, увеличенной в 40 раз. Для того, чтобы увидеть текущее положение МКС, нажмите на иконку часов в верхнем левом углу панели управления.
Читать полностью »


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