You are viewing [info]v_serov's journal

Сервис для поиска друг друга

Aug. 12th, 2011 | 01:57 am

Originally published at Записки сумасшедшего. Please leave any comments there.

Как-то у меня повилась задача собрать небольшую группу народа, и я задолбался всем обьяснять как проехать. Тогда я подумал было бы не плохо, если бы был такой сервис, что кликаешь на карту, появляется метка, а в буфере обмена уже сидит ссылка, которой можно поделиться с любым человеком. Такой функционал оказывается есть и на google map и на яндекс картах, но что бы создать там метку, надо ввести логин/пароль, и сплясать вокруг костра.
Поэтому я решил написать такую штуку сам, благо все просто. Единственная незадача, оказалось невозможно скопировать в буфер обмена ссылку, сразу при создании метки. Поэтому я сделал большую кнопку, и после установки метки надо просто нажать на нее. Система по умолчанию пытается найти текущее месторасположение, о чем вас спросит браузер. Если все хорошо, то откроется ваш город, если местоположение узнать не удалось откроется Москва. Если есть желание сменить город, то можно набрать нужное место в поле для ввода.
Не знаю чего еще написать, попробуйте, может кому пригодится.
http://keyspot.ru/

Link | | Add to Memories | Share

Упражнение 2.82.

Jul. 14th, 2011 | 04:36 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

Покажите, как обобщить apply-generic так, чтобы она обрабатывала приведение в общем случае с несколькими аргументами. Один из способов состоит в том, чтобы попытаться сначала привести все аргументы к типу первого, потом к типу второго, и так далее. Приведите пример, когда эта стратегия (а также двухаргументная версия, описанная выше) недостаточно обща. (Подсказка: рассмотрите случай, когда в таблице есть какие-то подходящие операции со смешанными типами, но обращения к ним не произойдет.)

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share

Упражнение 2.81.

Jul. 13th, 2011 | 12:15 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

Хьюго Дум заметил, что apply-generic может пытаться привести аргументы к типу друг друга даже тогда, когда их типы и так совпадают. Следовательно, решает он, нам нужно вставить в таблицу приведения процедуры, которые «приводят» аргументы каждого типа к нему самому. Например, в дополнение к приведению scheme-number->complex, описанному выше, он бы написал еще:

(define (scheme-number->scheme-number n) n)
(define (complex->complex z) z)
(put-coercion ’scheme-number ’scheme-number
                      scheme-number->scheme-number)
(put-coercion ’complex ’complex complex->complex)

а. Если установлены процедуры приведения типов, написанные Хьюго, что произойдет, когда apply-generic будет вызвана с двумя аргументами типа scheme-number или двумя аргумен- тами типа complex для операции, которая не находится в таблице для этих типов? Допустим, например, что мы определили обобщенную процедуру возведения в степень:

(define (exp x y) (apply-generic ’exp x y))

и добавили процедуру возведения в степень в пакет чисел Scheme и ни в какой другой:

;; Следующие строки добавляются в пакет scheme-number
(put ’exp ’(scheme-number scheme-number)
        (lambda (x y) (tag (expt x y)))) ;используется
                                                      ;элементарная expt

Что произойдет, если мы позовем exp с двумя комплексными числами в качестве аргументов?
б. Прав ли Хьюго, что нужно что-то сделать с приведением однотипных аргументов, или все и так работает правильно?
в. Измените apply-generic так, чтобы она не пыталась применить приведение, если у обоих аргументов один и тот же тип.

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share

Упражнение 2.80.

Jul. 12th, 2011 | 02:04 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

Определите обобщенный предикат =zero?, который проверяет, равен ли его аргумент нулю, и вставьте его в пакет обобщенной арифметики. Предикат должен работать для обычных, рациональных и комплексных чисел.

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share

Упражнение 2.79.

Jul. 12th, 2011 | 01:56 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

Определите обобщенный предикат равенства equ?, который проверяет два числа на равенство, и вставьте его в пакет обобщенной арифметики. Операция должна работать для обычных чисел, рациональных и комплексных.

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share

Упражнение 2.78.

Jul. 12th, 2011 | 01:54 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

В пакете scheme-number внутренние процедуры, в сущности, ничего не делают, только вызывают элементарные процедуры +, -, и т.д. Прямо использовать примитивы языка не было возможности,поскольку наша система меток типов требует, чтобы каждый объект данных был снабжен меткой. Однако на самом деле все реализации Лиспа имеют систему типов, которую они используют внутри себя. Элементарные процедуры вроде symbol? или number? определяют, относится ли объект к определенному типу. Измените определения type-tag, contents и attach-tag из раздела 2.4.2 так, чтобы наша обобщенная система использовала внутреннюю систему типов Scheme. То есть, система должна работать так же, как раньше, но только обычные числа должны быть представлены просто в виде чисел языка Scheme, а не в виде пары, у которой первый элемент символ scheme-number.

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share

