2024-09-25

Спок и ящерица

Оказывается, не все могут сделать вулканское приветствие из «Звёздного пути», оно же «Спок» в игре «Камень-Ножницы-Бумага-Ящерица-Спок», в которую играли Леонард и Шелдон в «Теории большого взрыва». Не совсем понятно, почему не все могут развести указательный и средний пальцы независимо от безымянного и мизинца: то ли не у всех есть нужные сухожилия в кисти, то ли это просто неразвитый моторный навык. Впрочем, если у вас получается сделать «Спока», значит, эта игра вам доступна.

 

Правил довольно просты:

  • Ножницы режут Бумагу
  • Бумага покрывает Камень
  • Камень давит Ящерицу
  • Ящерица отравляет Спока
  • Спок разбивает Ножницы
  • Ножницы обезглавливают Ящерицу
  • Ящерица ест Бумагу
  • Бумага опровергает Спока
  • Спок испаряет Камень
  • Камень давит Ножницы

Нужно будет пересмотреть Теорию Большого Взрыва...

 

Оставить комментарий

 
  2024-09-16

Множество email адресов на одном ящике

У Gmail есть одна классная особенность — в имени аккаунта электронной почты после значка плюс можно указывать всё что угодно. Адреса myaddress@gmail.com, myaddress+something@gmail.com, myaddress+hello@gmail.com и т.д. для системы выглядят одинаково. Таким образом, вы можете создавать сколько угодно виртуальных адресов. Эту возможность я часто использую, когда нужно что-либо протестировать или создать несколько аккаунтов на один электронный адрес.

Однако это еще не все! Точки в имени аккаунта являются незначимыми символами, а значит, адреса вида myaddress@gmail.com, my.address@gmail.com, my.addr.ess@gmail.com будут для Gmail одними и теми же адресами! Это означает, что если мы где-либо оставляем наш электронный адрес, мы можем контролировать, какой именно адрес мы кому даем, и видеть, от кого пришло письмо. Например, друзьям давать my.address@gmail.com, а на сторонних сайтах оставлять myaddres.s@gmail.com, и мы сразу будем видеть, кто нам пишет!

И почему я до сих пор этим не пользовался?

 

Оставить комментарий

 
  2024-09-15

Редактирование нескольких строк в Vim

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

 

Оставить комментарий

 
  2024-09-09

AR.js

AR.js - это JavaScript библиотека которая позволяет создавать дополненную реальность прямо в браузере мобильного телефона.

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

 

Оставить комментарий

 
  2024-09-04

Распечатай Линейку

Сегодня придя в офис обнаружил в принтере забавный листок. Кто-то распечатал себе линейку и забыл забрать.

Сколько раз мне нужна была линейка и приходилось изощряться используя спичечные коробки, клечатую бумагу и тому подобное. Здорово, что кто-то догадался, что можно просто распечатать себе линейку! Просто распечатываешь на листе А4, складываешь и измеряй, что хочешь, гениально! Шаблоны линеек в PDF ребята выложили на сайте printaruler.com.

 

Оставить комментарий

 
  2024-08-28

JSCad

Стало любопытно, а существует ли версия OpenSCAD но только чтобы работала в браузере? Оказалось что есть! Называется OpenJSCad! OpenJSCad или JSCad - это javascript библиотека которая умеет визуализировать в браузере 3D сцены описанные в виде простых геометрических примитивов.

Проект распространяется под лицензией MIT. К сожалению, файлы OpenSCAD с OpenJSCad несовместимы - синтаксис хоть и похож, но все же немного отличается.

Тем не менее проект довольно интересный, если нужно что-то быстро нарисовать в 3D и нужно чтобы изображение можно было вращать прям в браузере - данное решение подойдет как нельзя лучше.

 

Оставить комментарий

 
  2024-08-26

Про Telegram

