- 1
../../../../archive/03_Production/03_Programming/cdn/res/map_1_bg.png
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+142
../../../../archive/03_Production/03_Programming/cdn/res/map_1_bg.png
Мы не ищем простых путей
+142
enum class TClockWise
{
CW=true,
CCW=false
};
template<class T>
std::ostream& operator<<(std::ostream &out, const TClockWise Cow)
{
switch(Cow)
{
case TClockWise::CW: out << "CW"; break;
case TClockWise::CCW: out << "CCW"; break;
default: MUST_NEVER_CAL_THAT;
}
return out;
}
+142
class SMSSender
{
const string API_URL = "http://api.sms****.ru/?";
string base_URL = "";
private string _email;
private string _password;
XmlDocument doc = new XmlDocument();
Dictionary<string,string> parameters;
public SMSSender(string email, string password)
{
_email = email;
_password = password;
base_URL = API_URL + "email=" + _email + "&password=" + _password + "&";
}
public bool LoginAttempt()
{
parameters = new Dictionary<string, string>();
parameters.Add("method", "login");
return APIRequest(parameters);
}
public KeyValuePair<int,object> GetCreditsLeft()
{
parameters = new Dictionary<string, string>();
parameters.Add("method", "get_profie");
APIRequest(parameters);
return new KeyValuePair<int, object>(0, int.Parse(GetValueByName("credits")));
}
public int SendSMS(string senderName, string internationalNumber, string text)
{
parameters = new Dictionary<string, string>();
parameters.Add("method", "push_msg");
parameters.Add("text", text);
parameters.Add("phone", internationalNumber);
parameters.Add("sender_name", senderName);
APIRequest(parameters);
return int.Parse(GetValueByName("n_raw_sms"));
}
public KeyValuePair<int, object> GetLastError()
{
return new KeyValuePair<int, object>(int.Parse(doc.GetElementsByTagName("err_code")[0].InnerText), doc.GetElementsByTagName("text")[0].InnerText);
}
private string GetValueByName(string keyToReturn)
{
return doc.GetElementsByTagName(keyToReturn)[0].InnerText;
}
private bool APIRequest(Dictionary<string, string> param)
{
string URL = base_URL;
foreach (KeyValuePair<string, string> p in param)
URL = URL + p.Key + "=" + p.Value + "&";
doc.Load(URL);
if (GetLastError().Key == 0) return true;
else throw new SMSSenderException(GetLastError().Key, GetLastError().Value.ToString());
}
}
class SMSSenderException : Exception
{
int _errorCode;
string _Message;
public SMSSenderException(int errorCode, string Message)
{
_errorCode = errorCode;
_Message = Message;
}
public int ErrorCode
{
get { return _errorCode; }
}
override public string Message
{
get { return _Message; }
}
}
}
API сервер отправки принимает запросы вида http://api.****sms.ru?method=send_msg&phone=+79 123456789&text=abcdef, возвращает простейший XML с err_code и результатом выполнения запроса.
Казалось бы, 20 строчек кода и проблема решена? Нифига, без специального класса для этого не обойтись. Совсем никак. И уж совсем ничего нельзя делать без специального Exception для этого дела.
+142
CREATE TABLE `users` (
нормальные поля типо имя
`ff` text NOT NULL,
`da` char(100) NOT NULL,
Дали мне дампик таблицы... В полях ДА! вот это...
00A00A00000A0A0AA793655265A00AA000000A00 00A000A72540000AA0A00560A000000A9A990000 0000AAA00000104A004010A00A000A0A0A0AA599 135A00A000A0A0000A00000000A4A450000A0AAA 010AAAA000AA9A0000AAAAA0AAA0A000104AA04A AAA000A0000A00000000AAA000A0A00000000A00 0070000AA00A0000000000A0000000A00000A080 900A0000000A00A00000AAA0000A000A00000000 A00000A0A000000000000070000A00000A000000 00A00000000000A000001A1A0000000000000000 0A00000A00000000A00000000A0A0A000A000A00 0000000000000A00AAAA00AAA000A0A00A0000A0 00AAAAA0A0AA0A00A000','01000000000100000 000000001B261000000000000000000000000000 0000000000000000000000000000000000000000 000
+142
static inline gboolean is_alt(const gchar* string)
{
return ((string[0] == '<') &&
(string[1] == 'a' || string[1] == 'A') &&
(string[2] == 'l' || string[2] == 'L') &&
(string[3] == 't' || string[3] == 'T') &&
(string[4] == '>'));
}
static inline gboolean is_ctl (const gchar* string)
{
return ((string[0] == '<') &&
(string[1] == 'c' || string[1] == 'C') &&
(string[2] == 't' || string[2] == 'T') &&
(string[3] == 'l' || string[3] == 'L') &&
(string[4] == '>'));
}
static inline gboolean is_modx(const gchar* string)
{
return ((string[0] == '<') &&
(string[1] == 'm' || string[1] == 'M') &&
(string[2] == 'o' || string[2] == 'O') &&
(string[3] == 'd' || string[3] == 'D') &&
(string[4] >= '1' && string[4] <= '5') &&
(string[5] == '>'));
}
static inline gboolean is_ctrl(const gchar* string)
{
return ((string[0] == '<') &&
(string[1] == 'c' || string[1] == 'C') &&
(string[2] == 't' || string[2] == 'T') &&
(string[3] == 'r' || string[3] == 'R') &&
(string[4] == 'l' || string[4] == 'L') &&
(string[5] == '>'));
}
static inline gboolean is_shft (const gchar* string)
{
return ((string[0] == '<') &&
(string[1] == 's' || string[1] == 'S') &&
(string[2] == 'h' || string[2] == 'H') &&
(string[3] == 'f' || string[3] == 'F') &&
(string[4] == 't' || string[4] == 'T') &&
(string[5] == '>'));
}
// ... (ещё 100500 подобных функций)
// ... а тем временем где-то ниже:
if (len >= 9 && is_release (accelerator))
{
accelerator += 9;
len -= 9;
mods |= EGG_VIRTUAL_RELEASE_MASK;
}
else if (len >= 9 && is_control (accelerator))
{
accelerator += 9;
len -= 9;
mods |= EGG_VIRTUAL_CONTROL_MASK;
}
else if (len >= 9 && is_primary (accelerator))
{
accelerator += 9;
len -= 9;
mods |= EGG_VIRTUAL_CONTROL_MASK;
}
else if (len >= 7 && is_shift (accelerator))
{
accelerator += 7;
len -= 7;
mods |= EGG_VIRTUAL_SHIFT_MASK;
}
else if (len >= 6 && is_shft (accelerator))
{
accelerator += 6;
len -= 6;
mods |= EGG_VIRTUAL_SHIFT_MASK;
}
else if (len >= 6 && is_ctrl (accelerator))
{
accelerator += 6;
len -= 6;
mods |= EGG_VIRTUAL_CONTROL_MASK;
}
// ... и так далее. код целиком сюда просто не влезет.
шедевр. что сравнение строк, что цепочка if-else. все хороши.
полной версией можно насладиться тут:
https://github.com/mate-desktop/mate-control-center/blob/master/capplets/keybindings/eggaccelerators.c
+142
<?php
// страницы, содержимое которых надо получить
$urls = array('www.yandex.ru', 'www.google.ru', 'www.mail.ru', 'www.rambler.ru');
$rtasks = array(); // задачи чтения
$wtasks = array(); // задачи записи
$results = array(); // результаты
foreach ($urls as $url) {
// открываем отдельный сокет
$sh = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$sh) continue;
// таймаут для чтения
socket_set_option($sh, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 10, "usec" => 0));
// таймаут для записи
socket_set_option($sh, SOL_SOCKET, SO_SNDTIMEO, array("sec" => 10, "usec" => 0));
// задаем неблокирующий режим сокетов
socket_set_nonblock($sh);
// определяем ip хоста
$ip = gethostbyname($url);
// соединяемся
socket_connect($sh, $ip, 80);
// добавляем в задачи для записи
$wtasks[$url] = $sh;
}
// продолжаем, пока есть задачи для записи или чтения
while ($wtasks || $rtasks) {
// массив для сокетов с возможностью чтения
$rtasks_ = $rtasks;
// массив для сокетов с возможностью записи
$wtasks_ = $wtasks;
// ждем результатов из сокетов
$n = socket_select($rtasks_, $wtasks_, $e=null, 10);
if ($n > 0) {
// сокеты, доступные для записи
foreach ($wtasks_ as $sh) {
// ищем урл страницы по дескриптору сокета в массиве задач записи
$url = array_search($sh, $wtasks);
// удаляем из задач записи
unset($wtasks[$url]);
// добавляем в задачи чтения
$rtasks[$url] = $sh;
// формируем http-заголовки
$headers = "GET / HTTP/1.0\r\n";
$headers .= "Host: ".$url."\r\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 MRA 5.3 (build 02557) Firefox/3.0.6\r\n";
$headers .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
$headers .= "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
$headers .= "\r\n";
// записываем в сокет
if (socket_write($sh, $headers) === false) fclose($sh);
}
// сокеты, доступные для чтения
foreach ($rtasks_ as $sh) {
// ищем урл страницы по дескриптору сокета в массиве задач чтения
$url = array_search($sh, $rtasks);
if (!$url) continue;
// считываем результат из сокета
$result = '';
while ($r = socket_read($sh, 1024)) $result .= $r;
// закрываем сокет
socket_close($sh);
// удаляем из задач чтения
unset($rtasks[$url]);
// заносим html в массив результатов
$results[$url] = $result;
}
}
else {
break;
}
}
?>
+142
#define DelayUs(x) \
#if x >= 5 \
{ \
delayus_variable=(unsigned char)(x/DelayDivisor); \
asm("movlb (_delayus_variable) >> 8"); \
WaitFor1Us; } \
asm("decfsz (_delayus_variable)&0ffh,f"); \
Jumpback \
#elif x == 4 \
Delay1us; Delay1us; Delay1us; Delay1us \
#elif x == 3 \
Delay1us; Delay1us; Delay1us \
#elif x == 2 \
Delay1us; Delay1us \
#elif x == 1 \
Delay1us \
#else \
#endif
Стажер
+142
Ученые из исследовательского центра SETI, занимающиеся поиском внеземного разума,
обнаружили, что к Земле приближаются три гигантских инопланетных корабля.
По предварительным расчетам, мы встретимся с гуманоидами всего через два месяца.
Американская пресса уже начала морально готовить землян к вторжению пришельцев.
Цели будущего визита неизвестны, поэтому в прессе появляются сценарии самых разных
вариантов событий. Так, британский таблоид The Guardian опубликовал шокирующую
статью под названием «Пришельцы могут уничтожить человечество».
«При условии взаимной доброжелательности мы можем позаимствовать у гуманоидов
ценный опыт или передовые технологии, – сообщается в статье. – Если же инопланетяне
захотят нанести вред всему человечеству: поработить или использовать нас в качестве пищи,
наслать неизвестные болезни или создать враждебный искусственный разум, то это станет
началом страшной войны».
Поддерживает страшную версию и популярный международный сетевой проект WikiLeaks,
публикующий документы, ставшие доступными вследствие утечки информации.
Сообщается, что вторжение инопланетян-разведчиков на Землю уже началось,
а прибытие трех огромных кораблей станет началом официального вторжения.
Боевые космические корабли были зафиксированы навигационной системой, базирующейся на Аляске.
Подробнее: http://news.mail.ru/society/6884149/
По ссылке заходить не обязательно:
http://www.gamedev.ru/flame/forum/?id=153081&page=4
+142
double[] КосинусФПриВходе = {1,0.99939,0.997564,0.994521,0.990268,0.9848,0.97814,0.97029,0.961261,0.9510565,0.93969,0.927183,0.913545,0.898794,0.88294,
0.866025,0.848048,0.8290375,0.809016,0.78801,0.76604,0.74314,0.71933,0.69465,0.66913,0.64278,0.61566,0.58778,0.55919,0.5,
0.46947,0.43837,0.40673,0.3746,0.34202,0.309016,0.27563,0.24192,0.20791,0.17364,0.13917,0.104528,0.06975,0.034899,0,-0.03489,
-0.06975,-0.104528,-0.13917,-0.17364,-0.20791,-0.24192,-0.27563,-0.309016,-0.34202,-0.3746,-0.40673,-0.43837,-0.46947,-0.5,
-0.55919,-0.58778,-0.61566,-0.64278,-0.66913,-0.69465,-0.71933,-0.74314,-0.76604,-0.78801,-0.809016,-0.8290375,-0.848048,
-0.866025,-0.88294,-0.898794,-0.913545,-0.927183,-0.93969,-0.9510565,-0.961261,-0.97029,-0.97814,-0.9848,-0.990268,-0.994521,
-0.997564,-0.99939,-1,-0.99939,-0.997564,-0.994521,-0.990268,-0.9848,-0.97814,-0.97029,-0.961261,-0.9510565,-0.93969,-0.927183,
-0.913545,-0.898794,-0.88294,-0.866025,-0.848048,-0.8290375,-0.809016,-0.78801,-0.76604,-0.74314,-0.71933,-0.69465,-0.66913,
-0.64278,-0.61566,-0.58778,-0.55919,-0.5,-0.46947,-0.43837,-0.40673,-0.3746,-0.34202,-0.309016,-0.27563,-0.24192,-0.20791,
-0.17364,-0.13917,-0.104528,-0.06975,-0.034899,0,0.03489,0.06975,0.104528,0.13917,0.17364,0.20791,0.24192,0.27563,0.309016,
0.34202,0.3746,0.40673,0.43837,0.46947,0.5,0.55919,0.58778,0.61566,0.64278,0.66913,0.69465,0.71933,0.74314,0.76604,0.78801,
0.809016,0.8290375,0.848048,0.866025,0.88294,0.898794,0.913545,0.927183,0.93969,0.9510565,0.961261,0.97029,0.97814,0.9848,
0.990268,0.994521,0.997564,0.99939};
private void XbYb()
{
double x;
x = AB * КосФ;
Xb = (int)x;
double f=4*Ya*Ya-4*(Xa*Xa+Ya*Ya+Xb*Xb-2*Xa*Xb-AB*AB);
if (счетчик >= 0 && счетчик <= 89) Yb = (2 * Ya + (int)Math.Sqrt(f)) / 2;
else Yb = (2 * Ya - (int)Math.Sqrt(f)) / 2;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (счетчик == КосинусФПриВходе.Length) счетчик = 0;
КосФ=КосинусФПриВходе[счетчик];
XbYb();
pictureBox1.Invalidate();
счетчик++;
}
1C головного мозга
+142
/* gcc -static -Os -W -nostartfiles -fno-stack-protector -U_FORTIFY_SOURCE glibc_preinstall.c */
#include <unistd.h>
#include <signal.h>
#include <sys/utsname.h>
#ifndef MIN_KERNEL_VERSION
# error "MIN_KERNEL_VERSION not defined"
#endif
#define PRINT_MSG(msg) write(2, (msg), sizeof(msg) - 1)
#define FATAL(msg) do {PRINT_MSG(msg); kill_parent(); _exit(1);} while(0)
static void kill_parent(void)
{
pid_t pid = getppid();
if (pid < 100)
return;
PRINT_MSG("Sending SIGSTOP signal to parent process.\n");
(void) kill(pid, SIGSTOP);
}
static int is_digit(char c)
{
return c >= '0' && c <= '9';
}
static int
parse_release(const char *p)
{
unsigned int i, osversion = 0;
for (i = 0; i < 3 && *p; i++, ++p)
{
unsigned int d = 0;
for (; is_digit(*p); ++p)
d = d * 10 + (*p - '0');
if (d == 0 || d >= 255 || (i < 2 && *p && *p != '.'))
{
osversion = 0;
break;
}
osversion |= d << (16 - 8 * i);
}
return osversion;
}
static void
check_kernel_version(void)
{
struct utsname name;
if (uname(&name) < 0)
FATAL("kernel version check failed: uname syscall failed.\n");
if (parse_release(name.release) < parse_release(MIN_KERNEL_VERSION))
FATAL("kernel version check failed: KERNEL TOO OLD, "
"minimal version supported by glibc is " MIN_KERNEL_VERSION
".\n");
}
void
_start(void)
{
check_kernel_version();
_exit(0);
}
Скрипт на языке Си, проверяющий, что загружено ядро версии не меньшей чем MIN_KERNEL_VERSION (2.6.18 на момент написания). Очень красиво взрывается на ядре 3.0.