-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
driver_fire.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
wait=new WebDriverWait(driver_fire,10);
driver_fire.navigate().to("http://www.mysite.com");
LoginForm2 loginForm2 = PageFactory.initElements(driver_fire, LoginForm2.class);
loginForm2.logIn("login", "password");
wait.until((WebDriver d)->d.manage().getCookieNamed("user_id")).getValue(); // if we have this cookie, we have a logged in session
// реализация класса формы логина
public class LoginForm2 {
@FindBy(css="div.log-in#log-in")
private WebElement loginForm;
@FindBy (css=".login")
private WebElement invoke_button;
WebDriverWait wait;
WebDriver driver;
public LoginForm2(WebDriver driver){
driver.manage().timeouts().implicitlyWait(0,TimeUnit.SECONDS);
this.driver = driver;
wait = new WebDriverWait(driver,60);
}
private boolean checkCaptha() {
try {
WebElement captcha = loginForm.findElement(By.cssSelector("#newLoginForm iframe"));
driver.switchTo().frame(captcha);
try {
wait.until(ExpectedConditions.attributeToBe(By.id("recaptcha-anchor"),"aria-checked","true"));
System.out.println("Passed captcha");
driver.switchTo().defaultContent();
return true;
} catch (TimeoutException e) {
System.out.println("Too long to wait for captcha"); return false;
}
} catch (NoSuchElementException e) {
System.out.println("No captcha )"); return true;
}
}
public void logIn(String email, String password)
{
wait.until(ExpectedConditions.visibilityOf(invoke_button)).click();
wait.until(ExpectedConditions.visibilityOf(loginForm));
loginForm.findElement(By.name("name")).sendKeys(email);
loginForm.findElement(By.name("passwd")).sendKeys(password);
if( checkCaptha()) loginForm.findElement(By.name("login-button")).click();
}
}
Selenium: Логин на сайте с задержкой на прохождение Google reCaptcha. Цель - только получить залогиненную сессию.
dmytrocx75,
19 Ноября 2017
-
+1
- 1
github.com/php/php-src/commit/0e097f2c96ce31b16fa371981045f224e5a37160#diff-e0dff85f21e939e4e2a778bddb8a72d7R819
Кто мне объяснит, как вообще работает этот PHP до сих пор, если они через строчку получают длину строки siezof'ом и при этом это ещё помогло исправить баг?
d_fomenok,
18 Ноября 2017
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
class Yandex{
require_once _DIR_ . '/vendor/autoload.php';
class_alias('\Arhitector\Yandex\Disk', 'Yandex');
// передать OAuth-токен зарегистрированного приложения.
$disk = new Yandex('AQAAAAAeTQ-yAARKyGCP7TY2MU0aggYZ7ucZFwI');
/**
* Получить Объектно Ориентированное представление закрытого ресурса.
* @var Arhitector\Yandex\Disk\Resource\Closed $resource
*/
$resource = $disk->getResource('0000 Техническое задание (2).pdf');
// проверить сущестует такой файл на диске ?
$resource->has(); // вернет, например, false
// загрузить файл на диск под имененм "новый файл.txt".
$resource->upload(__DIR__ . '/0000 Техническое задание (1).pdf');
// файл загружен, вывести информацию.
echo '<pre>';
var_dump($resource->toArray());
}
Нашёл на работе
slexx1234,
17 Ноября 2017
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
...
private enum CSPTitle {
CONTENT_SECURITY_POLICY, X_CONTENT_SECURITY_POLICY, X_WEBKIT_CSP;
public String getName() {
return WordUtils.capitalizeFully(this.name(), new char[] { '_' }).replace('_', '-');
}
}
...
public Map<String, String> getHeaders(boolean disableXWebkitCspHeader, StringBuilder cspHeaderBodyBuilder){
Map<String, String> cspHeaders = new HashMap<>();
for (CSPTitle cspTitle : CSPTitle.values()) {
if (disableXWebkitCspHeader && CSPTitle.X_WEBKIT_CSP.equals(cspTitle)) {
continue;
}
String cspHeaderBody = cspHeaderBodyBuilder.toString();
if (CSPTitle.X_CONTENT_SECURITY_POLICY.equals(cspTitle)) {
cspHeaderBody = processXCSPHeader(cspHeaderBody);
}
cspHeaders.put(cspTitle.getName(), cspHeaderBody.trim());
}
return cspHeaders;
}
....
reizy,
14 Ноября 2017
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
private static int CalcCheckSum(byte[] BinFile)
{
int length = ((IEnumerable<byte>) BinFile).Count<byte>();
if (length > 0)
{
int num = 0;
for (int index = 0; index < length; ++index)
num = num + (int) BinFile[index] & (int) ushort.MaxValue;
}
return num;
}
Израильский инновационный вариант rolling hash'а :facepalm:
Здесь есть всё: и альтернативное определение длины массива, и обилие приведений к инту, и придающая особую таинственность битовая операция &
На первый взгляд может показаться, что результатом будет простая сумма всех байт, но не дайте себя обмануть! Результат - это суперсекретная(!!!11) сумма всех байт.
PsychoTeras,
14 Ноября 2017
-
+1
Вот мне всегда говорили, что NaN не равен ничему включая себя, но PHP перевернул мой мир
d_fomenok,
12 Ноября 2017
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
ДействующиеПостановления = Новый Структура;
ДействующиеПостановления.Вставить("Постановление914", ДанныеПечати.Дата < ДатаНачалаПримененияПостановления1137);
ДействующиеПостановления.Вставить("Постановление1137", НЕ (ДанныеПечати.Дата < ДатаНачалаПримененияПостановления1137));
ДействующиеПостановления.Вставить("Постановление1137_625", ВедетсяУчетНДСПоФЗ56(ДанныеПечати.Дата,ДанныеПечати.ДатаИсправления));
ДействующиеПостановления.Вставить("Постановление981", ДействуетПостановление981(ДанныеПечати.Дата,ДанныеПечати.ДатаИсправления));
ОпцииПечатиСчетаФактуры.Вставить("ДействующиеПостановления", ДействующиеПостановления);
Если ДанныеПечати.КорректировочныйСчетФактура Тогда
Если ДействующиеПостановления.Постановление981 Тогда
Макет = МакетКорр_981;
ЕстьПостановление981 = Истина;
ИначеЕсли ДействующиеПостановления.Постановление1137_625 Тогда
Макет = МакетКорр_625;
ЕстьПостановление1137_625 = Истина;
Иначе
Макет = МакетКорр;
ЕстьПостановление1137 = Истина;
КонецЕсли;
ИначеЕсли ДействующиеПостановления.Постановление914 Тогда
Макет = Макет451;
ЕстьПостановление914 = Истина;
ИначеЕсли ДействующиеПостановления.Постановление981 Тогда
Макет = Макет981;
ЕстьПостановление981 = Истина;
ИначеЕсли ДействующиеПостановления.Постановление1137_625 Тогда
Макет = Макет1137_625;
ЕстьПостановление1137_625 = Истина;
Иначе
Макет = Макет1137;
ЕстьПостановление1137 = Истина;
КонецЕсли;
Если (ЕстьПостановление914 И ЕстьПостановление1137)
ИЛИ (ЕстьПостановление914 И ЕстьПостановление981)
ИЛИ ((ЕстьПостановление1137 ИЛИ ЕстьПостановление1137_625) И ЕстьПостановление981) Тогда
Текст = НСтр("ru = 'Недоступна одновременная печать счетов-фактур, сформированных по разным постановлениям Правительства РФ'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ДанныеПечати.Ссылка);
ТабличныйДокумент.Очистить();
Прервать;
КонецЕсли;
Типовая УТ 11.3.4.93, ПечатьОбщихФорм, модуль менеджера
Что проверяют эти "Если"? Не ошибся ли программист?
Постановление определяется по дате счета-фактуры. Интересно, как можно сформировать счет-фактуру одновременно "по разным постановлениям Правительства РФ"?
И мало того, что вторая и третья строки всегда дают противоположный результат. Нет, на всякий случай проверим "Если (ЕстьПостановление914 И ЕстьПостановление1137)".
Интересно также, как после ИначеЕсли ожидали получить сочетание разных "постановлений"? И почему проверяется всего три неправильных сочетания? Надо больше кода!
Еще понравилась оригинальная идея завести на каждый элемент структуры отдельную переменную, потом присвоить этой переменной то же, что и в структуре, а потом проверить сочетание этих переменных. Надо заметить, что переменные ЕстьПостановлениеYYYY больше нигде не используются.
romanvk,
10 Ноября 2017
-
+1
- 1
Поцаны, шестой уровень вложенности - это ок или говнокод?
У вас обычно сколько?
subaru,
08 Ноября 2017
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
// https://github.com/telegramdesktop/tdesktop/blob/5f5770dd46491133b135a71fc2d4f92d13107ade/Telegram/SourceFiles/history.cpp#L1455
int History::countUnread(MsgId upTo) {
int result = 0;
for (auto i = blocks.cend(), e = blocks.cbegin(); i != e;) {
--i;
for (auto j = (*i)->items.cend(), en = (*i)->items.cbegin(); j != en;) {
--j;
if ((*j)->id > 0 && (*j)->id <= upTo) {
break;
} else if (!(*j)->out() && (*j)->unread() && (*j)->id > upTo) {
++result;
}
}
}
return result;
}
void History::updateShowFrom() {
if (showFrom) return;
for (auto i = blocks.cend(); i != blocks.cbegin();) {
--i;
for (auto j = (*i)->items.cend(); j != (*i)->items.cbegin();) {
--j;
if ((*j)->id > 0 && (!(*j)->out() || !showFrom)) {
if ((*j)->id >= inboxReadBefore) {
showFrom = *j;
} else {
return;
}
}
}
}
}
очередная порция говнеца из телесрамного клиента
j123123,
07 Ноября 2017
-
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
$probabilities=array();
$get_items=mysql_query("SELECT * FROM `items` WHERE `iid` IN(".mysql_real_escape_string($case['items']).") AND `status`='1' AND `count`>'0' ORDER BY `probability` DESC;");
while($item=mysql_fetch_assoc($get_items)){
$probabilities[$item['probability']]=0;
}
$dices=$probabilities;
for($pi=100;$pi>=0;$pi--){
foreach($probabilities as $probability=>$pstate){
if(rand(1, 2)==2){
if($pi<=$probability){
$dices[$probability]=$dices[$probability]+1;
}
}
}
}
arsort($dices, SORT_NUMERIC);
$probability=reset(array_keys($dices));
$get_prize=mysql_query("SELECT * FROM `items` WHERE `iid` IN(".mysql_real_escape_string($case['items']).") AND `status`='1' AND `count`>'0' AND `probability`='".$probability."' ORDER BY RAND() LIMIT 1;");
Написал с нуля на заказ движок для очередного детского говноказино (розыгрыш пикселей для игр в "Steam").
Заказчик умолял сделать возможность управления вероятностью выпадения того или иного предмета (в процентах), что я и сделал. Вышеприведённый алгоритм как раз отвечает за выбор приза в соответствии с прописанными в настройках вероятностями. Сейчас кажется, что решение не самое "изящное".
Есть, что заметить по поводу алгоритма?
AnalPerOral,
02 Ноября 2017