Блог

Старославянский язык

Оказывается, в «Википедии» есть раздел на старославянском с пятью сотнями страниц:

Изображение

Для корректного отображения старославянской азбуки предлагается поставить сторонний шрифт.

Интересно, что, несмотря на древность языка (?-? века), читается и понимается он вполне неплохо. Хотя, вряд ли это в точности тот язык — ведь статьи писались уже в наше время и под влиянием церковнославянского, который хоть и похож, но гораздо современнее.

Нет комментариев   18 января 2013 00:54

Народ.Диск закрыт

Печальные новости — Яндекс закрыл загрузку файлов на «Народ.Диск» в пользу «Яндекс.Диска». Разница между ними в том, что первый был файлообменником, а второй — облачное хранилище. Теперь всё место ограничено 20 гигабайтами, а если не приглашать друзей — десятью. Очень жаль, на мой взгляд, «Народ» был единственным вменяемым местом для хранения больших файлов.

1 комментарий   18 января 2013 00:15

Sleepsort

Читал на «хабре» про алгоритм sleepsort и благополучно забыл про него. Сегодня решил посмотреть, как его можно реализовать на C#.

Первой идеей было использовать Parallel.ForEach, но, как выяснилось, количество активных потоков в нём регулируется количеством ядер процессора и фазой Луны — стартуют они не одновременно, а ждут завершения предыдущих. Поэтому сделал через Thread:

using System;
using System.Threading;

class SleepSort
{
    static void ThreadWorker(object number)
    {
        Thread.Sleep(100 * (int)number);
        Console.WriteLine(number);
    }

    static public void Sort(int[] numbers)
    {
        foreach (int number in numbers)
        {
            new Thread(ThreadWorker).Start(number);
        }
    }
}

class Program
{
    static void Main()
    {
        SleepSort.Sort(new int[] { 7, 9, 8, 10, 6, 5, 1, 3, 2, 4 });
        Console.ReadKey(true);
    }
}

Умножение на 100 при задержке сделано неспроста — точности при отдельных миллисекундах не получается и потоки начинают завершаться в абы каком порядке. Конечно, практического применения у алгоритма нет, но выгядит весело =)

Нет комментариев   16 января 2013 01:45

Век живи — век учись

А вы знали, что лишние подсказки из полей ввода с автодополнением можно удалить нажатием Delete? Я не знал. Схожее чувство было, когда я узнал что в «проводнике» Windows можно перейти к файлу быстро напечатав первые буквы его названия.

Обидно, что сейчас вместо идеи «есть много способов сделать это» операционные системы потихоньку переходят к максимальному упрощению — всё-таки «интуитивный» и «удобный» далеко не всегда значат одно и то же. Например, клавиатура в устройствах на iOS полностью интуитивная, клавиатура Swype для Android — нет. Но если потратить время на чтение инструкции, вторая будет намного удобнее и быстрее.

Нет комментариев   13 января 2013 14:46

Beep в Windows 7

В Windows XP функция Beep пищала системным динамиком, но в «Семёрке» её поведение изменили, теперь звук перенаправляется на звуковую карту, что совсем не так весело.

Как выяснилось, пищать спикером всё ещё можно, но делать это придется напрямую (по ссылке пример на C#). Вот, если кому надо, то же самое, но на Delphi:

function Inp32(PortAdr: word): byte; stdcall; external 'inpout32.dll';
function Out32(PortAdr: word; Data: byte): byte; stdcall; external 'inpout32.dll';

procedure MyBeep(tone, duration: integer);
var
  n,m: integer;
begin
  if tone <> 0 then
  begin
    n := 1193180 div tone;
    Out32($43,182);
    Out32($42,n and $FF);
    Out32($42,(n shr 8) and $FF);
    m := Inp32($61);
    Out32($61,m or $03);
  end;
  Sleep(duration);
  m := Inp32($61);
  Out32($61,m and $FC);
end;

Теперь пара слов об inpout32.dll. Скачать её можно отсюда, это модифицированная версия, которая, несмотря на название, работает и в x32 и в x64 редакциях Windows. Для прямого доступа к портам устанавливается драйвер, что накладывает ограничения:

64-битная версия драйвера подписана, так что проблем с разрешением на установку не будет.

2 комментария   10 января 2013 21:06

Небольшое обновление

Чуть доработал движок блога — теперь в комментариях можно использовать Gravatar. А тот, кто аватарку не указал, получит рожицу, автоматически сгенерированную на основе имени, примерно вот такую:

Изображение Изображение Изображение
2 комментария   8 января 2013 23:25

Про border-style: dotted

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

<!DOCTYPE html>
<html><head><title>Test page</title>
<style>
hr {
  border: 0;
  width: 20px;
  height: 1px;
  border-bottom: 1px black dotted;
  display: inline-block;
}
div.test {
  width: 10px;
  height: 10px;
  border-left: 1px black dotted;
  border-bottom: 1px black dotted;
}
</style>
</head><body><hr><div class="test"></div></body></html>

Читать далее

Нет комментариев   6 января 2013 21:31

Wive-NG или делаем из ASUS RT-N10+ конфетку

Когда мне провели оптоволокно, я пошел в магазин и купил первый попавшийся роутер — ASUS RT-N10+. Вот он:

Изображение

Обошлось это чудо в 1300 рублей. Родная прошивка была очень удобной, с «домохозяйским» интерфейсом, но тормозила. Через пару лет выяснилось, что, скорости больше 30 мегабит этот девайс уже не переваривает — торрент клиент на этой скорости завешивал его практически полностью.

Тогда я стал искать альтернативные прошивки. Самая известная — DD-WRT. Я поставил сборку под мой роутер, но был разочарован — скорость работы не возросла (как я узнал позже, драйвера использовались те же, что в родной прошивке), а те настройки, которые до этого делались парой кликов (вроде переброса порта для IPTV) можно было сделать только через правку конфигов. И это при том, что веб интерфейс просто перегружен всевозможными опциями. Других прошивок я на тот момент не нашел и на это дело забил.

Но совсем недавно я наткнулся на Wive-NG и, о чудо, у них оказалась сборка под моё железо! Все нужные настройки остались на месте, а роутер перестал резать скорость (оказывается, у меня 20 мегабит на передачу). Расскажу об установке.

Читать далее

314 комментариев   4 января 2013 15:13

Снеговик

С тех пор, как в интернет-домены внедрили поддержу юникода, было много споров. Например, китайский адрес не сможет набрать никто кроме самих китайцев из-за отсутствия нужных раскладок клавиатуры. А как вам адрес, который в принципе нельзя набрать, потому что там нарисован снеговик? Вот он — ?.net =)

Конечно, это такая же «буква» как и остальные — можно добавить его, отредактировав раскладку клавиатуры, или скопировать из таблицы символов. Или использовать Punycode: xn--n3h.net. Но все равно впечатляет.

Нет комментариев   1 января 2013 22:14

? С новым годом! ?

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

Нет комментариев   1 января 2013 21:54