mardi 20 décembre 2011

Ещё байки про науку


Про книжки академиков

Однажды Академик решил написать книжку. Однако ж книжки без картинок это грусть и тоска. С любимыми звездами всё было просто. Американские налогоплательщики профинансировали фотографии звезд в приемлемом качестве на сайте NASA. С графиками, схемами и прочими изображениями, меж тем, возникли трудности. Надерганы Академиком они были из статей и презентаций, поэтому были все непечатного качества. Поэтому отдел Академика пару месяцев решал актуальную научную задачу - оцифровать графики из статей, нарисовать их в любимом Origin, экспортировать в EPS. Нарисовать схему в любимом редакторе, экспортировать в EPS. Книжка были издана, сейчас лежит стопками в кабинете Академика.

Про приз

Однажды ученые выиграли в конкурсе. Помимо призовых денег ученым полагалось ПО компании I. Компиляторы и библиотеки на энную сумму. Когда настало время решать, какое же ПО таки покупать, Большой Ученый сказал, что де нужен ему компилятор Fortran под Windows. После этого у него и волосы станут шелковистыми, и российская наука пойдет вперед семиверстовыми шагами. Мотивация была сильной, поэтому ученые купили 2 копии этого самого компилятора. Однако вышла незадача, купленный приз нужно было загрузить из онлайнового магазина. Поэтому приз так и остался в магазине, а российская наука так и не начала идти вперед семиверстовыми шагами.

Про быструю сеть

Однажды ученые провели себе быструю сеть. Один гигабит локально, 155 мегабит наружу. Радость ученых была бы неполной, если бы в какой-то момент не возник вопрос о том, как делить оплату аренды канала. Было решено сделать оную прямо пропорциональной траффику. Далее ученые начали играть в интересную игру - "у кого меньше траффик". Начальство даже с горя предложило исходящий качал отдела зашейпить до 2 мегабит, а по выходным так и до 128 кбит. По старой памяти были попытки организовать доску почета сотрудников с наименьшим траффиком. А также позорный столб, куда привязывать сотрудников с наибольшим. И вот когда космические корабли бороздяд просторы Вселенной, ученые сидят на своем широком канале и продолжают играть в прекрасную игру.

Про слоган

Однажды в городе-герое Ч. на доме ученых появилась надпись "Ч-й интеллект богатство наше, в России нет наукограда краше". Многие ученые были недовольны надписью. И не только ученые были недовольны. И вот однажды настал прекрасный момент, ученым предоставилась возможность написать свой слоган и повесить его на Институт. Казалось бы, вот сейчас ученые зажгут. Сейчас они сделают красиво и правильно. В итоге на Институте появился бордовый плакат с надписью "[Неофициальный логотип Института] Ч-А - ЭТО МЫ!!!". Вот так вот полностью прописными буквами, вот с тремя восклицательными знаками в конце, и вот с минусом вместо тире. Некоторые ученые, что принимали позу facepalm при упоминании слогана на доме ученых города-героя Ч, убеждали, что слоган замечателен и прописные буквы это наше всё.

samedi 10 décembre 2011

Байки о науке

Про академиков

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


Про экзамен по специальности

Однажды в Институте был экзамен по специальности. Это така такая небольшая пародия на экзамен. Сначала будущим молодым ученым выдают 3 вопроса из стандартного набора и просят придумать три вопроса по околодиссертационной тематике. Молодые ученые хорошо подготовились, у некоторых было ажно листов по 8 формата А4 исписано. У чл.-корр. Р было творческое настроение, и он решил не слушать всю эту галиматью, что молодые ученые себе законспектировали, поэтому стал он задавать отвлеченные вопросы, то про теплоемкость релятивистского газа спросит, то про энтропию газа Ван дер Ваальса. Вопросы, впрочем, в основном были разобраны в пятом томе Ландавшица. Но вот у некоторых молодых ученых случилась незадача. Попросили их от безысходности нарисовать график экспоненты. Молодые ученые, таки третий год аспирантуры, не смогли этого сделать. Комиссия погрустила-погрустила и поставили этим нерадивым молодым ученым 3 балла. Впрочем сейчас эти молодые ученые вполне себе довольны жизнью, живут в служебных квартирах, пытаются доломать институтскую сеть.


