LINUX.ORG.RU

Сообщения den73

 

Яр - какие ф-ии работы со строками включить в стандартную библиотеку?

Форум — Development

Вот можно взять из 1С, там мало и просто.

Можно гнаться за tcl, там много и хорошо.

Можно взять то, что уже есть в лиспе и самых ходовых библиотеках, но там явно не хватает таких простых вещей, как «взять эн буковок справа». И большой вопрос - как русифицировать названия.

Иными словами, в каком языке самая лучшая (и при этом маленькая) библиотека работы со строками?

-константы типа ascii_chars, как в Питоне
-Извлечение букв по индексу
-Преобразование кодировок
-Транслитерация
-Базовые ожидаемые функции: подстрока, трим, пад, замена по индексу, замена по подстроке
-Форматный вывод (наверное, надо сделать как объект
 форматтер в питоне или как моя cons-to-source.lisp ) 
-Обработка русского языка (падежи и пр) 
-парсинг (взять из языка ред или мой нано-парсер)
-конкатенация
-сравнение
-объект ТекстовыйДокумент ≈ ed

 

den73
()

доделать закладки в редакторе на tcl/tk

Форум — Job

В общем-то я понимаю, что профессионалов это мало заинтересует ввиду низкой оплаты, но вдруг у кого-то ностальгия по старому-доброму tcl/tk?

вот реализация закладок:

https://bitbucket.org/budden/clcon/src/a90b0543d705e993ac0424455845bd88034259...

надо доделать: https://bitbucket.org/budden/iar/issues/8/---------------------- цена вопроса 10 тыр.

И ещё несколько задач

https://bitbucket.org/budden/clcon/issues/188/revert цена вопроса 2 тыр

https://bitbucket.org/budden/clcon/issues/156/control-w цена вопроса 1 тыр

https://bitbucket.org/budden/clcon/issues/211/-------------------------------- цена 0.5 тыр

https://bitbucket.org/budden/clcon/issues/edit/226 цена вопроса 5 тыр

https://bitbucket.org/budden/clcon/issues/32/perfection-of-buffer-list цена вопроса 10 тыр

https://bitbucket.org/budden/clcon/issues/125/-------------------------------... цена 3 тыр

Каждая задача должна быть оформлена в виде patchbomb к репозиторию (пулл-реквесты с кириллицей не работают). В коммите должно быть краткое описание сути изменений (как обычно) и полная гиперссылка на задачу.

Я ищу одного человека, к-рый сделает все эти задачи или хотя бы половину. Если бы эти задачи решал я, оплата была бы высокой, т.к. большинство из них я решу очень быстро. Для человека вне контекста эта оплата маленькая, т.к. долго разбираться. Так что разбогатеть не получится - за этим обращайтесь на tcl bounties, если они ещё не закончились :)

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

Торг, в принципе, уместен.

 , ,

den73
()

Лицензия на SWANK

Форум — Development

Есть программа (SWANK, серверная часть SLIME), которая выпущена в Public Domain. К ней приложены исходные тексты. Часть исходных текстов - под GPL, а именно, бекенд для CLISP, swank/clisp.lisp

Я распространяю копию SWANK в составе своей программы, вместе с исполняемым файлом, при постройке которого используется SWANK.

В моей конфигурации файлы под GPL никак не используются при сборке. Т.е. они просто лежат на диске и ничего не делают.

Можно ли говорить, что моя программа не подпадает под GPL?

 ,

den73
()

поток, считающий буквы

Форум — Development

Тривиальный вопрос. Вроде бы решается с помощью gray streams за короткое время. Но не хочу ещё один велосипед, пусть даже на 50 строк. Есть ли библиотека, к-рая это умеет? Кодировка у меня utf-8, хотя вряд ли это важно.

Мне нужно, чтобы ю считалась за одну букву и cr lf тоже считалась за одну, если она возвращается потоком как #\newline. И чтобы была функция, подобная file-position, но возвращающая число букв, считанных таким путём от начала файла.

Код должен быть переносим между реализациями.

Судя по первым замечательным ответам, данное сообщество не может даже на эту тему сказать ничего внятного (и поводов для лола здесь нет - сообщество сильно деградировало за последние годы), поэтому я буду здесь цитировать stack overflow, где обычно на вопросы хоть как-то отвечают.

