Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2008-02-29

Программисты и манагеры

Люди сообщают:

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

citforum.ru

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

2008-02-22

Англо-русские (и не только) словари

Под линуксом мой "любимый" лингво не работает. А словарь нужен. Очень.
И тут мне на глаза попадается заметочка в sovety.blogspot.com про использование словарей от Лингво.
Я почитал заметочку, потом полазил по сайту Stardict-а. И решил сначала поставить программулину а потом разобраться с словарями.
Программулина свежайшей версии (скачал и сорцы и пакет) ставиться не пожелала, разбирать тонны зависимостей при компиляции время не позволило (может потом, попозже поколупаю). В итоге поставил из репозитория пакетов: apt-get install stardict

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

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

Впечатления? Лично мне функционал выше крыши. Программа делает все, что мне надо и еще сверх того.
Я вопрос с словарями-переводчиками под линуксом для себя закрыл.

Updated:
размещать словари надо в каталоге:
/usr/share/stardict/dic/
или в домашнем
~/.stardict/dic/
так, что файлы словаря будут лежать таким, к примеру, образом:

  • /usr/share/stardict/dic/stardict-en-ru-bars-2.4.2/en-ru-bars.dict.dz
  • /usr/share/stardict/dic/stardict-en-ru-bars-2.4.2/en-ru-bars.idx
  • /usr/share/stardict/dic/stardict-en-ru-bars-2.4.2/en-ru-bars.ifo

2008-02-18

Java, Red Hat

Заметка про нашего мальчика:

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

На Всемирной конференции JBoss в Орландо и Флориде, Craig Muzilla, вице-президент Red Hat, сказал, что по расчетам компании, JBoss будет главной частью 50 процентов всей инфраструктуры программного обеспечения для предприятия к 2015 году. "Мы полагаем, что это - достижимая, реалистичная цель," - сказал он.

citcity.ru

Неплохо, надо продолжать осваивать интранет решения на яве.

2008-02-17

DVDShrink под линуксом

Когда я найду хороший фильм, я его пишу на DVD и даю посмотреть матушке.
Всякие авишки (avi) и прочие пережатые фильмы я отношу ей на флешке, но не об этом речь. В последнее время часто попадаются копии размером более 4.5 гигов и/или отягощенные всякими ненужными "бонусами" типа рекламы или тупого меню. Это я все выбрасываю, оригинальную озвучку и субтитры наоборот, оставляю. А то что получится жму до размеров 4.5 гига, чтоб на обычный DVD записать.

Все эти действия под виндой я делал с помощью удивительной и замечательной программы DVDShrink. А чем я это буду делать под линуксом? Вчера этот вопрос встал передо мной в полный рост.

Беглый просмотр форумов показал две альтернативы - пользовать DVDShrink под Wine и искать компрессор/автор нативный. Я пошел вторым путем. И нашел. Та-дам! Суперпрограмма K9Copy.
Делает все, что надо и кучу дополнительных вещей, которые лично мне по барабану. Хочу поделиться рецептом "приготовления" - как я компилировал из сырцов и ставил это чудо.

С сайта скопировал сырцы, распаковал их к себе в домашний каталог.
/home/k/t/k9copy-1.2.2
Потом, прочтя ридми и прочие текстовые файлы из комплекта, запустил стандартные в мире опенсорца заклинания:


./configure
make
sudo make install

В процессе конфигурирования и компилирования вылезали всякие сообщения о ошибках, читая которые и справляясь с разделом сайта Prerequisit - "предварительно установлено" я ставил следующие пакеты (у меня дебиан 4):

apt-get install libx11-dev
apt-get install kde-dev
apt-get install kde-devel
apt-get install libdvdread3
apt-get install libdvdread-dev
apt-get install libhal1
apt-get install libhal-dev
apt-get install k3b
apt-get install libk3b-dev
apt-get install libavcodec-dev
apt-get install libavformat-dev
apt-get install libdbus-1-dev
apt-get install libdbus-qt-1-dev
apt-get install libk3b2
apt-get install dvdauthor
apt-get install dvd+rw-tools
apt-get install libhal-storage1
apt-get install libhal-storage-dev
apt-get install dbus
apt-get install libdbus-1-3
apt-get install libdbus-qt-1-1c2
apt-get install libdbus-1-cil

Установив очередной пакет по новой запускал конфигурирование и компиляцию.
А потом запустил программулину и сделал все, что мне было нужно.



На все про все - пара часов.

2008-02-13

Жизнь после нефти?

Всё уже было, некоторые события происходили совсем недавно...

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


