Pull to refresh
27
0
Череп @5kull_h4ck3r

User

Send message

О неотъемлемой сложности систем

Level of difficultyMedium
Reading time7 min
Views3.6K

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

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

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

Каждая цель проистекает из определённого способа моделирования мира и наших действий. Как и в случае с любой абстракцией, они выполняют свою задачу в подходящем контексте и становятся ложными вне этого контекста; многие проблемы в разработке ПО могут быть объяснены такой искажённой перспективой, о чём я говорил в своём предыдущем посте. В этой статье мы будем считать, что основная задача разработчика ПО — это управление сложностью.
Читать дальше →
Total votes 26: ↑23 and ↓3+28
Comments4

Превращаем Android-смартфон в USB-клавиатуру, мышь и флешку

Level of difficultyHard
Reading time29 min
Views26K

Android-смартфон при подключении к компьютеру через USB может выглядеть как медиаустройство, модем или хранилище файлов. В этой статье мы научимся делать из него USB-клавиатуру, мышь и флешку.
Читать дальше →
Total votes 59: ↑59 and ↓0+82
Comments48

На все 100

Level of difficultyHard
Reading time1 min
Views6.8K

Привет, Хабр! Кажется, мы полюбили квизы — а всё потому, что видим ваш интерес к ним. У нас уже был космический квиз (завязанный на наши космические путешествия) и квиз «Пол-лимона», приуроченный к 500 000-му серверу.  А сегодня у нас квиз на ваши знания нашего… впрочем, вам всё ещё только предстоит узнать!

Посмотреть, что мы задумали
Total votes 52: ↑33 and ↓19+44
Comments10

В помощь джунам: как легко разместить сайт на VPS

Level of difficultyEasy
Reading time7 min
Views11K


Думаю, ни для кого не секрет, что… Чуть больше года назад именно с этой фразы начиналась наша статья о том, как разместить на виртуальном выделенном сервере свой сайт. Тогда мы на Linux-системе развернули стек LAMP, подняли FTP-сервер и с его помощью скопировали файлы сайта с локального компа на нашу виртуалку. Но всё-таки тема показалась нам недостаточно раскрытой. Как и тогда, данный материал рассчитан на не очень опытных пользователей, на тех, кто ещё только набирается опыта в вёрстке, кто пробует делать свой пет-проект на вебе, кто выполняет тестовое задание в качестве джуна-фронтендера. Речь пойдёт о том, как быстро и безболезненно перенести уже готовый сайт на только что созданный VPS.
Читать дальше →
Total votes 32: ↑26 and ↓6+30
Comments11

Замки, драконы и сундуки: как возник классический сеттинг игрового фэнтези? Часть 1: во всём виноват Конан-Варвар

Level of difficultyEasy
Reading time8 min
Views12K

Фэнтези в наши дни имеет массу разных форм и поджанров. Классическое и тёмное, эпическое и ироническое, городское, славянское, китайское, и прочее всякое-разное. И всё же, когда дело касается мира компьютерных и настольных игр, при слове «фэнтези» мы первым делом представляем что-то довольно-таки определённое. Пафосные паладины с мечами, остроухие эльфы с луками, коренастые гномы с топорами и пивом, свирепые зеленокожие орки, сумрачные маги и прочие некроманты с драконами будут бегать по живописным горам и равнинам, оборонять и штурмовать крепости, искать артефакты в подземельях, призывать и запечатывать всякие сущности — и попутно прокачивать свои способности. Но откуда взялся этот классический сеттинг игрового фэнтези? Ведь напрямую он не копирует ни одно литературное произведение, фильм или некую изначальную игру, которые можно было бы назвать его однозначной первоосновой. Попробуем разобраться!
Читать дальше →
Total votes 73: ↑71 and ↓2+86
Comments19

Слишком сильное вдохновение: как Gameloft стали успешными

Level of difficultyEasy
Reading time12 min
Views5.5K
image

Все мы играли в игры от Gameloft. Но не все знают, что эту студию создал человек, стоявший у истоков самой Ubisoft. За годы своего существования, французская студия создала множество как собственных разработок, так и игр, сделанных с явной оглядкой на популярные тайтлы.
Читать дальше →
Total votes 23: ↑21 and ↓2+29
Comments5

Записываем музыку при помощи CSS Grid

Level of difficultyMedium
Reading time8 min
Views7K
Слишком часто я наблюдал за тем, как импровизирующий музыкант трясущимися руками пытается увеличить pdf размером A4 на крошечном экране телефона в самом разгаре исполнения. Мы обязаны создать плавный и отзывчивый рендеринг музыки для веба!

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

Прототип Scribe


SVG, отрендеренный Scribe 0.2

Несколько лет назад я создал прототип рендерера музыки, который назвал Scribe. Он выполняет преобразование JSON в SVG. Изначально я стремился к созданию адаптивного рендерера музыки. Это было хорошее демо, но для дальнейшего развития пришлось бы писать сложный многопроходный движок генерации макетов, а у меня тогда возникли другие дела.

Вскоре после этого я занялся адаптированием Grid под проекты компании, и тут мне почудилось нечто знакомое: я задался вопросом, а не станет ли он решением некоторых проблем, с которыми я столкнулся при разработке Scribe?
Читать дальше →
Total votes 55: ↑55 and ↓0+63
Comments17

Разработка игры Jim Power для 8-битной приставки: из первых рук

Level of difficultyEasy
Reading time30 min
Views8.3K

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

Но далеко не все проекты и моя роль в них известны широкой публике. Пожалуй, один из самых интересных — версия игры Jim Power от Piko Interactive, созданная для 8-битной игровой консоли NES (Famicom, Денди). Я занимался им в 2014-2020 годах в качестве приглашённого разработчика.

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

Если вы когда-либо хотели узнать, как и кем делаются современные игры для несовременных платформ, каким образом люди вообще приходят к этому — сейчас всё будет.
Читать дальше →
Total votes 82: ↑82 and ↓0+97
Comments9

50 лет первой операционной системе для персональных компьютеров

Level of difficultyEasy
Reading time9 min
Views14K

В 1974 году первопроходец ПО для PC Гэри Килдалл продемонстрировал в Пасифик-Гроув, Калифорния, первую коммерчески успешную операционную систему для персонального компьютера — CP/M. В этой статье мы расскажем историю о том, как его компания Digital Research Inc. превратила CP/M в отраслевой стандарт, а позже проиграла версии ОС от Microsoft, скопировавшей внешний вид и стиль ПО DRI.
Читать дальше →
Total votes 68: ↑68 and ↓0+79
Comments30

Дивный мир японских аркад в новом столетии

Level of difficultyEasy
Reading time19 min
Views7K
image

В XXI веке сложилась парадоксальная ситуация: рынок аркадных автоматов в Японии не только продолжил существовать, но и развивается по сей день. О том, какие игры на рынке аркад есть сейчас (порой — совсем непонятные европейскому игроку) — в новом материале про аркады.
Читать дальше →
Total votes 46: ↑46 and ↓0+55
Comments26

Проблема: Wi-Fi работает только во время дождя

Level of difficultyEasy
Reading time6 min
Views48K
Вот что ответил отец на мой вопрос о проблеме с домашним подключением к интернету: «Wi-Fi работает, только когда идёт дождь».


Давайте сделаем шаг назад, чтобы осознать смехотворность этой ситуации.

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

Мой отец — инженер, он работал с сетевым оборудованием, ещё когда я не родился. В основанной им компании он проектировал и внедрял множество сложных сетевых систем в организациях по всей стране: от гигабитного Ethernet для офисного здания до междугородных соединений при помощи микроволновых линий связи прямой области видимости.

Он последний, кто мог бы сказать нечто столь абсурдное.

«Что?», — удивлённо произнёс я. «Wi-Fi работает, только когда идёт дождь. Это началось пару недель назад, у меня пока не было времени с этим разобраться», — повторил он терпеливо.
Читать дальше →
Total votes 133: ↑124 and ↓9+143
Comments144

Как я делал сеть на 10 гигабит с минимальным бюджетом

Level of difficultyMedium
Reading time11 min
Views69K


Решил я ускорить тривиальную задачу в виде передачи файлов с одного компьютера на маленький домашний NAS. Раньше 10 гигабит были для меня чем-то заоблачным (с учётом цены на свичи, а также сетевые карты). Но благодаря апгрейду дата-центров, а также свежим чипам для свичей от Realtek, апгрейд оказался недорогим и безболезненным.

О выборе железа и тестах — под катом.
Читать дальше →
Total votes 109: ↑108 and ↓1+134
Comments148

Почему люди не делают бэкапы?

Level of difficultyEasy
Reading time6 min
Views16K
Есть у меня вузовский товарищ Сашка. Математик, физик, а теперь и разработчик (умело монетизирует мозги), умный до безобразия. Ещё в университете он проявлял патологическую собранность в походах: чего бы ни понадобилось, всё было у него в рюкзаке. Год за годом он погружался в тему жизнеобеспечения всё глубже — и вот в ковидные времена общество получило выживальщика, продуманного до мелочей. Это тот случай, когда тушёнка, сгущёнка, йодид калия, триста способов разжечь костёр, землянка в пригородном лесу уже выкопана и меблирована обставлена по последнему слову выживания. Так вот, этот разработчик, математик, физик и человек, желающий во что бы то ни стало сохраниться вместе с тихоходками, с полгода назад истерически кричал мне в трубку, что у него «стёрся» проект длиной в год. Причина истерики проста: он не сделал бэкап. И это могла быть курьёзная байка, но таких — сотни и тысячи. Это люди, которые доверяют какому-то авосю свой труд, свои силы, свой опыт, свои деньги, данные, судьбы своих компаний. А авось почему-то оказывается ненадёжным.


Это всё чёрная кошка виновата, а не бэкапы там какие-то несделанные

Почему так происходит? Предлагаю рассмотреть 9 возможных причин.
Читать дальше →
Total votes 43: ↑40 and ↓3+52
Comments90

Как идёт строительство The Line, города будущего в пустыне

Level of difficultyEasy
Reading time9 min
Views83K


The Line — самый дорогой футуристический проект в истории. Стеклянный город будущего в безжизненной пустыне. Небоскрёб-линия, которую будет видно из космоса. В двести раз дороже Большого адронного коллайдера, в пять тысяч раз крупнее Бурдж-Халифы. Многие сомневались, что они это всерьёз, но да — стройка действительно началась и идёт полным ходом. Что можно ждать от этого проекта и есть ли у него будущее?


Осторожно, под катом очень много фото, несколько десятков.

Читать дальше →
Total votes 117: ↑113 and ↓4+148
Comments569

Как работает код, который спит месяц

Level of difficultyMedium
Reading time7 min
Views13K

В первой части этого небольшого цикла статей мы говорили о том, что механизм устойчивого выполнения (durable execution) сохраняет состояние программы в журнале, а также о связанных с этим сложностях в случае обновлений служебного кода, ведущих к утрате журналом актуальности. Мы увидели, что ограничение времени выполнения обработчика существенно облегчает эту проблему. Но… не ведёт ли это к потере одного из наиболее интересных свойств устойчивого выполнения — возможности создавать бизнес-процессы, работающие с длительными паузами? В Restate мы считаем, что при использовании правильных примитивов можно ничего не потерять.

Тем не менее, если вы любите писать код с долгими периодами ожидания, потому что он хорошо согласуется с вашей моделью мышления, то Restate поможет вам реализовать это в полной мере. Если же вы цените устойчивое выполнение, но скептично относитесь к долго выполняющимся обработчикам и проблемам с их версионированием, то для этого есть решение. Ниже описаны несколько способов получить те же свойства путём добавления в этот механизм устойчивого обмена сообщениями и состояния.
Читать дальше →
Total votes 30: ↑26 and ↓4+39
Comments10

Эффект Ганна

Level of difficultyMedium
Reading time8 min
Views12K
Картинка Benzoix, Freepik

Среди физических эффектов особняком стоит один весьма интересный феномен, который получил название эффекта Ганна, по имени английского физика Джона Ганна, открывшего его в 1963 году…

Суть его заключается в том, что если к однородному образцу из специального материала с имеющимися электрическими контактами приложить электрическое поле, величина которого превышает некоторое пороговое значение (эффект наблюдался первооткрывателем на кристаллах арсенида галлия и фосфида индия; для первого напряжённость электрического поля должна составлять 3 кВ/см, а для второго — 6 кВ/см), то во внешней электрической цепи начинают наблюдаться колебания тока. Причём было обнаружено, что период этих колебаний примерно равен времени полёта электронов от катода к аноду, а частота колебаний была достаточно большой и находилась в области СВЧ-диапазона: $Т_{0}\approx L/u_{g}$, где: $L$ — длина экземпляра; $u_{g}$ — скорость дрейфа электронов.
Читать дальше →
Total votes 51: ↑50 and ↓1+71
Comments2

