- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
try
{
...
}
#if DEBUG
catch
#else
catch
#endif
{
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−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, и всех
остальных. Кроме Стертора.
−1
#include <stdio.h>
#include <inttypes.h>
int main(void) {
uint64_t a = 1<<31;
uint64_t b = 1<<32;
uint64_t c = (uint64_t)1<<32;
printf("a:%llx\n", a);
printf("b:%llx\n", b);
printf("c:%llx\n", c);
return 0;
}
a:ffffffff80000000
b:0
c:100000000
Занимался битоёбством и не сразу понял откуда в алгоритме мусор.
+5
void sort3(uint32_t a[static 3])
{
// 0 1 2 3 4 5 6 7 8
uint32_t tmp[9] = {a[0], a[1], a[2], a[0], a[1], a[0], a[2], a[1], a[0]};
uint8_t bits = (a[0] <= a[1]) | ((a[1] <= a[2]) << 1) | ((a[0] <= a[2]) << 2);
static const uint8_t b[] =
{
[0b000] = 6,
[0b001] = 2,
[0b010] = 1,
[0b101] = 5,
[0b110] = 4,
[0b111] = 0,
};
memcpy(a, tmp+b[bits], 3*sizeof(uint32_t));
}
Новая инновационная сортировка на 3 элемента без if-ов
https://wandbox.org/permlink/pTLXgxKKQuaiVCxb