К концу семидесятых годов Науру имел, по-видимому, самый высокий в мире уровень доходов на душу населения, превосходя по этому показателю Объединённые Арабские Эмираты почти в два раза, а США – в четыре. Бесплатными стали образование и медицина, налоги были полностью отменены, и жители острова получили право время от времени бесплатно летать на «Большую Землю». Большинство семей тогда имело по несколько автомобилей, хотя пешком обойти остров можно часа за четыре. Для того, чтобы создать достаточное количество рабочих мест, правительство раздуло административный аппарат, превратив большинство работающих островитян в государственных служащих. Политическую систему острова можно описать как «деревенскую демократию».

tttkkk.livejournal.com

Не правда ли, похоже на нас? Не опоздать бы с действиями...

2008-02-12

Диагностика в линукс

Часто надо (хочется) знать, что происходит с компом и из чего он сделан. В винде подобные сведения можно посмотреть в "диспетчере задач" и в "менеджере устройств". А в линуксе?

А в ём, родимом, я пока знаю такие команды на эту тему:


top
ps aux
cat /var/log/kern.log
tail -f /var/log/messages
dmidecode -q
lsusb
lsmod
dmesg


Еще подборка полезных команд есть на citkit.ru.
А в блоге sovety.blogspot.com можно найти много полезного на тему линукса.

2008-02-10

Шпаргалки девелопера

В последнее время часто стали попадаться на глаза разные шпаргалки (cheat sheets). Вот ещё ресурс полезный в этом плане:
http://www.ilovejackdaniels.com/cheat-sheets/

Вот, к примеру, шпаргалка по регулярным выражениям:

2008-02-09

Линукс, русские буковки в шелл-скриптах

Столкнулся с проблемой обработки в шелл-скриптах русских букв. Например, надо скриптом создать каталог с названием "Васина папочка".
На самом деле, захотел я написать скрипт монтирования сетевых ресурсов своего районного провайдера (кино смотрю с сетевых дисков). А у него, злыдня, сетевые ресурсы по русски обозваны, что противоречит всяческим устоявшимся правилам (пионеры ,kz).

Сначала я написал скрипт такой:

#!/bin/sh -e
# -*- coding: windows-1251 -*-
mount //SERV/Архив\ DVD\$ /mnt/serv.dvd -t cifs -o user=login,iocharset=utf8,password=$password



и после выполнения понял, локаль у меня ru_RU.UTF-8 а скрипт в кодировке cp1251. Короче, не буду тянуть, после серии экспериментов нарисовался такой скрипт:


#!/bin/sh -e
# -*- coding: windows-1251 -*-
echo "Enter serv\login password:"
read password
mkdir -p /mnt/serv.dvd
mkdir -p /mnt/serv.dvd2
file="Архив"
nfile=`iconv -f cp1251 -t utf8 <<<"$file"`
mount //serv/$nfile\ DVD\$ /mnt/serv.dvd -t cifs -o user=login,iocharset=utf8,password=$password
mount //serv/$nfile\ DVD1\$ /mnt/serv.dvd2 -t cifs -o user=login,iocharset=utf8,password=$password


И в таком виде оно работает вполне себе.

Анекдот!

У Гоблина "зачерпнул":
Два чеха в Праге смотрят выпуск новостей. Репортаж из Ирака, на экране руины и горы трупов.

- Послушайте, пан, как нам сильно повезло!
- В чём? Что мы в НАТО и в Евросоюз вступили?
- Нет. В том, что в 1968 году СССР ещё не был демократическим государством.

oper.ru

Сильно, не заноза - целый ж/д костыль в зад пиндосам!

2008-02-01

кому слава гугля спать не дает?

Нравится мне питон (язык программирования). И вот на глаза попалось:

.
The Google PageRank Algorithm in 126 Lines of Python
Reading How Google Finds Your Needle in the Web's Haystack I was surprised by the simplicity of the math underlying the google PageRank algorithm, and the ease with which it seemed to be efficiently implementable. Being able to do a google-style ranking seems useful for a wide range of cases, and since I had wanted to take a look at python for numerics for some time, I decided to give it a shot (note that there already exists a python implementation using the numarray module).

© 2006, Vincent Kräutler.


.

The Code

All of the following is done in python, with the numpy library, so don't forget to

from numpy import *

Full source code.

First, we need to transform the matrix of outgoing links into one of incoming links, while preserving the number of outgoing links per page and identifying leaf nodes:

def transposeLinkMatrix(
outGoingLinks = [[]]
):
"""
Transpose the link matrix. The link matrix contains the pages each page points to.
However, what we want is to know which pages point to a given page. However, we
will still want to know how many links each page contains (so store that in a separate array),
as well as which pages contain no links at all (leaf nodes).

@param outGoingLinks outGoingLinks[ii] contains the indices of pages pointed to by page ii
@return a tuple of (incomingLinks, numOutGoingLinks, leafNodes)
"""

nPages = len(outGoingLinks)
# incomingLinks[ii] will contain the indices jj of the pages linking to page ii
incomingLinks = [[] for ii in range(nPages)]
# the number of links in each page
numLinks = zeros(nPages, int32)
# the indices of the leaf nodes
leafNodes = []

for ii in range(nPages):
if len(outGoingLinks[ii]) == 0:
leafNodes.append(ii)
else:
numLinks[ii] = len(outGoingLinks[ii])
# transpose the link matrix
for jj in outGoingLinks[ii]:
incomingLinks[jj].append(ii)

incomingLinks = [array(ii) for ii in incomingLinks]
numLinks = array(numLinks)
leafNodes = array(leafNodes)

return incomingLinks, numLinks, leafNodes
Next, we need to perform the iterative refinement. Wrapping it up in a generator to hide the state of the iteration behind a function-like interface. Single-precision should be good enough.
def pageRankGenerator(
At = [array((), int32)],
numLinks = array((), int32),
ln = array((), int32),
alpha = 0.85,
convergence = 0.01,
checkSteps = 10
):
"""
Compute an approximate page rank vector of N pages to within some convergence factor.
@param At a sparse square matrix with N rows. At[ii] contains the indices of pages jj linking to ii.
@param numLinks iNumLinks[ii] is the number of links going out from ii.
@param ln contains the indices of pages without links
@param alpha a value between 0 and 1. Determines the relative importance of "stochastic" links.
@param convergence a relative convergence criterion. smaller means better, but more expensive.
@param checkSteps check for convergence after so many steps
"""

# the number of "pages"
N = len(At)

# the number of "pages without links"
M = ln.shape[0]

# initialize: single-precision should be good enough
iNew = ones((N,), float32) / N
iOld = ones((N,), float32) / N

done = False
while not done:

# normalize every now and then for numerical stability
iNew /= sum(iNew)

for step in range(checkSteps):

# swap arrays
iOld, iNew = iNew, iOld

# an element in the 1 x I vector.
# all elements are identical.
oneIv = (1 - alpha) * sum(iOld) / N

# an element of the A x I vector.
# all elements are identical.
oneAv = 0.0
if M > 0:
oneAv = alpha * sum(iOld.take(ln, axis = 0)) * M / N

# the elements of the H x I multiplication
ii = 0
while ii < N:
page = At[ii]
h = 0
if page.shape[0]:
h = alpha * dot(
iOld.take(page, axis = 0),
1. / numLinks.take(page, axis = 0)
)
iNew[ii] = h + oneAv + oneIv
ii += 1

diff = iNew - iOld
done = (sqrt(dot(diff, diff)) / N < convergence)

yield iNew
Finally, we might want to wrap up the above behind a convenience interface like so:
def pageRank(
linkMatrix = [[]],
alpha = 0.85,
convergence = 0.01,
checkSteps = 10
):
"""
Convenience wrap for the link matrix transpose and the generator.
"""
incomingLinks, numLinks, leafNodes = transposeLinkMatrix(linkMatrix)

for gr in pageRankGenerator(incomingLinks, numLinks, leafNodes,
alpha = alpha,
convergence = convergence,
checkSteps = checkSteps):
final = gr

return final

.
.

домашний линукс

Вот я и поставил на свой домашний комп линукс. Debian Etch r.2
За три дня воссоздал рабочее окружение, так, что можно делом заниматься. Вот только для mail.ru agent не нашел клиента, причем флешовый на странице портала работать почему-то отказывается.

Со шрифтами да, таки напряженка. Подобрать симпатичные и комфортные к восприятию трудно в силу малого количества и легкой убогости того, что есть. Видимо придется воровать у МС.

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

Для эксперимента пытаюсь усидеть под окнами GNOME. Но, похоже, долго не высижу - квалификация не позволяет. Либо перейду на KDE, либо узнаю много нового :)

- Дава, я извиняюсь, но ты таки, босяк. Некому задницу надрать, пять пистолетов - не пачка папирос, они таки стреляют. Ну ты же не окно в женской бане – зачем в тебе дырка?

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) Klaipeda (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) купи/продай (9) Photo (8) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)