LINUX.ORG.RU

Избранные сообщения prozium

Бьёрн Страуструп выбирает борщ: «С++ почти так же быстр как Haskell»

Форум — Development

В дополнение к предыдущему посту о сферах применимости С++ и шедевральному посту об ооп (в данный момент продолжающегося обсуждением топологии Скотта).

(credits: гугля материалы о лиспе, случайно наткнулся на вот такой пост в ЖЖ, откуда я невозбранно изъял множество текста для написания этого сообщения.)

Итак, виновник торжества, этот пдф: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3449.pdf

Автор С++, преподобный Страуструп, и команда отчаянных друзей-борщевиков пишут новую библиотеку для диспетчеризации по типам с помощью внешней интроспекции. Это либа, написанная на шаблонах С++x11, и называется Mach7 (почти как вот эти няшные автомобильчики)

Вот, собственно, что так хочет видеть в крестах сам преподобный Бьорн:

int eval (const Expr& e)
{
    Match(e)
    Case(const Value& x) return x.value;
    Case(const Plus& x) return eval (x.e1)+eval(x.e2);
    Case(const Minus& x) return eval(x.e1)−eval(x.e2);
    Case(const Times& x) return eval(x.e1)∗eval(x.e2);
    Case(const Divide& x) return eval(x.e1)/eval (x.e2);
    EndMatch
}

В объектно-ориентированном языке без прямой поддержки алгебраических типов данных, тип, представляющий дерево выражения какого-то языка, обычно будет написан как абстрактный класс, с производными классами, реализующими более конкретные варианты.

struct Expr { virtual int eval () = 0; };
struct Value : Expr { ⋯ int eval (); int value ; };
struct Plus : Expr { ⋯ Expr& e1; Expr& e2; };

но более открытый (читай: расширяемый) дизайн заключается в другом:

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

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

Насколько быстро теперь работает? Говорят, примерно как OCaml или Haskell:

Библиотека реализована как стандартный C++11 код с шаблонным мета-программированием и несколькими макросами. Оно работает примерно также быстро, как эквиваленты на OCaml или Haskell, и даже иногда приближается по быстродействию или даже становится быстрее написанного руками C++ кода, который использует Visitor дизайн-паттерн.

Ну это хорошо, что так быстро, как OCaml или Haskell. Вопрос, зачем при таком раскладе использовать C++, замнём для ясности.

Но дальше вообще прелесть идёт: критика паттерна Visitor!

Библиотека Mach7 и идеи в ней были мотивирована нашим неудовлетворительным опытом работы с различными C++-ными фронт-эндами и фреймворками для анализа программ. Проблема была не с самими фреймворками, но с фактом, что мы должны были использовать шаблон проектирования Visitor для того, чтобы смотреть, обходить и обогощать абстрактные синтаксические деревья целевых языков. Мы нашли Visitor-шаблоны неподходящими для прямого выражения логики приложения, удивительно сложными для обучения студентов, и часто более медленными, чем решения для обхода, написанные вручную. Вместо них, пользователи опирались на динамические приведения типов во многих местах, часто многоуровневые, таким образом предпочитая более короткий, более ясный, и более прямой код, нежели чем Visitor'ы. Соответствующий проигрыш в производительности был обычно незамечаем до более поздних стадий кодирования, когда уже было поздно что-то менять.

Ну можно поздравить C++, теперь можно на нём отдельные вещи писать почти так же коротко, ясно и почти так же быстро, как на OCaml.

В пдф по ссылке присутствуют графики сравнения перфоманса Хацкеля и Крестов, начертанные самим преподобным Бьорном, очень рекомендованные к просмотру для тех, кто еще не готов отречься от старых убеждений и перейти на новые.

Заметим, что не только Страуструп раскаялся в прошлом. Кармак с энтузиазмом рассказывает, как с головой погрузился в Haskell и Scheme, объясняет, почему хаскель невероятно крут и почему сегодня он бы, вероятно, сделал QuakeScheme вместо QuakeC. Он пишет на хаскеле порт wolf3D. (видео на ютубе — Quakecon 2013, обсуждение в толксах)