https://stackoverflow.com/questions/2711215/common-lisp-gray-streams/2711652#...

https://stackoverflow.com/questions/2711215/common-lisp-gray-streams/2711659#...

flexi-streams, упомянутый улыбчивым анонимусом, считает октеты и поэтому не подходит.

Есть пример вот здесь, но он только для SBCL. Есть вопрос про Stack Overflow, но он говорит как сделать, а не предлагает библиотеку, в которой это уже сделано.

Видимо, на этом поиск будет прекращен и будет сделан велосипед.

 

den73
()

Racket - отладчик макросов - жизнеспособен ли?

Форум — Development

Вот читаю в мануале:

Warning: because of limitations in the way macro expansion is selectively hidden, the resulting syntax may not evaluate to the same result as the original syntax

Я воспринимаю данное утверждение как декларацию о негодности данного инструмента. У кого-нибудь есть иные мнения?

 ,

den73
()

defstruct, который можно переопределять как defclass

Форум — Development

Известно, что динамическое переопределение defstruct ведёт к неопределённым последствиям. Хочется иметь специальную версию defstruct с опцией, к-рая разрешает переопределять его как defclass, с сохранением всех прочих свойств defstruct-а.

Кто-нибудь в курсе про такую библиотеку? Гугл не помог.

P.S. кстати, форум на лиспере опять не работает, уже недели две как.

 

den73
()

Декларации immutable в Сommon Lisp

Форум — Development

Всем привет!

КТо-нибудь встречался с попытками прикрутить ту или иную форму декларации const к Common lisp? Я думаю, что для этого нужно лезть в потроха самого компилятора. Меня интересуют в этой связи SBCL и CCL.

В простейшем случае декларация const должна распространяться на биндинг переменной и говорить о том, что в области действия биндинга не делается setq.

Более сложный вариант - заявление о неприкосновенности полей объекта. Например, пусть мы получили параметр cons. Тогда декларируем что-то типа (declare (const (car param))) и это значит, что мы не трогаем car param и полагаем, что у нас под рукой другие его тоже не трогают. Правда, тут есть нюансы смысла (мы не трогаем, другие не трогают, никто не трогает), но не суть. Мне бы хоть что-нибудь.

А то вишь - отец всех функциональных языков без иммутабельности...

 

den73
()

Основные варианты использования операций, определяемых пользователем

Форум — Development

Здесь собираю случаи, в т.ч. предложенные в ходе дискуссии.

1. Алгебра чисел, алгебра бухгалтерских чисел, матрицы. Здесь мы, по сути, определяем арифметику.

2. Список прибавить элемент, список нарастить элементов.

3. В поток вывести а, б, в (С++ -шный классический оператор <<)

4. А влечёт Б (логика и доказательства)

5. А имеет тип Б.

6. А является подтипом Б.

7. Логические операции (а или б)

8. Битовый сдвиг и присваивание <<=

9. Осуществить действие в некоторых точках списка, а не во всех:

f = map (/ 2) $ (g $ k x $ y + d)

10. Индексация массивов пользовательскими типами ключа.

11. Операции со строками и последовательностями (поиск, замена, удаление, вставка и т.п.)

12. Величины с размерностью, например 500 миллисекунд.

Какие ещё есть полезные варианты использования операций? Меня особенно интересуют те случаи, где именно синтаксис операций даёт особое удобство. Ведь всё это можно выразить как функции, например: +(2,2), Нарастить(Список,Элемент), Влечёт(А,Б), Является(А,Б) и т.д.

Мне просто кажется, что операции могут сильно понизить понятность кода из-за приоритетов, особенно, когда приоритеты могут назначаться пользователем. И я ищу подтвержедний той точке зрения, что операции особо ничего не дают и без них вполне можно обойтись (как обходится лисп). Или опровержений.

 ,

den73
()

Кто хочет починить keysym-ы под офтопиком?

Форум — Development

Суть в том, что нельзя сделать горячие клавиши типа Control-ю, поскольку под офтопиком нет keysym-ов из X. Соответственно, я бы на данный момент не назвал tk полноценным кросс-платформенным GUI тулкитом. Что это за тулкит, в котром нельзя делать горячие клавиши? Это я к тому, что энтузиасты tk по идее должны с энтузиазмом воспринять мысль о том, чтобы допилить tk до более работоспособного состояния, пусть даже под офтопиком.

