FTP исполнилось 50 лет

image

16 апреля 1971 года-это не только день, когда The Rolling Stone впервые выпустила Brown Sugar, но и день публикации RFC 114, знаменующий день рождения FTP.

В те дни вьетнамская война была в центре внимания, TCP/IP еще не существовал, Джими Хендрикс умер 6 месяцев назад, telnet был новым крутым парнем, а некоторые из самых влиятельных рок-н-ролльных артистов собирались выпустить свои шедевры, в то время как FTP использовал сетевой протокол под названием NCP.

За прошедшие годы протокол FTP был усовершенствован 16 раз, добавивилась поддержка TCP/IP, безопасного расширения, также известного как FTPS, которое использует ту же технологию, что и HTTPS, и более поздние дополнение, такое как поддержка IPv6.

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

В 2021 году то, что кажется признанным прогрессом, принимает форму проприетарных протоколов, сделанных за закрытыми дверями и без каких-либо RFC. Вместо этого поставщикам, желающим создать конкурирующие серверы, остается реверс-инжиниринг SDK, как это сделал Minio с S3.

Кроме того, как мы могли коснуться темы FTP, не вспомнив самый печально известный комментарий на HackerNews, который был основным источником вдохновения при создании Filestash. Действительно, я считаю, что не должно иметь значения, какой протокол использует инструмент моей мамы. Как только этот инструмент станет простым в использовании, она сможет передавать те фотографии, которыми хочет поделиться, открывать видео и делать все другие вещи, которые не должны требовать от нее знания о протоколе, поскольку наша работа инженеров состоит в том, чтобы абстрагироваться от всех этих сложных вещей, чтобы кто-то, кто хочет получить доступ к своему банковскому счету с помощью привычного браузера, не должен был выбирать шифр при согласовании SSL.

Развитие FTP

RFC 114 (апрель 1971 г.)
RFC 697 (июль 1975 г.): CWD Command
RFC 765 (июнь 1980 г.): TCP/IP
RFC 959 (октябрь 1985 г.): Первоначальная спецификация FTP
RFC 1579 (февраль 1994 г.): FTP с поддержкой firewall
RFC 1635 (май 1994 г.): Как использовать анонимный FTP
RFC 1639 (июнь 1994 г.): операция по большим адресным записям
RFC 1738 (декабрь 1994 г.): унифицированные указатели ресурсов
RFC 2228 (октябрь 1997 г.): Расширения безопасности FTP.
RFC 2389 (август 1998 г.): механизм согласования функций для протокола передачи файлов.
RFC 2428 (сентябрь 1998 г.): расширения для IPv6, NAT и расширенного пассивного режима.
RFC 2577 (май 1999 г.): соображения безопасности FTP
RFC 2640 (июль 1999 г.): интернационализация FTP
RFC 3659 (март 2007 г.): Расширение команд FTP
RFC 5797 (март 2010 г.): Реестр команд и расширений FTP.
RFC 7151 (март 2014 г.): Команда HOST для виртуальных хостов

ссылка на оригинал статьи https://habr.com/ru/company/itelma/blog/552974/

Векторные игры на 32с3


Статья раскрывает тему нашего выступления на 32-м Всемирном конгрессе хакеров (32с3), посвященного ретро-геймингу и работе с эмулятором игровых автоматов (MAME) на XY-дисплеях. В нем освещается результат моего сотрудничества с еще одним членом NYC Resistor, цифровым дизайнером Адель Лин, которая увлекается разработкой игр и игровых пространств. При желании можно посмотреть получасовое видео выступления онлайн.

История векторной графики

Аналоговые компьютеры

В самых ранних аналоговых компьютерах для вывода результатов вычислений использовались осциллографы или плоттеры. На фото выше EAI680 отображает на своем XY-мониторе Tektronix результат дифференциального уравнения, моделирующего демпфированный маятник.

