Книжки по Scala
[info]alexhemp
Scala in Depth 


Scala in Action


Scala for the Impatient




Overlays like Gentoo in FreeBSD ports
[info]alexhemp


You can add your own local ports or even whole categories of local
ports without too much difficulty. You can even add some tweaks to an
existing port -- you don't have complete freedom to do anything there,
but you can do quite a lot.

If you create a Makefile.local at any level in the ports tree it will be
included alongside the usual Makefile. This means you can override a
lot of the available settings at will.

So, if you create /usr/ports/Makefile.local

with the contents:

SUBDIR+=myports

then you can create a directory /usr/ports/myports and put your own
ports inside it -- you'll need a /usr/ports/myports/Makefile just like
the other category directories.

Similarly, if you prefer to mix your own stuff more intimately with the
rest of the ports tree, you could create /usr/ports/devel/Makefile.local
with the contents:

SUBDIR+=myfunkyport
SUBDIR+=myotherport

and then create /usr/ports/devel/{myfunkyport,myotherport}

Finally, you can put a Makefile.local into a port directory, and use it
to override settings specific to that port. This is probably not very
useful except in limited circumstances. Another handy thing to do is
create eg. file/patch-foo to contain local patches against the upstream
sources.

Makefile.local is intended for local customizations like this, but there
are also Makefile.inc and Makefile.${ARCH}, Makefile.${OPSYS},
Makefile.${OPSYS}-${ARCH} which will similarly be automatically included
if present (and if the ARCH and OPSYS settings match.)

Now, all of this is at risk of clashing with future updates to the ports
tree -- you're going to have to maintain it yourself, and cope with
ports being deleted or moved around. Creating your own separate
category as shown first will give you the best separation and probably
the least maintenance hassles.

If you want to modify an existing port, probably the best approach is to
create your own slave port -- see the docco on MASTERDIR in the Porter's
Handbook and look at eg. games/freeciv-nox11 for about the simplest
possible example. It's not fool proof -- some modifications will always
need support in the master port's Makefile, but there's a lot you can do
without that.

Because this entails inserting files into the ports tree, you need to
take some thought as to how to avoid wiping out your changes when
updating the ports tree. Extra files are generally ignored by csup(1),
but portsnap(1) will blow them away. You could get creative using
unionfs (see mount_unionfs(8)) or you could go for the option of
maintaining a local CVS repository with your mods on a separate branch.

Cheers,
Matthew
----
Dr Matthew J Seaman MA, D.Phil.


Ни убавить, ни прибавить!

Моя первая программа на Perl
[info]alexhemp
В VirtualMin давно есть проблема - не создать кириллический домен. Покопался в интернете, оказалось проще самому патч сделать

Файл /usr/local/lib/webmin/virtual-server/IDNA/Punycode.pm

package IDNA::Punycode;

use strict;
use utf8;
use warnings;

our $VERSION = "1.101";
$VERSION = eval $VERSION;

require Exporter;
our @ISA        = qw(Exporter);
our @EXPORT     = qw(encode_punycode decode_punycode);

use Carp;
use URI::UTF8::Punycode;

sub encode_punycode {
    use bytes;
    no warnings qw(utf8); # needed for perl v5.6.x

    my $domain = shift;

    my @puny_words = ();
    foreach my $d (split(/\./, $domain)) {
        if ($d !~ m/[a-zA-Z0-9]/i) {
            $d = URI::UTF8::Punycode::puny_enc($d);
        }
        push(@puny_words, $d);
    }
    my $result = join('.', @puny_words);
    return $result;
}

sub decode_punycode {
    my $domain = shift;
    
    my @puny_words = ();
    foreach my $d (split(/\./, $domain)) {
        if ($d =~ /^xn--/) {
            $d = URI::UTF8::Punycode::puny_dec($d);
        }
        push(@puny_words, $d);
    }
    my $result = join('.', @puny_words);
    return $result;
}


Всем родителям нужно знать
[info]alexhemp
А математику уже затем учить следует, что она ум в порядок приводит” - М.В. Ломоносов
Математика - это язык, на котором говорят все точные науки” - Н.И. Лобачевский
Математика - царица наук” - К. Гаусс
Математик должен быть поэтом в душе” - С.В. Ковалевская

"Я глубоко убежден: не нужна высшая математика в школе. Более того, высшая математика убивает креативность" - Фурсенко, министр образования РФ