Иммутабельность в механизме Durable Execution: проблемы и решение

Level of difficultyMedium
Reading time7 min
Views2.4K

За последние годы мы наблюдаем всплеск разработки инструментов и платформ, обеспечивающих Durable Execution (устойчивое выполнение). Немного поясню его принцип.

Компьютеры на сегодня достигли таких скоростей, что могут записывать результат каждой нетривиальной задачи в постоянное хранилище. Это, в свою очередь, позволяет им прекрасно восстанавливаться после временного сбоя путём повторного выполнения по журналу всех завершённых задач до момента этого сбоя. Выполнив эти задачи, система спокойно продолжает работу с точки, где она была прервана. При достаточном внимании и осторожности такой механизм можно реализовать с минимальным влиянием на модель программирования или производительность, что, безусловно, очень ценно. Не так ли?
Читать дальше →
Total votes 29: ↑28 and ↓1+40
Comments0

Простая трубка Гейслера своими руками

Level of difficultyMedium
Reading time7 min
Views16K

Историческая разрядная трубка – «трубка Гейслера» (1857) – воистину прабабушка множества газоразрядных и электровакуумных приборов (ЭВП) и родилась как эксперимент и развлечение с демонстрацией тлеющего разряда. Трубка Гейслера привела, ни много ни мало, к открытию электрона. Прямые её потомки – неоновая реклама и люминесцентное освещение, лишь совсем недавно сдались под натиском светодиодов. Простые разрядные трубки долгое время служили индикатором разрежения в вакуумных системах. Такие приборы показывали высокое напряжение, использовались в научных исследованиях и для индикации резонанса в контурах крупных радиопередатчиков. Разрядные трубки Гейслера специфической гантелеобразной формы используют для получения линий спектра веществ.
Читать дальше →
Total votes 150: ↑150 and ↓0+150
Comments97

К 30-летнему юбилею DOOM: как два садиста, психопат и мормон создали одну из величайших игр в истории? Часть 8

Level of difficultyEasy
Reading time4 min
Views12K

В прошлой части мы оставили разработчиков Doom в тот непростой момент, когда они расстались со своим старым коллегой, креативным директором Томом Холлом из-за его неприятия чрезмерно брутального стиля новой игры. До релиза уже оставались считаные месяцы — и команде id Software нужно было срочно найти нового геймдизайнера в надежде допилить уровни игры именно так, как это требовалось для шутера про свирепое истребление легионов Ада на космической станции.

Все части цикла статей о создании DOOM:
Читать дальше →
Total votes 48: ↑45 and ↓3+59
Comments3

Генератор случайных чисел, который можно запустить в голове

Level of difficultyHard
Reading time8 min
Views27K

Люди ужасно плохо справляются с придумыванием случайных чисел. Я хотел научиться быстро генерировать «достаточно случайные» числа. Мне не нужно было что-то совершенное, просто способ придумывания случайных цифр за полминуты. Поискав онлайн, я нашёл старый пост в Usenet, написанный Джорджем Марсалья:

Выберите двухразрядное число, допустим, 23. Оно будет вашим «порождающим значением» (seed).

Создайте новое двухразрядное число: количество десяток плюс шесть, умноженное на количество единиц.

Пример последовательности: 23 –> (2 + 6 * 3) = 20 –> (2 + 6 * 0) = 02 –> 12 –> 13 –> 19 –> 55 –> 35 –> …

Его период будет порядком множителя (6) в группе остатков, простых относительно модуля, 10 (в данном случае 59).

«Случайными цифрами» будет количество единиц двухразрядных чисел, то есть 3,0,2,2,3,9,5,… то есть члены последовательности mod 10.

Больше всего Марсалья известен своим набором тестов diehard-генераторов случайных чисел (RNG), так что он в этом понимает (здесь и далее под RNG я имею в виду генератор псевдослучайных чисел (PRNG)). Мне стало любопытно, почему это работает и как он выбрал 6.

Мы будем писать на Raku, языке для гремлинов. На случай, если вы тоже гремлин, под спойлерами я буду объяснять все странные особенности.
Читать дальше →
Total votes 49: ↑46 and ↓3+62
Comments18

Information

Rating
Does not participate
Registered
Activity