Первая видеоигра, Tennis for Two 1958 года, была разработана на похожем аналоговом компьютере и выводилась на осциллограф. Отскакивание мяча было реализовано с помощью другого дифференциального уравнения, очень похожего на приведенное в предыдущем примере.

В Tennis for two нет исходного кода, так как создавалась игра исключительно аппаратно. Здесь использовались реле для управления направлением мяча, блоки сравнения, которые обнаруживали касание мячом земли или сетки, операционные усилители, которые реализовывали дифференциальное уравнение, резисторы, имитировавшие притяжение и т.д.

Адель в сотрудничестве с продюсером Жаном Анджелом, студией игрового дизайна Sozen Eyes и физиком Питером Такачем работала над современной реконструкцией этого устройства для Silicon City. Ввиду необходимости поддержания работоспособности инсталляции без обслуживания на все время пятимесячной выставки в музее NYHC они использовали монитор 4К и эмулировали игру. Дело в том, что во время демонстрации Tennis for Two в Брукхэвене работал штат техников, которые заменяли выходившие из строя детали, чего в NYHC хотели избежать.

Цифровые компьютеры

Spacewar! 1962 года стала одной из первых цифровых видеоигр, в которой на XY-дисплее компьютера PDP-1 отображались корабли игроков, их орудия, а также звездное поле. Управление осуществлялось с помощью рычагов и кнопок на передней панели системы, хотя зачастую во избежание их износа для этого собирались отдельные блоки управления.

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

Почему векторные игры?

В 1978 году, когда для игры Lunar Lander был разработан цифровой генератор векторов, память для фреймбуферов в видеоиграх обходилась очень дорого. Двум буферам размером 512х512х4 требовалось 128 запоминающих устройств общей стоимостью $614. — Джед Марголин, инженер Atari.

Именно поэтому во времена доминирования растровых дисплеев был смысл затратить все эти усилия, чтобы добиться отрисовки векторов. Стоимость создания растровой версии Asteroids с фреймбуфером, способным поддерживать разрешение экрана 1024х1024 составила бы тысячи долларов. Для этого также необходим дисплей, который справился бы с отрисовкой столь огромного количества вертикальных линий: большинство ЭЛТ же разрабатывались для телевидения, и обеспечивали разрешение всего в пару сотен тысяч линий.

Star Wars на Acorn Electron


Star Wars на векторном дисплее

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

Star Wars на Atari 2600

Star Wars на векторном дисплее

Помимо этого, векторы упрощают 3D-анимацию. Выше представлено сравнение растровой версии игры, пытающейся сымитировать трехмерный мир, с масштабированной и повернутой 3D моделью Tie-Fighter. В какой вариант вы бы предпочли сыграть?

Устройства генерации векторов

Как происходит отрисовка

В векторном дисплее луч не рисует горизонтальные «линии сканирования», как в условной ЭЛТ. Вместо этого он может быть направлен в произвольную область экрана для создания яркой точки в конкретном месте. В векторных дисплеях без запоминания яркость точки определяется продолжительностью направления на нее луча. Варьируя входы X и Y, можно рисовать линии или другие фигуры. С помощью быстрого перемещения или изменения яркости (“Z”) входного сигнала можно отображать прерывистые линии. В данном случае я отключил вход Z, чтобы можно было увидеть последовательность отрисовки объектов на экране. В показанной здесь игре Lunar Lander используется «цифровой генератор векторов», непосредственно управляющий лучом.

В Tempest используется «аналоговая генерация векторов», при которой всегда происходит возвращение в середину, поскольку это единственная определенная точка. В обоих случаях особую сложность представляет генерация этих векторов – если система приостановится даже на пару наносекунд, произойдет существенное изменение яркости линии.

Аналоговая и цифровая генерация

При написании этого раздела я опирался на руководство Джеда Марголина по векторным дисплеям.


Схема цифровой генерации векторов


Схема аналоговой генерации векторов

