- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
sub1:
; ...
push sub2.end
sub2:
; ...
ret
.end:
; ...
ret
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−2
sub1:
; ...
push sub2.end
sub2:
; ...
ret
.end:
; ...
ret
Это нормально? Или я мудэ?
−3
// https://github.com/Qqwy/raii_with/blob/74e4c66a821fba6a483d62a8c583b3fab06e3443/raii/raii.h#L60
/**
* Custom Control Structure Macro to provide Resource Acquisition Is Initialization (and Resource Relinquishment is Destruction).
*
* Use this to run a block of code with `var_decl` initialized to `init`, where at the end of the block (or at an earlier `safe_return`),
* the passed `destr`-function will automatically be called with the given resource.
*
* Gotcha's:
* 1. Do not use `return` from within `raii_with`, but only `safe_return`, because otherwise the destructors will not be run.
* 2. Do not perform pointer-swaps with `var_decl`; the destructor will still be run on the original structure, because `raii` keeps its own reference to the resource.
*/
#define raii_with(var_decl, init, destr) \
while(1) /* i.c.m. break on l.4, so we can jump past the user-supplied block */ \
if(0) \
raii_glue(__raii_with_finished, __LINE__): \
break; \
else \
/* initialize _tmp lifetime list elem so replacement `raii_lifetime_list` can have previous one as tail. */ \
for(struct raii_lifetime_list_t _tmp = {.elem.resource = init, .elem.destructor = destr, .next = raii_lifetime_list};;) \
/* initialize user-supplied variable name */ \
for(var_decl = _tmp.elem.resource;;) \
if (1) { \
/* Fill `_tmp`'s tail before `raii_lifetime_list` is shadowed */ \
_tmp.next = raii_lifetime_list; \
goto raii_glue(__raii_with_setup, __LINE__); \
} else \
raii_glue(__raii_with_setup, __LINE__): \
/* Shadow `raii_lifetime_list` with inner version */ \
for(struct raii_lifetime_list_t *raii_lifetime_list = &_tmp;;) \
if(1){ \
goto raii_glue(__raii_with_body, __LINE__); \
} else \
while (1) /* so break works as expected */ \
while (1) /*so continue works as expected */ \
if (1){ \
/*after the else-block (or break or continue), destruct and finish */ \
destruct_raii_lifetime(raii_lifetime_list->elem); \
goto raii_glue(__raii_with_finished, __LINE__); \
} else \
raii_glue(__raii_with_body, __LINE__):
#endif // RAII_WITH_H
raii
A simple library to provide RAII in standard-compliant C99, using raii_with(resource, initializer, destructor) { ... }-syntax:
−1
try
{
...
}
#if DEBUG
catch
#else
catch
#endif
{
...
}
−1
<?php include "init.php"; ?>
<?php
if(trim($_GET['mode'])=='ajax'){
header('Content-Type: application/json; charset=utf-8');
if(trim($_POST['action'])==htmlspecialchars(trim($_GET['script']))){
$result=array();
$result['errors']=array();
if(trim($_POST['email'])==''){
$result['errors']['email']=l('login_error_email_empty');
} else {
$check=mysql_query("SELECT * FROM `users` WHERE `email`='"._F($_POST['email'])."' OR (`phone`!='' AND `phone`='"._F(preg_replace('/\D/', '', $_POST['email']))."');");
if(mysql_num_rows($check)){
$user=mysql_fetch_assoc($check);
} else {
$result['errors']['email']=l('login_error_email_inexists');
}
}
if(trim($_POST['password'])==''){
$result['errors']['password']=l('login_error_password_empty');
} elseif(mysql_num_rows($check) && $user['password']!=md5(trim($_POST['password']))){
$result['errors']['password']=l('login_error_password_incorrect');
} elseif($user['active']=='0'){
$result['errors']['form']=l('login_error_account_inactive');
} elseif($user['active']=='2'){
$result['errors']['form']=l('login_error_account_removed');
} elseif($user['active']=='3'){
$result['errors']['form']=l('login_error_account_banned');
}
if(count($result['errors'])==0){
$_SESSION['userid']=$user['userid'];
mysql_query("UPDATE `users` SET `login_time`='".$time."' WHERE `userid`='".$_SESSION['userid']."';");
$result['status']='success';
} else {
$result['status']='error';
}
echo json_encode($result);
}
exit;
}
?>
<?php
$pagetitle=l('login_title')." • ".$config['sitename'];
$pagedesc=$config['description'];
?>
<?php
if($m){ include "m-login.php"; exit; }
?>
<?php include "inc/header.php"; ?>
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<h3 class="special-title"><?php echo l('login_title'); ?></h3>
<div class="auth-box">
<form action="/<?php echo htmlspecialchars(trim($_GET['script'])); ?>/" method="POST" autocomplete="off" class="ajax-form" data-callback="loginCallBack">
<input type="hidden" name="action" value="<?php echo htmlspecialchars(trim($_GET['script'])); ?>">
<div class="form-group">
<label><?php echo l('login_type_email'); ?></label>
<div>
<input type="text" autocomplete="off" class="form-control" name="email" placeholder="<?php echo l('login_email'); ?>" autofocus>
</div>
</div>
<div class="form-group">
<label><?php echo l('login_type_password'); ?></label>
<div>
<input type="password" autocomplete="off" class="form-control" name="password" placeholder="<?php echo l('login_password'); ?>">
</div>
</div>
<button type="submit" class="btn btn-primary"><?php echo l('login_submit'); ?></button>
<div class="cannot-login">
<a href="<?php echo $locPrefix; ?>/restore/" class="pull-left"><?php echo l('login_cant_login'); ?></a>
<a href="<?php echo $locPrefix; ?>/register/" class="pull-right"><?php echo l('login_to_register'); ?></a>
<div class="clear"></div>
</div>
</form>
</div>
</div>
<div class="col-md-3"></div>
</div>
<div class="social-login-title">
<?php echo l('login_via_social_network'); ?>
</div>
<div class="social-login"><a href="/social/vk/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="vkontakte"><i class="fa fa-vk"></i></a><a href="/social/ok/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="odnoklassniki"><i class="fa fa-odnoklassniki"></i></a><a href="/social/fb/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="facebook"><i class="fa fa-facebook"></i></a><a href="/social/gl/<?php if(isset($_GET['ref'])){ ?>?ref=<?php echo urlencode($_GET['ref']); ?><?php } ?>" class="google"><i class="fa fa-google"></i></a></div>
<?php include "inc/footer.php"; ?>
В среде "PHP"-разработчиков часто слышатся возбуждающие аппетит к ветчине повизгивания о том, что, дескать, без фреймворков не жизнь, чистый "PHP" - говно, и что без "Laravel" охуенный проект не создать. Но взгляните на вышеприведённый код страницы авторизации в одном из разработанных мною движков и задайте себе вопрос: зачем делить один ладненький, компактненький скриптик на контроллеры, модели, шаблоны, интерфейсы, и, как следствие, конское количество директорий, когда и "HTML"-представление, и "AJAX"-обработчик можно впихнуть в один файл на, в данном случае, полтора-два экрана? Чем обусловлена массовая течка по "MVC" и смежным архитектурам (к слову, не только лишь в "PHP", но и, слышно, в "Ruby" и "NodeJS")?
−1
#lang racket
(require (for-syntax racket/syntax syntax/to-string))
(require ffi/unsafe)
(define-for-syntax *method-names*
; Given I have hello, one and two methods in my shared lib
(list "hello"
"one"
"two"
))
(define-syntax (load-ffi-functions stx)
(syntax-case stx ()
[(_ name lib ffi-func)
(let ([elem->fn-id
(λ (elem-str)
(display elem-str)
(format-id
stx "~a"
(datum->syntax stx (string->symbol elem-str))))]
)
(with-syntax ([(_)
(elem->fn-id "one")])
#`(begin
(define (name)
(printf (string->symbol name))
(ffi-func name lib (_fun -> _int))
)
)
)
)]))
(define rustlib (ffi-lib "./libffitest.dylib"))
(define-syntax (define-ffi-func stx)
(syntax-case stx ()
[(_ lib ffi-func)
(let ([elem->fn-id
(λ (elem-str)
(format-id
stx "~a"
(datum->syntax stx (string->symbol elem-str))))]
)
(with-syntax
([((method name) ...)
(map
(λ (elem)
(list (elem->fn-id elem) elem)
)
*method-names*)])
#`(begin
(define method
(ffi-func name lib (_fun -> _int))
)
...)))]))
(define-ffi-func rustlib get-ffi-obj)
(+ (one) (two) (one))
Когда мне показали, как это правильно сделать, я немного ох#ел.
+2
Попытка
Если Найти( ОформлениеСтроки.ДанныеСтроки.Загружен, Истина ) Тогда
// раскраска строки
КонецЕсли;
Исключение
КонецПопытки
На первый взгляд возникает вопрос: WTF???7семь
На десятый взгляд меня посетили сомненья, ведь код а) рабочий, и 2) гениален!
Смотрите сами.
Вместо "Если ОформлениеСтроки.ДанныеСтроки.Загружен Тогда"
гений с большой буквы "Г" делает финт ушами с наподвыподвертом:
Так как функция "Найти" работает со строками и 1С автоматически преобразует, где возможно, типы, булево значение ОформлениеСтроки.ДанныеСтроки.Загружен приводится к строке, равной "Истина" или "Ложь". Второй аргумент также приводится к строке, равной "Истина". Далее функция "Найти" выполняет поиск подстроки (аргумент №2) в строке (аргумент №1) и возвращает позицию найденной подстроки, в результате имеем 1 если ОформлениеСтроки.ДанныеСтроки.Загружен = Истина, или 0 в противном случае.
Получается
Если 1 Тогда....
или
Если 0 Тогда....
где 1 или 0 автоматически приводится 1Ской к типу булево, где Булево(1) = Истина, и Булево(0) = Ложь.
ИГОГО:
Условие выполняется, а гений с большой буквы "Г"... пугает меня, если честно, одним своим существованием о_О
−1
Keyword Substitution
Котаны, что мы думаем про keyword Substitution?
Для тех, кто в танке: была в прошлом веке такая VCS RCS.
В ней можно было в файле указать
$Id$
pitushok.txt,v 1.41 02.06.1991 petya
static char* id ="$id$";
$OpenBSD: cat.1,v 1.35 2015/11/04 21:28:01 tedu Exp $
0
/* Разработчик http://webkiev.com/ Тарас КТЛ(Кучинский Тарас Леонидович) г.Киев ул. Заболотного 26 */
if($count_tovar!=0){
$count_filtr=count($shop_m_tovar[0]);
$i=0;while ($i < $count_tovar) {$ii=0; while ($ii < $count_filtr){$shop_filtr[$ii][$i]=$shop_m_tovar[$i][$ii];$ii++;}$i++;}
if($tovar_sort=="1"){/*сортировка по возрастанию по цене*/
array_multisort(
$shop_filtr[6],$shop_filtr[7],$shop_filtr[8],$shop_filtr[9],
$shop_filtr[10],$shop_filtr[11],$shop_filtr[12],$shop_filtr[13],$shop_filtr[14],$shop_filtr[15],$shop_filtr[16],$shop_filtr[17],$shop_filtr[18],$shop_filtr[19],
$shop_filtr[20],$shop_filtr[21],$shop_filtr[22],$shop_filtr[23],$shop_filtr[24],$shop_filtr[25],$shop_filtr[26],$shop_filtr[27],$shop_filtr[28],$shop_filtr[29],
$shop_filtr[30],$shop_filtr[31],$shop_filtr[32],$shop_filtr[33],$shop_filtr[34],$shop_filtr[35],$shop_filtr[36],$shop_filtr[37],$shop_filtr[38],$shop_filtr[39],
$shop_filtr[40],$shop_filtr[41],$shop_filtr[42],$shop_filtr[43],$shop_filtr[44],$shop_filtr[45],$shop_filtr[46],$shop_filtr[47],$shop_filtr[48],
$shop_filtr[49],
$shop_filtr[50],$shop_filtr[51],$shop_filtr[52],$shop_filtr[53],$shop_filtr[54],$shop_filtr[55],$shop_filtr[56],$shop_filtr[57],$shop_filtr[58],$shop_filtr[59],
$shop_filtr[60],$shop_filtr[61],$shop_filtr[62],$shop_filtr[63],$shop_filtr[64],$shop_filtr[65],$shop_filtr[66],$shop_filtr[67],$shop_filtr[68],$shop_filtr[69],
$shop_filtr[70],
$shop_filtr[0],$shop_filtr[1],$shop_filtr[2],$shop_filtr[3],$shop_filtr[4],$shop_filtr[5]
);
}
if($tovar_sort=="2"){/*сортировка на убывание по цене*/
array_multisort(
$shop_filtr[6],SORT_DESC, $shop_filtr[7],$shop_filtr[8],$shop_filtr[9],
$shop_filtr[10],$shop_filtr[11],$shop_filtr[12],$shop_filtr[13],$shop_filtr[14],$shop_filtr[15],$shop_filtr[16],$shop_filtr[17],$shop_filtr[18],$shop_filtr[19],
$shop_filtr[20],$shop_filtr[21],$shop_filtr[22],$shop_filtr[23],$shop_filtr[24],$shop_filtr[25],$shop_filtr[26],$shop_filtr[27],$shop_filtr[28],$shop_filtr[29],
$shop_filtr[30],$shop_filtr[31],$shop_filtr[32],$shop_filtr[33],$shop_filtr[34],$shop_filtr[35],$shop_filtr[36],$shop_filtr[37],$shop_filtr[38],$shop_filtr[39],
$shop_filtr[40],$shop_filtr[41],$shop_filtr[42],$shop_filtr[43],$shop_filtr[44],$shop_filtr[45],$shop_filtr[46],$shop_filtr[47],$shop_filtr[48],
$shop_filtr[49],
$shop_filtr[50],$shop_filtr[51],$shop_filtr[52],$shop_filtr[53],$shop_filtr[54],$shop_filtr[55],$shop_filtr[56],$shop_filtr[57],$shop_filtr[58],$shop_filtr[59],
$shop_filtr[60],$shop_filtr[61],$shop_filtr[62],$shop_filtr[63],$shop_filtr[64],$shop_filtr[65],$shop_filtr[66],$shop_filtr[67],$shop_filtr[68],$shop_filtr[69],
$shop_filtr[70],
$shop_filtr[0],$shop_filtr[1],$shop_filtr[2],$shop_filtr[3],$shop_filtr[4],$shop_filtr[5]
);
}
$i=0;while ($i < $count_tovar) {$ii=0; while ($ii < $count_filtr) {$shop_m_tovar[$i][$ii]=$shop_filtr[$ii][$i];$ii++;}$i++;}
}
Сортировка товаров на чистом коде
0
// https://habr.com/company/JetBrains/blog/249479/
Привет, Хабр!
Некоторое время назад мы объявили конкурс — требовалось продолжить фразу:
Бьёрн Страуструп создал С++ 36 лет назад, и он до сих пор востребован и пользуется популярностью у разработчиков, потому что...
Спасибо всем участникам за массу положительных эмоций и разнообразные предположения о том, что же сделало C++ таким популярным.
Посовещавшись, мы выбрали топ-6 ответов:
−1
Чуваки, давайте тред про книги.
Сейчас как раз хочу выбрать книгу младшему брату (14yo) какое-нибудь интро
в программирование, такое же волшебное, как книга Ларри, только попроще тех-
нически, где бы объяснялось, что переменная — это ебучая «ячеечка памяти»,
и всё такое. Только я подумал лучше сначала дать что-нибудь компилируемое,
а то потом хрен переучишь, как вы на это смотрите? Сразу на ум приходят книги
Вирта, но у паскаля сейчас с инфраструктурой пиздец, и на линуксе его компи-
лить как-то не нативно. (GNU Pascal почил, а заставлять брата патчить кде рано).
У меня у самого опыт перекошенный, я начинал с VB, потом перешел на Pascal,
но книги попадались отстойные.
Короче, нужен ваш совет.
Особенно, великих наставшиков roskomgovno, roman-kashitsyn и bormand, и всех
остальных. Кроме Стертора.