LINUX.ORG.RU

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

Опубликован перевод книги «Lisp in Small Pieces»

Новости — Документация
Группа Документация

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

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

Здесь нет откровений, невероятно эффективных оптимизаций, мощных систем типов и прочих атрибутов современной computer science (книге 20 лет всё же), но есть отличное твёрдое введение в реализацию языков программирования, призванное заинтересовать новичков, познакомить их с основными понятиями и приёмами этого дела, построив таким образом фундамент для дальнейшего развития.

( Исходники и прочие детали )

>>> Скачать PDF

 , , , ,

ilammy
()

Ищу соавтора! Реализация Lisp.

Форум — Development

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

https://drive.google.com/file/d/0B13ti3tFkQZlSkFPV3NuMHR4eGc/view?usp=sharing

Пока исходников нет в общем доступе, т.к. я активно работаю над ними и мне тяжело будет поддерживать к ним доступ в инете. Ищу соавтора для допиливания реализации и/или написания книги по семантике Лиспа. Желательно из Санкт-Петербурга. Обращайтесь вконтакте: http://vk.com/maliculo

Еще хочу прорекламировать свою публичную лекцию в cs club по Лиспу: http://compsciclub.ru/node/2767

 

komputikisto
()

Ищу интересную работу

Форум — Job

Что могу

  • Рутина:
    • Эникейство
      • Настройка рабочих мест linux/windows, решение 90% распространеных проблем и неполадок (по, железо, пользователь) сферического рабочего места
      • Поддержание работоспособности и развертывание сетей среднестатистичекой сложности
      • Администрирование серверов на уровне «младшего помошника ассистента сис. админа» (развернуть что-нибудь вроде debian--nginx--php-fpm--mariadb--bind или подключить рабочие места к AD не вызывает затруднений, но порой элементарная проблема приводит к многочасовому погружению в маны)
    • Веб
      • Поддержка существующих сайтов (неплохо разбираюсь в цмс друпал, вордпресс, джумла, неткат, запилить новый функционал правельно, обновить, починить послеобновления, вычистить костыли предыдущих мастеров, оптимизировать производительность и соответствие требования ПС)
      • Создание сайтов (могу подобрать ээфективное решение под задачу, продумать структуру, расставить приоритеты, наметить стратегию развития, реализовать решение для большинства корпоративных задач и найти исполнителя под что-то более сложное)
      • Продвижение (хорошо знаком с внутренней оптимизацией под современные запросы ПС, могу рассчитать компанию для контекстной рекламы, могу создавать качественный контент путём глубокого творческого рерайтинга, он же копирайтинг)
      • Дизайн (неплохо умею верстать на html/css, представляю какой код как будет выглядеть в разных браузерах/платформах, понимаю что такое семантика, микроданные, чистота кода и для чего это всё нужно, могу подобрать свободное изображение в тему, сделать минимальную обработку, рисовать не могу, впринципе могу в одиночку реализовать весь интерфейс/ф. стиль/дизайн с нуля, адекватно задаче/аудитории/современным веяниям, но с большим трудом и на порядок медленнее профи)
      • Разработка (в совершенстве умею пользоваться готовыми решениями, в php и js скриптах могу разобраться, починить простенькие баги, при большой необходимости могу написать свой велосипед, корявый, но почему-то работающий)
    • Другое
      • При большой необходимости могу использовать опыт в разных неприятных мне вещах:
      • Часто общался с разными продуктами 1С, приходилось решать разные задачи, принцип я понял
      • Знаком с устройством различных государственных структур контроля, понял суть и способы противодействия взаимодействия, знаю некоторые их читы и баги
      • Умею в различные неестественные способы общения - корпоративная стандарты общения, юридический стиль изложения информации, язык технической документации
  • Интересное
    • Психология, маркетинг
      • Хорошо знаю основы психологии, в т.ч. неоффициальные версии
      • Активно изучаю современные тенденции в управлении массовым (вроде влияния на репутацию, лояльность к бренду, вирусное распространение, пользовательский опыт, паттерны поведения, создание трендов, различного рода пропаганда, черный пиар, etc; практическое использование всего этого)
      • Имею неплохие способности к коммуникации и, вследствии этого, практические навыки решения конфликтов разного уровня, расположения к себе по ходу общения, определению истинных эмоций человека.
    • Данные, аналитика
      • Практикую анализ сырых данных на предмет причинно-следственных связей, последовательностей и другой полезной информации
      • Могу попробовать в создание и улучшение алгоритмов, должно получиться
    • Управление, организация
      • Получается (само по себе) сплачивать коллектив, сглаживать внутренние конфликты и противоречия (за исключением бухгалтеров, офисных клерков, продажников и тому подобных). Провоцирую коллег на воодушевление от совместного мозгового штурма, от реализации сложных задач, на альтруистическое соперничество и т.п.