Генерал-майор в шинели громко плакал в докладной: террористы охренели, нет зацепки ни одной. Завели себе девайсы — интернет, секретный чат. И попробуй догадайся, с кем о чем они журчат. Где ни сунься — всюду шифр. Ни отмычек, ни ключей. Лишь вагон арабских цифр! И причем, неясно чей! Как ловить бандитов буду? Никаких зацепок нет, если шлет Аслан Махмуду зашифрованный пакет. Нам бы прежних инструментов! Чтобы мы в сетях могли: и проверить документы, и назначить патрули, и явиться с понятыми — всех на сайте мордой в пол. Кто такой? Прописка? Имя? Как давно сюда пришел? Адреса друзей и близких? Что в карманах, ё-моё? Где шкатулка с перепиской? Доставай, прочтем её... Кончилась эпоха Холмса с появлением сети! Мы бессильны! Мы сдаемся! Как нам следствие вести? Нам работать трудно очень! Не хватает важных мер! Нужно больше полномочий. Всех админских, например. Раскрываемости нету! Показатели в нуле! Вот бы сети интернета запретить по всей земле! Вы ж поймите, это важно! Вот вам докладной листок... И сморкался в камуфляжный влажный носовой платок. И так искренне, так чисто прозвучал его доклад, что кивали журналисты. А потом случился ад.

Как вулкан потухший, в жерло получив морской воды, вышел Холмс, который Шерлок. И вломил ему пизды. Встал как призрак из могилы, из музея Бейкер Стрит. «Ах ты ж йобаный мудила!» — он на кокни говорит. «Я всю жизнь проползал с лупой! Под дождем! В говне! В грязи! Подними свою залупу да по кнопкам повози! У тебя зацепок нету?! Ах ты сраный пидарас! А платежки?! А билеты?! Кучи электронных баз?! Вам же треки пишут соты, где носили телефон!!! Сука, блять, иди работай! Недоволен, сука, он! Я искал следы руками! Ты зажрался, стыдоба! У тебя там гроздья камер смотрят с каждого столба! Кто и с кем ходил в подъезды! Кто проехал по шоссе! Кто, куда во сколько ездил — с номерами, сука, все! У тебя народ как дети: трижды в день без выходных постят фоточки в соцсети — погугли хотя бы их! У тебя провайдер каждый видит на любой из хат, кто чего качал из граждан: порнохаб или джихад! Блять, ему работать плохо! Много цифры! Век не тот! Мне бы так в мою эпоху, ебанутый идиот! Ишь, сидят по кабинетам да растят на попе жир! Слишком много интернета! Страшный неуютный мир! Чем внедрять бойцов к бандитам, да учить язык фарси, он сидит себе, пиздит он! Шифры, блять, ему неси! Что просить назавтра будем? Охуели, дайте две! Микрофоны в жопу людям? Ключ от мыслей в голове? Блять, вернуть таких констеблей к нам на землю из кино можно лишь суровой еблей да маканием в говно. Вам совсем заняться нечем! В жопе сажа, бля, горит!» Шерлок Холмс, закончив речи, улетел на Бейкер Стрит.

Генерал-майор платочком вытер божию росу: если все согласны, точка, утверждать проект несу. А у нашего отдела стало больше важных дел: заведем на Холмса дело, чтобы много не пиздел.

(c) Леонид Каганов, 2017 год

 

Оставить комментарий

 
  2024-08-21

Обработка 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 евро. Однако обработка вручную такого количества документов может оказаться еще дороже.

 

Оставить комментарий

 
  2024-08-20

Антресолька

Сделал антресоль в коридоре. Антресоль спроектировал в OpenSCAD. Все-таки удобная эта штука — можно программировать в 3D любые объекты, будь то для 3D-принтера, будь то для проектирования мебели. Плиты ДСП купил в Hellweg рядом с домом, там есть сервис для резки купленных досок и я сразу нарезал нужную мне длинну. Лицевая панель демпфируется воздушными доводчиками с пружинами на сто ньютонов. Боялся, что ста ньютонов будет маловато, но оказалось, что в самый раз. Внутри полку закрепил металлическими уголками — не очень красиво, но внутри никто и не видит...

Теперь у меня есть больше места для хранения всякой всячины.

Исходники антресольки выложил сюда.

 

Оставить комментарий

 
  2024-08-20

В GPT4All теперь можно загружать заметки

GPT4All это UI клиент компании Nomic который позволяет загружать большие языковые модели от разных производителей и работать с ними полностью offline.

Загрузил новую версию GPT4All и обнаружил что в ней теперь можно загружать свои файлы которые можно использовать для запросов к большой языковой модели.

Это значит что теперь можно, например делать запросы к своим заметкам, текстам книг, технической документации и т.п. Если это действительно будет хорошо работать, то это прям здорово!

 

Оставить комментарий