Архив за Март, 2008

Пасха

Америка показала свой американский характер и мечту о светлом завтра. Закрылись на хаях и преспокойно пошли лопать куличи или что там у них на праздник. Фьючерс S&P застыл немым укором. Наши горе-инвесторы, если не догадаются смотреть на уполовиненную Европу, то будем самостоятельно лепить песочные пасочки и реставрировать глиняные ножки у нашего колосса. Глядишь, закроемся в хорошем плюсе, если верхний гэп опять не попадет под тотальную распродажу. Думаю, сегодня это маловероятно.

Статистики значимой сегодня нет, только в 17:00 что-то зловещее под названием "индекс массовых увольнений BLS".

Читать далее

Комментариев (5)


  • Незнание закона не освобождает нас от ответственности
  • Будет ли вторая волна роста?
  • И у меня теперь есть тайное место желаний
  • Глупая упячка
  • Пятница - ужин
  • Креатив от Google!

    Комментариев (5)


  • Широкая русская душа…
  • “99 франков”: рекламная тусовка, ТМ “М?анон”, наркотики, черный юмор - все это смотрим в кино
  • II - Воскресенье
  • II - Завтрак в субботу
  • Завтрак
  • Доклад по Python: часть I

    1. Что такое?..

    Python - это интерпретируемый алгоритмический объектно-ориентированный язык со строгой динамической типизацией, полиморфизм в нем реализован в виде Duck Typing.

    Трансляция питона организована очень схожим с Java образом. Именно, исходник компилируется в байт-код, а затем этот байт-код исполняется. Это сходство настолько велико, что существует реализация Питона (Jython), генерирующая Java байт-код для исполнения виртуальной машиной Java. Различие состоит в политике, когда записывать байт-код на диск. Напомню, для Java традиционный способ запустить только что написанную программу такой: запускаем компилятор, подсовывая ему исходник - он генерирует байт-код и записывает его в файл. Затем запускаем виртуальную машину, подсовывая ей байт-код - и она его исполняет.
    Питон же обычно не записывает байт-код на диск. В простейшем случае запуск программы происходит так: мы "скармливаем" исходник интерпретатору; он генерирует байт-код, но оставляет его в памяти, а затем передает виртуальной машине (являющейся частью интерпретатора). Это ускоряет запуск программы за счет отсутствия необходимости записывать байт-код на диск.
    Однако, при загрузке (импорте) модулей Питон пытается сохранить байт-код, чтобы в следующий раз загрузка модуля происходила быстрее. Есть возможность и саму программу записать в виде байт-кода. Интерпретатору Питона можно подсовывать не только исходники, но и байт-код - он загрузится быстрее.
    За счет такого сходства в устройстве с Java имеем и большое сходство в производительности (она примерно одинаковая, только Питон чуть быстрее загружает программы за счет того, что не пишет байт-код на диск).
    И именно из-за этого сходства Питон обычно сравнивают именно с Явой.

    Еще одно сходство с Явой (и многими другими интерпретируемыми и даже некоторыми компилируемыми языками) - это автоматическое управление памятью. В Питоне нет new[] и delete[], память отводится и освобождается автоматически. Алгоритм сборки мусора как бы "двухслойный": во-первых, сам интерпретатор реализует reference counting (удаляя объекты, на которые никто не ссылается), и во-вторых, есть время от времени запускаемый garbage collector, работающий по более замысловатым, но более быстрым и надежным алгоритмам (например, reference counting не удалит два объекта, ссылающихся друг на друга, даже если на них больше никто не ссылается).

    Удобным свойством интерпретатора Питона является наличие REPL (read-eval-print loop), то есть возможности вводить языковые конструкции с консоли и тут же получать результат. Это часто используется для проверки каких-нибудь идей или для отладки.

    1.1. Синтаксис.

    В самых общих чертах синтаксис Питона напоминает С или Паскаль. Операторы записываются обычно по одному на строку. Присваивание записывается как в С, знаком =. Но при этом присваивание не возвращает значения, поэтому его нельзя использовать в условии. Для сравнений используются обычные для С знаки ==, !=, >,<.>=,<=. Небольшое отличие состоит в том, что Питон понимает "двойные" сравнения в "математическом" смысле, т.е. 0 < x < 10 понимается как 0 < x and x < 10. Основные конструкции проще показать на примерах:

    if x < 0: print "Yes"elif x==0: print "X is 0"else: print "No"
    
    for i in [1,2,3]: print ielse: print "Loop was not break'ed"
    
    while x>0: print x x -= 1
    
    try: z = x/yexcept ZeroDivisionError,e: print eelse: print "Divided sucsessfully."finally: print "Some cleanup."
    
    def fun(x,y): return x+y
    
    class Child(Parent):x = 0def method(self,x,y): return self.x - x + y
    
    f = open("abc.txt")for line in f: print "<%s>" % linef.close()

    В последнем примере показана замена функции sprintf: "строка" % (данные). В проектируемой сейчас версии Python3000 этот способ исчезнет, а вместо него появится другой: "Value {0}, Value {1}".format("one", 2).

    1.2. Типы данных.

    В Питоне выделяют атомарные и структурные (или ссылочные) типы данных. К атомарным типам относятся числа и строки. Структурные типы - это списки, кортежи (tuples), словари, функции, классы и экземпляры классов.

    Данные некоторых типов (а именно - кортежи и строки) являются неизменяемыми.

    Списки записываются так: [1, "one", 25]. Список может содержать любое количество объектов любого типа. Обращение к элементу списка - по индексу: a[2] (элементы нумеруются с нуля). Добавление элементов в список можно делать так:

    a = a + [25]

    или так (предпочтительней, т.к. быстрее):

    a.append(25).

    Кортежи записываются как значения через запятую: a,b,c. Часто для ясности кортежи приходится записывать в скобках: (a,b,c). Кортежи, как и списки, могут содержать значения любых типов, но, в отличие от списков, являются неизменяемыми.

    Для строк, списков и кортежей есть специальный синтаксис для обращения к части данных, называемый срезами (впервые такой синтаксис появился еще в Фортране):

    >>> a = "abcde"
    >>> a[3:5]
    'de'
    >>> a[:2]
    'ab'
    >>> a[4:]
    'e'
    >>> a[:-2]
    'abc'
    >>> a[::-1]
    'edcba'
    >>> a[5:2:-1]
    'ed'
    >>> a[:]
    'abcde'
    >>> a[::2]
    'ace'

    Словари в Питоне - это структура, соответствующая хэшам в Перле, массивам в PHP и std::map в C++. Записываются так:

    {'a': 1, 'b': 2, 'c': 3}

    или так:

    dict(a=1,b=2,c=3).

    В качестве индексов в словарях могут быть использованы числа, строки, и вообще, любые объекты, имеющие метод __hash__() (например, кортежи). Обращение к элементам словаря выглядит так:

    print d['key']

    Метод keys() возвращает список из ключей словаря, а values() - список из значений. Порядок следования ключей не определен:

    >>> d = dict(a=1,b=2,c=3)
    >>> d.keys()
    ['a', 'c', 'b']
    >>> d.values()
    [1, 3, 2]

    Функции создаются так:

    def f(x):
    "Documentation string (docstring)"
    return x*x

    или так:

    f = lambda x: x*x

    О классах и их экземплярах будем подробно говорить дальше.

    2. Типизация.

    Главное отличие Питона от Явы (если брать только чисто "лингвистические" свойства) - это типизация. Напомню, в Яве используется строгая статическая типизация с явным объявлением типов переменных. Это означает, что типы всех переменных известны в момент компиляции, и тогда же происходит проверка типов. Это дает преимущество в том плане, что значительная часть ошибок отлавливается в момент компиляции. Зато это замедляет компиляцию. В Питоне используется строгая динамическая типизация. "Динамическая" означает, что типы переменных становятся известными только во время выполнения, и тогда же выполняются проверки типов. Это дает больше возможностей написать неработающий код, но ускоряет компиляцию и дает значительную гибкость. Пример:

    >> a = 20 # теперь a - это число, тип int
    >> a = "a string" # а теперь - строка, тип str.

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

    >>> x = [1,2,3] # x - это список
    >>> y = x # y указывает туда же, куда x (копируется указатель).
    >>> y[1] = 5 # изменяем элемент из y
    >>> x # он изменился и в x.
    [1, 5, 3]

    Таким образом, в терминах C++, имя переменной - это ссылка (указатель), (void*). Исключением являются атомарные типы данных - числа и строки. Пример:

    >>> a = 1
    >>> b = a # здесь копируется уже не ссылка, а собственно значение
    >>> b = 3 # присваиваем другое значение...
    >>> a # на переменную a это не повлияло.
    1

    По той же схеме передаются аргументы в функцию.

    За счет того, что информация о типе хранится вместе со значением, она доступна во время исполнения. Пример:

    >>> a = 1
    >>> type(a)
    <type 'int'>
    >>> a = "a string"
    >>> type(a)
    <type 'str'>

    Таким образом, имеет смысл запись вроде if type(a) == str:...
    Powered by SmartRSS

    Читать далее

    Комментариев (4)


  • Доклад по Python: часть III
  • Доклад по Python: часть II
  • Завтрак

    Сегодня на завтрак была пробежка, гречка и творог. Советы гласят, что мне необходимо в течение двух месяцев удержать вес, которого я достиг и только после этого продолжать худеть.
    Окей!

    Posted by Picasa
    Читать далее

    Комментариев (4)


  • II - Воскресенье
  • II - Завтрак в субботу
  • Утро пятницы
  • Завтрак в четверг
  • Пятница - ужин
  • EXISR.RU, как я покупал автозапчасти

    Случилось это 5 января, попал я в аварию :-(

    и как раз перед поездкой в Финляндию. А ведь изначально планировали ехать на своем авто, хорошо, что планы изменились и поехали со всей группой на экскурсионном автобусе.
    Съездили, отдохнули, и пришло время приводить машину в порядок. После осмотра в сервисе, выяснилось, что придется по-любому менять левый рычаг задней подвески (самое обидно, что требовался не весь рычаг в комплекте, а маленькая железная хреновина, правильного названия, которой я не знаю). Так вот после печального опыта по заказу запчастей (передних амортизаторов) в мурманском автомагазине «Рулевой», я решил воспользоваться услугами интернет-магазина «Exist.ru».
    И выходить никуда не надо, поиск и выбор запчастей по VIN-коду и отслеживание статуса через Инет, а самое главное представительство в Мурманске, да еще к тому же принимают к оплате пластиковые карты! Вообщем вроде одни плюсы…
    А дальше я поделюсь своими впечатлениями от сотрудничества с данным интернет-магазином и добавлю каменты других его пользователей, которые делились со мной своими впечатлениями.
    Сделал я заказ на сайте exist.ru, пришел в мурманский офис, который, кстати, порадовал тем, что ожидалась небольшая зачуханная коморка с одним столом и компьютером, а в реале - вполне, приличное помещение в центре города с удобными подъездными путями, несколько менеджеров, касса принимает, как нал так и безнал (пластик). Консультант посмотрел мой заказ, немного его подправил и отправил меня делать предоплату 50%, что я успешно и сделал. На мой вопрос по срокам доставки в Мурманск ожидаемой детали, врать не стал, как в «Рулевом» и сказал, что обычно 14 дней, но может быть всякое т.к. будут везти из Германии, так что следите за статусом на сайте.
    Я «впал в ожидание», периодически просматривая статус, который менялся: «заказ принят», «упакован», «отправлен заказчику» и о радость «доставлен в офис» при этом точно в срок по статусу, т.е. 01 февраля (если я сейчас уже не ошибаюсь). А т.к. я 06.02. уезжал в Ригу на BarCamp, то у меня еще оставалась куча времени на замену рычага, но…
    Но не тут, то было и не все так радостно :-(
    дело в том, что отображаемый статус, означал, что запчасть доставлена в московский офис и еще, как минимум неделю будет доставляться до Мурманска о чем соответственно ни слова на сайте :-(
    Я, конечно же все получил уже после возвращения из Риги в полном комплекте и именно то, что мне нужно. Но ребята из exist.ru, если вы ориентируетесь на регионы, то уж «привинтите» на вашем сайте опцию, которая будет отображать реальный срок доставки именно к конечному покупателю. ;-)

    P.S.:
    А вот еще один случаи:
    1.

    2. Паралельно с моим заказом, мой знакомый (Student) заказывал на свою Mazda 3 картер для коробки передач и еще что-то...так у него тоже не совсем все гладно произошло, но лучше он сам об этом раскажет каментах (если захочет).

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



    Читать далее

    Комментариев (5)


  • II - Воскресенье
  • II - Завтрак в субботу
  • Завтрак
  • Утро пятницы
  • Настройка Linux для kiosk-mode

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

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

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

    Конечно, для надежности нужны некоторые действия с аппаратной частью. Приводы CD/DVD (и floppy) убираются, разъемы usb/firewire на передней панели отключаются от материнки, кнопки reset и power также отключаются от материнки. Системник опломбируется. Только это все надо делать _после_ возни с программной частью - ато ребут в случае чего будет проблемой ;)

    С программной частью так. Для автовхода в систему используем GDM (можно kdm/xdm, но они хуже настраиваются) - в настройках (gksudo gdmsetup) включаем Auto login или Timed login, на усмотрение. На вкладке "Пользователи" разрешаем вход только нужным пользователям (чаще всего - только одному; прав у него, конечно, самый минимум). На вкладке "Локальный вход" снимаем галочку "Показывать меню действий". На вкладке "Общие" включаем галочку "Перезапускать XServer..." и указываем нужный сеанс по умолчанию (мы его сейчас создадим, пока что выберите там что угодно).

    Создаем файл /usr/share/xsessions/kiosk.desktop (имя любое):

    [Desktop Entry]Encoding=UTF-8Name=Kiosk modeComment=Kiosk modeExec=/usr/local/bin/kiosk-sessionType=Application

    Теперь опять запускаем gdmsetup и указываем Kiosk mode в качестве сеанса по умолчанию.
    /usr/local/bin/kiosk-session будет такой:

    #!/bin/bash
    
    # Это приложение не должно позволять закрыть егосамое-нужное-приложение & xpid=$! gnome-settings-daemon & # Это если хотим использовать настройки Gnomemetacity & # Или какой вам оконный менеджер больше нравитсячего-еще-хотим-запускать-автоматом &# Ждем завершения основного приложения, т.е. предположительно до бесконечности.wait $xpid 

    (не забудьте sudo chmod +x /usr/local/bin/kiosk-session).

    Теперь правим /etc/X11/xorg.conf:

    Section "ServerFlags" Option "DontZap" "True"            # Запрещаем Ctrl-Alt-Backspace Option "DontVTSwitch" "True"  # Запрещаем Ctrl-Alt-F#EndSection

    Ставим openssh-server, убеждаемся что он будет стартовать автоматом и что в sshd_config стоит "X11Forwarding yes". Если нужен будет доступ по vnc, ставим x11vnc и прописываем в автозапуск (в kiosk-session).

    Ну вроде всё, ребутаемся и наблюдаем результаты своих трудов ;)
    Вся дальнейшая настройка - по ssh.

    PS. Выбору оконного менеджера стоит уделить некоторое внимание. Дело в том, что многие WM, в том числе и из самых "простых" и "легких" (icewm, ion3, ...) имеют встроенную "командную строку", позволяющую запускать что угодно. Так что надо либо отключить это в настройках, либо выбрать WM без такой возможности (тот же metacity; Alt-F2 в Gnome обеспечивает не он, а gnome-panel).

    Читать далее

    Комментариев (6)


  • Screen-Launcher
  • Интерпретатор lambda-исчисления
  • Кто бы знал
  • Искусственный камень
  • Искусственный камень теперь круче чем дерево
  • Будет ли вторая волна роста?

    Утренний фьючерс S&P старательно рисует разворот и так и манит начать торговлю на закрытие нижнего гэпа. Ну что же, есть прямой смысл ввязаться в драку. Если посмотреть на сильные выбросы на американских торгах, то как правило тут же включаются арбитражеры, которые гонят цену обратно. Так получилось и после ставки, когда сильный рост скомпенсировался сильным падением. Если первая реакция была разумной, то вполне можно предположить, что после отката рост продолжится, хотя и с меньшей силой. Пока же в целом мы остаемся в очень волатильном широком боковике и стоим в его центре, поэтому надо быть готовым к любым неожиданностям.

    Сегодня много данных из Европы. Особое внимание стоит обратить на розничные продажи в Англии (в 12:30 Мск), здесь ожидается ухудшение продаж на -0.1% против 0.8% в прошлом месяце.

    В Америке безработица. Рынок труда тоже важен в настоящий момент. Ожидания также негативные.
    15:30 Unemployment Claims 360K 353K

    Читать далее

    Комментариев (5)


  • Кто бы знал
  • Искусственный камень теперь круче чем дерево
  • EXISR.RU, как я покупал автозапчасти
  • Вот вам креативная бизнес идея
  • 15 советов для Успеха группы на Сцене
  • Коpсика

    Когда семья въезжает в новую квартиру, первым туда запускают кота. Когда нация открывает для себя новый курорт, первыми туда едут репортеры. Группу «представителей ведущих российских средств массовой информации» в составе пяти человек пригласили на остров Корсика местное Агентство по туризму и Российский центр международных образовательных проектов «ЭДАС».
    Аяччо

    Прямых авиарейсов из России в корсиканские города пока нет, и поэтому наша делегация добиралась через Марсель. Оттуда на местном «фоккере» мы час летели до корсиканской столицы — города Аяччо (во французской огласовке — Аджаксьо).

    За неделю, отведенную для визита, предстояло опробовать «фирменный маршрут», который предлагается почетным иностранным гостям, — объехать остров по периметру. Программа была утверждена корсиканским правительством (Корсика — самоуправляемая французская территория) и обжалованию не подлежала. Наша делегация поступала в распоряжение гида — маленькой и проворной женщины по имени Сорабелла. Выяснилось, что она же будет шофером микроавтобуса «Пежо», на котором нам предстояло путешествовать.

    Аяччо — первый город на нашем пути — знаменит тем, что здесь 15 августа 1769 года родился Наполеон. Главная достопримечательность — его дом-музей на площади Летиции. В этом доме жили родители будущего императора — Летиция и Карло Бонапарте. А по узким окрестным улочкам, над которыми, наверное, в восемнадцатом веке так же нависало мокрое белье, видимо, бегал за соседскими девчонками их драчливый сынок. Музей неказист: вся обстановка, мебель и обои — не более чем стилизация. Потомки Наполеона не стремились сохранить дом в первозданном виде, и со времен детства «императора всех французов» здесь остались только письма, пара кинжалов и кое-какая утварь.

    Чтобы окончательно проникнуться наполеоновским духом, нужно прогуляться по городу. Наполеон присутствует везде. Он на постаменте в центре Аяччо, и в рекламных буклетах, и в витрине каждого магазина — на майках, вымпелах, плакатах, на картинках в исторических книгах. Можно купить маленький бронзовый бюст императора, а если в кармане есть лишние франки, то и внушительных размеров статуэтку. Кажется, что именно из корсиканского магазинчика в кабинет Онегина попал «столбик с куклою чугунной, под шляпой с пасмурным челом, с руками, сжатыми крестом».

    После короткого автопробега вдоль бухты, заполненной огромными паромами и миниатюрными яхтами, Сорабелла повезла нас обедать. В уютном прибрежном ресторанчике мы вкусили от щедрот корсиканской кухни. В аквариуме плавали большие и малые ракообразные, в кастрюле дымился бульон с мидиями, из ведра со льдом выглядывали бутылки корсиканского вина, а на тарелках возлежали куски непременного во Франции сыра. Откуда-то доносилась восточная мелодия. Делегация с аппетитом поедала предлагаемые блюда, а Сорабелла попутно удовлетворяла наше журналистское любопытство, объясняя, какими способами готовят на Корсике дары моря, чем и с чем их едят. Оказалось, что точно так же, как во Франции.
    Кальви — Бастия

    Два следующих дня на Корсике мы посвятили переездам Аяччо — Кальви, третий — Кальви — Бастия. По пути заезжали в другие города (Порто, Сен-Флоран), где Сорабелла на два-три часа передавала нас в руки гидов муниципальных туристических контор (которые во Франции называются «инициативными синдикатами» — Syndicat dХInitiative).

    Кальви — уютный компактный городок. В отличие от Аяччо, полосой вытянутого вдоль моря, он сжался в одну короткую широкую набережную между горами, нависающими с одной стороны, и древнеримской крепостью с другой. В старые времена Корсика много воевала за независимость, и крепость (цитадель) — неотъемлемая часть прибрежных городов. Цитадель Кальви хранит следы артиллерийских снарядов, выпущенных по ней в 1794 году английской эскадрой. Корсиканцы при помощи англичан пытались отстоять свою независимость от революционной Франции — они штурмом взяли Кальви, заставив французский гарнизон сложить оружие. Во время штурма здесь потерял глаз английский капитан по фамилии Нельсон.

    Сотрудница местного «инициативного синдиката» проводит нас вокруг цитадели и указывает на памятник в виде носа корабля, укрепленного в стене. Это в честь Христофора Колумба. Корсиканцы убеждены, что он родился не в Генуе, а в Кальви. Есть даже остатки дома мореплавателя, рядом с которыми укреплена соответствующая мемориальная доска. За Цитаделью — церковь святой Марии. Наш экскурсовод убеждена, что корабль «Санта-Мария», достигший Америки, был назван так именно в честь этой церкви. Доводы звучат так неубедительно, и коллега из «Известий» по-русски замечает: «Хм! Наполеона им мало!"

    Из Кальви мы едем в Бастию — старую столицу Корсики, основанную в 1380 году на восточном побережье острова. В Бастии своя цитадель, свои легенды и свои кумиры. Это древний очаг корсиканского сепаратизма — здесь неуемные местные лидеры (в том числе самый выдающийся из них — Паскаль Паоли) принимали своевольные решения, заставлявшие зеленеть от злобы правителей в Генуе, Париже и даже в Аяччо.

    Однако чтобы добраться до Бастии, надо преодолеть высокий горный хребет. «Пежо», задыхаясь, карабкается по серпантину. Закладывает уши, и, взглянув вниз, чувствуешь головокружение. Ограждений у серпантина нет, в пропасти чернеют останки разбитых машин. С дорогами на Корсике вообще напряженно, и даже для «фирменного маршрута» мало-мальски приличную трассу не проложили. Хотя, наверное, в неустроенности корсиканских дорог есть своя прелесть. Сложно представить себе (да и, честно говоря, не хочется), чтобы на этом диковатом, гористом, заросшем лесами острове появились скоростные магистрали. Тогда Корсика потеряла бы свой персональный шарм и стала бы чем-то вроде до смерти надоевшего Кипра — обыкновенного, благоустроенного и пахнущего бензином.
    Корте — Понте-Веккьо

    «Если вы убили человека, бегите в макиФ Понте-Веккьо, и вы проживете там в безопасности, имея при себе доброе ружье, порох и пули… Пастухи дадут вам молока, сыра и каштанов, и вам нечего бояться правосудия или родственников убитого, если только не появится необходимость спуститься в город, чтобы пополнить запасы пороха."

    Более ста лет назад такую рекомендацию давал читателям Проспер Мериме. Но времена «бандитов чести» на Корсике давно прошли. А маки остались. Маки — это густая поросль стволов и побегов, переплетенных между собой. Но маки — это и название внутренней части острова, невозделанной каменистой местности, состоящей из гор и долин. Мопассан сообщает, что ее «называли цитаделью свободы, потому что при каждом захвате Корсики генуэзцами, маврами или французами корсиканские партизаны всегда искали прибежища в этом неприступном краю, откуда их не могли выбить и где их не могли покорить». Кстати говоря, словом «маки» называют себя участники французского Сопротивления времен второй мировой войны. Впрочем, сегодня цитадель свободы зовется Региональным природным парком Корсики — заповедником, через который проложены маршруты для любителей пешего туризма. Есть и узкие шоссейные трассы. По одной из таких мы попадаем в Корте — «сердце Корсики».

    «Инициативный синдикат» Корте размещает нас в гостинице на берегу горной речки Тавиньяно. В речке плещется форель, ее же подают в ресторане на ужин. После ужина не могу удержаться от незапланированной прогулки и, форсировав речку вброд, лезу в заросли маки (почувствуйте себя «бандитом чести»!). Прогулка длится недолго — пролезть через кустарник без помощи топора нереально. К тому же это небезопасно: нетронутая дикая природа может подложить под ногу хвост змеи, а то и подставить рога или клыки какого-нибудь крупного зверя.

    На следующее утро отправляемся на юг — в Понте-Веккьо, туда, где кончается (или наоборот — начинается) страна «маки». Долгая дорога примечательна разве что небольшим городком Алерия. Именно в этом месте впервые высадились на Корсике представители античной цивилизации. И сейчас в местной цитадели расположился археологический музей с черепками, монетами, оружием древних греков, римлян и карфагенян. Алерия знаменита тем, что на протяжении восьми лет здесь жил и творил Сенека. Правда, философ попал на Корсику не по своей воле — сюда его сослал император Нерон.
    Бонифаччо — Аяччо

    Если Аяччо — столица Корсики, Корте — ее сердце, то, наверное, город Бонифаччо — жемчужина острова. Он находится в самой южной части Корсики, откуда рукой подать до итальянской Сардинии. Длинный узкий залив, в глубине которого расположен Бонифаччо, описан в «Одиссее» Гомера: «Никогда не бывало в заливе Волн ни высоких, ни малых, и ровно блестела поверхность». Залив окружен скалами, и суда, заходящие в Бонифаччо, осторожно пробираются мимо них, явно опасаясь сесть на мель. На выходе из залива промышляют рыбаки, вытаскивая на палубу своих катеров то судорожно глотающих воздух рыбин, то здоровых, упирающихся раков.

    Наша очередная гостиница, словно птичье гнездо на вершине горы, возвышается над бухтой. Так и хочется прыгнуть в прозрачную голубую воду. Исполнение этого желания программой предусмотрено: единственный раз за все время путешествия первую половину дня мы могли провести вне автобуса — маленький катерок Le Petit Capricieux («Маленький капризуля») повез нас на морскую прогулку. Через несколько минут после выхода из залива катерок вошел в грот, через проем которого пробивались лучи солнца. Присмотревшись повнимательнее, можно увидеть, что очертания проема напоминают силуэт самой Корсики.

    Пройдя через грот, «Капризуля» попадает в миниатюрную бухту, с четырех сторон окруженную скалами. И самые отважные члены нашей делегации, в том числе автор этих строк, прямо с борта катера плюхаются в прозрачную воду.

    После обеда (как обычно, с дарами моря и корсиканским вином) мы снова едем по серпантину, делаем остановку в Проприано, где Сорабелла опять позволяет нам искупаться (правда, на этот раз заходить в воду приходится с берега). И вот «корсиканский круг» замыкается — через час-другой после выезда из Проприано усталый «пежо» врывается на улицы до боли знакомого наполеоновского Аяччо. Что мы увозили с Корсики? Немного сувениров, кучи рекламных проспектов из «инициативных синдикатов», а главное, воспоминание о терпких запахах этой удивительной страны. В отличие от многих других курортов, Корсика сохранила свою дикость и первозданность, не поддавшись на всевозможные соблазны цивилизации. Однако эти качества сочетаются с сервисом высшего класса — по уровню развития индустрии отдыха остров даст сто очков вперед многим европейским и азиатским курортам. Корсиканский сервис приятен и ненавязчив. Здесь нет назойливых таксистов (наверное, потому что каждый город можно за час обойти пешком), а на дверях ресторанов не встретишь надписи «здесь меню написано по-русски». Но Корсика — страна дорогая, и отдых здесь обходится намного дороже, чем такая же поездка даже на побережье континентальной Франции.

    На сегодня основные потребители корсиканской курортной индустрии — немцы, итальянцы, англичане, французы и другие европейские нации. Русских в их числе пока что нет. Отечественные агентства предпочитают работать с более дешевыми курортами, куда валом валят тысячи наших сограждан. Не для кого не секрет, что Кипр, Анталью, Римини и Тенерифе иногда презрительно называют «русскими колониями».

    А на Корсике в прошлом году побывали лишь несколько сотен российских туристов. По сравнению с предыдущими годами это, конечно, подвижка (как-то не могу употребить слово «прогресс»). Но от столь незначительного количества имидж острова не пострадал. Не знаю, как пойдет дальше…

    Читать далее

    Комментариев (5)


  • No related posts
  • Коттон не должен повториться

    Комментариев (4)


  • Ваша безопасность это хорошая входная дверь
  • Купил себе костюм
  • Настройка Linux для kiosk-mode
  • Отопление промышленных зданий
  • Учимся петь
  • Про обучение программированию

    Такой вот рассуждательный пост.

    Мне со следующего учебного года, по всей видимости, предстоит обучать студентов программированию. Пока что это спецкурс, скорее факультативный, чем основной (хотя и непосредственно относящийся к специальности), на первом курсе. Называется - спортивное программирование. Звучит конечно круто, но приходится принимать во внимание два обстоятельства: 1) курс - всего 2 часа в неделю (2 академических часа в нашем вузе равняются 1-му астрономическому), 2) большинство (ок. 70%) поступающих к нам на физмат либо плохо знают Паскаль, либо вообще ничего из области программирования не знают. Из-за второго факта на дисциплине "Теория программирования" на первом курсе изучают Паскаль (до прошлого года - Turbo Pascal, сейчас, кажется, перешли на Free Pascal).

    В связи со всем этим возникает, конечно, вопрос - как тут можно обучать спортивному программированию? Некоторые вещи я для себя уже уяснил, и продолжаю уяснять, думаю по мере накопления публиковать. Итак, чего я пока нарешал:

    1. Кому не надо - пусть гуляют. Мне вообще обучать кого-либо невыгодно, тем более я не собираюсь возиться с теми, у кого нет желания учиться.
    2. Знание какого-нибудь ЯП в спортивном (да любом) программировании нужно, но не является главным. С учетом того, что Паскалю их обучать будут параллельно, программировать видимо будем все на том же Паскале.
    3. За 27 астрономических часов, размазанных на весь учебный год, подготовить с нуля программиста-олимпийца невозможно никак. Так что от этой цели придется отказаться. Буду делать возможное - постараюсь мало-мальски подготовить желающих стать программистами к самообучению в нужном направлении.
    4. В данной ситуации "спортивное программирование" приходится интерпретировать как знание алгоритмов. Так что будем изучать алгоритмы, сколько успеем. Все остальное, что успею - "дополнительные сведения".
    5. Вопреки всем обстоятельствам, я хочу дать шанс талантливым ребятам, по случайности оказавшимся у нас. Поэтому по возможности буду включать в курс какие-то сведения, помогающие сориентироваться в мире современного программирования.
    6. Какие это могут быть сведения? На изучение, например, современных технологий программирования, у меня нет времени (и подготовка учащихся недостаточна). Перебором вариантов аналогично показывается, что не проходят идеи об изучении каких-либо конкретных разделов/технологий современного программирования (сверх "знания алгоритмов"). Из "дополнительных сведений" конкретные знания приходится исключить.
    7. Таким образом, из "дополнительных" сведений остаются только 1) сведения обзорного характера - хотя бы просто перечисление самых динамично развивающихся сейчас технологий и какая-нибудь попытка классификации языков программирования; 2) какие-то основополагающие, фундаментальные вещи, афористические формулировки - квинтэссенция полувекового опыта программирования; 3) знания, относящиеся не к практике и даже не к теории, а скорее к "философии программирования".

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

    Пока что больше вопросов, чем ответов...

    Читать далее

    Комментариев (5)


  • Доклад по Python: About
  • Искусственный камень
  • Готовится
  • Почти двадцать лет назад…
  • Глупая упячка
  • Страницы 5 из 7«1234567»