Что хочу

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

Что нужно

Что кажется мне важным при выборе работы.

  • Социальная значимость основной деятельности компании
  • Серьёзное отношение ко мне внутри компании, признание моего вклада (каким бы он ни был)
  • Сплоченность всего колектива, отсутствие интриг, разделения на кланы, подсиживания и всего такого
  • Отсутствие излишнего бюрократизма, гибкость, возможность обсуждать правила и общий курс развития для каждого
  • Адекватное реальности руководство

Какие условия кажутся справедливыми для меня

  • Вознаграждение прямо пропорциональное пользе от проделанной мною работы
  • Возможность уделять часть времени на собственные некоммерческие проекты
  • Отсутствие необходимости «просиживать штаны» без надобности
  • Вознаграждение деньгами не принципиально, вцелом деньги не очень люблю и часто с радостью обхожусь без них
  • Испытательный срок подходит любой, оправданный и справедливый
  • Готов сменить город проживания на любой в европейской части РФ, Беларуси, Украине, если в том будет смысл

О себе

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

P.S.

Хочется увидеть реакцию на такого формата «резюме», всё же здесь обитает много людей с незашоренным сознанием. С другой стороны и работа может здесь найтись, например для «классического стартапа» я бы подошел хорошо (я бы взял себя)). Кто хочет со мной связаться по любому поводу ddidwyll at gmail dot com. Прошу прощения за сумбур и ошибки, как только так сразу всё исправлю.

 ,

MrGrey
()

Сочетания клавиш

Форум — General

Здравствуйте. Штудировал документацию по emacs, в результате родилась небольшая шпаргалка. Родная документация хороша, но очень многословна и информация размазана. Краткой версии найти не удалось, сделал свою. Оставлю здесь. Конечно, список можно продолжить, но на мой взгляд, базовые вещи обозначены.

<DEL> == <BACKSPACE>
############### Перемещение точки ##############################################
* C-p  C-n          Вверх/Вниз
* C-b  C-f          Влево/вправо
* M-f  M-b          На слово вперёд/назад
* C-a  C-e          Начало/конец строки
* M-a  M-e          Начало/конец предложения
* M-<  M->          Начало/конец буфера
* M-g-g	            Перейти к строке. С C-u без num переходит к строке в другом
                    буфере (в наиболее недавнем)
* M-g c             Перейти к символу с указанным номером
* M-r               Репозиционирование точки по левом краю
* C-M-a  C-M-e      В начало/конец defun
* C-M-f  C-M-b      Перемещения по сбалансированным выражениям
* C-M-n  C-M-p      Перемещения по группам выделенным скобками. u/d - перейти
  C-M-u  C-M-d      на верхний/нижний уровень
* C-c C-n  C-c C-p  Перемещение по препроцессорным условиям
  C-c C-u
* C-x-<SPC>         Точку в позицию, на которую указывает global ring
* C-u C-<SPC>       Точку в позицию, на которую указывает mark ring
* imenu             Точку к указанной defun
* Заметка:          Перемещение точки в позицию из регистра см. "Регистры"
############### Перемещение экрана #############################################
* M-v  C-v      Экран назад/вперёд. C-u задаёт кол-во линий
* C-l           Точка в центре, х2 - вверху, х3 - внизу
* C-x-=  C-x--  Увеличить/уменьшить текст (приблизить/отдалить экран)
* C-x-0         Восстановить стандартный размер шрифта
* Заметка:      Листание другого окна (см. Окна)
############### Поиск ##########################################################
* C-s  C-r                         Поиск вперёд/назад
* C-M-s  C-M-r                     Поиск вперёд/назад регулярками
* M-p  M-n                         История поиска
* M-%		                   Поиск с заменой
* multi-occur-in-matching-buffers  Создаёт список совпадений с regex в буферах
                                   совпадающих с regexname
