пятница, 31 декабря 2010 г.

LaTeX: пишем и верстаем статьи

Все мы как то привыкли, особенно те кто живет в мире Windows,что кроме MS Office или OpenOffice ничего для создания документов ничего нет. Но это не так и при чем далеко не так. Кроме принципа, что вижу, то и получу есть и системы основанные на языке разметки.Вот об одной из них мы сегодня обзорно и поговорим.
   В 80-ые годы дедушка нынешней информатики, а так же автор замечательной книги "Конкретная математика",математик Дональд Кнут захотел создать систему, которая в наибольшей степени  отвечала бы потребностям математиков при написании статей. Так и появился TeX. Но чуть позже к нему добавили пакет  расширений и  система с этим пакетом расширений называется    LaTEX. Давайте рассмотрим структуру не очень сложного LaTEX документа:
\documentclass[10pt,a4paper]{article}
\usepackage{ucs}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\title{Контрольная Работа №2 Вариант 1}
\begin{document}
\begin {flushleft}
\underline{1 задание}
\underline{условие:}
$z=e^{x+y}*(x\cos{y}+y\sin{x})$
$dz-?$
\underline{Решение:}
$dz=z_x'dx+z_y'dy$
$z_x'=e^{x+y}*(x\cos{y}+y\sin{x})+e^{x+y}(\cos{y}+y\cos{x})$
$z_y'=e^{x+y}*(x\cos{y}+y\sin{x})+e^{x+y}(\sin{x}-x\sin{y})$
$dz=e^{x+y}*(x\cos{y}+y\sin{x})+e^{x+y}(\cos{y}+y\cos{x})dx+e^{x+y}*(x\cos{y}+y\sin{x})+e^{x+y}(\sin{x}-x\sin{y})dy$
\end {flushleft}
\end{document}
Собственно говоря именно для сдачи контрольных, курсовых, дипломов и прочих серьезных по размерам и не очень документов LaTEX и любят использовать.
первая строка documentclass описывает системе LaTEX, а с каким типом документа она имеет дело, это важно для оформления, которое LaTEX использует по умолчанию.Кроме того, что мы говорим LaTEX что это статья мы определяем, что хотим использовать шрифт размером в 10 пунктов и размещать текст как на листе A4 
А вот дальше мы подключаем различные пакеты TeX. А они то как раз и расширяют возможности системы в очень многих направлениях: 
 \usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
Эти пакеты подключают набор хороших шрифтов, математических обозначений и др. символов 
\usepackage{ucs}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
Эти пакеты необходимы для обеспечения нормальной кодировки при вводе\выводе ,а третий для обеспечения поддержки русских символов в документе LaTEX
Дальше мы указываем название документа. 
Строка \begin{document} начинает тело документа. Затем мы производим выравнивание влево. 
Ключевое слово \underline позволяет нам сформировать заголовок с подчеркиванием 
Знаки доллара включают для строки математически режим. То есть для этой строки становятся доступны математические команды, которые в ином случае вызвали бы ошибку. В данном случае применяется т.н. встроенный матрежим, т.к. он позволяет быстро включать и выключать математический режим работы. Имена функций снабжены \ потому, что в LaTeX для их правильного форматирования то же используются представление в виде управляющей конструкции. Как вы может быть догадались ^ требует от LaTeX записать следующие за ним символы как верхний индекс. Обычно в формулах так записывают степени при выражениях и числах.
\end {flushleft}
Эта строка указывает на конец блока с левым выравниванием
А следующая строка на конец документа.
Основное отличие LaTeX от того же Word, что очень мало предположений делается за вас вы определяете расположение его на странице, как его разбивать. При чем делается это специальными управляющими конструкциями. Вобще практически все в LaTeX представляет собой те или иные специальные управляющие команды и данные, которые подлежат обработке.
"Неудобно и странно",- говорите? Ну это только на первый взгляд:
1) TeX имеет большое количество шаблонов и рецептов для форматирования того или иного текста. Особенно он славен очень хорошим форматированием заковыристых формул 
2) TeX имеет очень развитую систему для создания библиографических ссылок и предметных указателей. 
3) Чем больше вы набираете опыта работы с TeX тем меньше времени вы тратите на предварительное оформление: вы можете найти либо готовый шаблон, либо взять оформление из похожего документа ранее вами написанного и простым CONTROL+C и CONTROL+V добавить нужное оформление в документ. 
4) Благодаря четкой семантике и правилам языка TeX большинство математических систем используют его как формат для импорта\экспорта данных (например библиотека sympy,система алгебраических расчетов Maxima,Mapple,MATLAB )
5) TeX документ очень легко передавать, ведь это просто текст 
6) Ядро TeX позволяет генерировать PDFники и PostScript на основе TeX описания
7) Для многих научных издательств это стандарт формата статей для приема от авторов. 
Сама система ТеХ как и редакторы для нее открытый продукт и может быть спокойно установлен как часть программы Texmaker кроссплатформенного редактора TeX. 
Вобщем попробуйте в деле инструмент, проверенный временем. 
Да и это.... че то сегодня все суетятся, к чему бы? А! Новый год! Пооэтому всех поздравляю и желаю чистого кода в новом году, здоровья и счастья, творческих идей и сумасшедших идей в хорошем смысле слова:) С праздником, друзья!

