Хэй, Джейсон!
Рендер страницы через JavaScript
Задача
Есть API, который в ответ на запрос отдает json со списком фреймворков и их описанием. Необходимо на его основе отрендерить карточки.
Прототип
Алгоритм
- Получить список;
- Обработать список;
- Отрендерить в HTML.
1. Получить список
Для данной статьи я подготовил тестовые данные, которые можно получить по адресу:
https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...
Чтобы сделать HTTP запрос — используйте метод fetch:
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
2. Обработать список
Вот как выглядит json, который мы получаем:
{
"success": true,
"list": [
{
"title": "React",
"text": "React is an open-source...
Напишем функцию buildHTML, которая на вход будет принимать JSON, а отдавать строку, которую мы в будущем используем как HTML:
// HTTP запрос
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
// переводим ответ в json
.then(response => response.json())
// конвертируем в html
.then(buildHTML)
Определение функции:
const buildHTML = ({ list }) =>
list.map(({ title, text }) => (`
<div>
<h2>${title}</h2>
<p>${text}</p>
</div>
`)).join("");
3. Отрендерить в HTML
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
.then(response => response.json())
.then(buildHTML)
.then(render); // полученный результат передает в функцию render
В файле HTML создадим пустой контейнер, куда будем вставлять карточки:
<div class="container"></div>
https://developer.mozilla.org/en-US/docs/Web/API/Element/inn... функции render сводится лишь к использованию свойства innerHTML:
const render = (html) => {
const container = document.querySelector('.container');
container.innerHTML = html;
};
Результат
Полную версию кода смотрите на codepen.
ЕГРЮЛ, ЕГРИП в виде архивов ФНС, csv, xml, json (API) и анализ данных
Необходимое предисловие в эти чёрные дни
С началом войны РФ с Украиной мои статьи потеряли смысл на фоне этого ада. Продуктивно работать почти невозможно. Кто-то потерял дом, кто-то детей. Миллионы беженцев. Два из трёх этажей своего дома я отдал под размещение двух семей беженцев с детьми. Если у вас есть возможности, помогайте нуждающимся. Сейчас много пишут про поддержку бизнеса в РФ. Самая лучшая поддержка бизнесу и народу — вывести войска из Украины. Людей убивать нельзя!
Деньги на ЕГРИП были собраны донатами до войны. С опозданием, но я должен выполнить обещанное.
Доступ к данным ЕГРИП в XML и JSON
Если вы не прочитали статью “ЕГРЮЛ, доходы и расходы, налоги, количество сотрудников в XML и JSON бесплатно”, то начните с неё, там описано как получить данные в XML или JSON по ИНН или ОГРН. Там же есть примеры кода и ссылки на описание форматов данных. Для индивидуальных предпринимателей точно также данные получаются по ИНН или ОГРНИП.
Все индивидуальные предприниматели, доступны по следующим ссылкам с ИНН физических лиц:
https://egrul.itsoft.ru/770300584079.json
https://egrul.itsoft.ru/770300584079.xml
https://egrul.itsoft.ru/770300584079
Индивидуальные предприниматели также доступны по ссылкам с ОГРНИП.
https://egrul.itsoft.ru/308774631700332.json
https://egrul.itsoft.ru/308774631700332.xml
https://egrul.itsoft.ru/308774631700332
Оригинальные архивы ЕГРЮЛ, ЕГРИП
Эти архивы ФНС РФ предоставляет за 300 000р. в год:
новый формат ЕГРЮЛ (архивы с 2021 года)
старый формат ЕГРЮЛ (архивы с 2018 года)
новый формат ЕГРИП (архивы с 2021 года)
Мы написали претензию ФНС с требованием выложить все архивы с 2002 года и получили отписку. Сейчас в данных обстоятельствах нет моральных сил с ними судиться и биться за развитие российской экономики. Пока взяли паузу. Может война закончится, а может экономика. И тогда вопрос отпадёт сам собой. В папках _FULL все данные на начало года. Далее изменения.
Обработанные данные в форматах csv
Архивы ЕГРЮЛ, ЕГРИП и обновления к ним в формате csv.
- org: ОГРН, ИНН, max_num;
- org2: организации;
- person: физические лица и индивидуальные предприниматели;
- org_chief: руководители организаций;
- founder: учредители;
- mng: управляющие организации;
- income_outcome: доходы и расходы;
- taxes: налоги;
- tax_systems: налоговые системы;
- ssch: среднесписочная численность;
- msp: микропредприятия, малые, средние;
- support: господдержка;
- okved_ref: оквэд;
- opf: организационно-правовая форма;
- org_status_ref: справочник статусов организаций;
- org_status: статусы организаций;
- predecessor: предшественники;
- country: страны.
min_num, max_num, cdate_num, update_at_num — это сокращённая форма даты в виде двухбайтового целого. Дата в номер и обратно преобразуется по следующим правилам:
$d = date(‘Y-m-d’);
$d_num = (intval($d[2] . $d[3])<<9) + (intval($d[5] . $d[6])<<5) + intval($d[8] . $d[9]);
$d2 = ‘20’ . sprintf(“%’.02d”, $d_num>>9) . ‘-’ . sprintf(“%’.02d”, ($d_num>>5)&15) . ‘-’ . sprintf(“%’.02d”, $d_num&31);
Эти поля нужны для реализации Медленно меняющихся измерений (от англ. Slowly Changing Dimensions, SCD) типа 2. min_num или cdate_num хранят дату начала действия этой строки, например, для руководителя — это дата когда человек стал руководителем организации. max_num, updated_at_num — дата последней выписки где данный факт был обнаружен. Если дата org_chief.max_num меньше org.max_num, то org_chief.max_num дата, когда человек пропал из руководителей в ЕГРЮЛ. Реально он мог перестать быть руководителем чуть раньше.
Актуальные данные надо соединять по ogrn и org.max_num. Записи в соединённых таблицах с max_num < org.max_num хранят историю по организации.
org2.crc32 — это уникальный ключ crc32(kpp, short_name, full_name, street, house, corpus, apartment). В org2 хранится история изменения юридического адреса и наименования организации.
По остальным таблицам полагаю должно быть всё понятно из названия полей и документации к данным (см. Приказ ФНС России от 18.01.2021 N ЕД-7–14/17@).
Уставной капитал
Уставной капитал отсутствует в некоторых ООО. Но его можно вычислить по сумме уставных капиталов учредителей.
Отчёты и анализ данных ЕГРЮЛ, ЕГРИП
- Топ управляющих организаций по количеству организаций, которыми они управляют.
- Топ руководителей организаций по количеству организаций, которыми они руководят.
- Топ предпринимателей по количеству организаций, которые они учредили.
- Топ организаций по количеству организаций, которые они учредили.
- Организации, где учредитель РФ.
- Организации, где есть учредитель иностранное лицо.
- Организации с оборотом от миллиарда рублей за 2020 год.
В отчёте “Организации с оборотом от миллиарда рублей за 2020 год” вы можете видеть, что налогов ряд крупных организации платят около нуля, сотрудников в некоторых тоже крайне мало в пересчёте на приход. Если сравнить с малым бизнесом, где налоговая нагрузка порядка 3–7%, то крупные компании явно недоплачивают и работают там какие-то многорукие и многоголовые, что на одного сотрудника бывает миллиарды прихода.
Невероятное
Леденев Владимир Владимирович руководитель в 2874 организациях с большим отрывом опережает всех остальных. Правда там за ним следуют 8 руководителей в 1000 организаций. Эх, нам бы базу с 2002 года, вот это бы данные были. Такие люди заслуживают статьи в Википедии.
Присылайте ссылки на ваши проекты
Ссылки на полезные и бесплатные проекты мы опубликуем на нашем сайте.
Если вы сделаете анализ выложенных данных
У нас запланирована следующая статья с рядом очень интересных отчётов. Количество отчётов, которые только можно придумать огромное. Поэтому мы рады будем всем любителям анализировать данные.
Донаты
На следующий год проекту нужно 300 000р на покупку данных у ФНС РФ. Нужен второй сервер. Не помешают деньги на дальнейшее развитие и добавление других данных. Кто-то обещал задонатить после публикации ЕГРИП и архивов. Пожалуйста, закиньте денег сколько можете. Это реально важно.
Подробности и дополнительная информация здесь.
Godot Путь Новичка. Экспорт в JSON из гуглтаблиц
Добрый вечер, мои дорогие подписчики. Сорян, я тут дичал, исполнял всякое, бухал и не только)
Осеннее обострение, что поделать. Впал было в лютую тоску, мыслишки не хорошие всякие посещали, это похоже из-за того, что начал к плюсам приобщаться. Ну блин зато теперь могу на голом Vulcan'е треугольник нарисовать)) Такое конечно достижение, морочить вам и себе голову этим пока не буду, ближе к выходу Godot4 уже скорее всего, главное путь наметился, для программиста графики можно сказать как Hello World. А так вообще морально готовился к серии постов, в которой сделать полноценную боевку аля Disciples. В целом простой прототип у меня уже готов, так что есть чего написать)
Вообщем конечно, ещё много чего надо разобрать для себя. Хочу 2D юнитов в 3D окружении, трехмерный фаербол он, как не крути смотрится круче чем двумерный. Ну и все одно тенюшки они всякие оставляют и тд. Но в 3D я полный нубас пока, ну хоть немножко подразобрался.
Я хотел пост запилить про MeshLibrary, но там никакого кода нету, а с анимашками делал пост, оно не надо никому, как я понял.
Но сегодня не будет никаких эффектов и тд. Я честно говоря запарился без конца для всяких тестов, прототипов и подобного придумывать и записывать хп да урон монстрам, да и надо мне уже завести все таблицы. А так же человек меня спросил, какой бэкграунд нужен, чтобы врываться геймдизайнером. Сходу у меня один ответ, надо перфектное знание Google Sheets или Excel, как минимум стремиться к нему. Ну и сразу мысль, а вот я то дурак вечно свои велосипеды горожу, даже начал свой велосипед изобретать, для редактирования JSON'ов на Godot хотел сделать. Сам советую и сам себя не слушаю, Братан то у меня такие таблички рисует и с графиками и с формулами, залюбуешься, не даром ведущий ГД уже лет 8) Ну и тоже захотелось, а заодно вечер посидел, по мануалам + Google, слепил кривой вариант)).
https://developers.google.com/apps-script/quickstart/custom-...
http://blog.pamelafox.org/2013/06/exporting-google-spreadshe...
вот тут много полезного подчерпнул, но её скрипт у меня не работает, я все выпилил и оставил только самый необходимый рабочий минимум. Ну и хотелось чтобы скриншотиком на один экран все влезло, много кода это зло)
Табличку можете заполнять как вам угодно, сверху наименование ключей будут, ну внизу понятно значения идут в ячейках. После того как кликнули редактор скриптов, вылезет следующее окошко, оно будет пустым, там только файл с расширением .gs будет.
Криво, косо, в целом чего тут объяснять, кто с JS или с AS3 сталкивался, проблем вообще не должно возникнуть, все очень простенько так-то. Разве что написано некрасиво, ну это косяк мой уже да. Я тут не про красоту, а про результат, главное что работает пример и можно пользоваться. KISS во всей его красе)
По нажатию будет такая картина
Ну и минимально необходимая вариативность.
Сейчас чтобы добавить и экспортировать новую таблицу, надо будет ручками дать ей имя и в скрипте тоже его прописать. Ну и никакой защиты от дураков тоже ещё пока не делал и не тестил, может где и на чем сломается, так что заполнять надо корректно. В файл тоже пока экспорта нету. Это все на перспективу.
На вопрос, а чего не установил какое-нибудь расширение, честно я немножко не доверяю тому что там может быть, а они все столько разрешений просят. Вдруг у меня будет суперсекретная таблица с очень важными данными. Ну и во-вторых честно говоря, было очень даже интересно покопаться и разобраться немножко. В перспективе скорее всего доработаю, чтобы было удобнее пользоваться, но это уже скорее чтобы из приложения напрямую можно было к таблице обращаться. Ладно там видно будет.
Сейчас не буду обещать, что скоро будет пост или, что вот ещё писечку доделаю и будет очень прикольный трехмерный фаербол с сочным шейдером и партиклами. Фаербол ещё не достаточно сочный, да и могу забухать снова) Так что будет по пошаговой боевке, а там как раз и пригодится красивый фаербол в конце)
Гитхаб я так и не завел.
https://docs.google.com/document/d/1HF_BPKNn982Khlcbb39lyc0i...
Так что в гуглдок кину, вдруг пригодится кому.
Спасибо за внимание.
Православный json rpc
Знаете почему JSON RPC православен? Потому что он требует соблюдать POST
(Стянуто с рабочего чата)
Говорят, если гуманитарий пройдет это головоломку до конца, он может считать себя технарем
А еще получит ачивку в профиль. Рискнете?