- 1
if( str[0] == '<' || str[1] == '?' || str[2] == 'x' || str[3] == 'm' || str[4] == 'l') {...}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+30
if( str[0] == '<' || str[1] == '?' || str[2] == 'x' || str[3] == 'm' || str[4] == 'l') {...}
Проверка на xml-ность
+154
var num_normalize = function (num) {
if (typeof num == 'string') {
if (num.test('.')) {
return parseFloat(num).toFixed(2);
}
else {
return parseInt(num);
}
}
else if (parseInt(num) == parseFloat(num)) {
return parseInt(num);
}
else return parseFloat(num).toFixed(2);
};
Когда-то писал функцию для приведение чисел к одному виду, которые иногда приходили в виде стринги.
За говнокод сойдет?
−126
1CClientBankExchange
ВерсияФормата=1.01
Кодировка=Windows
Получатель=
ДатаНачала=25.09.2012
ДатаКонца=25.09.2012
...
СекцияРасчСчет
...
КонецРасчСчет
СекцияДокумент=Платежное поручение
...
КонецДокумента
КонецФайла
Формат файла: Стандарт обмена с системами "Клиент банка"
http://v8.1c.ru/edi/edi_stnd/100/101.htm
Пидорва изобрела ini-файлы. Но убило не это, а это:
>Кодировка=Windows
+161
eval( array.join('+') );
Конечно, я понимаю что всякие Haskel там, то, сё...
+175
with Ada.Integer_Text_Io, Ada.Text_Io;
use Ada.Integer_Text_Io, Ada.Text_Io;
procedure Test is
v : Long_Float := 26.0;
v1 : float := 26.0;
begin
while (v<27.0) loop
Put_Line("Value = " & Long_Float'image(v));
v:=v+0.2;
end loop;
while (v1<27.0) loop
Put_Line("Value = " & float'image(v1));
v1:=v1+0.2;
end loop;
end;
ideone.com/pXIhvY
Безопасный военный язык, да.
+132
main = do
print [1 .. 9]
print [1, 3 .. 9]
print [1, 3 .. 10]
print [26.0, 26.2 .. 27.0]
print [25.5..30.0]
print [25, 25 .. 25]
В хаскеле сломан генератор списков. :(
http://ideone.com/AvBSuz
+91
public static
String readFile(String file) {
return Read.file( Reflection.getCallerClass(2), file,"\n");
}
public static
String readFile(Class c, String file, final String lineBreaker) {
return Read.stream(c.getResourceAsStream(file),lineBreaker);
}
Я уже как-то раз наступил на эту хрень.
Но ничё - сегодня снова вот решил написать - удобно ведь.
−82
{-# LANGUAGE ExistentialQuantification,
DeriveDataTypeable,
PatternSignatures #-}
import Data.Typeable
import Control.Concurrent
import Control.Concurrent.MVar
import Control.Concurrent.Chan
-- Core data types
data Message = forall t . Typeable t => Message t | StopMessage
deriving Typeable
data Handler = forall t . Typeable t => Handler (t -> IO ())
-- Worker thread
data Worker = Worker (Chan Message) (MVar ())
workerThread :: [Handler] -> Chan Message -> MVar () -> IO ()
workerThread handlers chan finish = loop where
loop = do
message <- readChan chan
case message of
StopMessage -> putMVar finish ()
Message val -> do
foldr (tryHandler val) (putStrLn "Unhandled message") handlers
loop
tryHandler val (Handler h) rest = maybe rest h (cast val)
startWorker :: [Handler] -> IO Worker
startWorker handlers = do
chan <- newChan
finish <- newEmptyMVar
forkIO (workerThread handlers chan finish)
return $ Worker chan finish
send :: Typeable m => Worker -> m -> IO ()
send (Worker chan _) message = do
writeChan chan $ Message message
stopWorker :: Worker -> IO ()
stopWorker (Worker chan finish) = do
writeChan chan $ StopMessage
takeMVar finish
-- Some tests
data Test = Test Bool String deriving Typeable
intHandler :: Int -> IO ()
intHandler val = putStrLn $ "Int: " ++ show (val * 2)
strHandler :: String -> IO ()
strHandler val = putStrLn $ "String: " ++ reverse val
testHandler :: Test -> IO ()
testHandler (Test b s) = putStrLn $ "Test: " ++ show b ++ " " ++ show s
main = do
w <- startWorker [
Handler intHandler,
Handler (\(val::Char) -> putStrLn $ "Char: " ++ show val),
Handler strHandler,
Handler testHandler]
send w (5::Int)
send w False
send w 'a'
send w "foo"
send w (Test True "bar")
stopWorker w
putStrLn "Finished!"
Вот такая вот портянка была написана под влиянием дискуссии с HaskellGovno http://govnokod.ru/11968, и недавней его просьбой рассказать об общении потоков в хаскеле.
Код запускает тред, в который можно передавать различные сообщения (ограничение только одно - тип сообщения должен быть инстансом тайпкласса Typeable). В треде исполняются указанные хендлеры, каждый из которых ловит свой тип сообщений.
P.S. Для неимеющих хаскеля, но желающих посмотреть на работу кода: http://ideone.com/OMVamc.
+25
template <typename T> struct Pool { static std::vector<T> data; };
std::vector<tbphys::Body> Pool<tbphys::Body>::data;
std::vector<Ball> Pool<Ball> ::data;
std::vector<Wall> Pool<Wall> ::data;
std::vector<Bat> Pool<Bat> ::data;
std::vector<Brick> Pool<Brick> ::data;
template <typename T, typename U> struct List
{
typedef T Head;
typedef U Tail;
};
struct End {};
typedef List<tbphys::Body, List<Brick, List<Bat, List<Ball, List<Wall, End> > > > > Components;
typedef List<Brick, List<Bat, List<Ball, List<Wall, End> > > > DrawableComponents;
typedef List<Brick, List<Ball, List<Bat, End> > > MovableComponents;
const size_t badindex = size_t(-1);
struct GameBody
{
size_t self,body,bat,brick,wall,ball;
template <typename T> size_t& IndexOf ();
template <> size_t& IndexOf <tbphys::Body> () {return body;}
template <> size_t& IndexOf <Bat > () {return bat;}
template <> size_t& IndexOf <Brick> () {return brick;}
template <> size_t& IndexOf <Wall > () {return wall;}
template <> size_t& IndexOf <Ball > () {return ball;}
template <typename T>
T& AddComponent ()
{
size_t index = Pool<T>::data.size();
Pool<T>::data.resize(index+1);
T& result = Pool<T>::data[index];
result.hostIndex = self;
IndexOf<T>() = index;
return result;
}
template <typename T> void SetBadIndex ()
{
IndexOf<T::Head> () = badindex;
SetBadIndex<T::Tail> ();
}
template <> void SetBadIndex <End> () {}
};
Сколько тут говнопаттернов крестоблядского крестоязыка?
−153
class ProblemsController < ApplicationController
MAX_TAGS_PER_PROBLEM = 5
def self.MAX_TAGS_PER_PROBLEM
MAX_TAGS_PER_PROBLEM
end
end