JSCad
Стало любопытно, а существует ли версия OpenSCAD но только чтобы работала в браузере? Оказалось что есть! Называется OpenJSCad! OpenJSCad или JSCad - это javascript библиотека которая умеет визуализировать в браузере 3D сцены описанные в виде простых геометрических примитивов.
Проект распространяется под лицензией MIT. К сожалению, файлы OpenSCAD с OpenJSCad несовместимы - синтаксис хоть и похож, но все же немного отличается.
Тем не менее проект довольно интересный, если нужно что-то быстро нарисовать в 3D и нужно чтобы изображение можно было вращать прям в браузере - данное решение подойдет как нельзя лучше.
Про Telegram
Генерал-майор в шинели громко плакал в докладной: террористы охренели, нет зацепки ни одной. Завели себе девайсы — интернет, секретный чат. И попробуй догадайся, с кем о чем они журчат. Где ни сунься — всюду шифр. Ни отмычек, ни ключей. Лишь вагон арабских цифр! И причем, неясно чей! Как ловить бандитов буду? Никаких зацепок нет, если шлет Аслан Махмуду зашифрованный пакет. Нам бы прежних инструментов! Чтобы мы в сетях могли: и проверить документы, и назначить патрули, и явиться с понятыми — всех на сайте мордой в пол. Кто такой? Прописка? Имя? Как давно сюда пришел? Адреса друзей и близких? Что в карманах, ё-моё? Где шкатулка с перепиской? Доставай, прочтем её... Кончилась эпоха Холмса с появлением сети! Мы бессильны! Мы сдаемся! Как нам следствие вести? Нам работать трудно очень! Не хватает важных мер! Нужно больше полномочий. Всех админских, например. Раскрываемости нету! Показатели в нуле! Вот бы сети интернета запретить по всей земле! Вы ж поймите, это важно! Вот вам докладной листок... И сморкался в камуфляжный влажный носовой платок. И так искренне, так чисто прозвучал его доклад, что кивали журналисты. А потом случился ад.
Как вулкан потухший, в жерло получив морской воды, вышел Холмс, который Шерлок. И вломил ему пизды. Встал как призрак из могилы, из музея Бейкер Стрит. «Ах ты ж йобаный мудила!» — он на кокни говорит. «Я всю жизнь проползал с лупой! Под дождем! В говне! В грязи! Подними свою залупу да по кнопкам повози! У тебя зацепок нету?! Ах ты сраный пидарас! А платежки?! А билеты?! Кучи электронных баз?! Вам же треки пишут соты, где носили телефон!!! Сука, блять, иди работай! Недоволен, сука, он! Я искал следы руками! Ты зажрался, стыдоба! У тебя там гроздья камер смотрят с каждого столба! Кто и с кем ходил в подъезды! Кто проехал по шоссе! Кто, куда во сколько ездил — с номерами, сука, все! У тебя народ как дети: трижды в день без выходных постят фоточки в соцсети — погугли хотя бы их! У тебя провайдер каждый видит на любой из хат, кто чего качал из граждан: порнохаб или джихад! Блять, ему работать плохо! Много цифры! Век не тот! Мне бы так в мою эпоху, ебанутый идиот! Ишь, сидят по кабинетам да растят на попе жир! Слишком много интернета! Страшный неуютный мир! Чем внедрять бойцов к бандитам, да учить язык фарси, он сидит себе, пиздит он! Шифры, блять, ему неси! Что просить назавтра будем? Охуели, дайте две! Микрофоны в жопу людям? Ключ от мыслей в голове? Блять, вернуть таких констеблей к нам на землю из кино можно лишь суровой еблей да маканием в говно. Вам совсем заняться нечем! В жопе сажа, бля, горит!» Шерлок Холмс, закончив речи, улетел на Бейкер Стрит.
Генерал-майор платочком вытер божию росу: если все согласны, точка, утверждать проект несу. А у нашего отдела стало больше важных дел: заведем на Холмса дело, чтобы много не пиздел.
(c) Леонид Каганов, 2017 год
Обработка pdf файлов в ChatGPT
В данной статье я хочу рассказать как обработать папку с текстовыми PDF документами при помощи ChatGPT.
Время от времени у меня появляется задача обработать большое количество pdf-файлов содержащих нужную мне информацию. Для того чтобы обработать все документы, необходимо каждый PDF файл открыть прочитать и понять есть ли в файле нужная мне информация. Было бы здорово если бы я мог провести предварительную автоматическую обработку файлов и сохранить результат в текстовом файле, чтобы затем обработать только те файлы которые мне интересны.
К счастью современные технологии предоставляют такую возможность. Рассмотрим это задачу на примере папки на диске с резюме различных искателей я хочу вычленить из каждого документами фамилию имя отчество, должность и сколько лет опыта у каждого.
Сначала попробуем проверить возможно ли это на примере следующего запроса к chatgpt:
я хочу чтобы ты прочитал резюме кандидата и
вычленил профессиональные качества этого человека.
Меня интересует следующая информация: имя, профессия, сколько лет опыта, индустрия
Постарайся выбирать только факты представленные в документе с минимумом допущений.
Результат должен быть в json формате следующего вида
{"ФИО":"Иванов Иван Иванович", "профессия": "software injeneer", "годаОпыта": "10 лет", "индустрия": "геймдев"}
Если информации недостаточно просто оставь поле пустым.
Как мы видим робот смог вычленить нужную мне информацию и вывести ее в нужном мне виде. Значит этот процесс можно автоматизировать.
Для начала на этой странице нужно создать ключи доступа к API chatgpt, чтобы обращаться к языковой модели программно:
После этого на этой странице следует оплатить стоимость API закинув любую сумму от 5 евро на счёт. Даже если у вас уже есть платная подписка к ChatGPT пользование API в нее не входит и оплачивается отдельно. Следует обратить внимание, что не все страны доступные для пользования API. России в частности в списке разрешённых стран нет.
Убедимся что у нас установлен nodejs и npm
# should be something like v20.11.1
node --version
# should be something like 10.8.2
npm --version
Для извлечения текста из pdf установим утилиту pdf2text
# ubuntu users
sudo apt-get install poppler-utils
# mac users
brew install poppler
pdftotext -h
# Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org
# Copyright 1996-2011, 2022 Glyph & Cog, LLC
Клонируем git репозиторий и устанавливаем зависимости.
git clone https://github.com/maxistar/pdf-analiser.git
cd pdf-analiser
# you can also use npm but pnpm is faster but you should install it first
pnpm install
В терминале экспортируем переменную окружения с нашим openai ключом.
export OPENAI_API_KEY="sk-xxxxx...
Запускаем командой npm start
чтобы обработать тестовые pdf в папке data/cvs. После запуска результат обработки будет сохранен в файле data/output/files_yyyMMMddddhhmm.csv. Файл должен выглядить примерно вот так:
File Name,Size (bytes),name,title,experience,industry
Forrest Gump.pdf,155415,"Forrest Gump","house-husband/father","43 года","IT"
Forrest_Gump-1.pdf,155415,"Forrest Gump","House-husband/father","43 года",""
Forrest_Gump.pdf,155415,"Forrest Gump","","","Разработка ПО"
После того как мы убедились что все работает копируем наши файлы которые нужно обработать в папку data/cvs и запускаем обработку еще раз.
Мы обработали папку с PDF файлами содержащими CV соискателей и сохранили интересующие нас данные в csv файл. Следует понимать что языковые модели могут выдавать при одних и тех-же запросах разные результаты, поэтому для более предсказуемого результата можно обработать набор несколько раз и усреднить результат.
Подобным образом можно обработать любое количество документов любого типа. Указанный метод не бесплатный. Обработка сотни документов обходится примерно 2 евро. Однако обработка вручную такого количества документов может оказаться еще дороже.
Антресолька
Сделал антресоль в коридоре. Антресоль спроектировал в OpenSCAD. Все-таки удобная эта штука — можно программировать в 3D любые объекты, будь то для 3D-принтера, будь то для проектирования мебели. Плиты ДСП купил в Hellweg рядом с домом, там есть сервис для резки купленных досок и я сразу нарезал нужную мне длинну. Лицевая панель демпфируется воздушными доводчиками с пружинами на сто ньютонов. Боялся, что ста ньютонов будет маловато, но оказалось, что в самый раз. Внутри полку закрепил металлическими уголками — не очень красиво, но внутри никто и не видит...
Теперь у меня есть больше места для хранения всякой всячины.
Исходники антресольки выложил сюда.