Пора задуматься о жизни, господа и дамы крестопоклонники.

 , , , ,

stevejobs
()

посоветуйте хороших киберпанковских мультфильмов

Форум — Talks

Посоветуйте умных, правдоподобных мультфильмов в жанре киберпанк, что-нибудь близкое по духу к фильму "газонокосильщик".

Фильмы тоже можно, но, наверное, я их все пересмотрел.

Кстати, рекомендую посмотреть "газонокосильщик" режисёрскую версию, кто не смотрел, она на 37 минут длиннее и там правильная хронология сцен. А вторая часть - говно.

 ,

teod0r
()

Software Freedom Day

Новости — Конференции и встречи
Группа Конференции и встречи

День свободы программного обеспечения (англ. Software Freedom Day, SFD) — это масштабное международное событие, основная цель которого — предоставить энтузиастам по всему миру возможность обмениваться знаниями и опытом, касающимся свободных технологий. В этот день сотни инициативных групп проводят под эгидой SFD свои мероприятия. В этом году SFD состоится 21 сентября.

SFD может проходить в форме конференции, выставки, либо просто посиделок за чашкой чая (или кружкой слабоалкогольного напитка). Мы приглашаем вас принять участие в организации мероприятия в своём городе.

Начните с поиска информации о мероприятии по этой ссылке. Свяжитесь с организаторами ближайшего к вам SFD и предложите им свою помощь: она им наверняка потребуется! В случае если вашего города нет в списке — наберитесь решимости, и станьте организатором SFD ;-)

Исчерпывающие рекомендации по подготовке к SFD могут быть найдены в wiki проекта.

Желающие могут также подписаться на рассылку Planning-ru, чтобы быть в курсе новостей о подготовке SFD в России.

>>> Подробности

 

lugnsk
()

Самый лучший язык для скриптов: Tcl?

Форум — Development

Кратко: Я немного сравнивал разные языки и выбрал Tcl, при дальнейшем изучении не разочаровался.

А какие языки вы используете для задач средней сложности — тех что не требуют эпохальных тяжеловесных программ, но и не решаются тривиально пайпом из трёх-пяти команд в баше? Средняя сложность — это что-то порядка от 3-5 до 3-5 тысяч строк кода (смотря какой язык). Такие где разбиение программы на отдельные модули, хранимые в разных файлах ещё не требуется.

Длинно. Почему я выбрал Tcl.

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

Но у bash есть проблемы. Основная из которых — многие выражения (в частности пайпы) выполняются в субшелле, а из субшелла почти невозможно передать информацию в материнский иначе через stdout. Ещё одной проблемой является постоянная сериализация-десериализация объектов. Это уже не настолько важно, но всё-таки хотелось бы от этого по возможности избавиться.

То же самое касается других стандартных языков UNIX: dc, bc, sed, m4, awk, ... На последнем, впрочем, наверное, можно писать и нормальные программы, но синтаксис у него не очень красивый и возможностей не так уж много. Это хорошие языки, очень хорошие в своей области, но имеют ограниченную область применения.

Я уже знаю C и несколько других императивных языков, но если нужно что-то быстро посчитать или сделать, эти языки малопригодны — в том же C даже сравнить строки просто так нельзя, нужна специальная функция, кроме того нужно вручную рулить памятью. Pascal крайне беден в экспрессивном плане, а begin / end — это уродливо, так что лучше уж C. Basic уже мёртвый, да к тому же ещё более убог чем паскаль. C++ крайне сложен для изучения, а профита по сравнению с C почти никакого.

Таким образом, стало ясно, что мне нужно изучить какой-то другой язык. Так как язык требуется для того, чтоб быстро решить какую-то задачу, а не писать оптимизированное решение на века, стало ясно, что нужен один из динамических языков общего назначения: Perl, Python, PHP, Ruby, Tcl, Lua или какой-то другой.

Я выбрал Tcl.

1. PHP не подходит сразу, на нём только веб-странички хорошо писать, а всё остальное лучше в Perl (да и про страницы можно поспорить, если нужно чёткое разделение контента, стилей и логики).