Про то, что ученым все должны

Однажды у немолодой ученой И. сломалась винда. Для того, чтобы ее сломать эта немолодая ученая даже мужа позвала на работу. После чего немолодая ученая И. пришла ко мне со словами - почините мне винду, мне ее муж сломал. Ну вот было совсем не до винды немолодой ученой, поэтому сказал, что вот де как только, так сразу. Через некоторое время пришла немолодая ученая И. ко мне ещё раз и сказала практицки “ну-ка, бля, быстро”, после ещё и начальника своего призвала. Так немолодая ученая И. осталась без винды.


Однажды пришел ко мне немолодой ученый С., нужно было ему запуститься и посчитаться на “большой машине”. На слова “вот де документация написана”, немолодой ученый С. сказал “хуль мне тут читать, коль ты есть”. Стоит заметить, что у немолодого ученого С. откуда-то взялась фортрановская программа на несколько тысяч строк. Наблюдая, как он набирает что-либо на клавиатуре сложилось впечатление, что писать эту программу он начал ещё в пору кандидатской. Исправили одну ошибку, где немолодой ученый перепутал набор однобуквенных переменных при записи и считывании. Но программа всё равно не работала. Далее немолодой ученый С. зада сакраментальный вопрос “ну и когда вы это всё исправите?”. Так немолодой ученый С. остался без возможности расчета на “большой машине”.


Про любовь к копирайту

Ученые любят везде вставить букцу Ц в скобках или в кружочке. Т.е. как сделают что-нибудь, так сразу и напишут © Такой-то ученый. Также ученые любят сетовать на то, что “дай кому-нибудь что-нибудь, так потом, бля, это обнаруживаешь где-нибудь непонятно где” С одной стороны ученым радоваться бы, что их поделки кто-то пользует, нет же ж, ученые начинают ругаться, что их обижают, их копирайт нарушают. При этом, конечно же, стандартный вопрос от молодого ученого “А у тебя есть хакнутый Касперский, чтобы обновлялся?”. При этом эти же ученые вполне себе за выходные могут пропить годовую лицензию на того же Касперского.


Про 94-ФЗ

Однажды, по дороге от проходной к корпусу, спросил у молодой ученой, чем же ж ей лично этот 94-ФЗ не нравится. Ответила мне молодая ученая, что де хотят они покупать материал (нержавейку там или алюминий для экспериментов) в одной конторе. Чем же ж эта контора так хороша, поинтересовался. А вот с другими конторами у нас эксперименты не получаются. Т.е. молодые ученые вполне рады отказаться от возможности налогоплательщикам контролировать расходы, лишь бы не писать ТЗ на предмет того, какая же ж медь им нужна. Весьма в стиле молодых ученых.


Про утечку мозгов

Все как-то грустят относительно утечки мозгов, хотя по идее должны радоваться. Во-первых, как только ученых в России станет меньше, как сразу бюджет РАН можно будет делить на меньшее количество ртов, что обеспечит увеличение доходов. Во-вторых, если не сраться с уехавшими, то РАН сможет и далее экономить на подписках на журналы, поскольку можно будет просить у “сваливших” прислать нужную статью, за которую заплатила АН вероятного противника. Т.е. от утечки таки сплошной профит. Не понимаю, что все так о ней грустят.

vendredi 30 septembre 2011

Cheatsheet

Disable/Enable Spaces animation
defaults write com.apple.dock workspaces-swoosh-animation-off -bool YES && killall Dock
defaults delete com.apple.dock workspaces-swoosh-animation-off && killall Dock

Disable/Enable dock 3D look
defaults write com.apple.dock no-glass -boolean YES/NO; killall Dock

Disable/Enable New Windows Animation in OS X Lion
defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO/YES

Remove delay when hiding/showing Dock
Remove:
defaults write com.apple.Dock autohide-delay -float 0 && killall Dock

Bring delay back:
defaults write com.apple.Dock autohide-delay -float 0 && killall Dock

Collection of useful and strange CLI settings
https://github.com/mathiasbynens/dotfiles/blob/master/.osx

Favorites from there:
# Disable opening and closing window animations
defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false

# Disable window animations and Get Info animations in Finder
defaults write com.apple.finder DisableAllAnimations -bool true

