Archive

Archive for the ‘общее’ Category

defun.ru – ресурс о функциональном программировании

April 11th, 2008 No comments

Не могу не пропиарить: www.defun.ru

Дефун это что-то типа Digg’а для людей интересующихся функциональным, декларативным и прочим “нестандартным” программированием.

(c) Semka

Основная тема — новости и ссылки о функциональном программировании, разных альтернативных и перспективных языках, ну и про computer science вообще. Ключевые слова — хаскель, erlang, lisp, smalltalk, ocaml. Ruby, groovy и питон туда тоже отлично впишутся.

Тру Программист

Там уже сейчас чтения на все выходные :)

Categories: общее Tags:

Сдал на MCSA!

April 1st, 2008 10 comments

Это просто праздник какой-то, со второго раза удалось сдать оба экзамена на W2K3 MCSA – 70-290 и 70-291!
Если бы такие экзамены были у меня в университете, меня бы отчислили на первой же сессии, это единственное, что могу сказать. И еще, даже не ожидал, что они могут быть настолько сложны.

Но зато теперь я – Microsoft Certified System Administrator, урра!

Завтра мои данные появятся на https://mcp.microsoft.com/authenticate/validatemcp.aspx, id 7900401.

На очереди 70-297, даже не знаю, как я буду его сдавать.. :(
Но это потом, а пока – принимаю поздравления!

upd: смотрим на дату и больше не задаем глупых вопросов :)

Categories: общее Tags:

Первый опыт фриланса :)

November 17th, 2007 2 comments

Три дня провел на getafreelancer.com

За это время успел сделать четыре заявки, выполнить один проект, заработать 35 баксов и, напоследок, составить некоторое мнение об этом сайте.

А именно, мне показалось, что можно заработать там тысячу-полторы денег, но на это нужно будет тратить большую часть свого времени и заниматься откровенной фигней. Собственно, это мой ответ на вопрос Сергея из города Донецка, который, похоже очень неплохо пропиарил GAF в России :)

Проектов для IT-специалистов на getafreelancer много, но 50% из них – это либо создание клонов (“i want clone of discussions.apple.com” – сделают за 95 баксов), либо заказы на спам и размещения ссылок, либо еще какая-нибудь муть.

Остальные 50% – это задачки на доработку скриптов – сделать какую-нибудь форму или поменять какой-нибудь шаблон. Есть задачки по написанию узкоспециализированных скриптов, иногда просят исправить глюки, совсем редко – поадминить сервер.

Свои 35 баксов я заработал, выполнив задачу “Found the reason for CPU Load”. На одном сервере процесс mysqld кушал 95% ресурсов процессора и владелец не мог понять, в чем дело. Мне пришлось на некоторое время включить логи MySQL чтобы обнаружить причину: какой-то дурацкий скрипт делал до 200 запросов к базе при каждом обращении к странице. Добавил индекс на два поля таблицы и нагрузка на CPU сразу же упала на 90% :) Предложил переписать так же и скрипт, но заказчик уже был удовлетворен результатом.

p.s. аффилиатных ссылок тут нет :)

Categories: общее Tags:

Программерские загогулины [2]

August 23rd, 2007 8 comments

Очередная программерская загогулина, на этот раз решение сразу не дам :)

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

cat file | (
while read host; do
ssh user@$host "command"
done
)

Ошибка, однако! В чем?
Кто сможет разобраться в уме, не запуская код, тому респект и уважуха :)

UPD:

Решил человек, скрывающийся под ником gds:

поток из “cat file” будет выкушан только первой запущенной командой “ssh …”?

gds, респект тебе уважуха :)

Удаленный рабочий стол. UNIX-way :)

August 6th, 2007 5 comments

Как всегда, существует уйма способов запускать графические программы удаленно. Не все из них основаны на туннелинге X-трафика, но именно с ним играться интересней всего.

Приступим :)

Собственно, на практике страшная фраза “сделать туннелинг Х-протокола” обозначает, что нужно добавить опцию X к ssh. Получается, что в простейшем случае запустить удаленную графическую программу можно так:
ssh -X user@host firefox

Kdesktop от других программ ничем не отличается:
ssh -X user@host kdesktop

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

Я это сделал так:
xinit /usr/bin/ssh -X user@host startkde -- :1
Набирать команду следует из обычной, неиксовой консоли (Ctrl-Alt-F1), и работать она будет только в случае, если на удаленной машине уже лежит наш публичный ключик, т.к. не будет возможности ввести пароль. (что такое публичный ключ). Полный путь к ssh на некоторых дистрибутивах обязателен.

Теперь сочетанием клавиш Ctrl-Alt-F7 и Ctrl-Alt-F9 можно переключаться между локальным и удаленным рабочим столом (хотя F9 для удаленной машины – это лично у меня, у вас может быть также F8 или F10). Да, и делать это лучше только если соединение между машинами быстрое, иначе нервных расстройств не избежать :)

Этот пост написан с рабочего десктопа, но через ноутбучную оперу :)

А что интересного с помощью ssh удавалось сделать вам?

UPD через 20 мин: Отправил ноутбук в ребут и через некоторое время понял, что работаю на удаленной машине. 5 секунд паники, 10 – на сохранение и минута чтобы понять, что я ошибся :) Вобщем, для людей со слабым сердцем не рекомендую так работать, а сам я теперь осторожен, как сапер на минном поле :)

Categories: UNIX, tips, общее Tags: , , , ,

Perl и фиксированные ключи в хеше.

July 5th, 2007 No comments

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

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

package some;

use warnings;
use strict;
use Hash::Util qw{lock_keys};

sub new
{
my $class = shift;
my %hash;
my @keys = ("one", "two", "three", "four", "five");
my $self = bless \%hash, $class;
lock_keys %hash, @keys;
return $self;
}

1;

Теперь при выполнении инструкция $some->{‘there’} произойдет ошибка:
Attempt to access disallowed key 'there' in a restricted hash at ./test.pl line 11.

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

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


package Foo;
use base qw(Class::Accessor);
Foo->mk_accessors('foo'); # или mk_ro_accessors(qw{ one two three }) для read-only полей

my $obj = Class->new({ foo => 42 });
print $obj->foo; # 42
$obj->foo("24");
print $obj->foo; # 24

Ну вот и все! Теперь если захочется изменить поведение объекта таким образом, чтобы при изменении свойства foo, менялось также значение bar, достаточно реализовать самостоятельно нужную функцию, а править использующий класс код не нужно.

Все-таки perl язык великий и могучий, этого у него не отнять!

codepage horror

June 29th, 2007 1 comment

Иногда мне снятся сны. Бывает, что кошмары. Что такое кошмар для админа? Это когда видишь свой сайт – все работает, все грузится, но кодирЛЮХВ КВЯНЕК ЗИЕОЕИВ!!!

На работе сегодня этот кошмар воплотился: вселился бес в базу и попутал все кодировки. Попутал на славу, так что первый дамп пришлось расшифровать в два приема: utf8->koi и cp1251->koi, а со вторым развлечение было поизощреннее. С каждой перестановкой буквы прыгали издевательски с места на место, подмигивали и смеялись, доводя мой ЙЛЗХмоск до кипения. Но битву они все-так проиграли. После пятой перекодировки cp1251->koi8r из поганцев сгинул злой дух и оборотились они текстом складным и залился дамп в базу и вернулись: юзерам – счастье, а админу – крепкий сон :)

p.s.

А на #freebsd народ показал такой фокус:


#str="трали-вали"; for((i=0; $i<20; i++)); do str=`echo "$str" | iconv -f CP1251 -t KOI8-R`; done;
#echo $str
трали-вали