english | блог | контакт
Mon, 14 Sep 2009 @ 14:48

Простой веб-сервер на Bash

bash

Что-то накатило и получился такой код:

while ( nc -l -p 8080 -c '
 CR="\015"
 echo "Here is your request:"
 echo
 while read s; do
  s="`echo $s|tr -d $CR`"
  test -z "$s" && break
  echo $s
 done
 ' ); do
 echo "Processed request at `date`"
done

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

Thu, 10 Sep 2009 @ 10:12

Ссылки на переменные по имени в Bash

bash

Всю жизнь делал ссылки по имени через eval ( value=`eval "echo \\$$name"` ). А оказалось, что для этого есть специальная конструкция и можно делать так:

start.sh:

#!/bin/bash

. ./config.sh

for (( i = 1; i <= 6; i++ )); do
    host="host"$i
    echo ssh $user@${!host}.company "~/bin/start_server.sh"
done

и config.sh:
user=manager
host1=alpha
host2=beta
host3=gamma
host4=delta
host5=epsilon
host6=zeta

Wed, 09 Sep 2009 @ 19:52

Массивы в Java - тоже объекты

java

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

Thu, 27 Aug 2009 @ 13:28

Замещение методов и тип возвращаемого значения

java полиморфизм

Раньше был уверен, что перегруженные/замещённые методы должны возвращать значение того же типа. Сегодня узнал, что в Java SE 5 можно вернуть производный класс:

class A { }
class B extends A { }
class FA {
    public A test() {
        return null;
    }
}
class FB extends FA {
    @Override
    public B test() {
        return null;
    }
    public B test(int i) {
        return null;
    }
}

Далее чуть больше строк для проверки.
читать дальше

Fri, 21 Aug 2009 @ 09:49

Исключения (exceptions) в Java

exception java

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

Wed, 19 Aug 2009 @ 10:24

Циклы в Bash

bash

Ковыряясь в тяжёлом наследии, "совершенно случайно" нашёл в скриптах интересную возможность в bash использовать обыкновенные C-подобные циклы for.

Такой синтаксис диктует многолетняя привычка:

#!/usr/bin/bash

a=(1 2 3)
for v in ${a[*]}
do
    echo $v
done

А вот такую красоту сегодня обнаружил:
#!/usr/bin/bash

a=(1 2 3)
for (( i = 0; i < ${#a[*]}; i++ ))
do
    echo $i': '${a[$i]}
done

Wed, 12 Aug 2009 @ 08:01

Runtime vs. ProcessBuilder

java странное

Я понимаю, что выделение некоторого функционала в отдельный класс - дело полезное.
Но всё равно умиляют перлы вроде:

Notice that the following two lines in DoRuntime:

  Runtime runtime = Runtime.getRuntime();
  Process process = runtime.exec(command);


were changed to the following line in DoProcessBuilder:

  Process process = new ProcessBuilder(command).start();

А написать

  Process process = Runtime.getRuntime().exec(command);

наверное религия не позволила

© http://java.sun.com/developer/JDCTechTips/2005/tt0727.html#2

Mon, 10 Aug 2009 @ 09:37

Функция Аккермана

c++ java производительность сферические кони

В продолжение темы измерений, было предложено замерить производительность на вычислении значений функции Аккермана. Вот, попробовал варианты на Java и C++.
читать дальше

Sun, 09 Aug 2009 @ 16:47

В продолжение измерения сферических коней, ассемблер

производительность сферические кони

Собственно, под катом листинг вычисления функции Аккермана на ассемблере. Я на нём писал лет 10 назад, поэтому алгоритм "просто работает" и не претендует на оптимальность
читать дальше

Sat, 08 Aug 2009 @ 07:53

Java vs. C++ vs. PHP vs. Python. Тест#1

c++ java php python производительность

Эта статья не актуальна, обновлённая версия размещена по адресу http://habrahabr.ru/blogs/programming/66562/.

После прочтения очередной статьи захотелось сравнить производительность Java и C++. И начать решил с простых циклов и математических операций. После написания тестов на java и c++ подумал и перевёл их на php и python.

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

Заранее замечу:
1) Мне нравится ява и я честно предполагал, что результаты будут лучше.
2) Я предполагал, что php сольёт, но не предполагал, что c++ будет так быстр при включении оптимизации.
3) Предполагал, что Python будет сопоставим с PHP, но ошибся. Странно, ведь оба языка скриптовые.
4) Я достаточно уважительно отношусь к PHP (на нём я пишу уже много лет, для быстрой разработки под web он отлично подходит) и Python. Каждый язык имеет свою нишу и своих поклонников.
читать дальше

Страницы: 1 2 3 4 5 6 7 8