* C-h-h                            Во время поиска - справка по поиску
############### Выделение ######################################################
* C-<SPC>           Метка. Второй C-<SPC> деактивирует метку.
* C-x <SPC>         Установить прямоугольную метку
* C-x-x             Поменять местами метку и точку
* M-@               Пометить слово
* C-M-@             Пометить сбалансированное выражение
* C-M-h             Пометить defun
* C-x h             Пометить весь буфер
* Shift-selection
* M-Drag-Mouse-1    Вторичное выделение, выделение не помещается в kill ring
* M-Mouse-1         Первая точка для вторичного выделения
* M-Mouse-3         Вторая точка, выделение помещается в kill ring
############### Удаление без сохранения ########################################
* <DEL>                        Удалить предыдущий символ или регион
* <Delete>                     Удалить следующий символ или регион
* C-d                          Удалить следующий символ
* C-x r d                      Удалить регион-прямоугольник
* M-\                          Удалить табы и пробелы вокруг точки
* M-<SPC>                      Удалить табы и пробелы вокруг точки оставив
                               один пробел
* C-x-o                        Удалить пустые строки за текущей строкой
* M-^                          Объединить текущую и предыдущую строки
* C-c <DEL>  C-c-d             Удалить пробелы до/после точки
* delete-trailing-whitespace   Удалить пробелы в конце строк
* delete-whitespace-rectangle  Удалить пробелы в начале прямоугольника
############### Удаление с сохранением и копирование ###########################
* C-k               Убить линию до '\n'
* C-S-<DEL>         Убить линию вместь с '\n'
* M-d               Убить вперёд до конца слова
* M-<DEL>           Убить назад до конца слова
* C-w               Убить регион
* C-x r k           Убить регион-прямоугольник (сохранение не в kill ring)
* M-w               Копировать регион
* C-x r M-w         Копировать регон-прямоугольник (не в kill ring)
* C-M-k             Убить сбалансированное выражение
* M-z               Убить до заданного символа включительно
* C-M-w             Последующие kill команды добавляют текст в последнюю ячейку
                    kill ring
############### Вставка ########################################################
* C-y                      Вставка из kill ring. С префиксом точка не
                           сдвигается (C-u C-y). Числовой префикс сдвигает
                           указатель kill ring (C-u 2 C-y)
* C-x r y                  Вставка последнего убитого прямоугольного региона
* M-y                      Замена вставки следующим вариантом из kill ring
* C-m                      <ENTER>
* C-o                      Вставка '\n' после точки, можно с fill prefix
* C-x r o                  Заполнение прямоугольника пустотой, прежние
                           символы выталкиваются вправо
* C-x r N                  Нумерация строк в прямоугольнике. При вызове с
                           C-u можно задать начальнцй номер и формат
* C-j                      <RET> но без <TAB>
* M-;                      Вставить комментарий, с C-u убивает.
                           Рас/закомментировать регион
* M-j                      Продолжить комментирий на следующей строке.
* C-c C-\                  Вставить и выровнять \ в конце региона
* string-insert-rectangle  Вставка заданной строку в каждую линию
                           прямоугольника с вытеснением вправо