# Show all filename extensions in Finder
defaults write NSGlobalDomain AppleShowAllExtensions -bool true

# Automatically open a new Finder window when a volume is mounted
defaults write com.apple.frameworks.diskimages auto-open-ro-root -bool true
defaults write com.apple.frameworks.diskimages auto-open-rw-root -bool true
defaults write com.apple.finder OpenWindowForNewRemovableDisk -bool true

# Avoid creating .DS_Store files on network volumes
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

vendredi 19 août 2011

Dear Lazyweb...

Imagine we'd like to take definite integral with interval [a, b] where a and b are symbolic values. And let's assume we're trying to do this in Maxima. Is there anything on taking this integral by definition? I.e. we split the interval into subintervals [a, a + (b-a)/100, ...., b], then calculate integral estimation by summing 0.5(f(a + (b-a)/100) - f(a))(b - a)/100 + ... and then taking limit of this sum. Or it will be quite complicated or even impossible?

vendredi 8 juillet 2011

Крепостное право

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

А вот были бы у академиков А, Б и В крепостные. Можно было бы подарить iPad со специально обученным мальчиком (или девочкой). И никому бы не пришлось никого искать, договариваться о настройке и установке. Да и звучало бы солидней, вечером, сидя за письменным столом, академики А, Б и В могли бы записать в дневник: “Сегодня подарили Г iPad с холопом. Дождит.”

vendredi 1 juillet 2011

Euler #73

Euler #71

#!/usr/bin/env python

from fractions import gcd

N = 1000000

for d in xrange(2, N):
    for n in xrange(3*d/7+1, 1, -1):
        if n*7 < 3*d:
            if gcd(n,d) == 1:
                res = (n, d)
                break;

print(res)

mardi 28 juin 2011

Euler #81

#!/usr/bin/env python

def read_matrix(filename):
    res = []
    f = open(filename, 'r')
    for line in f.readlines():
        res.append(map(lambda x: int(x), line.strip().split(',')))
    return res

matrix = read_matrix('matrix.txt')
matrix_len = len(matrix)

for i in xrange(matrix_len):
    for j in xrange(matrix_len):
        if i > 0 and j > 0:
            s1 = matrix[i][j] + matrix[i - 1][j]
            s2 = matrix[i][j] + matrix[i][j - 1]
            matrix[i][j] = min(s1, s2)
        elif i == 0 and j > 0:
            matrix[i][j] = matrix[i][j - 1] + matrix[i][j]
        elif i > 0 and j == 0:
            matrix[i][j] = matrix[i - 1][j] + matrix[i][j]

print matrix[matrix_len - 1][matrix_len - 1]

dimanche 15 mai 2011

Карри

На прошлой неделе меня пару раз спросили, как готовить карри. Это довольно просто. Нужно взять следующее:


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

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


Пока кумин обжаривается, можно порезать лук и морковь. Форма нарезки произвольная, я предпочитаю полукольца и соломку соответственно.


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


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


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


Далее нужно всё перемешать и продолжить обжаривать.


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


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


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


Далее режется перец


Цуккини


И поочередно складываются в кастрюлю. Перец идет первым, поскольку готовится дольше цуккини.


Далее всё это можно размешать, перевести в режим тушения на медленном огне и ждать готовности всех компонентов. Последней обычно бывает готова картошка. Впрочем, это со многом будет зависеть от формы нарезки. Где-то в процессе этого медленного тушения всё это нужно не забыть посолить. Между делом можно приготовить рис и после готовности всех компонентов подать на стол.

jeudi 14 avril 2011

Кластер №4

Этот кластер возник внезапно. В МСЦ РАН собирали новый суперкомпьютер, под него нужно было место, поэтому старый нужно было кому-нибудь отдать. Два академика встретились в коридорах президиума РАН, один предложил: “Слышь, а вам не нужно пару-тройку стоек нашего старого суперкомпьютера?”. Странно было отказываться. Коллеги, что в институте занимаются вычислительной техникой, со страхом забились в угол при словах “суперкомпьютер” и сказали “оно нам не нужно”. Пришлось нам забирать эту кучу техники, разбирать, погружать, разгружать, перевозить, собирать. Так через 1.5 года после того, как мы перевезли это всё из президиума РАН в институт, в моем, практически единоличном, распоряжении оказались три стойки по шесть шасси по четырнадцать блейдов JS20.