четверг, 30 декабря 2010 г.

OSI против сделки по продаже Novell

OSI(Open Source Initiative) обратилась к антимонопольщикам Германии с предложением обратить повышенное внимание на сделку по покупке фирмой Attachment фирмы Novell. Причина такого обращения неясная и туманная судьба 882 патентов фирмы Novell. Ранее они помогали останавливать патентные атаки против FOSS, однако сейчас ситуация может резко изменится: к этим патентам проявил интерес консорциум CPTN и он готов купить эти патенты за 450 млн $. Меж тем в этот консорциум входят: Microsoft,Apple,Oracle,EMC. Роль главной скрипки там естественно играет M$.Как говорят анонимные источники из этих четырех компаний: эти патенты будут играть важную роль в бизнес-планах корпораций.(источник)
С учетом той опасности(война компаний,входящих в CPTN против открытого софта весьма внушительна), которую представляет данная сделка для открытого сообщества OSI направило письмо в соответствующее ведомство Германии. Ведомство подтвердило его получение и приняло в рассмотрение, т.к. публичные комментарии по поводу сделки принимаются до конца декабря антимонопольным ведомством Германии. Со своей стороны OSI обещает максимальное содействие в случае необходимости получения дополнительной информации.
Новость взята c LOR'a
Добавлю небольшую так сказать ист. справку: 
Довольно долгое время патентное ведомство США вобще не видело необходимости в патентовании алгоритмов. Ведь фактически это закрепление идеи и запрет на ее использовании без роялти в сторону того кто запатентовал. Но в конце концов убеди крупные корпорации я думаю не без платежей на лапу, но не об том сейчас разговор(80-ые годы). В конце концов все было для копирастов очень хорошо и посыпались патенты один глупее другого, с точки зрения нормального   человека: например делая двойной  клик мышкой мы на самом деле, используем патентованную MS технологию "доступа к данным".Вот так вот товарищи, да все  схвачено. Но самое приятное для пропиетарщины   здесь в том, что это бумажка с печатью может стать смертоносным оружием в руках корпораций в судах. И последние патентные войны между Oracle и Google хорошее тому свидетельство.Недавно, а именно в начале декабря фирма Novell пошла с молотка. А у этой фирмы было 882(!) патента на технологии, которые охватывают для UNIX базисные технологии вроде конвеерной обработки данных. Ранее была эпичная сага между SCO и IBM , когда SCO хотела поставить вне закона Linux, но здесь как раз появился Novell со своими патентами и SCO вынуждена была уйти ни с чем. Но как видим история имеет свойство повторятся.                  

четверг, 23 декабря 2010 г.

Свободные стандарты становятся национальными

