Как стать автором
Обновить
31
Карма
0
Рейтинг
Александр Артёменко @Svetlyak

Пользователь

LISP-пакет OMGlib или вперёд к Web 3.0

О! Спасибо!
Скрестить бы create-element с Spinneret и LASS – цены бы ему не было!

LISP-пакет OMGlib или вперёд к Web 3.0

А вообще идея с использованием JSCL прикольная. У меня для Reblocks иногда приходится писать какой-нибудь JS код, но я для этого использую Parenscript.

Скажи, а как у тебя реализована работа с DOM на стороне клиента? Вызов стандартных JS функций и тд. Я бы с удовольствием тоже заиспользовал JSCL вместо Parenscript.

LISP-пакет OMGlib или вперёд к Web 3.0

Да, сейчас Ultralisp.org действительно не выкачивает GIT сабмодули и я не натыкался на проекты которые бы не работали из-за этого :)

Думаю это не сложно будет поддержать. Попробую добавить на днях.

LISP-пакет OMGlib или вперёд к Web 3.0

Попробуй добавить свой проект на мой Ultralisp.org. Там dist будет обновляться сразу после пуша в Git репозиторий.

А ещё хочу упомянуть пару библиотек – Reblocks (она позволяет писать всю бизнес-логику на Common Lisp и запускает её на бэкенде, а на фронт отдаёт команды, как поменять DOM дерево), а так же CLOG – она вроде больше похожа на твой OMGlib, только более продвинутая на данный момент.

Как писать кодогенераторы в Go

Нет бы сразу Common Lisp использовать и не изобретать с нуля то, что известно человечеству уже лет 50.

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

Когда настоящий синьор пишет код, Чак Норрис тихо плачет в сторонке.

Если настоящий синьор допускает баг, то заказчик тут же признаёт, что это фича, которую он давно хотел.

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

Синьор делает так:

  1. Узнает о проблеме

  2. Локализует проблему

  3. Фиксит проблему

  4. Пишет про проблему в блог или на Хабр, чтобы Google смог проиндексировать страницу и показывать её в поиске джунам :)

В свободном доступе выложили архив сервиса «Яндекс.Еда» с данными заказов клиентов, «Яндекс» ранее подтвердил утечку

"Звонили автодозвоном", чтобы что? Как это им помогло бы?

А вы знаете, где сейчас используется Лисп?

Да, забыл сказать. С недавних пор Ultralisp поддерживает не только формат метаданных Quicklisp, но и CLPI. CLPI, это альтернатива Quicklisp, формат данных используемый в Common Lisp Package Manager (https://www.clpm.dev/)

А вы знаете, где сейчас используется Лисп?

Да именно так.

Более того, Ultralisp автоматически настраивает вебхук в проекте на GitHub, и собирает новую версию диста, как только ты запушишь изменения.

А ещё, в нём можно делать свои "дисты". Например ты в такой дист можешь включить форки каких-то библиотек, которые нужны только тебе. В общем дисте они не будут видны.

К примеру, в такой дист я начал собирать расширения для Lispworks: https://ultralisp.org/dists/lispworks В Quicklisp их в принципе не включат, потому что туда включают только проекты, которые компилируются под SBCL.

А вы знаете, где сейчас используется Лисп?

Я на Common Lisp пилю аналог питоновского PyPi: https://ultralisp.org. Это хостинг для более чем тысячи CL библиотек, куда можно в несколько кликов добавлять новые прямо с GitHub.

Ну и ещё есть на гитхабе десятки небольших CL библиотек в организации https://github.com/40ants/, если конечно можно считать их pet-прожектами.

Макросы для питониста. Доклад Яндекса

Для этого надо запустить процесс кодогенерации и напечатать получившийся результат. Например в REPL.

Есть такой Python пакет – «meta». В нём есть утилиты для работы с AST, в том числе и для печати AST дерева. Можно использовать его.

В этом туториале можно почитать подробнее: macropy3.readthedocs.io/en/latest/ast.html

А в Common Lisp, к примеру, раскрытие макросов встроено в язык и в IDE. Его можно вот так вызвать из REPL:

;; Сначала определим макрос:
CL-USER> (defmacro trace-forms ((&optional (stream t))
                        &body body)
           `(progn ,@(loop for form in body
                           collect `(format ,stream "~S -> ~S~%"
                                            ',form
                                            ,form))))
TRACE-FORMS

;; Вот так он работает:
CL-USER> (trace-forms ()
           1
           :foo
           "bar"
           (+ 1 3))
1 -> 1
:FOO -> :FOO
"bar" -> "bar"
(+ 1 3) -> 4
NIL

;; А так можно посмотреть,  в какой код он раскрывается:
CL-USER> (macroexpand-1
          '(trace-forms ()
            1
            :foo
            "bar"
            (+ 1 3)))
(PROGN
 (FORMAT T "~S -> ~S~%" '1 1)
 (FORMAT T "~S -> ~S~%" ':FOO :FOO)
 (FORMAT T "~S -> ~S~%" '"bar" "bar")
 (FORMAT T "~S -> ~S~%" '(+ 1 3) (+ 1 3)))
T

Макросы для питониста. Доклад Яндекса

Да, так бывает. Нужно соблюдать баланс.

Макросы для питониста. Доклад Яндекса

С помощью макросов можно сложные вещи делать более простыми в использовании.

Так же можно оптимизировать код под конкретную зада, собирая функции из AST по кусочкам.

Это такой же инструмент, как например ООП. Просто другой.
Он открывает новые возможности для людей, обладающих фантазией.

Как быстрее вливать пуллы в upstream?

У меня, кстати, есть ещё одна разработка – скрипт, который проходится по всем форкам и ищет несмердженные в апстрим ветки. Про такое тоже можно как-то напоминать владельцу основного репозитория. В форках иногда попадаются полезные доработки, которые люди по разным причинам не превращают в пуллы и не вливают в апстрим.

Как быстрее вливать пуллы в upstream?

Хотя странно. Я сейчас поставил Firefox Quantum 66.0.3 (64-битный). И у меня проблема не воспроизвелась, ни в обычной вкладке, ни в incognito режиме (где он написал:

Ресурс на «https://mc.yandex.ru/metrika/watch.js» был заблокирован, так как включена блокировка содержимого.[Подробнее] 12forks.com
Ресурс на «https://yandex.ru/clck/click» был заблокирован, так как включена блокировка содержимого.[Подробнее] 12forks.com


Может быть дело в каких-то дополнительных плагинах? Что-нибудь вроде адблока или ещё чего-то такого?

Как быстрее вливать пуллы в upstream?

Очень может быть что так. Похоже на ошибку в Яндекс Формах и том, как они используют Метрику. Я уже передал информацию о проблеме разработчикам.

Спасибо за помощь!

Как быстрее вливать пуллы в upstream?

Говоря про регистрацию, я имел в виду, что автор пулла или репозитория могут быть не зарегестрированы в моём сервисе, и даже не знать про него. Бот может прийти в любой пулл и покомментить, что пулл похоже подтухает :)

Как быстрее вливать пуллы в upstream?

Валерий, скажи пожалуйста какой у тебя браузер?

Как быстрее вливать пуллы в upstream?

Какого рода бот?

Такой, который будет сам находить забытые PR и напоминать о них даже без регистрации автора пулла или репозитория?

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Зарегистрирован
Активность