* M-Mouse-2                Вставка вторичного выделения
* Заметка:                 Команды по вставке из "Буфера", "Файлы" и "Регистры"
############################ Замена текста #####################################
* C-x r c   Затереть прямоугольник пробелами
* C-x r t   Заменить каждую линию прям-ка на заданную  строку
* Заметка:  Вставка в буфер с затиранием см. "Буфера"
######################### Числовой аргумент ####################################
* M-{num}
* C-u {num}       По умолчанию num == 4. C-u C-u num == 16 и т.д.
* M-{num} C-u 2   C-u отделяет num от 2. Аналогично: C-u {num} C-u 2
############################ Регистры ##########################################
* view-register         Просмотр содержимого регистраа
* C-x r <SPC> R         Записать в регистр R текущее положение точки
* C-x r w               Сохранить в регистр конфигурации окон фрейма
* C-x r f               Сохранить в регистр конфигурации всех фреймов
* C-x C-k x             Сохранить последний макрос в регистре
* C-x r j               Переместить точку в позицию записанную в регистре или
                        восстановить конфигурац окон/фреймов или запуск макроса
* C-x r s               Копировать регион в регистр. С C-u регион вырезается
* C-x r r               Копировать прямоугольник в регистр. С C-u вырезается
* C-x r i               Вставить текст из регистра. С C-u точка перносится
* C-u N C-x r n         Сохранить число N в регистр, без префикса сохраняется 0
* C-x r +               Если в регистре текст, то аналог append-to-register.
                        Если число, то оно инкрементируется (C-u 2 C-x r + на 2)
* append-to-register    С C-u текст из буфера вырезается
* prepend-to-register   С C-u текст из буфера вырезается
########################### Поменять местами ###################################
* C-t       Поменять местами два символа
* M-t       Поменять местами два слова
* C-M-t     Поменять местами два сбалансированных выражения
* C-x C-t   Поменять местами две строки
* C-u 0     Будет выполнено перемещение объекта после метки с объектом после
            точки
################################# Макросы ######################################
* <F3>                  Запись макроса. Нажатие при записи - вставка счётчика
                        макрсоа с последующей инкрементацией. C-u задаёт
                        инкремент, C-u <F3> == счётчик не инкрементируется
* <F4>                  Закончить запсь или вызвать головной макрос. C-u 0
                        запустит бесконечный цикл до отмены или ошибки
* C-u <F3>              Дописать макрос предварительно исполнив начальную часть
* C-u C-u <F3>	        Дописать макрос без исполнения начальной части
* C-x C-k r             Выполнить макрос на каждой строке региона
* C-x C-k C-k           Вызвать головной макрос
* C-x C-k C-n           Переместить указатель вершины буфера макросов вперёд
* C-x C-k C-p           Переместить указатель вершины буфера макросов назад
* Заметка:              После C-x C-k [C-k|C-n|C-p] следующие команды можно
                        вызывать без префикса: C-x C-k C-k C-n C-p
* C-x C-k C-i           Вставка счётчика++ макроса, работает и за его пределами
* C-x C-k C-c           Установить значение счётчика головного макроса. С C-u
                        префиксом в теле макрса, присвоит значение == значение
			при запуске макроса
* C-x C-k C-a           Прибавить к счётчику головного макроса
* C-x q                 Установить в макросе запрос на продолжение. С C-u
                        создаёт вход в рекурсиный уровень
* C-x C-k n             Назначить имя последнему макросу
* C-x C-k b             Назначить макросу сочетание клавиш. Для этого зарезерви-
                        рованы диапазоны: от C-x C-k 0 до C-x C-k 9 и от C-x C-k
                        A до C-x C-k Z (C-x C-k b 4 назначит на C-x C-k 4)
* M-x insert-kbd-macro  Сохранить макрос в файл, если с C-u, то сохраняется и
                        сочетание клавиш для вызова этого макроса. load-file
                        загрузит сохранённый макрос
* C-x C-k C-e
  C-x C-k e             Редактор макросов, последнего / с указанным именем
* C-x C-k <SPC>         Пошаговое выполнение с возможностью редактирования
################################### Файлы ######################################
* C-x C-f         Посетить файл
* C-x C-r         Посеть файл в режиме "для чтения"
* C-x C-v         Посетить файл, заместить им текущий буфер
* C-x 4 f         Посетить файл в другом окне
* C-x C-s         Сохранить текущий буфер
* C-x s           Сохранить все или выбранные буфера
* M-~             Пометить буфер как "неизменённый", с C-u пометит как "изменённый"
* C-x C-w         Сохранить буфер в другой файл
* append-to-file  Добавить регион в указанный файл
################################## Буфера ######################################
* C-x b                  Выбрать или создать буфер
* C-x 4 b                Выбрать или создать буфер в другом окне
* C-x <LEFT>
  C-x <RIGHT>            Выбрать предыдущий / следующий буфер