После всех перевозок и переносов мне показалось, что будет проще поднять на кластере Linux с нуля, нежели разбираться с настройками, что были в МСЦ, а после ещё и исправлением этих настроек под существующие реалии. Конечно, там был SLES9 и компиляторы IBM, но этих прелестей было недостаточно для воодушевления на копание в настройках. К тому ж головная машина кластера не пережила переездов и ожидания. За год пребывания в комнате из нее куда-то делась регистровая память и сгорел БП.

В целом план действий был ясен. Найти бесхозную машину, поднять там Linux, на нем поднять HTTP, DHCP, DNS, TFTP и LDAP серверы, сделать локальное зеркало какого-нибудь дистрибутива (выбор таки пал на Fedora 12), написать Kickstart-файл, сбросить настройки управляющих модулей, сгенерировать конфигурации для всех этих серверов, выставить блейдам загрузку по сети. Немного подождать, далее доставить на блейды драйвера Myrinet и систему очередей.

Первая незадача возникла после сброса настроек управляющих модулей. Внешние порты Ethernet свичей оказались выключены. Выяснилось это чуть позже, но сначала пришлось какое-то время ломать голову над тем “и отчего же у нас yaboot не желает грузить блейды”.

Вторая - с драйверами Myrinet. Поскольку Myricom контора серьёзная, доступ к драйверам у них можно получить только после недолгой переписки с девушкой из технической поддержки. Девица запросила серийный номер оборудования, немного подумала и прислала логин и пароль для доступа. При этом посоветовав пользоваться драйвером mx. Радостно загрузив исходники, написал SPEC-файл, помедитировал на патчи, что-то ещё исправил, чтобы оно собиралось на ядре 2.6.32, сделал RPM, установил на несколько узлов. Но все эти узлы видели исключительно себя. Далее начались страдания с драйверами gm. Что 2.0.х, что 2.1.х при сборке падали с ошибкой “iseries is not supported”. Пришлось учинить вандализм, закомментировать строчку с директивой препроцессора #error. После этого всё мирно собралось и даже заработало. С некоторыми НО, конечно.

Третья - с Torque. Вернее с одним компонентом - pbs_sched. Если быть ещё точнее, то во всем оказались виновато оборудование Myrinet, которое не видело часть блейдов. Поэтому возникла необходимость разделять узлы на которых будут запускаться параллельные задачи и узлы для последовательных задач. Пометить узлы в файле nodes было несложно. При создании очередей написать resources_default.neednodes = myrinet тоже просто. Однако pbs_sched отказывался различать узлы по текстовым меткам. Пришлось вспоминать пароль на www.clusterresources.com, загружать оттуда Maui, собирать его. После этого узлы стали нормально отбираться по очередям. Также исчезла проблема с тем, что pbs_sched очень любит запускать неограниченное количество задач на узлах с np=X.

После всех этих нехитрых действий оно всё и заработало. И продолжает работать.

Молодые ученые и ФЗ №94

Не так давно услышал ругань на этот закон от одной молодой ученой биолога, после в какой-то из лент проскочила ссылка http://moloduch-anti-94fz.narod2.ru/. И подумалось мне, что я покупаю что-то не “то”.

Наверное, довольно просто написать что-то в стиле “количество слотов PCI-X16 не менее 2”, “поддержка набора команд AMD64”, “количество интерфейсов с пропускной способностью 1Гбит не менее 4”. После этого подождать месяц и через неделю после этого получить желаемое оборудование. Плюс, довольно просто провести визуальную идентификацию правильности поставки оборудования. Видимо, у биологов и прочих экспериментаторов покупка нужного оборудования/материалов может произойти только при выборе правильного поставщика.

С другой стороны есть коллеги, что успешно используют этот страшный и ужасный ФЗ, чтобы покупать материалы дешевле и удобней. Т.е. без ФЗ они и платили раза 1.5 больше, и тару искали, и относительно доставки морочились, после появления ФЗ - нашелся поставщик, который в свое таре доставляет в институт и ещё и в 1.5 раза дешевле.