1. На Perl, Python и Ruby множество сложных синтаксических конструкций, которые без поллитра не разберёшь, например (python):

_='_=%r;print _%%_';print _%_

2. Lua: простой язык, код на нём быстрый, изучить тоже можно довольно быстро. Но однако на каждый чих нужна либа. Даже работы с юникодом изкоробки нет (в смысле строку можно прочитать и вывести, но нельзя посчитать кол-во символ или заменить подстроку и тд).

3. Tcl: крайне простой синтаксис: 12 правил и man-ы по всем используемым командам достаточно для для понимания любого кода. При этом богатая стандартная библиотека, хорошая интеграция с Tk и кроссплатформенность.

То есть на Tcl можно решить любую задачу почти так же просто как на баше (да в крайнем случае даже пайпы есть), но при этом синтаксис гораздо более предсказуем.

Плюс на Tcl можно писать графические приложения так же легко как и консольные, например вот такой код в 10 строк — это уже целая работающая игра! Правда автор явно экономил строки, и читаемость кода из-за этого несколько страдает. Кроме того, Tcl поддерживает (особенно с 8.6) функциональное программирование и длинные числа изкоробки. Так что переход с bc, который только их и использует будет проще. Ещё мне очень нравится, что ключевых слов в этом языке нет. Вообще. Те же for / if и другие — это просто такие команды, которые берут условие и фрагмент и его исполняют. Можно запросто объявить процедуру for, которая будет использовать другой синтаксис итератора и далее использовать её, если так удобней. Язык динамически типизированный, как и другие скриптовые, но проблем из за этого не возникает. Если переменная используется внутри expr, то она интерпретируется как число. Если в команде string ... на месте строки — строка и тд. Никаких сомнительных x=«10»+10 Работа с переменными похожа на такую в bash, что тоже плюс: при присваивании переменной знак $ не ставится, а при извлечении из неё значения ставится:

set i 10 # i:=10
puts $i ;# будет выведено 10
incr i ;# i теперь 11
puts [expr [set i]+3] ;# set можно использовать вместо $i или ${i}\
так как при отсутствии третьего аргумента он просто возвращает значение.\
Ещё это один из немногих способов двойной подстановки.

4. Что-то другое. А что собственно? Пока только идёт в голову что-то лиспоподобное (например: clisp (scheme (или racket guile))), APL-подобное: J, K (есть свободная Kona), APL и тд или конкатенативное (dc-подобное): forth, factor...

Из 2, 3, 4 выбрал всё-таки Tcl, потому что синтаксис у него хоть и не стандартный для императивных языков, но похож на привычный шелловский и он есть в GNU/Linux изкоробки или в репозитории, так что не придётся заморачиваться ручной сборкой.

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

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

Учить его действительно легко, так как базовый синтаксис простой, а команды можно изучать по мере надобности, к тому же man к командам Tcl снабжен сносками на команды с похожим назначением, так что поняв, что команда — это не то, что надо, можно посмотреть все остальные и найти наиболее подходящую.

Таким образом, язык сочетает достоинства лиспа — гибкость, функциональщину и простоту базового синтаксиса и достоинства других скриптовых языков — более привычную инфиксную нотацию для арифметики и читаемый код.

 , , , ,

Xenius
()

Один Vim с разными цветсхемами для разных задач в различных терминалах. (+ awesome)

Галерея — Скриншоты

Раз уж пацаны гонят оголтелый треш в последнее время в галерее, то тут такое дело:

Не сколько скриншот рабочего стола, хоть не без этого, сколько скриншот демонстрирующий удобную настройку редактора с одним конфигом - для разных задач, с разными цветсхемами для различных терминалов. Всё работает без изменения конфига (~/.vimrc).

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

Я вообще постоянно использую 4 терминала + tmux в некоторых из них, это: urxvt, практически идеальный Terminal-0.4.8 (сейчас называется xfce4-terminal-0.6.x - но оно неюзабельное и с багами), гибко настраиваемый ROXterm и относительно новый и малоизвестный пользователям-рабам тяжелых DE - крутой и моднейший клавиатуро-ориентированный(sic!) терминал termite (вимерам юзать однозначно!).