* C-x C-b                Список буферов. С C-u перечислит только посетившие файл
* C-x C-q                Переключить атрибут "только для чтения"
* C-x k                  Закрыть буфер
* kill-some-buffers      Предложение закрыть для каждого буфера
* kill-matching-buffers  Закрыть буфера совпадающие с регуляркой
* rename-uniquely        Добавит число к имени
* append-to-buffer       Добавить регион в указанный буфер до точки
* prepend-to-buffer      Добавить регион в указанный буфер после точки
* copy-to-buffer         Вставить регион в указанный буфер с затиранием
* insert-buffer          Вставка в текущий буфер из указанного буфера
#################################### Окна ######################################
* C-x 2    Разделить окно горизонтально. Положительный префикс задёт кол-во
           строк у верхнего окна, отрицательный - у нижнего
* C-x 3    Разделить вертикально. Положительный префикс - ширина левого,
           отрицательный - правого
* C-x o    Активировать другое окно
* C-M-v
  C-M-S-v  Листать другое окно
############################### Фолдинг #######################################
* C-c @ C-h    Свернуть текущий блок
* C-c @ C-s    Развернуть текущий блок
* C-c @ C-c    Переключить режим отображения текущего блока
* C-c @ C-M-h  Скрыть все блоки верхнего уровня
* C-c @ C-M-s  Развернуть все блоки буфера
* C-c @ C-l    Свернуть блоки на заданной глубине от текущего
############################# Разное ###########################################
* C-/                         Undo, отмена действия. Если выделен регион, то
                              отеняются действия сделанные внутри региона
* С-/ С-f С-/                 Redo (отмена отмены), C-f -любая команда
* C-x z                       Повторить предыдущую команду, дальнейшее нажатие z
                              вновь инициирует повтор
* C-q                         Вставка экранированного символа
* bookmarks                   Не команда
* C-r  C-M-c  C-]             Рекурсия / выход из рекурсии / прервать вместе с
                              операциеей верхнего уровня
* C-x =                       Информация о символе после точки, с C-u подробно
* C-h S                       Поиск документации в info
* man                         Поиск документации в man
* compile
  recompile
  kill-compilation

 

pavlick
()

С заботой о любимой жёпке

Форум — Talks

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

Как-то вот... тяжело, оказывается, некоторые вещи по интернету покупать.

dk-
()

Расскажите про ипотеки?

Форум — Talks

Я правильно понимаю, что наиболее выгодно(*) брать ее на максимально возможный срок, с целью псевдо уменьшения ежемесячного платежа, но при любой возможности вносить бОльшие суммы и делать каждый раз частичное досрочное погашение? Благо сейчас почти у всех банков за это нет никаких «штрафов». Правда остается открытым вопрос по страховке жилья\жизни.

Кто-нибудь будучи ИП вообще ввязывался в это? (У ВТБ24 есть программа для ИПшек, первый взнос 50%)

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

 

dk-
()

SSH-соединение двух компьютеров без белых айпишников

Форум — Admin

Дано: два компьютера в разных частях света без белых айпишников, третий компьютер с белым айпишником.
Что хочу: первые два подключаются по SSH к третьему, после на первом можно заиметь консоль второго (желательно, напрямую, не пропуская трафик через третий).
Возможно? Или проще VPN?

 , , ,

CYB3R
()

Модный, годный православный mock/test для C++. Не gmock.

Форум — Development

Есть чё? Желательно не прибитое к 11ому+.

Интересует штука, которая бы умела кейс с применением разных фикстур к одному тесту.

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

Что бы было понятней чего я жду от фрейма(хотя учитывая количество ответов, и что все они ведут на то, что я и так нагуглил - надеятся особо нечего):

struct FixtureA : ::testing::Test {
//setup/teardown
int a_;
};

struct FixtureB : ::testing::Test {
//setup/teardown
double a_;
};