Конечно, в своих покупках я мог бы пойти по более простому пути. Не мучать себя уточнением и описанием всех деталей относительно покупаемого оборудования, а просто написать “Вот ЭТО или аналог”, что тоже допустимо. В итоге, правда, я был и получал эти самые аналоги, более дешевые, не обладающие нужными характеристиками.

Самое интересное представляет собой реакция молодых ученых на закон. Вместо того, чтобы начать в институте. Потребовать от дирекции более открытого распределения пула закупок без конкурса. Сказать: “Дмитрий Анатольевич, ну почему в России не производят вот такую вот штуку? Ну почему нам приходится заказывать это за границей? А?”. Вместо этого молодые ученые предлагают убрать ФЗ 94. Разрешить им покупать что они хотят у кого они хотят. При это ещё как бы намекая, что последуют примеру поросенка Петра, если ничего предпринято не будет.

vendredi 1 avril 2011

Кластер №3

После того, как кластер №2 более чем на 50% умер, было решено заменить его полностью. Оставалась энная сумма денег, которые, конечно же, нужно было потратить. В этот раз всё было несколько сложнее. За попыткой вписаться в бюджет последовало написание технического задания, объявление тендера.

В итоге было куплено 15 материнских плат, 15 трехядерных Phenom’ов и немного более слабая конфигурация для головной машины.

Установка ПО на кластер началась с выяснения того, что BIOS, с которым поставляются материнские платы, нестабильно работает с быстрой памятью. 16 раз пришлось обновить BIOS. Дальше, впрочем, всё стало проще.

Первая мысль о том, как развернуть кластер была - не хочется возиться со всяческими загрузками по сети, давайте установим операционную систему на один узел, а после в помощью dd скопируем ее на все остальные узлы. Что и было предпринято с некоторыми нюансами.

В таком виде кластер просуществовал этак месяцев 6, за эти 6 месяцев пришлось ещё поднять большой кластер, что несколько поменяло представления о развертывании кластеров. Поэтому через полгода было решено переставить ОС на узлах. Началось всё с ещё одного обновления BIOS. На сей раз только на сильно нестабильно работающих машинах.

А далее было всё весьма прозаично: DHCP, DNS, TFTP, PXE, Kickstart.

И не смотря на наличие большого кластера, народ не спешит с этого маленького куда-то перемещаться.

dimanche 27 mars 2011

Оборудование IBM

Пару лет назад институту перепало 3 стойки блейдов JS20 на архитектуре PPC. В МСЦ собрали новую машину, старую раздавали всем желающим. Эти три стойки были разобраны, перевезены на газелях в Черноголовку, здесь выгружены на хим. склад. Там они пролежали год, пока под них подготавливали помещение. После чего они опять загружены в грузовой автомобиль и перевезены на место постоянно дислокации. Были собраны и прекрасно заработали. Разве что, Myrinet местами не захотел подниматься. Так оно проработало какое-то время. Периодически замерзал кондиционер, комната со стойками прогревалась градусов этак до 40. Но блейды продолжали работать. Под новый год под ними просел пол. Они опять были разобраны. Пол отремонтирован. После чего их опять собрали и они продолжили работать.

Сейчас в среднем по всем шасси не работает каждый 14ый блейд, причем исключительно по причине умерших жестких дисков.

Такое вот замечательное оборудование выпускает IBM. Тяжелое оно только очень.

Кластер №2

После того, как в кластере №1 стало совсем плохо с узлами, было закуплено Nое количество материнских плат с процессорами и в процессе перестановки оборудования решено было провести и замену ПО, что стоит на кластере.

В этот раз на глаза попался проект Warewulf, который сейчас перерос в Perceus. Использовалась всё так же загрузка по сети, только вместо nfsroot, на головной машине создавались образы эталонной исталляции для узла, ядро и основные утилиты грузились в запакованном виде по сети, разворачивались в RAM-диск, это всё загружалось, остатки ОС монтировались по NFS и узел работал. В качестве дистрибутива была выбрана Fedora Core 4. Остальное ПО не поменялось - GNU compiler suite, LAM-MPI, PBS, который к тому моменту уже превратился в Torque. Для распределения нагрузки по узлам была предпринята попытка перейти для tcl-планировщик, оценивая загруженность узла по load average, что было, конечно, неразумно, но в тот момент оно работало лучше, нежели планировщик по умолчанию. Для запуска параллельных задач по-прежнему использовался ручной поиск свободных узлов при помощи wwtop, перечисление оных в hostfile и запуск при помощи mpirun.