Каждый терминал для определенной (не жестко) задачи или настроения: для руби, md/haml/coffee, для Си или Эрланга. Для манов через vimpager. Для системных конфигов. Разные цветсхемы, различные шрифты - со сглаживанием или без. С различными схемами не только вима, но и статусбара/интерфейса вима, причем в одном случае это vim-powerline, в других vim-airline в свою очередь также с разными цветами. Кайфотне.

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

if $COLORTERM == 'Terminal'
    желаемые настройки
endif

Также можно можно настроить вим менять схему и интерфейс в зависимости от дня недели и времени суток, например днём светлую, ночью тёмную:

let weekday=system('date +%u')
let hour=system('date +%H')
if hour == x
  бла бла
endif

Не каждый терминал возвращает $COLORTERM, например Terminal и urxvt - да, а все остальные из списка нет. Поэтому я запускаю их как скрипты на хоткее следующего содержания, например termite.sh:

#!/bin/bash
export COLORTERM="termite" && /usr/bin/termite --geometry=1248x620+60+40
возможно можно как-то более по умному, но и так работает, всё ок.

Ну и детали:

Gentoo GNU/Linux 3.10.5-geek
Awesome-3.4.15
тема осома: Penumbra

На скриншоте Vim 7.4 (не gvim), некоторые цветсхемы работают благодаря плугину CSApprox.

Только полный кастом или никак, пацаны!

Такие дела.

>>> Просмотр (1366x768, 487 Kb)

 , , , ,

science
()

Посоветуйте интерпретатор.

Форум — Development

Чтобы был нежручим, поддерживающий динамический ffi, чтобы умел многопоточность и имел макросистему подобную той что у CL.

 

ados
()

Свободное ПО в электронике - 2

Галерея — Скриншоты

Этот скрин - продолжение старой темы Свободное ПО в электронике..

Скрин очередной раз демонстрирует использование СПО в области разработки электроники. На экране проект контроллера торгового автомата (Vending Machine Controller), работу по которому меня попросили сделать. Проект реальный, никакое не хобби, за это платятся деньги. Что это за автомат, я рассказать не могу, так как, наверное, нельзя пока что. :)

В мою задачу входит сделать контроллер, который подключается к хост-компьютеру по USB. Контроллер управляет матрицей моторов, задвижками, принимает сигналы с концевиков, оптических датчиков и энкодера. Также этот контроллер работает с купюро- и монетоприемником (на фотографии) по последовательному протоколу MDB (физически это «токовая петля»), а также осуществляет обмен с хост-компьютером по протоколу (пока что) Modbus RTU. На хост-компьютере будет стоять Debian GNU/Linux по моей инициативе (уже поставил). Он-то и взаимодействует с пользователем. Будет удаленный доступ к автомату, возможность менять не только ПО, но и прошивку контроллера дистанционно.

Разработка велась по привычке в gEDA (gschem, pcb). Очередной раз не рекомендую пользоваться gEDA людям со слабыми нервами. Вообще, у меня накопились претензии к этому пакету. Посмотрим на перспективу их преодоления потом, так как в процессе работы не было времени читать рассылку. :)