Один из способов генерации векторов – это использование цифро-аналогового преобразователя (ЦАП), напрямую управляющего входами X и Y дисплея. Это и есть цифровой генератор векторов, который использовался в ранних играх вроде Asteroids и Lunar Lander. В нем задействовались 10-битные ЦАП и операционный усилитель, настроенный в качестве буфера, но при этом требовалось, чтобы ЦПУ большую часть времени выполнял обновление входных сигналов ЦАП, а разрешение ограничивалось до приблизительно 1024х768 точек.

Другая техника была разработана для более поздних игр вроде Starwars. В аналоговом генераторе векторов используется операционный усилитель, настроенный в качестве интегратора путем добавления конденсатора в контур обратной связи. Это означает, что на вход в ЦАП подается наклон линии, которую нужно сгенерировать, а аналоговая природа операционного усилителя обеспечивает отрисовку ее в «бесконечно» гладком виде.

На современном оборудовании можно легко генерировать 12-битные линии, которые намного превышают разрешение небольших векторных дисплеев. При этом можно также задействовать механизмы прямого доступа к памяти (ПДП) на микроконтроллерах, чтобы разгрузить процесс отправки данных в ЦАП. На картинке выше показанпрототип моей открытой для использования платы v.st. Ее можно без проблем собрать также на макетной плате для собственных экспериментов.

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

Аппаратная часть векторного дисплея

Осциллограф

Современные цифровые осциллографы не очень хорошо подходят для отображения данных. Их ЖК-дисплеи могут эмулировать послесвечение, но обычно обладают всего лишь 8-битным АЦП и очень низким разрешением. Они по-прежнему сверхполезны для общего измерения сигнала, но не в интересующем нас случае.

Вместо этого можно отправиться на eBay или craiglist и найти аналоговый ЭЛТ-осциллограф с режимом X-Y, который обойдется в районе $50 Подойдет любой вариант с шириной полосы в 5МГц и более – все равно ЦАПы на платах v.st могут выдавать частоту максимум 2МГц.

Запоминающие дисплеи

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

Вектороскоп

Вектороскопы, такие как Tek 1720, использовались в телевизионных станциях для калибровки цветовых полос, и по мере перехода станций в цифровой режим их применение постепенно прекращалось. В результате таких аналоговых дисплеев на eBay предлагается очень много и за небольшие деньги. Они используют очень быстрое электростатическое отклонение и оснащены, как правило, небольшими, но очень резкими экранами. Эти дисплеи также оборудованы дифференциальными входами, что избавляет от необходимости использовать отрицательный выход на ЦАП.

Консоли Vectrex


Консоль Vectrex


Электроника Vectrex

Домашняя игровая консоль Vectrex оборудована приятным черно-белым экраном с высокой резкостью. Можно без проблем отсоединить материнскую плату от аналогового драйвера ЭЛТ и вывести провода из корпуса для подключения платы v.st.

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

Лазерные проекторы

Также можно использовать лазерный проектор, вот только результат получится не лучшего качества. Физические зеркала обладают определенной долей инерции, и на включение/выключение луча требуется время. В результате частота обновления падает, и изображение получается мерцающим. Некоторые специализированные игры могут работать с очень быстрыми (45-60 Kpps) гальваническими сканерами, но почти все аркады требуют отображения слишком большого количества векторов.

Проект LazyMame добился неплохих успехов, но я не могу найти никаких подробностей или исходного кода уже с 2008 года. Позже в 2013 возник проект OpenLase-Mame, который с тех пор молчит. Помимо этого, другие разработчики пробовали создавать новые лазерные игры с помощью кастомного плагина Unity. Некоторые преуспели.

MAME


MAME – это акроним от Multiple Arcade Machine Emulator, означающего эмулятор множества аркадных автоматов, и его имя себя вполне оправдывает – он способен эмулировать тысячи игр и автоматов, включая практически все когда-либо созданные векторные аркады.

Эмуляция векторных дисплеев


Фактическое свечение на векторном дисплее


Эмулированное векторное свечение

Эффект «свечения», создаваемый яркими векторными линиями, относится к одной из излюбленных игроками особенностей. В MAME есть поддержка шейдеров HLSL, которые размывают яркие линии и создают подобие этого эффекта. Сверху изображен реальный дисплей
Vectrex, а снизу эмуляция на MAME.

Патчи для подключения к дисплею

К сожалению, мой патч для MAME, который добавлял поддержку экспорта векторов, был закрыт как «неприемлемо «грязный» способ достижения желаемого результата». Так что вам потребуется клонировать мое дерево и следовать инструкциям по созданию векторного MAME. Основная часть изменений находится в src/emu/video/vector.cpp и опирается на усекаемые окна, которые MAME использует для ограничения векторов областью экрана.

Патчи для Raspberry Pi

Я также портировал изменения в голую сборку MAME4AllPi для Raspberry Pi. Инструкции для векторного MAME на Pi аналогичны. Нужно будет клонировать дерево и вшить его в Pi. К сожалению, здесь имеется ряд проблем с джойстиком, которые еще предстоит исправить.

Играем


Вы можете поиграть в одну из оригинальных игр, Space Wars, вышедшую в 1977 году


Asteroids (1979) тоже всегда славилась популярностью и была одной из самых кассовых игр своего времени!


Lunar Lander на вектороскопе

Tempest на вектороскопе

Или, быть может, вам больше по душе придутся Lunar Lander (1979) и Tempest (1980).


Сэмулировать можно огромное число векторных игр, включая весь список Atari


Так много малоизвестных игр, что все и не перечислишь, но я собрал список проектов Vectrex, включив в него также векторные аркады, упомянутые в Википедии

Кастомизация

Пользовательские устройства ввода


Консоль Robotron собственной сборки


Robotron

Как только вы подключите векторный дисплей к MAME, вам наверняка захочется внести свои доработки. Можно без проблем собрать собственные USB HID-устройства на основе предлагаемых Adafruit аркадных джойстиков, кнопок и даже монетоприемников.

Примечание ред.: доступ к ресурсу Adafruit возможен только через VPN.

Креативное программирование с векторами

Если же вы устали от игр, то всегда можно превратить дисплей в вектороскопические часы. В Teensy 3 есть сквозные отверстия для кварцевого резонатора 32.768КГц и резервная батарея, позволяющая поддерживать точность отображаемого времени.

Можно писать игры, которые будут выполняться непосредственно на Teensy, как мой клон Asteroids, Space Rocks, или создавать какие-нибудь арт-проекты.


Некоторые энтузиасты реализуют поистине грандиозные проекты — vec9 стал первой векторной аркадой за тридцать лет, реализованной в кастомном автомате с рычагом управления, как в реальном танке.

Мы создали простую библиотеку на Processing, чтобы показать, как пишутся программы, взаимодействующие с такими дисплеями. Образец кода лежит в репозитории, а также портирован на ProcessingJS в виде демо-заставок Swarm и Random Walk.

Дополнительную информацию по платам можно найти на MAME, Vectrex и Tek 1720.

ссылка на оригинал статьи https://habr.com/ru/company/ruvds/blog/552420/

Как мой простой проект в Github стал вирусным

В прошлом месяце я создал простой проект, разошедшийся по различным техническим сообществам и социальным сетям. В Github он за 7 дней получил с 0 до 4 тысяч звёзд и более 200 форков. Github примерно в течение пяти дней рекламировал его в разделе Trending repositories of day.

Clone Wars

70 с лишним open-source-клонов или альтернатив популярных сайтов наподобие Airbnb, Amazon, Instagram, Netflix, Tiktok и т.д. В списке содержится исходный код, ссылки на демо, технологический стек и количество звёзд в GitHub.

Ссылка на проект

Ссылка на Github

Trending в Github — 13 марта 2021 года

Что меня мотивировало на создание этого проекта

Я технарь и часто сижу в популярных сообществах программистов на Reddit, таких как r/webdev, r/reactjs и т.п., следя за тем, что создают другие разработчики и узнавая о новых JS-фреймворках. Я заметил, что многие разработчики для изучения программирования создают клоны популярных сайтов наподобие Instagram, Trello, Spotify, и т.п., а потом делятся с другими, чтобы получить отзывы о качестве кода и рекомендации.

Разработчики делятся своими проектами в r/reactjs

Такие клоны разбросаны по множеству сообществ. Поэтому я подумал: почему бы не создать общий список всех этих клонов, который люди мы могли добавить в закладки и возвращаться к ним в будущем. Честно говоря, тогда я не был уверен, будет ли такой список полезен другим. Мне представилась возможность узнать это, создав его самостоятельно!

Как я составил список

1. Скрейпинг Reddit

Я хотел найти все посты, содержащие ключевое слово «clone». Сначала я пользовался стандартным поиском Reddit: reddit.com/r/reactjs/search/?q=clone&source=recent&restrict_sr=1&sort=new (это значит искать все посты в сабреддите reactjs с ключевым словом «clone» и отсортировать по новизне). Этот запрос возвращал все посты, в том числе и низкокачественные, с рейтингом 0, вопросами о том, как создать клон какого-то сервиса, и т.д. Из этого дампа сложно было бы найти хорошие проекты клонов. Поэтому я воспользовался сайтом redditsearch.io, предоставляющим расширенные возможности фильтрации Reddit, например, возврат постов, имеющих хотя бы 10 «лайков», опубликованных в определённый промежуток времени, и т.д.

Далее я создал список из всех этих клонов, их репозиториев на Github, ссылок на демо, технологического стека. Всё делалось вручную.

Также я загуглил запрос «open-source alternatives» и нашёл несколько полнофункциональных клонов Slack, Airtable, Bit.ly, Evernote, Google analytics, и т.п. Их я тоже добавил в список.

Итак, в списке есть два типа проектов. Первые выглядят очень похожими (с точки зрения UI), но не полнофункциональны, вторые полнофункциональны, но с другим UI (чтобы избежать проблем с авторскими правами и т.п.).

Придумываем название проекту

Я назвал свой проект в честь телевизионного мультсериала 2008 года Star Wars: The Clone Wars («Звёздные войны: Войны клонов») и сохранил похожую цветовую схему.

Мультсериал Star Wars: The Clone Wars

Github-проект Clone Wars

2. Красивое отображение таблицы

Я уже работал с markdown раньше, но мне впервые довелось создавать markdown-таблицы и оказалось, что таблица на странице проекта Github выглядит ужасно. Особенно если это длинная таблица с множеством столбцов. Я хотел сделать её красивее (с постоянно висящим сверху заголовком), то есть проект нужно было развернуть где-то ещё. Но он всё равно должен был находиться на Github, чтобы с ним могли удобно работать другие люди. Я решил хостить его на своём личном сайте https://gourav.io.

Мой сайт создан с помощью NextJS, и я уже использовал markdown (mdx) для написания постов, поэтому достаточно было просто скопипастить markdown-файл из моего Github-проекта на новую страницу https://gourav.io/clone-wars. Кроме того, я использовал Tailwind CSS с плагином «typography», повышающим удобство чтения таблиц и другого текста.

Я думал над повышением автоматизации до следующего уровня, например, при внесении изменения в Github-проект или слиянии пулл-реквестов (PR) можно было бы обновлять таблицу на моём сайте https://gourav.io/clone-wars. Но я решил не переусложнять систему, потому что изменения были не такими уж частыми.

Делаем проект виральным

Я опубликовал пост в 2-3 сабреддита, и он взлетел.

reddit.com/r/reactjs

reddit.com/r/webdev

Последствия

После того, как проект получил определённую популярность, многие разработчики начали использовать PR для добавления в список своих проектов-клонов. Когда я запустил проект, там было примерно 75 клонов, но теперь их больше 120, и я часто получаю новые PR.

От друга я узнал, что проект попал в рассылку React Newsletter. Очень неожиданный и приятный момент.