bool test_method(void* data, size_t size);
TEST_MULTI_F(TestCase){//по идее тут обьявляется шаблонный класс
    ASSERT_TRUE(test_method(&a, sizeof(a)));
}

TEST_F(FixtureA, TestCase); // а тут он инстанируется
TEST_F(FixtureB, TestCase); // ну и тут
//как бэ почему не сделали так - непонятно

 , , ,

pon4ik
()

Допиливание zsh до уровня fish

Форум — Desktop

Когда fish в очередной раз сбросила конфиг fishd.hostname до дефолта, моё терпение лопнуло, и я установил zsh. Уже слыхал о нём, но не было желания ставить, ведь мне хватало fish, которую я довёл почти до совершенства.
Немного поискав в сети, я нашёл плагины, делающие zsh более похожей на fish: поиск по истории и подсветка синтаксиса работали отлчино, но у меня возникли несколько вопросов, ведь до функционала fish ещё далеко: во-первых, плагин подсветки истории никак не хотел менять цвет той самой подсветки, пробовал сатавить занчение и кодом в ковычках «#131313», и кодом без ковычек, и названием с ковычками «black», и ,соответственно, без них, но всё равно цвет оставался таким же, как и сама команда, что сбивало с толку и выглядело некрасиво .Как можно поменять цвет? Может есть другой плагин?
Во-вторых, при переходе по каталогам автодополнение не работает с буквами разных регистров, допустим я в fish набираю д, нажимаю tab, и строка превращается из д в Документы, а в zsh я должен набирать заглавную 'Д'Надеюсь, это есть какой-нибудь скрипт.
В-третьих, когда я удалял пакет yaourto'м в fish, то автодополнение работало, например, yaourt -Rsc numix превращалось в yaourt -Rsc numix-circle-icon-theme-git (это для примера, я точно не помню название).В zsh такого нет, он просто начинает перебирать содеожимое текущей папки. Можно ли zsh научить распозновать, что мне нужно искать среди пакетов?
В-четвёртых, можно-ли как-нибудь отучить fish презаписывать конфиг fishd.hostname ,может скрипт написать можно, чтобы автоматически заменял конфиг обратно?

 , , ,

sudopacman
()

emacs или vim

Форум — Talks

Не холивара тред. Пользуюсь vim'ом, но шило в жо мешке так и тянет глянуть на emacs. Попробовал почитать туториал, посмотреть на базовые кейбиндинги. Посмотрел - в сравнении с vim'ом непривычно и неэргономично. Но люди, которые советуют emacs, писают кипятком от того, что из него можно сделать IDE своей мечты вот она IDE моей мечты. Так вот вопрос к человекам, которые умеют как vim, так и emacs(только к ним): стоит ли мучаться из-за этой расширяемости или это все понты?

 , , нехоливара тред,

destructiond
()

Почему так сали популярны соционика и психософия?

Форум — Talks

Сабж. Никаких практических результатов от них - только типирование 100500 методами, чем адепты задалбывают ещё не инфицированных. Но популярно. Почему и зачем?

Как вобще можно доверять науке, где результат исследования зависит о субъективного мнения исследователя? Да и наука ли это?

 

Dorif
()

Есть ли инструменты финансовой аналитики, адаптированные под JS, tcl, lisp?

Форум — Development

В первую очередь интересует JS.

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

А финансовая аналитика — имеется в виду анализ рынка, биржевых котировок, инструментарий для битжевых спекуляций и тп, нутыпонел

Спасибо.

UPD Тащемта, за неимением вышеизложенного, я готов освоить новый язык, но, необходимым условием этого должно быть: либо он интерпретируемый, динамический, идеально — безтиповый, либо prototype-based, типа IO, SELF и тд.

 , , ,

cool-100
()

Haskell, монады, память, и все-все-все

Форум — Development

Есть задача - пройтись по текстовому файлу и найти максимальное число одинаковых последовательно идущих строчек. Задача весьма синтетическая, просто надо продемонстрировать, что

  • Потоково обрабатывается некий объем данных;
  • Есть состояние - надо помнить предыдущую строку в файле при обращении к следующей.