Какие еще интересности. Пишу прошивку и параллельно делаю симулятор автомата на базе проекта simavr. Это открытый симулятор микроконтроллеров семейства AVR, написанный на Си. Симулятор в итоге предоставляет библиотеку libsimavr.so Случано его нашел. По-моему, тут брал: http://gitorious.org/simavr. Однако с документацией там плохо, поэтому пришлось кучу времени потратить, чтобы понять, как он работает по нескольким примерам в examples и исходному коду. Я к нему прилепил симуляцию всей периферии: микросхемы драйверов моторов, драйверы для реле, датчики, движение лифта и стола в реальном времени, срабатывание концевиков, задвижек, оптических датчиков в реальном времени, микроволновая печь и прочее, симулировал протокол купюро- и монетоприемника, энкодер. Все это уже написал сам. Сейчас еще сижу и дорабатываю, хочу посмотреть на перспективу сделать автоматизированное тестирование прошивок. Пока же смотрю логи с временными отметками глазами, а надо бы эти логи как-то скриптами покромсать. Также эмулируется хост-компьютер, но сделаю так, чтобы реальное пользовательское приложение могло работать с моделью как с реальным автоматом. Зато к железу можно не прикасаться вообще. Причем доступна отладка через avr-gdb напрямую из симулятора, а еще в этом симуляторе есть генерация временных диаграмм в формате VCD, которые можно смотреть в gtkwave, но у меня эта возможность не задействована. Моделирую аварийные ситуации, ошибки протоколов.

Извините за качество фото - дома только древняя мыльница.

>>> Просмотр (2568x2056, 1251 Kb)

 , gschem, , ,

Zubok
()

Linux pci kernel driver

Форум — Development

Привет. Что можно почитать про написание драйверов для устройств на pci? Есть желание немного поковырять свою железяку, заодно разобраться, что к чему.

Все мануалы в сети написаны для версии ядра <=2.6.

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

Пысы. Не нашёл категории лучше, если что, не пинайте сильно.

Наткнулся на http://free-electrons.com/doc/pci-drivers.pdf

 , ,

false
()

Прокачать математические способности

Форум — Talks

Кастую математиков и физиков в этот тред.

В свое время (еще в школе) математику я знал с натяжкой на тройку. Скорее всего виной этому были отвратительные учителя с самого начала обучения, да и что тут говорить - направленность школы была иной: я учил испанский, английский и французский языки. Математика естественно задвигалась подальше. Но чувствую явную потребность развить математические способности и ищу годного совета как это сделать и с чего начать.

Уверен, что это можно сделать, но надо понять как подступиться к задаче. И да, не надо устраивать наброс г-на на вентилятор, толку в этом мало. Всем, кто хоть что-то дельное посоветует: два чая и огромное спасибо.

 ,

Quadmonster
()

А как у common lisp дела с производительностью?

Форум — Development

Решил покурить cl ,не ну реально красивый язык. Учить решил по книге Practical Common Lisp (может посоветуете что ещё?), а запускать код на clisp. Ну так вот какие реализации языка предпочесть? Касаемо книг хотелось бы что то типа k&r, в такой же манере, но для common lisp, ну вы поняли.

Ну и вообще что посоветуете начинающему лисперу?

 

Dron
()

Open SmartWatch Project

Новости — Open Source
Группа Open Source

Sony анонсировала проект Open SmartWatch, целью которого является привлечение разработчиков к созданию альтернативных прошивок для своих умных часов SmartWatch.

В рамках проекта, Sony опубликовала спецификацию устройства а также подробную инструкцию по прошивке. Кроме того, был создан каталог, куда планируется добавлять альтернативные прошивки. На текущий момент в каталоге находится лишь одна стоковая прошивка 0.1.B.1.3 — последняя на текущий момент.

При всем этом Sony предупреждает, что использование альтернативных прошивок может привести к лишению гарантии.

>>> Подробности

 , ,

smilessss
()

Хочется странного

Форум — Talks

Странного потому, что нет предложения. Нужна клавиатура, которая была бы без нампада, но с каноничными клавишами, т.е. такими, которые имеют длинный ход, Есть конечно вот такая http://en.wikipedia.org/wiki/Happy_Hacking_Keyboard но стоит она долларов 100, а хотелось бы в пределах 1000 деревянных. Казалось бы, не такой уж сложный запрос, облазил магазины своего миллионника, смотрел на заказ, в яндекс маркете, и везде голяк, только одну модель нашел, Cooler Master кажется, за 4700р, оно мне не уперлось за такую цену. Всякие видел, и с плоскими кнопками, и с ноутбучными, а с нормальными не видел. Подскажите, может кто знает модель по нормальной цене. И да, прошу не предлагать привыкнуть к другому.

 

SjZ
()