Люди начали писать твиты о Clone Wars. @nickbulljs предложил идею для разработчиков, ищущих работу.

Рекрутёры устали от погодных приложений и калькуляторов расходов.

Вот более умная идея для разработки:

  1. Выберите один сайт из 70 с лишним open-source-клонов популярных сайтов типа Netflix, Instagram и прочих по ссылке ниже.
  2. Изучите кодовую базу.
  3. Создайте собственный клон.

gourav.io/clone-wars

После этого твита у меня появилось больше 150 новых подписчиков.

А ещё один человек задонатил мне 5 долларов по ссылке BuyMeACoffee, которую я добавил в своей проект. Спасибо тебе, незнакомец.

За 30 дней после запуска проекта мой личный сайт посетило более 40 тысяч человек, а проект получил более 80 тысяч просмотров.

Вот часть статистики по пользователям (первые 30 дней после запуска, т.е. после поста в Reddit):

Реферальные сайты

Пользователи по странам

Пользователи по ОС

Пользователи по браузерам

На данный момент проект имеет GitHub repo stars и GitHub forks.


На правах рекламы

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

ссылка на оригинал статьи https://habr.com/ru/company/vdsina/blog/552886/

Еще не используешь SVG фавиконки?

Тебе нужно использовать SVG фавиконки. Они поддерживаются во всех современных браузерах (Ну почти во всех).

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

Иконка

Главная фивиконка может быть SVG любого размера. Тип type="image/svg+xml" не нужен.

<link rel="icon" href="favicon.svg">

Маска-иконка

Для Safari, это слегка иначе. Тебе нужно добавить mask-icon . Это также SVG, но он должен быть одного цвета и расположен на прозрачном фоне. В браузере есть атрибут цвета.

<link rel=”mask-icon” href=”mask-icon.svg” color=”#000000">

Касательная фавиконка (Touch Icon)

Для иконки на IOS девайсах, а также для избранное на странице новой вкладки в браузере. Вам нужен только размер 180 x 180, и атрибут sizes лишний.

Манифест

Файл manifest.json предоставляет информацию о вашем веб-приложении или веб-сайте. Эти строки являются обязательными для прохождения теста Lighthouse.

Значок используется Android и Chrome. Нужен только самый большой размер 512 x 512.

{     "name": "Starter",     "short_name": "Starter",     "icons": [{         "src": "google-touch-icon.png",         "sizes": "512x512"     }],     "background_color": "#ffffff",     "theme_color": "#ffffff",     "display": "fullscreen" }

theme-color meta по-прежнему требуется для цвета иконки в Chrome и Android.

<meta name="theme-color" content="#ffffff">

Готово

Вот и все, что вам нужно для современных браузеров, все остальное не нужно. msapplication-TileImage можно добавить, если вам нужен другой значок в плитках Windows, в противном случае используется apple-touch-icon. TileColor больше не используется.

Все остальное

К сожалению, не все используют современные браузеры, но это можно легко решить, поместив favicon.ico размером 32 x 32 в корень вашего веб-сайта. Это работает везде, даже у вашей бабушки.

Темный режим

В заключение, вот совет по темному режиму. Одним из преимуществ значка SVG является то, что вы можете изменить цвет с помощью CSS. При использовании медиа-запроса prefers-color-scheme цвет вашего значка меняется в зависимости от темного или светлого режима пользователя. Этот метод не будет работать со mask-icon, так как цвет указан в атрибуте, но Safari добавляет белый фон, если контраста недостаточно.

<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">     <style>         path {             fill: #000;         }         @media (prefers-color-scheme: dark) {             path {                 fill: #fff;             }         }     </style>     <path fill-rule="evenodd" d="M0 0h16v16H0z"/> </svg>

Результат

Вот окончательный результат. Скопируйте его в <head> вашего веб-сайта и не забудьте разместить favicon.ico в корне.