Я слегка прошарил по исходникам и прогуглил тему. Я думаю, что нужно добавить 2 хеш-таблицы, к-рые будут превращать буквы юникода в keysym-ы и обратно. Так мы получим кроссплатформенные keysym-ы.

В tk есть хеш-таблицы, их можно использовать в качестве образца. Т.е. по идее задача выглядит довольно несложной.

http://core.tcl.tk/tk/tktview?name=52e9b0f52c

Есть желающие осчастливить человечество?

 ,

den73
()

сделал свою раскладку клавиатуры в офтопике, теперь хочу такую же под Linux

Форум — Desktop

Чтобы два раза не писать, вот тут тема

Общая идея раскладки.

1. Меняем местами AltGr и пробел.

2. Набиваем кириллицу как обычно, а латиницу - удерживая кнопку ПРОБЕЛ большим пальцем левой руки.

3. Пробел набираем большим пальцем правой руки, нажимая на AltGr.

Соответственно, теперь нужно портировать под xkb. Вопросы:

1. Можно ли в Linux тотально поменять местами пробел и AltGr?

2. Есть ли в xkb понятие dead key?

3. Можно ли без больших трудозатрат портировать klc файл раскладки от Windows под xkb.

4. Как создать свою раскладку под xkb в Debian? Говорят, вот это мне могло бы помочь, но это Ubuntu, а не Debian.

 

den73
()

тип записи, ограничивающий тип его элемента

Форум — Development

Икс принадлежит типу ТТ(а,б), если:

1. X является типом Моя-запись
2. Поле Поле1 имеет тип а
3. Поле Поле2 имеет тип б

Это не то же, что «Моя запись всегда имеет тип Поля1, равный а» - тип Поле1 в Моя-запись, вообще говоря, может быть любым, но мне нужно рассмотрить именно ситуацию, когда он равен а.

Я не придумал, как это сделать с напрямую помощью deftype и мне пришлось сделать так (вот реальный код, там я делаю «свои cons-ы»)

(defmacro DEF-Тип-ТТ-от-а-и-б (имя а б)
   ...)

(DEF-Тип-ТТ-от-а-и-б ТТ-от-integer-и-string integer string)

(typep X 'ТТ-от-integer-и-string)

Есть ли у кого-нибудь лучшие идеи? По сути моя проблема сводится к следующей: как из deftype запрограммировать действия в load-time? Может быть, я просто туплю или чего-то не знаю, но у меня пока нет идей.

 , ,

den73
()

форкнуть SBCL

Форум — Development

Есть такая идея. SBCL - это спортивный автомобиль. Они всё время работают над его ускорением, но надёжность не растёт. Конкретный пример для меня - https://bugs.launchpad.net/sbcl/ bug/1424031 - бага «medium». Если мы правильно разборались со Стасом, то мой тестовый случай состоял в том, что я во многих тредах запускал попеременно (room) и (gc). SBCL при этом с низкой вероятностью падает, зависает и т.п. С моей точки зрения это означает ничто иное, как «room не работает в многопоточном коде», а поскольку SWANK многопоточен, то далее получаем теорему «в SBCL не работает room». В течение более чем года это никого не волнует, а волнует, как ускорить сборку мусора на 5%. В моей вселенной это - абсолютно неправильное направление развития продукта.

Кроме того, в SBCL нет точной сборки мусора (во всяком случае, под Intel на Linux).

В третьих, лисп нужно модернизировать, а для этого нужно более агрессивно добавлять новшества. Явно не хватает таких вещей, как брекпойнт на присваивание и биндинг переменной. Хочется внедрить symbol-readmacros, которые я сделал уже несколько лет назад. Хочется возможностей безопасно прилинковать библиотеки, использующие сигналы - в CCL они работают, а в SBCL - нет. Хочется сделать более развитые средства навигации по исходникам, подобно dspec в Lispworks. Хочется сделать defadvice, как в Lispworks. Хочется реализовать на уровне компилятора call/cc, который мы с Монком в прошлом году сделали в виде интерпретатора.

Т.е. я вижу три направления развития:

  • точная сборка мусора
  • повышение качества
  • модернизация языка

Вопрос такой - есть ли попутчики? Надо сказать, что я не смогу этим много заниматься. Но если будет ещё хотя бы человека два, кто в этом заинтересован, я бы взялся.

 

den73
()

слово есть, а опы нет. Или наоборот

Форум — Talks

После прогулки по Ростову-на-Дону в поезде мне плохо спалось - не так легко спать на боковушке, если ты не помещаешься в неё по длине, да ещё и чемодан с ноутбуком надо сторожить.

И вот мне в полусне явился такой образ. Город. В нём улицы. Если ехать по улице, то асфальт, с точки зрения реализации, лежит безшовно. А ведь город разбит на районы и это, своего рода, архитектура.

О чём учит нас этот пример? Мне тогда показалось, что он нас чему-то учит, например, тому, что архитектура может существовать на логическом уровне, а на физическом всё устроено без швов. Скажем, интерфейсы (в смысле Явы) - это видимый шов. Интерефейс - это запись с указателями на функции. А вот в городе, есть же интерфейс между соседними районами. Как он выглядит в случае асфальта? Видимо, он заключается лишь в допустимых процедурах перекладки асфальта (согласование с соседями и т.п.)

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

Перемещено leave из development

 ,

den73
()

почему положение Common Lisp в «Computer Benchmark Game» ухудшилось?

Форум — Development

Раньше CL был в 2.5 раза медленее C, а теперь чуть ли не в 10. Что, команда SBCL в такой степени «преуспела» в оптимизации или это козни спонсоров сайта? Надо сказать, я этому сайту перестал верить после того, как они выкинули LuaJit, да и вообще много жалоб на него. Но не помешало бы исключить вариант с реальным ухудшением производительности SBCL.

 ,

den73
()

Common Lisp vs Node.js

Форум — Development

Всем привет. Это не вброс :) Вопросы таковы:

1. В CL можно скомпилировать код явно, выполнив compile, и сохранить образ лисп-среды (исполняемый файл). При повторном перезапуске этого файла никакая компиляция уже не будет происходить, поэтому такое приложение запустится практически мгновенно. Можно ли так сделать в Node.js (кроссплатформенно)?

2. Пробовал ли кто-нибудь swank-js - как он соотносится по фичам с настоящим SLIME?

3. Верно ли я понял, что node.js раза в 2-3 медленнее на микробенчмарках, чем оптимизированный SBCL?

4. Каков наилучший IDE для node.js?

5. Верно я понял, что в node.js есть FFI? Есть ли официальный FFI, насколько он хорош?

6. Если я хочу многопоточное приложение, в node.js это делается за счёт существования нескольких процессов операционной системы и каких-то хитрых способов взаимодействия между ними. Как это называется и насколько это медленнее, чем обычные треды с мьютексами и очередями?

7. Как отлаживать ошибки уровня FFI? Могу ли я использовать для этого gdb?

В гугле меня нет, не забанили, но хотелось бы сэкономить моё время.

 ,

den73
()

LXDE и Aero Snap

Форум — Desktop

В 7-м офтопике есть киллер-фича: можно мышью дотащить окно до того, что оно «развернётся», только не на весь экран, а на половину экрана. После этого можно выбрать, каким из имеющихся окон занять вторую половину экрана. У меня сейчас debian 8 и LXDE. Есть ли какая-нибудь программка или настройка, к-рая позволяет так сделать?

Ответ: да, есть, и даже лучше: без мыши. Фича называется aero snap . У нас вместо мышекликальства будет сочетание клавиш для нескольких видов размещения окна:

  • Win-Left/Right - левая/правая половина экрана
  • Win-Up/Down - верхняя/нижняя
  • Win-F3 - правая верхняя четверть экрана
  • Win-F4 - правая нижняя четверть экрана

Для реализации мечты нужно подать команду