Упражнение 2.77.

Jun. 13th, 2011 | 11:57 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

Хьюго Дум пытается вычислить выражение (magnitude z), где z — объект, показанный на рис. 2.24. К своему удивлению, вместо ответа 5 он получает сообщение об ошибке от apply-generic, гласящее, что у операции magnitude нет методов для типа (complex). Он показывает результат Лизе П. Хакер. Та заявляет: «Дело в том, что селекторы комплексных чисел для чисел с меткой complex определены не были, а были только для чисел с меткой polar и rectangular. Все, что требуется, чтобы заставить это работать — это добавить к пакету complex следующее:

(put ’real-part ’(complex) real-part)
(put ’imag-part ’(complex) imag-part)
(put ’magnitude ’(complex) magnitude)
(put ’angle ’(complex) angle)

Подробно опишите, почему это работает. В качестве примера, проследите все процедуры, которые вызываются при вычислении (magnitude z), где z — объект, показанный на рис. 2.24. В частности, сколько раз вызывается apply-generic? На какую процедуру она диспетчирует в каждом случае?

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share

Упражнение 2.76.

Jun. 13th, 2011 | 02:59 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

Когда большая система с обобщенными операциями развивается, могут потребоваться новые типы объектов данных или новые операции. Для каждой из трех стратегий — обобщенные операции с явной диспетчеризацией, стиль, управляемый данными, и передача сообщений, – опишите, какие изменения нужно произвести в системе, чтобы добавить новый тип или новую операцию. Какая организация лучше подходит для системы, в которую часто добавляются новые типы? Какая для системы, где часто появляются новые операции?

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share

Упражнение 2.75.

Jun. 13th, 2011 | 02:52 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

Реализуйте в стиле передачи сообщений конструктор make-from-mag-ang. Он должен быть аналогичен приведенной выше процедуре make-from-real-imag.

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share

Упражнение 2.74.

Jun. 13th, 2011 | 02:44 pm

Originally published at Записки сумасшедшего. Please leave any comments there.

Insatiable Enterprises, Inc. — децентрализованная компанияконгломерат, которая состоит из большого количества независимых подразделений, раскиданных по всему миру. Недавно вычислительные мощности компании были связаны умной вычислительной сетью, создающей для пользователя иллюзию, что он работает с единым компьютером. Президент компании, когда она в первый раз пытается воспользоваться способностью системы осуществлять доступ к файлам подразделений, с изумлением и ужасом обнаруживает, что, несмотря на то, что все эти файлы реализованы в виде структур данных на Scheme, конкретная структура данных отличается от подразделения к подразделению. Спешно созывается совещание менеджеров подразделений, чтобы найти стратегию, которая позволила бы собрать файлы в единую систему для удовлетворения нужд главного офиса, и одновременно сохранить существующую автономию подразделений.
Покажите, как такую стратегию можно реализовать при помощи программирования, управляемого данными. К примеру, предположим, что сведения о персонале каждого подразделения устроены в виде единого файла, который содержит набор записей, проиндексированных по имени служащего. Структура набора данных от подразделения к подразделению различается. Более того, каждая запись сама по себе — набор сведений (в разных подразделениях устроенный по-разному), в котором информация индексируется метками вроде address (адрес) или salary (зарплата). В частности:
а. Для главного офиса реализуйте процедуру get-record, которая получает запись, относящуюся к указанному служащему, из указанного файла персонала. Процедура должна быть применима к файлу любого подразделения. Объясните, как должны быть структурированы файлы отдельных подразделений. В частности, какую информацию о типах нужно хранить?
б. Для главного офиса реализуйте процедуру get-salary, которая возвращает зарплату указанного служащего из файла любого подразделения. Как должна быть устроена запись, чтобы могла работать эта процедура?
в. Для главного офиса напишите процедуру find-employee-record. Она должна искать в файлах всех подразделений запись указанного служащего и возвращать эту запись. Предположим, что в качестве аргументов эта процедура принимает имя служащего и список файлов всех подразделений.
г. Какие изменения требуется внести в систему, чтобы внести в центральную систему информацию о новых служащих, когда Insatiable поглощает новую компанию?

Read the rest of this entry » )
Tags: ,

Link | | Add to Memories | Share