<meta name="theme-color" content="#ffffff"> <link rel="icon" href="favicon.svg"> <link rel="mask-icon" href="mask-icon.svg" color="#000000"> <link rel="apple-touch-icon" href="apple-touch-icon.png"> <link rel="manifest" href="manifest.json">

ссылка на оригинал статьи https://habr.com/ru/post/552900/

Русские программисты не сдаются

Часть 1-я
image

Незаметно пролетело два года с тех событий, которые заставили меня написать статью «Челобитная в Apple» – о творящемся беспределе в отрасли, создающей классные программы и интересные гаджеты для повседневной жизни.

Если кратко о предыдущей статье – в ней был описан рутинный случай лишения девелоперской лицензии разработчика ПО работающего на мобильной платформе iOS Вадима Башурова, члена команды проекта DO-RA. Попутно о лишении лицензии с блокировкой рабочего аккаунта Apple руководителя и инвестора проекта ДО-РА, с последующим, чудодейственным восстановлением прав со стороны Apple.

Минул год с момента восстановления девелоперской лицензии руководителя проекта ДО-РА. Однако, при обновлении нашего пользовательского ПО – DORA.Pro в App Store в апреле 2020 г. случился нежданчик – предупреждение от Apple, что дескать я занимаюсь противозаконной деятельностью, мошенничеством и плагиатом, и что моя лицензия, как и аккаунт Apple могут быть заблокированы в ближайшее время, если я не подам апелляцию в течении 14 дней в Apple, отсчитывая от момента данного сообщения.

Обвинения против меня были стандартны, без излишних фантазий, ибо за это давно отвечает искусственный интеллект компании Apple, а не живые люди. Текст присланный мне привожу полностью без изъятий, так как он не секретен и будет понятнее логика статьи:

Other — Other
Hello, Upon further review of the activity associated with your Apple Developer Program membership, we have determined that your membership, or a membership associated with your account, has been used for dishonest or fraudulent activity. Therefore, your Apple Developer Program account has been flagged for removal.

We found that your app is in direct violation of the Apple Developer Program License Agreement, which states:

«You will not, directly or indirectly, commit any act intended to interfere with the Apple Software or Services, the intent of this Agreement, or Apple’s business practices including, but not limited to, taking actions that may hinder the performance or intended use of the App Store, Custom App Distribution, or the Program (e.g., submitting fraudulent reviews of Your own Application or any third party application, choosing a name for Your Application that is substantially similar to the name of a third party application in order to create consumer confusion, or squatting on application names to prevent legitimate third party use).”

During our review, we found a pattern of manipulative or misleading behavior that violates the Apple Developer Program License Agreement. These behaviors can include, but are not limited to, inaccurate metadata describing your app or service, misleading app content, engaging in inauthentic ratings and reviews manipulation, providing misleading customer support responses, providing misleading responses in Resolution Center, engaging in misleading purchasing or bait-and-switch schemes, and other dishonest or fraudulent activity within or outside of the app.

If you would like to appeal this termination to the App Review Board, you must do so within 14 calendar days. When submitting your appeal, be sure to select „I would like to appeal an app rejection or app removal“ from the drop-down menu on the Contact the App Review Team page. Otherwise, your Apple Developer Program membership will be terminated and all apps associated with your account will be removed from the App Store.

Best regards,
App Store Review

На основании выше изложенного, грозного предупреждения, мной оперативно была написана апелляция в Apple ёмкостью в 4000 знаков на приличном английском, большего не позволяла форма, где я попытался уточнить у Apple, в чём конкретно состоит моя провинность?! Очень хотелось узнать: факты, действия, события, приведшие к подобному плачевному результату?! Заодно я проконсультировался с американскими коллегами, чем мне грозит подобное обвинение в «мошенничестве» по американским законам? Их ответ меня не окрылил, ибо за мошенничество в США можно легко присесть на несколько лет, повышая свою квалификацию не в области программирования и схемотехники, а в лучшем случае в настольном теннисе и шашках. Шахматы – игра не для американских тюрем, хотя «Побег из Шоушенко» к/ф явное исключение.

