• Настройка пользовательского интерфейса при установке приложений на nanoCAD Plus 8.5



      Для значительного числа пользователей установка приложения равнозначна появлению ярлыка на рабочем столе или кнопки на панели инструментов. В данной статье мы рассмотрим механизм добавления меню и панелей инструментов для пользовательских приложений, устанавливаемых на nanoCAD Plus 8.5, а также разберём процедуру создания ярлыка, который позволит запускать конкретное пользовательское приложение в среде nanoCAD.

      Для тех, кому интереснее попробовать, чем читать описание, сразу же приводим ссылку на дистрибутив приложения «Примеры nanoCAD SDK 8.5». После установки данного приложения при запуске nanoCAD Plus 8.5 будут автоматически загружаться примеры, созданные на LISP, C++, С#, VB.NET, JScript и VBScript, а в пользовательский интерфейс будут добавляться выпадающее меню и панель инструментов (как на заглавном скриншоте), позволяющие вызывать команды примеров.
      Читать дальше →
    • Генерация кода на Python при помощи Hy

      1. Что такое Hy


      Hy — диалект Лиспа, который встроен в питон.


      Благодаря тому, что Hy трансформирует свой Лиспоподобный код в Абстрактное Синтаксическое Дерево (AST) питона, с помощью Hy весь прекрасный мир питона — на кончиках пальцев и в форме Лиспа.


      image

      Читать дальше →
    • Liscript — web REPL: поцелуи, велосипеды и экскаваторы



        Некоторое время назад я написал интерпретатор лиспоподобного языка, который назвал Liscript. Опубликовал несколько статей на Хабре, посвященных особенностям реализации ядра, TCO, GUI, REPL-ботов и т.п. Недавно добавил web-интерфейс REPL-у (ссылка в конце статьи).

        При чем здесь поцелуи и экскаваторы? Думаю, большинству известны такие аббревиатуры, как KISS (keep it simple stupid — делай это проще, дурачок), YAGNI (You ain't gonna need it — Вам это не понадобится), а также высказывания людей разной степени великости про архитектурных астронавтов, «все должно быть сделано так просто, насколько возможно, но не проще», и т.п.

        Допустим, перед вами стоит задача — выкопать яму. Какие есть варианты решения? Взять лопату и выкопать самому — дешево и сердито, но долго и возможно неоптимально (зависит от вашего уровня владения лопатой и размеров ямы). Отдать на аутсорс таджикам (не будем рассматривать здесь этот вариант, хотя я должен был его упомянуть). Взять экскаватор — быстро и эффективно, но затратно: бензин/аренда, плюс не факт, что он проедет в вашу садовую калитку, значит надо сносить/восстанавливать забор и т.д. Также, необходимо определиться с моделью (порой из 100500 вариантов), а если вы будете управлять им самостоятельно, надо разобраться во всех его рычагах и педалях.

        Разумеется, если вы — профессиональный экскаваторщик, копаете по 200 ям за день, или вы стремитесь им стать, а изначальная задача (вырыть яму) нужна вам не сама по себе, а как тренировка или демонстрация ваших умений, тогда выбор очевиден (остается разве что вопрос модели). Но даже профессионал возьмет лопату, сажая цветы.

        В общем, про выбор инструментов под задачи, и конкретные (подозреваю, что спорные) решения, которые я выбирал в процессе реализации проекта, под катом.
        Читать дальше →
      • Игры на Scheme(Lisp) в среде DrRacket

        • Tutorial
        В данной статье используется среда разработки DrRacket. Для начала рассмотрим связь конечного автомата и игрового процесса. Объект управления в игре можно представить в виде конечного автомата. Рассмотрим программу, моделирующую светофор. Этот пример был описан в предыдущей статье.

        Переходом в другое устойчивое состояние является переключение сигнала светофора. Диаграмму состояний можно изобразить в следующем виде.

        image
        Читать дальше →
        • +17
        • 3,2k
        • 5
      • Как проектировать программы (HtDP)

        • Tutorial
        Учебник HtDP, посвящен программированию на языке Scheme в среде drRacket.
        drRacket можно скачать с сайта.
        Вводная часть учебника содержит описание функции empty-scene, предназначенной для работы с изображениями. Например, эта программа создает пустую сцену

        #lang racket  
        (require 2htdp/image)      ;библиотека для работы с изображениями 
        (empty-scene 100 60)     ;сцена (канвас) размером 100х60 
        

        Читать дальше →
      • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

        Подробнее
        Реклама
      • Как я "<" моноидом делал

        image Некоторое время назад в одном уютном камерном собрании я делал доклад о своей разработке — скриптовом лиспоподобном языке Liscript. Начал с азов — семантики вычисления списков, префиксной нотации… Дошел до произвольной арности стандартных операций:

        + 1 2 3
        => 6
        

        все интуитивно понятно, вопросов не возникает. Рассказываю про булевские значения, привожу пример:

        < 1 2
        => true
        

        тоже все понятно. И тут вопрос из зала: «а если 3 аргумента передать, как будет вычисляться?» Я решаю, что это хороший повод выпендриться умными терминами, и отвечаю: «точно так же — как свертка по моноиду» :) И тут же поправляясь — «хотя операция сравнения не является моноидом», пишу пример:

        < 1 2 3
        => true
        < 1 2 3 4 1 2
        => false
        

        Все так же интуитивно понятно, вопросов не возникает и продолжаем дальше (благоразумно оставляя без рассмотрения вычисления примитивных операций на одном аргументе и вообще при отсутствии оных, а также вычитание/деление и прочие немоноидальные операции :)). Успешно миновав в докладе подобных камней, через некоторое время я подумал — а можно ли как-то изловчиться, и все-таки сделать операцию сравнения моноидом (в каком-либо смысле)? И мне кажется, мне это удалось. Заинтересовавшихся темой прошу под кат.
        Читать дальше →
      • Заклиная техническое интервью

        Предлагаю читателям "Хабрахабра" перевод (возможно лучшей) статьи Kyle Kingsbury, a.k.a "Aphyr".


        Давным-давно, на Шпицбергене, когда ты была юной ведьмочкой всего сорока трех лет, мама взяла в свои ладони твои еще не покрытые шрамами руки, и сказала:


        Видрун, зачатая от морских ветров в верхушках елей,
        Видрун, зелень моих ветвей, радость и ноша моих дней,
        Видрун, всех вдохновенней и умней, да станет мудрость нашего клана твоей:
        Никогда не читай Hacker News
        Читать дальше →
      • Создание кнопки LISP-приложения в nanoCAD



          Выход восьмой версии платформы nanoCAD Plus стал, на мой взгляд, самым крупным и масштабным обновлением за всю историю ее существования. Появилось множество новых возможностей, были доработаны и переосмыслены уже реализованные функции, учтены пожелания и замечания активных пользователей. Одно из важных изменений восьмой версии – это переработанные настройки пользовательского интерфейса (НПИ). О них и пойдет речь в этой статье, – а именно о том, как создать в nanoCAD кнопку и привязать к ней LISP-приложение. Создавать нашу кнопку мы будем в nanoCAD Plus 8.1, но метод работает и в других приложениях на базе восьмой версии.
          Читать дальше →
        • Как я стал лучше программировать

          • Перевод
          Автор статьи — Джеймс Лонг, один из создателей Firefox Developer Tools

          Несколько человек на React Conf спросили у меня совета, как программировать лучше. По какой-то причине люди видят во мне продвинутого программиста, к советам которого стоит прислушаться. Я подумал, стоит записать «ментальную модель» того, как я подходил к программированию на протяжении всех лет.

          Некоторая информация: мне 32 года и 10 лет твёрдого опыта. Наверное, только в последние пару лет я приобрёл уверенность в том, что делаю. Но даже теперь я продолжаю сомневаться в себе. Дело в том, что это чувство никогда не уходит, так что старайтесь не обращать на него внимания, продолжайте хаки и накапливайте опыт.

          Сразу скажу, что здесь всего несколько советов для улучшения своих способностей. В итоге вам нужно самим выяснить, что лучше всего подходит именно вам. Это просто те вещи, которые я посчитал полезными.
          Читать дальше →
        Самое читаемое