ODF это открытая альтернатива пропиетарным форматам от Microsoft К сожалению ODF довольно долгое время был на правах бедного родственника и мог рассчитывать исключительно сам на себя. MS старательно на него закрывала глаза и только под давлением роста популярности Open\LibreOffice в 2010 MSO была введена ограниченная поддержка данного формата, который по факту стал международным стандартом! ( ISO/IEC 26300:2006) Но MS стандарты не указ) 
Однако сначала ЕС начал политику перехода на открытые стандарты, а теперь этот стандарт принят и Россией:
"21 декабря Федеральное агентство по техническому регулированию и метрологии выпустило уведомление о том, что утверждён стандарт ГОСТ Р ИСО/МЭК 26300-2010 «Информационная технология. Формат Open Document для офисных приложений (OpenDocument) v1.0».
Стандарт идентичен ISO/IEC 26300:2006 и вводится в действие с 01.06.2011 с правом досрочного применения." 
Что же сделан еще один шаг в пользу того чтобы у человек был выбор и он не зависел от прихотей одной фирмы.  
Официальное извещение можно прочесть здесь

воскресенье, 12 декабря 2010 г.

атаке подвергся репозиторий Free Software Foundation

Веб-интерфейс к репозиторию FSF был восстановлен после атаки на сервер в прошлые выходные, где хранятся материалы для сайта gnu.org. Атакующими были загружены все имена пользователей и их зашифрованные пароли. Как заявил Matt Lee, один из менеджеров FSF, программное обеспечение проекта GNU не подверглось каким либо вредоносным воздействиям со стороны атакующих.
Админстраторы хостинга откатили все изменения, начиная с 23 ноября. Разработчики, использующие репозиторий FSF, могут загрузить свои изменения из локальных копий, однако должны сменить пароль.
Сама атака произошла 24 ноября при помощи SQL-инжекта, направленного против багтрекерной системы Savane. Атакующие смогли создать новую учетную запись администратора и изменить домашнюю страницу gnu.org
Кроме того, атакующие нашли директорию с правом записи и поместили в нее шелл для дальнейшего доступа. Однако, в FSF надеются, что атакующие не смогли получить root-доступ к самому серверу.
Стоит отметить, что недавно атаке, в ходе которой была скомпрометирована база данных логинов и паролей, вместе с сайтом также подвергся сервер Apache Software Foundation.

суббота, 6 ноября 2010 г.

Python:алгоритм бинарного поиска

Идея этого алгоритма проста(работает на отсортированных массивах\списках):
Сначала высчитываем индекс среднего элемента по формуле (m+n)//2.Где n это индекс начального элемента, а m количество элементов в массиве  В случае нечетного числа элементов округляем до ближайшего целого полученный результат. А дальше уже смотрим  что получается:
а) Элемент найден и мы возвращаем его индекс 
б) Средний элемент меньше ключа поиска 
в) Средний элемент больше ключа поиска 
В случае б) мы должны отсечь те элементы которые меньше среднего, то есть правую часть массива\списка. Дробится этого можно приняв за начальную границу поиска первый элемент со значением больше чем средний элемент, а у нас массив\список сортированный значит это элемент с индексом  i+1, где  i индекс среднего элемента. а конечная граница поиска последний элемент. в случае в) нам нужно принять за начальную границу первый элемент меньший среднего, а значит нам нужен элемент с индексом i-1.  Как конечная граница поиска естественно принять индекс первого элемента. Итак весь процесс будем повторять пока не выполниться любое из трех условий:
1) Элемент найден 
2) Начальная граница стала равна наибольшему элементу массива
3) Начальная граница стала равна индексу наименьшего элемента.
Самый положительный для нас случай 1.Преимущество алгоритма в том что при каждом сравнении убавляется половина отрезка, где происходит поиск элементов.
Краткое описание алгоритма:
1. Взять  индекс первого  элемента (n)
2. Взять индекс конечного элемента (длину массива ) (m)
3. Рассчитать индекс среднего элемента по формуле (m+n)\2 (i)
4. Сравнить средний элемент с ключом
4a Пока 0<=i
5а Если ключ = =элементу в выходим из программы
5б Если ключ>элементу,то n=i+1 m=len(l)
5в Если ключ<элементу, то n=i m=i-1  
6. Переходим к шагу 4a      
А вот и код на python,реализующий алгоритм:
def  quick_sort(l,k):
    m=len(l)
    n=0
    i=(m+n)//2
    while 0<=i
        if l[i]==k:
            return i
        elif  l[i]
            m=len(l)
            n=i+1
        elif  l[i]>k:
            m=i-1
            n=i
        i=(m+n)//2  
    return None