Ровно через 14 дней на электронную почту пришёл отрицательный ответ на мою апелляцию, суть которого – профилактический бан на 1 год без права повторной апелляции (как в СССР – без права переписки;). Ответов – в чем причины подобного бана на столь продолжительный срок в письме не было. И тем не менее мы со своей командой всё-таки пытались «информационно атаковать» различные службы Apple с целью дать возможность самим объективно разобраться в нарушениях, которые мы точно не совершали.

В связи с отказом в размещении наших пользовательских приложений в App Store, нам пришлось завернуть свои экспортные операции по поставке устройств DO-RA.Q в Amazon, eBay, Alibaba, а также в другие Интернет магазины за рубежом. Дело в том, что у нашей продукции в инструкциях и на коробах было заявлено: кроссплатформенное устройство работает, в частности, на мобильных платформах: iOS и Android. Кстати, до этих событий наши гаджеты уже продавались более чем 20 российских интернет магазинах и супермаркетах от OZON до АШАН. Но в России проще заменить информацию, которая вводит в заблуждение покупателя. За бугром это целая канитель связанная с рисками затрат, рекламациями и штрафами.

Однако после написания 5-го или 10-го письма, в итоге нас службы Apple пустили, что называется по кругу, присваивая длинные номера на наши запросы и не отвечая ни через одну, ни через две недели, даже когда мы пытались уточнить всего на всего статус запроса. В подобных «душевных диалогах» пролетело месяца 3-4, далее мы попытались звонить в службу поддержки Apple, но результат оказался тот же – сначала добродушная поддержка, затем пауза и холодное указание – ждите ответа по почте.

Мы попытались оформить корпоративную лицензию разработчика ПО от Apple на собственную компанию АО «Интерсофт Евразия», что в период санкций со стороны США оказалось также не простым делом. Пришлось даже звонить в специальный департамент США для присвоения нашей компании специального идентификационного кода в Штатах, иначе никак. Хорошо, что мы отыскали этот идентификационный код, благо присвоенный ещё в эпоху, когда Интерсофт Евразия работала с Apple в рамках программы MFi (2012-2015гг.). Тогда у нашей команды были «несбыточные» надежды, что чип DO-RA.micro интегрируют в смартфоны и планшеты если не Apple, то в рамках подобного проекта ARA Project/Google.

Заплатив с сентябре 2020 г. свои $99 мы довольно быстро получили корпоративную лицензию, под которой могло работать определённое количество программистов нашей команды и право выкладывать собственные разработки ПО в App Store и TestFlight. При этом мы опять нарвались на небольшие, но преодолимые трудности. Пришлось переименовать пользовательское приложение DORA.Pro в DORA.Plus так как по регламенту Apple одинаковые названия у разных разработчиков не допускаются, а префиксы в данном деле пока ещё работают.

Убрав последние баги из своих прог: DORA.Plus, DORA.Light, мы начали с нетерпением ожидать прохождения этапов проверки в App Store. Поначалу всё шло гладко, на каждую инстанцию по 1 дню. Ранее же наши приложения DO-RA проходили всю проверку в течение 24-48 часов.
И вдруг гром грянул средь ясного неба… В рамках корпоративной лицензии Интерсофт Евразия служба американской компании Apple сообщила тоже самое, что написано по-английски в начале статьи: Other – Other… Hello, Upon further review of the activity associated with your Apple Developer Program membership, we have determined that your membership, or a membership associated with your account, has been used for dishonest or fraudulent activity. Therefore, your Apple Developer Program account has been flagged for removal.

Попытка апеллировать в Apple при подобных обвинениях опять не увенчалась успехом. Честно говоря, мы как-то загрустили от безысходности нашего положения. Ведь часть рынка гаджетов, причём не самая низкодоходная была потеряна с лишением прав разработчика на платформе iOS. Но мы решили всё–равно не сдаваться…

Продолжение следует.
17.04.2021г.

ссылка на оригинал статьи https://habr.com/ru/post/552904/