Так кластер проработал относительно долго, пережив пережив переезд в другое помещение. Но и в нем на материнских платах стали пухнуть конденсаторы и через какое-то время было решено купить ещё 16 мат. плат, 16 процессоров, 32 планки памяти и опять поменять оборудование.

vendredi 25 mars 2011

Кластер №1

Году этак в 2003 мы решили обновить старый кластер из 16 машин Pentium-III 667 на что-то более новое и быстрое. Сначала долго договаривались на какой платформе это всё собирать (AMD или Intel), были написаны 2 сметы, но, как обычно, начальство сказало “ох, не доверяю я AMD” и в моем распоряжении оказались 16 машин Pentium IV 3.2 ГГц, которые предстояло объединить в сеть и заставить считать.

Довольно романтичная первая мысль была: а не сделать ли 15 компьютеров, загружающихся по сети, а их диски объединить в один большой при помощи PVFS2. И, конечно же, хотелось изобрести велосипед.

Для этих целей был взят дистрибутив CRUX, стартовые скрипты у него были тривиальны. Оставалось пересобрать ядро с поддержкой nfsroot, немного исправить скрипты для узлов, поднять Yp для авторизации пользователей, поднять PBS для учередей. На этом настройка закончилась, всё более-менее работало. Конечно, сразу выяснились некоторые нюансы, как то нестабильно работающий модуль ядра pvfs, несколько куцый набор приложений в системе портов CRUX’а, прочие мелочи. От pvfs пришло отказаться также ещё и по причине нестабильной работы узлов. Для работы с софтом использовать pkgsrc. С распределением задач по узлам в PBS разобраться так и не удалось.

В таком виде кластер просуществовал до тех пор пока из строя не вышли штук 8 узлов (вспухли конденсаторы на мат. плате), после чего были куплены новые запчасти и в процессе перестановки материнских плат также была изменена программная начинка кластера.

vendredi 25 février 2011

3G в Linux

Network Manager в Fedora 14 порадовал тем, что без проблем подключился к 3G Утела. Спросил только "а вы где?" (Украина), "а кто у вас провайдер?" (Утел). Под Макосью процесс установки драйверов модема и подключения был менее приятным.

dimanche 13 février 2011

Untitled

py27-* branch of Macports lacks certain funny ports. Created bunch of port files, most of them are just renaming py26-* ports.

https://bitbucket.org/alexey.matveichev/ports/

lundi 7 février 2011

MacPorts

  --->  Computing dependencies for py26-matplotlib 
  --->  Dependencies to be installed: ... python27 ...

vendredi 28 janvier 2011

#!/usr/bin/env python
# -*- coding: utf-8

import sys
import os
import os.path
from zipfile import ZipFile
import shutil

def process_file(root, filename):
    try:
        zf = ZipFile(filename)
    except:
        print "E %s" % f.decode('utf-8')
    for fileinfo in zf.infolist():
        try:
            fn = unicode(fileinfo.filename, 'cp866')
        except:
            fn = unicode(fileinfo.filename)
            outputfile = open(os.path.join(root,
                                           fn.encode('utf-8')), "wb")
            shutil.copyfileobj(zf.open(fileinfo.filename),
                               outputfile)
            outputfile.close()
    os.remove(filename)
            

if __name__ == '__main__':
    for root, dirs, files in os.walk(sys.argv[1]):
        for f in files:
            filename = os.path.join(root, f)
            basename, extension = os.path.splitext(filename)
            if extension.lower() == '.zip':
                process_file(filename)

Кривые-кривые имена файлов после find . -iname '*.zip' -execdir unzip {} \; и рассказали мне, что некоторые люди умудряются в 21 веке засунуть в архив файлы с именами в кодировке cp866. Впрочем, это ж акадэмики.

jeudi 13 janvier 2011

На память

sudo ln -s /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers

Сначала, конечно, ещё можно куда-нибудь забэкапить /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers.