- 1
- 2
- 3
- 4
- 5
- 6
catch (Exception ex)
{
try
{
if (ex.Message == "Thread was being aborted.")
{
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+104
catch (Exception ex)
{
try
{
if (ex.Message == "Thread was being aborted.")
{
+63
int main()
{
server::CServer();
return 0;
}
class CServer {
public:
CServer()
{
SOCKET listen_sd = socket (AF_INET, SOCK_STREAM, 0); CHK_ERR(listen_sd, "socket");
SET_NONBLOCK(listen_sd);
struct sockaddr_in sa_serv;
memset (&sa_serv, '\0', sizeof(sa_serv));
sa_serv.sin_family = AF_INET;
sa_serv.sin_addr.s_addr = INADDR_ANY;
sa_serv.sin_port = htons (1111); /* Server Port number */
int err = ::bind(listen_sd, (struct sockaddr*) &sa_serv, sizeof (sa_serv)); CHK_ERR(err, "bind");
err = listen (listen_sd, 5); CHK_ERR(err, "listen");
while(true)
{
Sleep(1);
struct sockaddr_in sa_cli;
size_t client_len = sizeof(sa_cli);
#ifdef WIN32
const SOCKET sd = accept (listen_sd, (struct sockaddr*) &sa_cli, (int *)&client_len);
#else
const SOCKET sd = accept (listen_sd, (struct sockaddr*) &sa_cli, &client_len);
#endif
Callback(sd);
}
}
};
http://habrahabr.ru/post/211853/
Бесконечный цикл (event loop) в конструкторе.
Опущены неинтересные строчки инициализации всякой фигни.
Про Sleep вместо select/epoll/etc. я вовсе молчу.
+140
ЗА РУСЬ!!!
+33
template<typename F, typename... Fns>
struct Overloaded
{
std::tuple<F,Fns...> fns;
// эта и следующая за ней функция нужны для рекурсивного
// накопления кортежа из всех входящих функций
template<typename First, typename... Others>
std::tuple<First,Others...> collect(First f, Others... others) {
auto t = std::make_tuple(f);
return std::tuple_cat(t, collect(others...));
}
template<typename Single>
std::tuple<Single> collect(Single f) {
return std::make_tuple(f);
}
Overloaded(F f, Fns... others) {
// сохраняем кортеж функций
fns = collect(f, others...);
}
};
template<typename F, typename... Fns>
Overloaded<F,Fns...> make_overloaded(F f, Fns... fns) {
return Overloaded<F,Fns...>(f,fns...);
}
//...
void F1(int) {}
void F2(int, float) {}
// ...
auto f = make_overloaded(F1, F2);
Не хочется связываться с бустом ввиду его убогости громоздкости. Поэтому пытаюсь сделать сам на чистом C++11 без макросов.
Не понятно теперь как перегрузить оператор ()?
Задействовать enable_if? Ни чего в голову не приходит.
Есть у кого идеи?
Оттуда
+15
#include <vector>
#include <iostream>
using namespace std;
// -- tools
// макет времени компиляции определяет количество элементов массива указанного в аргументе
template<class T, size_t N> char (&Size( T (&arr)[N] ) )[N];
// -- internal closed implementation --
int data1[] = {0, 1, 2};
char data2[] = {42};
const int ( &GetMechaData1() ) [ sizeof( Size(data1) ) ] { return data1; }
const char( &GetMechaData2() ) [ sizeof( Size(data2) ) ] { return data2; }
// -- API
//--- функции возвращают ссылки на массивы: например такого: const int[ sizeof( Size(data1) ]
const int ( &GetMechaData1() ) [ sizeof( Size(data1) ) ];
const char( &GetMechaData2() ) [ sizeof( Size(data2) ) ];
// client code
template<class T, size_t N> void ViewArray(const T (&arr)[N])
{
cout<<"data stored: \n";
for( auto& item: arr )
cout<< "item : "<<item<<endl;
}
int main()
{
ViewArray( GetMechaData1() );
ViewArray( GetMechaData2() );
return 0;
}
http://rextester.com/AEINWM88529
−117
//try setting up POST request, if failed settle with GET
try {
if (url_variables == null || (params && params.method == URLRequestMethod.GET)) throw new ArgumentError();
url_request.data = url_variables;
url_request.method = URLRequestMethod.POST;
}
catch(er:Error) {
url_request.url = url;
url_request.method = URLRequestMethod.GET;
}
Ветвление с помощью try..catch.
Возьму себе на заметку.
−90
-(BOOL)isGetRest:(CGFloat)page {
NSString *floatToString = [NSString stringWithFormat:@"%.2f",page];
NSArray *sepArray = [floatToString componentsSeparatedByString:@"."];
CGFloat rest = [[sepArray lastObject] floatValue];
if(rest>0.0){
return YES;
}
else{
return NO;
}
}
А вы еще спрашиваете нужно ли программистам знать математику?
+154
$date = date("Y-m-01", strtotime("-1 month"));
$like = substr($date, 0, 8) . "%";
а потом $like вставляется в sql-код
+135
string str = Console.ReadLine();
int k = str.length; int n = 0;
for (int i = 0; i< k; i=i+1)
{
if (str[i] == ' ')
n = n + 1;
}
string[] arr = new string[n+1]();
for (int i = 0;i<n+1;i=i+1)
{
arr[i]='';
}
for (int i = 0;i<n+1;i=i+1)
{
int a = str.IndexOf(' ');
string b = str.Substring(0,a);
arr[i] = b;
if (i != n)
str = str.Remove(0,a+1);
else
str = str.Remove(0,a);
}
for (int i = 0;i<n+1;i=i+1)
{
str = str + arr[i] + ' ';
}
str = str.Remove(k-2,1);
Православная функция Split() по пробелу:
1. Объявляем необходимые переменные;
2. Считаем количество пробелов;
3. Заполняем массив пустыми строками (ВАЖНО!!!);
4. Ищем в исходной строке пробелы, записываем в массив подстроку, удалям подстроку с пробелом из исходной строки;
5. Восстанавливаем исходную строку по эелементам массива (ВАЖНО!!!).
+161
$login = $_COOKIE['login'];
$pass = $_COOKIE['pass'];
$sec = $_COOKIE['sec'];
if ($pass == '')
{
header("Location: index.php");
exit;
}
Проверка авторизации в административной части сайта