Решение в лоб на IORef-ах (m1.hs):

module Main where

import Data.IORef
import Control.Monad (forM)

main :: IO ()
main = do
   input    <- getContents
   lastLine <- newIORef (Nothing)
   counter  <- newIORef (0)
   result   <- newIORef (0)

   let incr    = modifyIORef counter (\x -> x `seq` x+1)
       reset s = do c <- readIORef counter
                    r <- readIORef result
                    writeIORef result (max c r)
                    writeIORef lastLine (Just s)
                    writeIORef counter  1

   forM (lines input) $ \line -> do
     ml <- readIORef lastLine
     case ml of
       (Just s) -> if s == line then incr else reset line
       Nothing  -> reset line

   r <- readIORef result
   putStrLn $ "Largest subsequence of equal lines: " ++ show r

Более модное решение с трансформером StateT (m2.hs):

{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module Main where

import Control.Monad (forM)
import Control.Monad.State.Strict

data AppContext = AppContext { ctxLastLine :: Maybe String
                             , ctxCounter  :: Integer
                             , ctxResult   :: Integer
                             }

initialContext :: AppContext
initialContext = AppContext { ctxLastLine = Nothing
                            , ctxCounter  = 0
                            , ctxResult   = 0
                            }

newtype App a = App (StateT AppContext IO a)
                deriving (Monad, MonadIO, MonadState AppContext)

runApp (App app) = execStateT app

incr :: App ()
incr = do
   cnt <- gets ctxCounter
   modify $ \s -> s { ctxCounter = cnt+1 }

reset :: String -> App ()
reset l = do
   cnt <- gets ctxCounter
   res <- gets ctxResult
   modify $ \s -> s { ctxLastLine = Just l
                    , ctxCounter  = 1
                    , ctxResult   = max res cnt
                    }

processLine :: String -> App ()
processLine line = do
   ll <- gets ctxLastLine
   case ll of
      (Just s) -> if line == s then incr else reset line
      Nothing  -> reset line

main :: IO ()
main = do
   input <- getContents
   s <- runApp (forM (lines input) processLine) initialContext
   putStrLn $ "Largest subsequence of equal lines: " ++ show (ctxResult s)

Интересно, как поведут себя оба варианта на обработке, скажем, «Улисс» Джойса (txt, 1.6 MB):

[dmatveev@localhost memq]$ ghc --make m1.hs -rtsopts -prof
[1 of 1] Compiling Main             ( m1.hs, m1.o )
Linking m1 ...
[dmatveev@localhost memq]$ ghc --make m2.hs -rtsopts -prof
[1 of 1] Compiling Main             ( m2.hs, m2.o )
Linking m2 ...
[dmatveev@localhost memq]$ du -sh ulysses.txt
1.6M    ulysses.txt
[dmatveev@localhost memq]$ wc -l ulysses.txt
33055 ulysses.txt
[dmatveev@localhost memq]$ time cat ulysses.txt | ./m1 +RTS -hd -i0.001
Largest subsequence of equal lines: 5

real    0m1.599s
user    0m1.577s
sys     0m0.021s
[dmatveev@localhost memq]$ time cat ulysses.txt | ./m2 +RTS -hd -i0.001
Largest subsequence of equal lines: 5

real    0m19.360s
user    0m19.123s
sys     0m0.091s

ШОК! Посмотрим, что там с памятью:

[dmatveev@localhost memq]$ hp2ps -e8in -c m1.hp
[dmatveev@localhost memq]$ hp2ps -e8in -c m2.hp

m1.png, m2.png

Очевидно, что во втором примере что-то течёт, а я что-то глобально упустил.

Вопросы:

  1. ЧЯДНТ?
  2. Как быть?
  3. Как правильно готовить монадические ивентлупы с изменяемым состоянием?

З.Ы. Да, я знаю, что на awk это решается проще и быстрее, суть-то не в этом, а в вопросе №3. Извините за неровный почерк.

 ,

yoghurt
()

Посоветуйте IDE для Haskell

Форум — Development

сабж
Какой IDE пользуетесь и почему именно её выбрали для хаскела?

 ,

nerdogeek
()

Как вы боретесь с помойкой в хомяке и внешних хранилищах?

Форум — Talks

Нет ну правда, периодически ~/Download превращается в ундервывернутую помойку с исходниками, фотками, фильмами, книгами, архивами и прочим прочим. В попытках это дело рассортировать плодятся каталоги для исходников, для своих исходников для чужих, тут подкатывает сортировка скриптов, конфигов опять же своих отдельно чужих отдельно. Книги, фильмы, даташиты, фотки, картинки. Для всего и вся свои каталоги и начинается лютый когнитивный диссонанс от проблемы выбора куда что сунуть так как помойка уже от количества каталогов для сортировки по типам файлов, по происхождению и прочим критериям.

Печалька в общем.

Dron
()

Что на рынке мониторов сейчас и будет в будущем?

Форум — Linux-hardware

С мониторами с высокими разрешениями все очень плохо? Мельком поглядел на разрешения от 2560x1600 и вижу только TN матрицы, да еще какие-то мне неизвестные типа IGZO. Стоят они недешево, от 60 килорублей. Дороговато, для фильмов и игрушек.

Что ждать в будущем? Повсеместные 4k / 8k / 16k? OLED дисплеи? DisplayPort в качестве стандарта подключения?

ИМХР, на данный момент самым оптимальным рабочим (для различного софта) разрешением является 1920x1200 и они вполне доступны на IPS матрицах за тыщу баксов. И это может позволить себе любой работящий человек. :)