$ ваш-любимый-редактор ~/.config/openbox/lxde-rc.xml 
Вставляем такой блок:
<keyboard>
    ...
    <!-- aero snap -->
    <keybind key="W-Left">        # HalfLeftScreen
      <action name="UnmaximizeFull" />
      <action name="MoveResizeTo">
        <x>0</x>
        <y>0</y>
        <height>97%</height>
        <width>50%</width>
      </action>
    </keybind>
    <keybind key="W-Right">        # HalfRightScreen
      <action name="UnmaximizeFull" />
      <action name="MoveResizeTo">
        <x>-0</x>
        <y>0</y>
        <height>97%</height>
        <width>50%</width>
      </action>
    </keybind>
    <keybind key="W-Up">        # HalfUpperScreen
      <action name="UnmaximizeFull" />
      <action name="MoveResizeTo">
        <x>0</x>
        <y>0</y>
        <width>100%</width>
        <height>50%</height>
      </action>
    </keybind>
    <keybind key="W-Down">        # HalfLowerScreen
      <action name="UnmaximizeFull" />
      <action name="MoveResizeTo">
        <x>0</x>
        <y>-0</y>
        <width>100%</width>
        <height>50%</height>
      </action>
    </keybind>
    <keybind key="W-F3">        # Right Top Quarter
      <action name="UnmaximizeFull" />
      <action name="MoveResizeTo">
        <x>-0</x>
        <y>0</y>
        <width>50%</width>
        <height>50%</height>
      </action>
    </keybind>
    <keybind key="W-F4">        # Right Bottom Quarter
      <action name="UnmaximizeFull" />
      <action name="MoveResizeTo">
        <x>-0</x>
        <y>-0</y>
        <width>50%</width>
        <height>50%</height>
      </action>
    </keybind>
    <!-- aero snap end -->
Заодно нужно сделать следующее:

  • убрать старые привязки для W-F3 и W-F4 - мне не нужны 4 десктопа, хватит и двух. Если вам нужно иное, придётся задать другие сочетания кнопок для размещения окна в четвертях экрана.
  • сделать, чтобы десктопов было два: desktops/number - заменить 4 на 2
  • (необязательно) убрать сочетания C-A-Left, C-A-Right, C-A-Up, C-A-Down

Сохраняем файл и

openbox --reconfigure

 

den73
()

Нужен ли кому-то Common Lisp в IDEA?

Форум — Development

Думаю, для разминки скиллов в Яве может быть интересно сделать связку между IDEA и SLIME. Пока не уверен, что из этого что-нибудь выйдет, но у меня уже есть положительный опыт написания IDE для лиспа «с нуля» на базе SWANK, клиент написан на tcl (URL у меня в профиле). Здесь, видимо, объём работы должен быть гораздо меньше.

Также я не совсем уверен, что это нужно мне самому.

Всё же tcl - это ещё и гуй, который легковесен и по мне так гораздо приятнее Java (не могу смотреть без слёз, как IDEA тормозит). И заодно ещё вопрос: насколько хорош CUSP и насколько тяжело может оказаться перевести CUSP на IDEA.

Хотя уместен и третий вопрос - нафига вообще что-то делать, если CUSP уже есть - его ведь можно просто допилить, если уж так приспичило.

 , , ,

den73
()

нужен ли кому-то лисп в облаках?

Форум — Development

Меня тут уговаривают сделать возможность деплоить лисповые приложения на Cloud Foundry. Кажется, что за день можно справиться. Но мне как-то сомнительно - нужно ли это кому-нибудь?

 ,

den73
()

Нубский вопрос: какие инструменты нужны для разработки lor-source

Форум — Linux-org-ru

Никогда не занимался Явой. Вопрос про IDE. Я пока что скачал IDEA ознакомительную, вроде она проект проимпортировала, но собирать пока что не пробовал. А как _правильно_ заниматься разработкой Лор-сорса? Какой набор инструментов использовать?

 

den73
()

постажироваться Java

Форум — Job

Добрый день!

Хочу переквалифицироваться из лиспера в джависта. Причина проста: по лиспу слишком мало вакансий.

Располагаю 10-15 часами свободного времени в неделю на срок 3 месяца.

Хочу освоить следующие темы:

Java EE, Spring, Hibernate, SOA, EDA, Шаблоны, фишки работы в средах (IntelliJ/Eclipse), фреймворки UT.

Неплохо знаю SQL (работал с Firebird, MS, Oracle). Имею опыт работы с Linux, ant, JIRA, git. Более-менее сносный разговорный Английский.

Оплата приветствуется, но не обязательна. Хочу получить практический опыт по как можно большему количеству из перечисленных тем. Если это будет Open Source, то я только за.

Резюме: http://rosinmn.ru/ecovillage/resume-site.rtf

 , ,

den73
()

RSS подписка на новые темы