- 1
https://codeforwin.org/2018/05/10-cool-bitwise-operator-hacks-and-tricks.html
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
https://codeforwin.org/2018/05/10-cool-bitwise-operator-hacks-and-tricks.html
10 cool bitwise operator hacks and tricks every programmer must know
Right shift (>>) operator is equivalent to division by 2
Want to divide a number by 2 quicky. Here you go, use bitwise right shift operator to divide an integer by 2. Each right shift operation reduces the number (operand) to its half.
Просто напомню, что Jawa-петушки вручную заменяют деление/умножение на 2 на сдвиг, потому что анскильный компилятор так не умеет.
+1
interface PostRepository
{
public function save(Post $model);
}
class Post
{
protected $id;
protected $title;
protected $content;
public function setId(int $id)
{
$this->id = $id;
}
public function getId(): ?int
{
return $this->id;
}
public function setTitle(string $title)
{
$this->title = $title;
}
public function getTitle(): string
{
return $this->title ?: '';
}
public function setContent(string $content)
{
$this->content = $content;
}
public function getContent(): string
{
return $this->content ?: '';
}
}
Блядь, до чего ж отвратительный код. Говёность «PHP», тщательно и с извращённой любовью смешанная с ЙАЖАвским бойлерплейтом. Омерзительно.
https://habr.com/ru/post/505400/
>>> Как должны выглядеть модели?
+135
descriptions[result].Append(tblib::Format("%").i(0x12345678, 0xBB));
0040E729 push 0BBh
0040E72E push 12345678h ; ага, запихали параметры для Format::i, заебись; теперь esp=0x0012f1f4
0040E733 lea eax,[esp+38h]
0040E737 push eax ; esp=0x0012f1f0
0040E738 lea ecx,[esp+1Ch]
0040E73C mov dword ptr [esp+3Ch],offset USER32_NULL_THUNK_DATA+40h (43C1A8h)
0040E744 mov dword ptr [esp+40h],ebp
0040E748 mov dword ptr [esp+44h],1
0040E750 call tblib::HeapCArray<char>::HeapCArray<char><tblib::StringRef> (4161B0h) ; esp=0x0012f1f4
0040E755 push 400h ; esp=0x0012f1f0
0040E75A mov ecx,offset tbAlloc (18B0C88h)
0040E75F mov dword ptr [esp+2Ch],ebp
0040E763 mov dword ptr [esp+28h],ebp
0040E767 mov dword ptr [esp+24h],ebp
0040E76B call tblib::Allocator::Malloc (42C500h) ; esp=0x0012f1f4
0040E770 mov dword ptr [esp+20h],eax
0040E774 neg eax
0040E776 sbb eax,eax
0040E778 and eax,400h
0040E77D lea ecx,[esp+18h]
0040E781 mov dword ptr [esp+24h],eax
0040E785 mov dword ptr [esp+2Ch],0FFFFFFFFh
0040E78D call tblib::Format::PassToNext (41BC00h) ; хуй знает почему, но после этой функции esp не меняется, конвенция такая видимо
0040E792 sub esp,0Ch ; БЛЯДЬ СУКА НАХУЙ ЁБАНЫЙ ПИЗДЕЦ ТЫ ЧЁ СУКА ТВОРИШЬ ААААААААА!!!!!!!!!!!!!!!!!!!!!!!!
0040E795 lea ecx,[esp+24h]
0040E799 mov edi,esp
0040E79B call tblib::Format::i (42DBA0h) ; esp=0x0012f1e8, указывает на мусор, параметры для функции - где-то выше
...
MSVC 2003 релиз
+31
for(i = 0; i < strlen(line); i++)
{
...
doSomethingWith(line);
...
}
Пишет на С++, так как в нем (цитирую) больше возможностей, но std::string он не использует по причине (цитирую) его несовместимости с си компиляторами.
Автор намекнул мне, что я не умею в многопоточность и что этот код лучше любого другого подходит для исполнения в многопоточной среде на тот случай, если переменная line bump изменится ("англици́зм" цитирую дословно, видимо вставленный для понтов и переводимое как наречие внезапно).
Имеет ли смысл доказывать, что он не прав, если я с ним не работаю?
0
# Python 2.7
import cgi
print(cgi.parse_qs('a=bagor;+kakoi'))
# {'a': ['bagor']}
# Python 3.7.3
import urllib.parse
print(urllib.parse.parse_qs('a=bagor;+kakoi'))
# {'a': ['bagor']}
# Python 3.9.10
import urllib.parse
print(urllib.parse.parse_qs('a=bagor;+kakoi'))
# {'a': ['bagor; kakoi']}
Что, блядь, это за хуета???
Переводил программу на Python3 и пол дня потратил в попытках понять почему блядь тесты сломались.
Какой-то петух завязался, на ';' сепаратор, который обрезается.
https://docs.python.org/3/library/urllib.parse.html
Changed in version 3.10: Added separator parameter with the default value of &. Python versions earlier than Python 3.10 allowed using both ; and & as query parameter separator. This has been changed to allow only a single separator key, with & as the default separator.
И у меня не 3.10, но да похуй.
Как мне теперь закостылять это говно, не меняя данные?
+136
int file_exist (char *filename)
{
char s[200];
sprintf(s, "test -e %s", filename);
if (system(s) == 0){
return 1;
}else{
return 0;
}
}
http://stackoverflow.com/questions/3828192/checking-if-a-directory-exists-in-unix-system-call
−29
calculateSomething(int n){
float* x = new float[n];
/*do smth*/
if ( /*validation*/ ) {
delete[] x;
return;
}
float* y = new float[n];
/*do smth*/
if ( /*validation*/ ) {
delete[] x;
delete[] y;
return;
}
float* z = new float[n];
/*next step*/
if ( /*smth goes wrong*/ ) {
delete[] x;
delete[] y;
delete[] z;
return;
}
/*more calculations with validation*/
delete[] x;
delete[] y;
...
/*more delete[]*/
return;
}
Принципиальная схема говногода, найденного на просторах сети.
+160
CBufferHandlerOfPrmtv::CBufferHandlerOfPrmtv
{
_ffInt = 0;
_ffInt = ~_ffInt;
_ffChar = 0;
_ffChar = ~_ffChar;
}
bool CBufferHandlerOfPrmtv::IsFF(unsigned int toCheck, unsigned int toCheckSz)
{
if(toCheckSz > sizeof(unsigned int)){
assert(!testPrmtvs);
return true;
}
if(!toCheckSz){
assert(!testPrmtvs);
return true;
}
return (memcmp(&toCheck, &_ffInt, toCheckSz) == 0);
}
разбирал щас говешки и вот такое увидел...
НАХЕРА ?!?!!?
PS: подскажу. метода проверяет число на 0xff.
+66
$pr = array();
foreach ($params as $k => $v)
$pr[] .= urlencode($k).'='.urldecode($v);
$data = join('&', $pr);
http_build_query() для слабаков! Только велосипеды, только выстрел себе в ногу.
/netcat/admin/nc_adminnotice.class.php
+148
<?
$optSelect['10'] = ($_REQUEST['sort_count']=='10') ? 'selected' : '';
$optSelect['20'] = ($_REQUEST['sort_count']=='20') ? 'selected' : '';
$optSelect['50'] = ($_REQUEST['sort_count']=='50') ? 'selected' : '';
$optSelect['all'] = ($_REQUEST['sort_count']=='all') ? 'selected' : '';
$remParams = array('sort_count');
//функция GetCurPageParam в битрикс возвращает путь к текущей странице с добавлением/удалением параметров (автор поста)
$optValueURI['10'] = $APPLICATION->GetCurPageParam('sort_count=10', $remParams);
$optValueURI['20'] = $APPLICATION->GetCurPageParam('sort_count=20', $remParams);
$optValueURI['50'] = $APPLICATION->GetCurPageParam('sort_count=50', $remParams);
$optValueURI['all'] = $APPLICATION->GetCurPageParam('sort_count=all', $remParams);
$optValue['10'] = $siteURL . $optValueURI['10'];
$optValue['20'] = $siteURL . $optValueURI['20'];
$optValue['50'] = $siteURL . $optValueURI['50'];
$optValue['all'] = $siteURL . $optValueURI['all'];
?>
<select onChange="location=this.value">
<option <?=$optSelect['10']?> value="<?=$optValue['10']?>">10</option>
<option <?=$optSelect['20']?> value="<?=$optValue['20']?>">20</option>
<option <?=$optSelect['50']?> value="<?=$optValue['50']?>">50</option>
<option <?=$optSelect['all']?> value="<?=$optValue['all']?>">Все</option>
</select>
Реализация Селекта количества выводимых элементов на странице. Сайт делал топовый партнёр 1c-Bitrix.
Я думаю, что разумнее было бы сделать так:
$arPages = array(10, 20, 50, 'all');
foreach ($arPages as $page) {?>
<option <?if($page == $_REQUEST['sort_count']){?>selected<?}?>>$page</option>
<?}?>
Ну и для сабмита можно какую нибудь нормальную функцию в JS написать.