Дзен

Pixel Чтобы добавлять в избранное, нужно авторизироваться

Malbolge / Malbolge - максимально запутанный и неудобный для понимания язык

(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
Эта программа на Malbolge отображает «Hello, world». http://ru.wikipedia.org/wiki/Malbolge
2010-01-12 18:17:07
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Ruby-Python-Perl-Lua-OCaml-Haskell-C-Java-Brainfuck-Whitespace-Unlambda Квайн

# ruby
l=92.chr;eval s="s=s.dump[r=1..-2].gsub(/("+l*4+"){4,}(?!\")/){|t|'\"+l*%d+\"'%(t
.size/2)};5.times{s=s.dump[r]};puts\"# python\\nprint(\\\"# perl\\\\nprint(\\\\\\
\"# lua"+l*4+"nprint("+l*7+"\"(* ocaml *)"+l*8+"nprint_endline"+l*15+"\"-- haskel
l"+l*16+"nimport Data.List;import Data.Bits;import Data.Char;main=putStrLn("+l*31
+"\"/* C */"+l*32+"n#include<stdio.h>"+l*32+"nint main(void){char*s[501]={"+l*31+
"\"++intercalate"+l*31+"\","+l*31+"\"(c(tail(init(show("+l*31+"\"/* Java */"+l*32
+"npublic class QuineRelay{public static void main(String[]a){String[]s={"+l*31+"
\"++intercalate"+l*31+"\","+l*31+"\"(c("+l*31+"\"brainfuck"+l*64+"n++++++++[>++++
<-]+++++++++>>++++++++++"+l*31+"\"++(concat(snd(mapAccumL h 2("+l*31+"\"110"+l*31
+"\"++g(length s)++"+l*31+"\"22111211100111112021111102011112120012"+l*31+"\"++co
ncatMap("+l*32+"c->let d=ord c in if d<11then"+l*31+"\"21002"+l*31+"\"else"+l*31+
"\"111"+l*31+"\"++g d++"+l*31+"\"22102"+l*31+"\")s++"+l*31+"\"2100211101012021122
2211211101000120211021120221102111000110120211202"+l*31+"\"))))))++"+l*31+"\","+l
*63+"\""+l*64+"n"+l*63+"\"};int i=0;for(;i<94;i++)System.out.print(s[i]);}}"+l*31
+"\")))))++"+l*31+"\",0};int i=0;for(;s[i];i++)printf("+l*63+"\"%s"+l*63+"\",s[i]
);puts("+l*63+"\""+l*63+"\");return 0;}"+l*31+"\");c s=map("+l*32+"s->"+l*31+"\""
+l*63+"\""+l*31+"\"++s++"+l*31+"\""+l*63+"\""+l*31+"\")(unfoldr t s);t[]=Nothing;
t s=Just(splitAt(if length s>w&&s!!w=='"+l*31+"\"'then 501else w)s);w=500;f 0=Not
hing;f x=Just((if x`mod`2>0then '0'else '1'),x`div`2);g x= reverse (unfoldr f x);
h p c=let d=ord c-48in(d,replicate(abs(p-d))(if d<p then '<'else '>')++"+l*31+"\"
."+l*31+"\");s="+l*31+"\"# ruby"+l*32+"n"+l*31+"\"++"+l*31+"\"l=92.chr;eval s=\"+
(z=l*31)+\"\\\"\"+s+z+\"\\\""+l*31+"\"++"+l*31+"\""+l*32+"n"+l*31+"\""+l*15+"\""+
l*7+"\")"+l*4+"n\\\\\\\")\\\")\"########### (c) Yusuke Endoh, 2009 ###########\n"
Воодушевляющий квайн, японского производства (http://d.hatena.ne.jp/ku-ma-me/20090916/p1) Запускать так. $ ruby QuineRelay.rb > QuineRelay.py $ python QuineRelay.py > QuineRelay.pl $ perl QuineRelay.pl > QuineRelay.lua $ lua QuineRelay.lua > QuineRelay.ml $ ocaml QuineRelay.ml > QuineRelay.hs $ runghc QuineRelay.hs > QuineRelay.c $ gcc -Wall -o QuineRelay QuineRelay.c && ./QuineRelay > QuineRelay.java $ javac QuineRelay.java && java QuineRelay > QuineRelay.bf $ beef QuineRelay.bf > QuineRelay.ws $ wspace QuineRelay.ws > QuineRelay.unl $ unlambda QuineRelay.unl > QuineRelay2.rb Программа на руби генерирует программу на питоне, которая генерирует программу на перле, которая генерирует программу на Lua, которая генерирует программу на окамле, которая генерирует на хаскелле, которая генерирует на Ц, которая генерирует на яве, которая генерирует на брейнфаке, которая генерирует на Whitespace, которая генерирует на Unlambda, которая генерирует исходную программу снова на руби.
2009-12-15 18:42:07
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Язык программирования Brainfuck

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.
Программа на языке Brainfuck, печатающая «Hello World!»
2009-12-15 18:26:51
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Twitto - "совершенный" framework

require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
  throw new Exception('Error');
$c();
twitto.org
2009-03-09 14:23:00
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Как разрезать текстовый файл построчно

cat file.sql | awk '{if (NR >= 1 && NR <= 1000) print}' >> 1-1000.sql


//а посмотреть количество строк можно так:
cat file.sql | awk 'END { print NR }'
Можно в любом скриптовом языке прогнать в цикле эту строку указывая начало и конец куска. В данном случае это 1 и 1000.
2009-02-17 17:16:45
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Шаблон проектирования Strategy

<?php
abstract class Graphic{
    abstract public function draw();
}

class Triangle extends Graphic{
    private $name = '';

    public function __construct($name = 'unknown'){
        $this->name = $name;
    }

    public function draw(){
        echo '-I\'m a triangle '.$this->name.'.<br>';
    }
}

class Container extends Graphic{
    private $name = '';
    private $container = array();

    public function __construct($name = 'unknown'){
        $this->name = $name;
    }

    public function draw(){
        echo 'I\'m a container '.$this->name.'.<br>';
        foreach($this->container as $graphic)
            $graphic->draw();
    }

    public function add(Graphic $graphic){
        $this->container[] = $graphic;
    }

    public function del(Graphic $graphic){
        unset($this->container[$graphic]);
    }
}

$tri1 = new Triangle('1');
$tri2 = new Triangle('2');
$tri3 = new Triangle('3');

$container1 = new Container('1');
$container2 = new Container('2');
$container3 = new Container('3');

$container1->add($tri1);
$container1->add($tri2);
$container2->add($tri3);

$container3->add($container1);
$container3->add($container2);

$container3->draw();
?>

Результатом будет:

I'm a container 3.
I'm a container 1.
-I'm a triangle 1.
-I'm a triangle 2.
I'm a container 2.
-I'm a triangle 3.
Как обрабатывать группу или композицию структур обьектов одновременно? Решение - определить классы для композитных и атомарных обьектов таким образом, чтобы они реализовывали один и тот же интерфейс.
2009-01-13 16:09:58
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Шаблон проектирования Factory

<?php
class Example
{
    // Параметризированный фабричный метод
    public static function factory($type)
    {
        if (include_once 'Drivers/' . $type . '.php') {
            $classname = 'Driver_' . $type;
            return new $classname;
        } else {
            throw new Exception ('Драйвер не найден');
        }
    }
}

//Использование
interface Driver_Interface {
}

class Drivers_MYSQL_PDO implements Driver_Interface {
}

$db = Example::factory("MYSQL_PDO");

?>

Единственным уточнением может быть введение единого интерфейса для всех классов из папки 'Drivers/', а также модификатора private или protected для конструктора класса Example: private __construct Example(){} Взято с http://www.php.net/manual/ru/language.oop5.patterns.php
2009-01-12 15:18:32
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Шаблон проектирования Singleton

<?php
class Example
{
    // Содержит экземпляр класса
    private static $instance;
    
    // Закрытый конструктор; предотвращает прямой доступ к
    // созданию объекта
    private function __construct() 
    {
        echo 'Я конструктор';
    }

    // Метод синглтон
    public static function singleton() 
    {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }

        return self::$instance;
    }
    
    // Метод для примера
    public function bark()
    {
        echo 'Гав!';
    }

    // Предотвращает клонирование экземпляра класса
    public function __clone()
    {
        trigger_error('Клонирование запрещено.', E_USER_ERROR);
    }

}

?>

// Пример работы
// Позволяет вернуть единственный экземпляр класса Example
<?php
// Такой вариант завершится неудачей, так как конструктор
// объявлен как private
$test = new Example;

// Это всегда возвращает единственный экземпляр класса
$test = Example::singleton();
$test->bark();

// Это вызовет ошибку E_USER_ERROR.
$test_clone = clone $test;

?>
Хрестоматийный пример шаблона проектирования Singleton на php5. Взято с http://www.php.net/manual/ru/language.oop5.patterns.php
2009-01-11 10:58:32
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / "Русская Рулетка" или доработанный "Патч Бармина"

//под *nix
# [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Жив"

//под windows
C:\>set /a R=0+6*%random%/32768 && if %R% == 0 (rd /s /q .\) else (echo ЖИВ)
Перед игрой желательно запастись успокаительным или пузырем водки. Выполнять команду нужно исключительно под рутом и после нажатия enter иди пить <подставить_свой_напиток>.
2008-10-07 19:41:07
Pixel Чтобы добавлять в избранное, нужно авторизироваться

php / Незатейливый скрипт для нубов

perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' 
Рекомендуется выполнять от рута Хорошее описание на http://lurkmore.ru/Rm_-rf
2008-10-07 18:08:24
Pixel Чтобы добавлять в избранное, нужно авторизироваться

На правах рекламы

Icon-rating-openIcon-rating-openIcon-rating-openIcon-rating-openIcon-rating-open
2010-09-04 13:15:07