Emacs + Smalltalk

Галерея — Скриншоты

Где-то в 2010м году, во время очередного витка бурных всплесков интереса к Лиспу на ЛОРе, я решил ознакомиться-таки с этим зверем, установил SLIME, начал читать Practical Common Lisp. Хоть к тому времени я уже был знаком с т.н. инкрементальной разработкой, SLIME поразил моё сознание. Это было так чертовски удобно! И примерно в то же время я задумался, что неплохо было бы иметь нечто подобное для моего любимого Smalltalk.

Конечно, каждая современная реализация Smalltalk предоставляет свои собственные инструменты для разработки - браузеры классов, редакторы, инспекторы, рабочие пространства есть и у Pharo, и в GNU Smalltalk, и в VisualWorks. Хоть они и выполняют одни и те же задачи, они разные. И, да, самое главное - они не Emacs!

Так я и решил сделать своё некое подобие SLIME, учитывая классический подход к разработке на Smalltalk - браузер классов с пометодным редактированием. Естественно, для работы этой вещи нужен был сервер на стороне образа, который по запросам отдает браузеру нужную информацию/применяет присланные правки/выполняет команды/и т.д. Сейчас такой сервер доступен для GNU Smalltalk и Pharo.

На скриншоте можно увидеть, что в итоге получилось. Браузер классов занимает левую часть экрана, он подключен к образу GNU Smalltalk, запущенному на соседнем нетбуке. Списки в верхней половине браузера образуют иерархию: пространства имен, классы, категории методов и сами методы. В нижней половине браузера - область редактирования кода соответсвующего метода (или объявления класса).

В правой части экрана расположены Workspace (аналог REPL, для выполнения произвольного кода и просмотра результатов исполнения) и Transcript (заменяет стандартный вывод). В примере на скриншоте код в Workspace был выполнен однажды, потом в классы ClientConnection и ShampooServer были добавлены методы печати объектов (один из них открыт в браузере), и потом код был выполнен повторно. Разница в выводе и отображена в Transcript.

У проекта так же есть своя страничка, код на гитхабе, все желающие могут присоединиться.

В остальном - всё тот же FVWM, Emacs 23.4.1, NetBSD/amd64 (current).

>>> Просмотр (1680x1050, 70 Kb)

 , , ,

yoghurt
()

начинающим бегунам

Форум — Talks

Открыл для себя сайтик http://myasics.ru - подобие виртуального тренера для пробежек. Есть все что нужно - индивидуальные графики, советы, даже красивые диаграммки. Юзать одно удовольствие.

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

P.S ещё совет - если собираетесь более-менее серьёзно заниматься бегом, не скупитесь на хорошую обувь. Те же Asics Patriot после Nike Dart истинное наслаждение.

 

Deleted
()

Философские труды

Форум — Talks

Доброго времени суток, ЛОР!

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

Заранее спасибо!

 ,

Sektor
()

Пилим потихонечку станочек с ЧПУ

Галерея — Скриншоты

Потихоньку, полегоньку моделим оное в OpenSCAD'е, так как blender для более или менее серьезного када я так и не осилил (вечно лень мышку доставать, в блендере на тачпаде не разбежишься). На скриншоте виден общий вид конструкции (верх и середина портала), низ портала с креплением столика еще только предстоит моделить.
Заодно вышла хорошая апробация возможностей OpenSCAD на более или менее сложной конструкции. Хотя кодом моделить субъективно приятнее, всплыли и бесят некоторые особенности openscad'а, например невозможность внутри if() { } присвоить переменную, да и львиную долю кода приходится делать в емаксе, благо нашелся openscad-mode (openscad так и не умеет подсветку синтаксиса)
Но в общем, терпимо, и самое главное - при грамотном подходе, перекроить конструкцию под другие запчасти - только поменять с десяток переменных в начале.

Собственно, это пока более или менее тестовый вариант, ибо шаговики будут весьма унылыми, которые я купил за пару баксов/штука у китайцев когда-то давно, но для отладки кода прошивки мк пойдет, ибо с нуля пишу человеческий gcode парсер.
Максимум на что я буду его использовать - фрезеровать печатные платы, чтобы не возиться с химией.

В виде ходовых винтов - М4, 4мм высокие гайки забиваются в пазы в боках кострукции с натягом и там и остаются. Концевики все сугубо оптические.

Почему прошу делаю с нуля, а не перекраиваю прошивки репрапа? Да потому, что все имеющиеся на reprap вики прошивки оказались либо смердящим УГ, форкнутым от Sprinter/Marlin (arduino как бы уже является показателем качества кода, увы). Исключением из этого месива был teacup, но и он оказался прибит гвоздями к avrкам.

Мой тестовый вариант будет бегать на stm32vldiscovery, которая валялась без дела (хотя переносимости ради, я проверил, что вся эта машинерия собирается и взлетает еще и на msp430 и avr).
К последнему я жутким костылем присобачил нечто напоминающее последлевательный порт поверх stlink'а.


Все отмоделенное я печатаю из PLA, который на проверку оказался намного дубовее ABS, и по алюминиевым направляющим катается только так.
Фотографии уже распечатанных и частично собранных кусков тут

>>> Просмотр (1920x1080, 260 Kb)

 , ,

AiFiLTr0
()

50 микрон

Форум — Talks

Игрался тут с 3д принтером своим.
Содомиты из Solidoodle LLC сверланули ходовой винт не в центрах и на горячую насадили на вал двигла несоосно. В итоге, даже после эпичной замены маточной гайки (обычная 5/16 давала почти миллиметр люфтов!) на самопальную были заметны периодические артефакты по Z оси.
Пока в веларибо патчили фирмварю и придумывали калибровку этого, в подвале велабаджо я выпилил 5/16 дюймовый винт к чертям (пришлось натурально распиливать гравером отрезным диском эту дюймовую нечисть, ибо другими средствами я чуть не убил шаговик).
Поставил М5 на муфте, распечатанной на этом же принтере загодя, запилил еще одну самопальную высокую (12 мм) гайку под М5, в тот же крепеж. Стало вместо 2280 steps per mm, 4000. Двигается очень плавно.
Смазал солидолом и матерясь с двадцатого раза мейкфайлом пересобрал правленную прошивку со своими дефолтами. (Сырцы как и любой проект на ардуйне представляют адово месиво быдлокода, написанное левой пяткой обкуренного индуса. Как ардуинщики этой хренью пользуются, так и не пойму. Каждый раз прошу пересобирает по нажатию upload, даже если не бита не менялось, аналога make -jX нет. Выхлоп аврдудки не полный приводит, как диагностировать проблемы - х.з. из гуя так и не прошилось ни разу, хорошо еще был рядом более или менее рабочий мейкфайл, который после допила заработал).
Итог - эпик вин. Стабильная печать при высоте слоя 75 и 50 микрон!11 (0.075 и 0.050 мм). Деталь выходит в очень хорошей степени гомогенная, по слоям более не трескается при вкручивании самореза вбок.
Пруфы: http://pics.ncrmnt.org/junk/uberprint
Хай-рес будет завтра, так как мыльницы нормальной с собой не взял

 , полуночное

AiFiLTr0
()

Посоветуйте учебник

Форум — Talks

Надо подтянуть знания по теории рядов, подскажите что-нибудь такое, чтобы было понятно объяснено про преобразования и ряды Фурье. А то, то что у меня есть читаю, читаю, а что к чему совершенно не понимаю.

 

ViTeX
()

Механическая клавиатура

Форум — Talks

Фаллометрия или реально удобный девайс?
Владельцы сабжа - на связь.

 ,

Quadmonster
()

Использование qemu для ARM

Форум — Development

Собрал image и u-boot.bin файлы как описано тут. Имейдж с ядром имеет название uImage, U-Boot - u-boot.bin
Пытаюсь запустить полученные файлы под qemu:

qemu-system-arm -M realview-pb-a8 -kernel u-boot.bin
В итоге появляется эмулятор и только черный экран. В чем может быть проблема?

 ,

Bytex
()