А все что выше - уже начинаются TN и прочие непонятные матрицы. За такими без вреда для глаз не поработаешь 24 часа. А цель проста: медиа контент, фильмы, игры.

Посоветуйте, в сторону каких диагоналей и разрешений копать, и каких матриц ожидать, чтобы потреблять медиа-контент с удовольствием? И не менее 1920x1200, - или это уже все, предел хороших мониторов?

Spoofing
()

Правильное полное обновление Gentoo

Форум — General

Сначала выполняю eix-sync чтобы обновить дерево portage. Потом, естественно, emerge -avuDN world с изучением списка изменений. Так же потом имеет смысл выполнить emerge -a --depclean, затем emerge @preserved-rebuild. Иногда - emerge -a @module-rebuild. Ещё есть какие-то (какие?) команды для обновления python, perl и так далее. Что вообще нужно выполнять после обновления мира для поддержания системы в актуальном состоянии?

 , ,

Valdor
()

Функциональщикам ЛОРа

Форум — Development

А что лично Вы написали на ФЯП?

 

Pavval
()

распечатка шахматных партий

Форум — Games

Уважаемые линуксоиды, подскажите пожалуйста, как распечатывать шахматные партии из формата pgn, в виде партии в длинной алгебраической нотации с картинками для каждого хода? Конвертировать нотацию из короткой в длинную можно с помощью Knights, а вот с распечаткой проблемы - конвертеры вроде png2web предоставляют веб просмотрщик партии (переключение между ходами), который бесполезно распечатывать.
p.s. ОС - Debian Testing 64-bit
Заранее спасибо :)

 ,

madarexxx
()

(biblatex) Два языка [en, ru] в списке литературы

Форум — General

Сегодня выяснил, что biblatex - новое слово в поддержке utf8 в latex-библиографии.

Да, вот, незадача: если в преамбуле выставить язык документа

\usepackage[english,russian]{babel}
и далее, подключить biblatex
\usepackage[backend=biber,bibencoding=utf8,sorting=ynt,maxcitenames=2,style=numeric]{biblatex}
\addbibresource{bib1.bib}
, то это чудо начнёт выдавать английские источники, с использованием русских связок таких, как C(траница) вместо P(age). На некоторых стилях вылазит В, вместо «In» и т.д.

Пощупать, что к чему можно здесь.

Собственно, вопрос. Можно ли cделать, чтобы при русском источнике использовались русские «связки» (страницы назывались С.), а при английском - английские (страницы назывались P. или PP.)? ЛОР, выручай...

P.S. при использовании стиля gost для bibtex язык укзывался в поле language и всё было прозрачно.

 , ,

Jurik_Phys
()