- 1
- 2
- 3
- 4
- 5
- 6
if ("0 but true" == 0) {
print "Zero! ";
}
if ("0 but true") {
print "But true...";
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−159
if ("0 but true" == 0) {
print "Zero! ";
}
if ("0 but true") {
print "But true...";
}
The current default implementation always returns true without actually doing anything. Actually, it returns "0 but true" which is true but zero. That way you can tell if the return value is genuine or just the default.
http://ideone.com/8FzrUI
Zero! But true...
+156
function t($text, $parameters = null) {
$lang = empty($_COOKIE['lang']) ? 'ru' : $_COOKIE['lang'];
$result = !array_key_exists($text, Application_Model_Translate::$lang_package) || ($lang == 'ru') ? $text :
Application_Model_Translate::$lang_package[$text][(int) ($lang == 'en')];
if (isset($parameters)) {
if (!is_array($parameters))
$parameters = array($parameters);
foreach ($parameters as &$param)
$param = addslashes($param);
eval('$result = sprintf($result, "'. implode('","', $parameters) . '");');
}
return $result;
}
+17
#include <boost/spirit/include/phoenix_fusion.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <iostream>
#define GEN_MACRO_0(X, Y) \
((X, Y)) GEN_MACRO_1
#define GEN_MACRO_1(X, Y) \
((X, Y)) GEN_MACRO_0
#define GEN_MACRO_0_END
#define GEN_MACRO_1_END
#define SHOW(name,val) \
std::cout << name << " : " << val ;
#define SHOW_TUPLE(r,_,tupple) \
SHOW( "1st",BOOST_PP_TUPLE_ELEM(2,0,tupple)) \
SHOW("\t2nd",BOOST_PP_TUPLE_ELEM(2,1,tupple)) \
std::cout << std::endl;
#define OUTPUT (ADD_PAREN_1 INPUT,_END)
#define SHOW_NODES(seq) \
BOOST_PP_SEQ_FOR_EACH(SHOW_TUPLE,_, \
BOOST_PP_CAT(GEN_MACRO_0 seq,_END) )
int main() {
SHOW_NODES(
("cock","unskill")
("rock","hard")
("price","over 100500")
)
}
Годнокодец из boost::fusion.
http://coliru.stacked-crooked.com/a/c516a67930a9c1a8
+148
$('#navi').before('<audio autoplay src="http://driverjs.webservis.ru/income.wav"></audio>');
Я, конечно, понимаю, что это нифига не форум программистов. Но все-таки, может найдется X-перт, который скажет мне, какого хера этот код работает, только если я предварительно зайду на адрес звука и нажму плей? Т.е. без кэшированного звука воспроизведения нет. Opera/Chrome/Firefox.
+115
/**
* Converts the Accpac fields to names that do not
* require Sherlock Holmes to decipher.
*
* @param arcus Accpac customer object
*/
public Store(final ARCus arcus) {
name = trim(arcus.getIdcust());
description = trim(arcus.getNamecust());
addressLine1 = trim(arcus.getTextstre1());
addressLine2 = trim(arcus.getTextstre2());
addressLine3 = trim(arcus.getTextstre3());
addressLine4 = trim(arcus.getTextstre4());
suburb = trim(arcus.getNamecity());
state = trim(arcus.getCodestte());
postalCode = trim(arcus.getCodepstl());
country = trim(arcus.getCodectry());
contactName = trim(arcus.getNamectac());
phone1 = trim(arcus.getTextphon1());
phone2 = trim(arcus.getTextphon2());
email = trim(arcus.getEmail2());
department = arcus.getAudtorg();
}
+14
#define MAX_MONSTER_ID 600
#define MAX_ITEM_FOR_MONSTER 40
for (int j=0; j < 1000; j++)
{
AllMobItemsDrop[j].MMap = 0;
AllMobItemsDrop[j].MMinLvl = 0;
AllMobItemsDrop[j].MMaxLvl = 0;
AllMobItemsDrop[j].IDropRate = 0;
AllMobItemsDrop[j].IGroup = 0;
AllMobItemsDrop[j].IIndex = 0;
AllMobItemsDrop[j].IMinLvl = 0;
AllMobItemsDrop[j].IMaxLvl = 0;
AllMobItemsDrop[j].ILvlRate = 0;
AllMobItemsDrop[j].IMinOpt = 0;
AllMobItemsDrop[j].IMaxOpt = 0;
AllMobItemsDrop[j].IOptRate = 0;
AllMobItemsDrop[j].ISkill = 0;
AllMobItemsDrop[j].ISkillRate = 0;
AllMobItemsDrop[j].ILuck = 0;
AllMobItemsDrop[j].ILuckRate = 0;
AllMobItemsDrop[j].IMinExc = 0;
AllMobItemsDrop[j].IMaxExc = 0;
AllMobItemsDrop[j].IExcRate = 0;
AllMobItemsDrop[j].IAnc = 0;
AllMobItemsDrop[j].IAncRate = 0;
}
AllMobArrayMaxItem = 0;
for (int i=0; i < MAX_MONSTER_ID; i++)
{
for (int j=0; j < MAX_ITEM_FOR_MONSTER; j++)
{
ItemsDrop[i][j].MMap = 0;
ItemsDrop[i][j].MMinLvl = 0;
ItemsDrop[i][j].MMaxLvl = 0;
ItemsDrop[i][j].IDropRate = 0;
ItemsDrop[i][j].IGroup = 0;
ItemsDrop[i][j].IIndex = 0;
ItemsDrop[i][j].IMinLvl = 0;
ItemsDrop[i][j].IMaxLvl = 0;
ItemsDrop[i][j].ILvlRate = 0;
ItemsDrop[i][j].IMinOpt = 0;
ItemsDrop[i][j].IMaxOpt = 0;
ItemsDrop[i][j].IOptRate = 0;
ItemsDrop[i][j].ISkill = 0;
ItemsDrop[i][j].ISkillRate = 0;
ItemsDrop[i][j].ILuck = 0;
ItemsDrop[i][j].ILuckRate = 0;
ItemsDrop[i][j].IMinExc = 0;
ItemsDrop[i][j].IMaxExc = 0;
ItemsDrop[i][j].IExcRate = 0;
ItemsDrop[i][j].IAnc = 0;
ItemsDrop[i][j].IAncRate = 0;
}
ArrayMaxItem[i] = 0;
}
Рабочий код с одного сервера. Код инициализации класа с заполнением структуры. А ведь это можно было уместить в:
memset(&AllMobItemsDrop, 0, sizeof(AllMobItemsDrop));
memset(&ItemsDrop, 0, sizeofe(ItemsDrop));
+81
Если ты имеешь в виду, что появляются полосы прокрутки и
уродуют окно или stringgrid, то просто оставляй "запас" в
несколько пикселей, т.к. на разных системах может быть разная
ширина краев формы и прочих элементов.
А что, я еще и код писать должен чтобы какие-то экзотичные
темы винды поддерживать? Нет уж, я лучше несколько
пикселей оставлю запаса.
Вся суть дельфинов
http://www.gamedev.ru/code/forum/?id=168899
+54
$res = mysql_query("SELECT * FROM `users`");
while ($arr = mysql_fetch_assoc($res))
{
$res1 = mysql_query("SELECT * FROM `cabinet_users` WHERE `nick`='$arr[user]'");
$arr1 = mysql_fetch_assoc($res1);
...
}
JOIN'ы для слабаков.
−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.
+128
f = expr `catches` [Handler (\ (ex :: ArithException) -> handleArith ex), Handler (\ (ex :: IOException) -> handleIO ex)]
Собственно это пример как в хаскеле перехватывать исключения из одного выражения expr.
Выглядит конечно отстойно. Очень многословно и судя по всему метода проще нет. И понятное дело, в чистых ленивых функциях это не работает. Ловить исключения можно только в грязных IO-функциях, тк сигнатура такова: catches :: IO a -> [Handler a] -> IO a