Подробнее:http://news.mail.ru/politics/2363164/
Мне страшно отдавать ребенка в школу. Нужно будет заниматься дома важными науками - биологией и теорией эволюции (ведь в школах будут учить закон божий вместо этого), астрономией (которую уже давно выпилили из программы), математикой (ведь сокращая высшей - наверняка и аналитическую геометрию подрежут - там как раз в 6-7 классе синусы-косинусы.



libdvbpsi
[info]alexhemp
Для поддержки TS потока в vlc его нужно собирать с livdvbpsi а та не собирается с ошибкой

> In file included from connect.c:42:
> /usr/include/netinet/ip.h:162: error: expected specifier-qualifier-list before 'n_long'

 Это один из примеров данной библиотеки не собирается, нужно дописать в examples/connect.c

+ #include <netinet/in_systm.h>
#include <netinet/in.h>


Прос солипсизм
[info]alexhemp
Прочитал статью Шабанова про солипсизм: http://www.computerra.ru/own/shabanov/632588/

Он сравнивает два рассуждения:

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

Вариант №2. Если я сяду на булавку, она уколет - больно будет.

И считает что "рассуждение, в котором причинно-следственные связи ради удобства выносятся из моей психики вовне, оказывается более простым!"

На самом деле, первое рассуждение проще.
Запутывает многословность, вызванная раскрытием рекурсии.

Рекурсивные алгоритмы и рекурсивные ф-ции являются более простыми, чем итерационные т.к. не требуется хранение состояния.

И конечно, внутренний вызов рекурсивной ф-ции не может повлиять на состояние внешнего кроме как вернув результат вычислений.

А следовательно, солипсизм, на мой взгляд, устоял :-)

Все еще невозможно убедиться в том - объективна или субъективна окружающая нас "действительность".

всякие детали про redmine
[info]alexhemp
запускать redmine да и вообще рельсовые проекты нужно под nginx/thin - быстрее и проще похоже
ничего нет

если thin-а нет в репозиториях (например у вас есть старый lenny где-то далеко) то поставить его легко

gem install thin
thin install

он все сделает, даже стартовые скрипты

если у вас случайно обновились порты и новая версия rubygems не поддерживается redmine (штука капризная вообще) то можно легко ее понизить

#gem update --system 1.7.2

И тогда все запуститься снова

В общем веселье :-)

Sendmail и обратные зоны
[info]alexhemp
У sendmail есть одна особенность, при старте он берет все ip адреса на интерфейсах и добавляет все имена, которые находятся по обратным DNS запросам во внутренний map куда потом добавляется так-же и local-host-names

К чему это приводит - да к тому, что он считает что почту для этого домена обрабатывает он.
А в случае Web-сервера это совсем не так, он отправляет письма в этот домен, но не принимает.

Ларчик открывается просто
define(`confDONT_PROBE_INTERFACES')

в .mc файл и все.

Прежде чем возиться самостоятельно, проверьте, нет ли уже в портах
[info]alexhemp
Совершенно случайно обнаружил /usr/ports/www/redmine

ставится само, использует thin, гораздо проще чем nginx + passenger (просто добавить в nginx proxy_pass на http://127.0.0.1:3000/ и все)
Памяти кушает меньше, работает заметно быстрее.

В общем очередной раз убеждаюсь - не делай сразу сам, посмотри в портах, их умные люди придумали.
  • Leave a comment
  • Add to Memories

В копилку - борьба с SVN
[info]alexhemp
Если svn up или svn status выдают ошибку похожую на:

svn: Valid UTF-8 data
(hex: 65 64 69 74 65 64)
followed by invalid UTF-8 sequence
(hex: ad 6c 69 73)

Это значит нерадивые юзеры залили файл с именем в UTF-8, но имя обрезано так что перестало быть корректной UTF-8 последовательностью. Такое бывает если сайт в однобайтной кодировке, а браузер юзера кривоват.

Ошибка эта не связана с репозиторием никак, тут проблема в том что svn не может прочитать рабочую копию из-за этого чтобы сравнить список файлов. Причем файл может быть так и в исключенном каталоге.

Для поиска такого файла берем пару байт из этой самой invalid sequence (valid может быть и пустым, если прямо с начала имени неправильные символы) делаем примерно так:

find /path/to/workingcopy | perl -n -e "print if /\xAD\x6C/" | less

Ну и переименовываем его правильно (или удаляем).

Найдено тут: http://bernhardhaeussner.de/blog/107_Fix_subverison_error:_Valid_UTF-8_data_followed_by_invalid_UTF-8_sequence