2010-11-09

Число Эрдёша

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

Меня заинтересовала дискусия в коментариях про число Эрдёша.

2010-08-17

Определение рабочего окружения и возможностей платформы в Emacs

Для правильной работы файла настроек .emacs на различных платформах и различных версиях Emacs требуется проверять множество условий.

Я собрал несколько из них.

2010-08-12

Топ 10 правил безопасного написания кода от CERT.

  1. Проверяйте входящие данные.
  2. Учитывайте предупреждения компилятора.
  3. Проектируйте с возможностью разделения привелегий.
  4. Делайте все прстым.
  5. По умолчанию запрещайте.
  6. Используйте наименее возможные привелегии.
  7. Уберите лишюю информацию при отправке в сторонние системы.
  8. Защищайтесь на всех уровнях.
  9. Используйте хорошие системы контроля качества.
  10. Разработайте правила/стандарт безопасного написания кода.
Подробней можно прочесть на странице CERT (на английском).

См. также:

2010-08-11

Пробретение процессора Intel Core i5 750

Мой брат решил обновить процессор с Athlon X2 до Intel Core i5 750.

Характеристики процессора Intel Core i5 750:

Ядер: 4 Потоков: 4 Clock Speed: 2.66 GHz 32-KB instruction and 32-KB data first-level cache (L1) for each core 256-KB shared instruction/data second-level cache (L2) for each core 8-MB shared instruction/data last-level cache (L3), shared among all cores Lithography: 45 nm Max TDP: 95 W TCASE: 72.7°C Processor Core Power Management: C0, C1, C3, C6 Instruction Set: 32/64-bit Intel® Virtualization Technology (VT-x) Enhanced Intel® Speedstep Technology Execute Disable Bit Price: 199$

2010-08-06

Сортировка с помощью утилиты sort элементов в строке.

Предположим мы имеем строку:
str="item4, item2, item3, item2, ..."
и хотим отсортировать ее элементы без повторений в shell-скрипте.

2010-03-31

Магия кавычек в POSIX sh.

Столкнулся с кодом, на который ругался интерпретатор:
if [ -n $COMSPEC -a -n $WINDIR ]; then ...
Оказывается переменная окружения COMSPEC раскрывалась в пустую строку и -n скушало -a!

Подумал я взять подвыражения по бокам -a в скобки (утилита test позволяет группировать условия, заключая их в скобки):

if [ \( -n $COMSPEC \) -a \( -n $WINDIR \) ]; then ...
Но снова интерпретатор ругается на недостающую закрывающуюся круглую скобку...

Тут до меня доходит что у -n аппетит хороший и нужно гарантировать ему аргумент! Потому заключаем переменные окружения в двойные кавычки (которые позволяют подстановки в отличии от одинарных кавычек):

if [ -n "$COMSPEC" -a -n "$WINDIR" ]; then ...
Смотрите что делают кавычки с нижеприведенной командой:
$ for item in a "" b; do echo $item; done a b

2010-03-07

emacs.info в Debian.

Политика проекта Debian запрещает размещение пакетов с контентом, покрытым лицензией FDL, если в тексте имеются инвариантные секции.

Потому мантейнеры пакета Emacs исключают emacs.info, eintr.info, elisp.info и некоторые другие документы из пакета.

Система документации Info очень удобна для пользователей Emacs. В основном за счет легкости пользования поиском.

Можно было бы получить emacs-no-chunk.html, открыть html в Firefox и с включенным "Search for text when I start typing" также легко искать текст, но:

  • приходится помнить/искать где лежит emacs-no-chunk.html
  • документ большой ~= 1 MiB, долго загружается Firefox'ом и немного натупляет Firefox

И так нужно поступать с каждым документом, тогда как при использовании site wide installed info по C-h i видны и искабельны by s или C-s все info-файлы.

Из дистрибутива исходных текстов Emacs извлекаем *.info файлы:

$ tar zxf emacs-22.2.tar.gz $ mkdir ~/usr/share/info $ cp emacs-22.2/info/* ~/usr/share/info

О наличии *.info файлов Emacs'у можно сказать переменной среды INFOPATH:

$ echo export INFOPATH=~/usr/share/info: > ~/.bash_profile
Двоеточие в конце необходимо как признак включать пути к *.info, установленными с Emacs'ом.

Я пошел по другому пути, что бы не прописывать на каждом хосте INFOPATH, добавил следующее в .emacs:

;; Because of Debian policy documentation covered by FDL license ;; with invariant sections is not allowed in packets ;; repository tree. So it must be installed manually. ;; My usual configuration is install user local software ;; into ~/usr DISTDIR. (unless (getenv "INFOPATH") (setenv "INFOPATH" "~/usr/share/info:"))

(unless (getenv "INFOPATH") позволит использовать переменную среды INFOPATH, которую я обычно устанавливаю в Windows для чтения info, поставляемых с MinGW/MSYS/Cygwin, из Emacs, но об этом в следующий раз.

Также это удобно тем, что собранные вручную программы я обычно конфигурирую таким образом:

$ configure --prefix=$HOME/use
потому их info документация автоматически становится доступной из Emacs.

2010-03-01

Логическая задача Льюиса Керрола.

Попробуйте прийти к заключению:
Ни один разумный поросенок не отправится путешествовать на воздушном шаре.
используя утверждения:
  • 1. Всякий, кто не танцует на туго натянутом канате и не ест пирожков за одни пенс, стар.
  • 2. Со свиньями, которые временами испытывают головокружение, обращаются почтительно.
  • 3. Разумная свинья, отправляясь в путешествие на воздушном шаре, берет с собой зонтик.
  • 4. Не следует завтракать в присутствии посторонних тому, кто имеет смешной вид и ест пирожки за один пенс.
  • 5. Юные существа, отправляющиеся в путешествие на воздушном шаре, временами испытывают головокружение.
  • 6. Жирные существа, имеющие смешной вид, могут завтракать при посторонних, если только они не танцуют на туго натянутом канате.
  • 7. Ни одно разумное существо не станет танцевать на туго натянутом канате, если оно временами испытывает головокружение.
  • 8. Свинья с зонтиком имеет смешной вид.
  • 9. Все, кто не танцует на туго натянутом канате и с кем обращаются почтительно, жирны.

Update:Я смог решить задачу только используя Reductio Ad Absurdum. Скорее всего в интуиционистской логике задача не решаема, т.е. прямого доказательства нет.

http://en.wikipedia.org/wiki/Reductio_Ad_Absurdum

2010-02-21

Игра в неправильные кубики.

Игра в кубики: 2 игрока бросают (каждый свой) кубик и у кого выпало большее число, тот и выиграл.

Если играть кубиками с развертками:

0 2 5 404 222 111 4 6 5 4 6 5
то какой бы кубик первый игрок не выбрал второй может выбрать такой, что будет выигрывать с вероятностью 2/3.

Действительно:

if first choose third, probability = ((4+2)*3 + 2*3)/36 = 2/3 if second choose first, probability = (2*4 + 4*4)/36 = 2/3 if third choose second, probability = (3*(4+2) + 3*2)/36 = 2/3
(1)==>(3)==>(2)==>(1)==>...

2010-01-13

Высказывание Джеймса Гуслинга о динамических языках.

В статье "The Art of Lisp & Writing" Ричарда Гебриела мне понравилась цитата:

Very dynamic languages like Lisp, TCL, and Smalltalk are often used for prototyping. One of the reasons for their success at this is that they are very robust.... Another reason ... is that they don't require you to pin down decisions early on. Java has exactly the opposite property: it forces you to make choices explicitly. -– James Gosling, Java: An Overview

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

Создание абстракции потребует объявление класса и написания кучи ключевых слов. Если изменить концепцию - весь код можно выбрасывать - ведь код на Java это инструкции для манипуляции состоянием объектов. Действительной логики совсем немного.

Сравнение хорошо почувствуется если почитать статью "Why Functional Programming Matters" - все примеры демонстрируют обобщенность полученного кода, реализации концепции и возможность применения ее к различным по структуре данным.

См. также:

2010-01-09

SCIgen

SCIgen - программа генерирующая псевдонаучные статьи и имеются случаи когда их принимали в печать!

Значимость науки обусловила вовлечения громадного числа людей и денег в эту сферу. А где деньги - там и бюрократия с коррупцией.

Дипломы покупают, защиты покупают, статьи пишут для галочки, гоняются за грантами.

Для получения научного звания (научной степени) во многих странах требуется определенное количество опубликованных статьей в научных журналах. Не все гении, а звание хочется, потому и появляются статьи типа "О низкотемпературной протонной релаксации и динамическом охлаждении".

Для обслуживания такого рода клиентов работают научные журналы. Буквально печать производится за средства авторов!

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

Я посетил домашнюю страницу проекта - http://pdos.csail.mit.edu/scigen/. В предложенную форму вбил свое имя отчество, нажал кнопку получить - и вуаля статья готова:

On the Evaluation of 16 Bit Architectures

Как говорится в моей новоиспеченной статье:

After several years of difficult programming, we finally have a working implementation of our methodology.

Смотри также: