-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+142
- 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
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
/**
* Конфигурация программы
*
* 2 конструктора:
- по умолчанию - загружающий данные из файла настроек (см. Configuration.CONFIGURATION_FILENAME);
- с одним параметром java.util.Properties - загружающий данные данные из него.
- метод save()
- без параметра - записывает данные в Configuration.CONFIGURATION_FILENAME
- с одним параметром java.util.Properties - записывает данные в него.
*/
public class Configuration {
public static final String CONFIGURATION_FILENAME = System.getProperty("user.home") + "/serialmon/1.properties";
private PortConfig firstPort;
private PortConfig secondPort;
private String logFileName;
private int logWidth;
public Configuration() {
this.firstPort = new PortConfig();
this.secondPort = new PortConfig();
Properties pp = new Properties();
try {
File PropFile = new File(CONFIGURATION_FILENAME);
if (!PropFile.exists()) {
PropFile.createNewFile();
}
FileInputStream inPropFile = new FileInputStream(CONFIGURATION_FILENAME);
pp.load(inPropFile);
setProperties(pp);
} catch (IOException e) {
e.printStackTrace();
}
}
public Configuration(Properties p) {
this.firstPort = new PortConfig();
this.secondPort = new PortConfig();
setProperties(p);
}
/**
* вспомогательный метод. В идеале можно было обойтись без него, вызывая из конструктора по умолчанию
* конструктор с параметром Properties, но ПЕРЕД вызовом этого конструктора нужно было
* загрузить данные из файла в Properties pp, а потом уже вызвать конструктор.
* Это сделать не возможно, т.к. вызов конструктора должен быть ПЕРВЫМ.
*
* @param pp
*/
private void setProperties(Properties pp){
this.setLogFileName(pp.getProperty("logFileName"));
this.setLogWidth(Integer.parseInt(pp.getProperty("logWidth")));
}
/**
* - метод save()
* без параметра - записывает данные в Configuration.CONFIGURATION_FILENAME
*/
public void save() {
Properties pp = new Properties();
save(pp);
try {
FileOutputStream outPropFile = new FileOutputStream(CONFIGURATION_FILENAME);
pp.store(outPropFile, null);
} catch(IOException ex) {
ex.printStackTrace();
}
}
/**
* - с одним параметром java.util.Properties - записывает данные в него.
*
* @param p
*/
public void save(Properties p) {
p.put("logFileName", this.getLogFileName());
p.put("logWidth", String.valueOf(this.getLogWidth()));
}
Товарищи, возникла необходимость создания двух конструкторов. Хочется вызвать один из другого, чтобы было красиво, НО перед вызовом второго, который с параметром Properties, нужно установить этот самый параметр, а потом уже передать его.
Т.е. нужно в конструкторе по умолчанию сделать такое:
Properties p = new Properties();
p.set(бла бла бла);
THIS(P); // как вы понимаете, компилятор будет ругаться, что вызов THIS должен быть ПЕРВЫМ в конструкторе.
вызов типа this(new Properties), не годится.
сейчас, как можно видеть, использую вспомогательный метод setProperties, как раз без которого было бы идеально.
kikis,
18 Марта 2012
-
+142
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
using System;
namespace Trening_6
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Введите 2 числа через пробел...");
string[] Value = Console.ReadLine().Split(new char[] {' '});
int Result = 0;
for (int i = Convert.ToInt32(Value[0]); i < Convert.ToInt32(Value[1]) + 1; i++)
{
Result += i;
}
Console.WriteLine("Сумма всех чисел в диапозоне от {0} до {1} равна {2}", Convert.ToInt32(Value[0]), Convert.ToInt32(Value[1]), Result);
Console.ReadKey();
}
}
}
Говнище еще свежее, неделю назад высрал.
KusokGovna,
16 Марта 2012
-
−83
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-(void)makeItemavAilableWithName:(NSString*) name{
[[NSUserDefaults standardUserDefaults] setValue:@"YES" forKey:name];
}
-(BOOL)isItemAvaliableWithName:(NSString*) name{
//item could be a chracter or a world
return [[[NSUserDefaults standardUserDefaults] valueForKey:name]boolValue];
}
Вот так вот мы сохраняем булевые переменные в UserDefaults. Оригинальная орфография и пунктуация сохранены
SevInf,
12 Марта 2012
-
+161
- 1
- 2
- 3
- 4
- 5
LostFocus = function() {
if (!IE) { // Этот код только для взрослых. Браузерам до 18 сюда нельзя!
// ...
}
}
Комментарий просто убил.
DropWorld,
08 Марта 2012
-
+75
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
for (i = 0; i < pArgs.length; ++i) {
if (!(pArgs[i].equalsIgnoreCase("-startable"))) {
continue;
}
// ... обработка
return true;
}
for (i = 0; i < pArgs.length; ++i) {
if (!(pArgs[i].equalsIgnoreCase("-isRunning"))) {
continue;
}
// ... обработка
return true;
}
for (i = 0; i < pArgs.length; ++i) {
if (!(pArgs[i].equalsIgnoreCase("-shutdown"))) {
continue;
}
// ... обработка
return true;
}
из main()а жаба аппликухи. и еще три таких цикла для еще трех параметров коммандной строки.
любимая тонкость (которая сюда не попала): на ошибки коммандной строки бросается IndexOutOfBoundsException.
ЗЫ а че в жабе нет штатного парсера коммандной строки? как-то загадочно. хотя если задуматся и вспомнить что писали жабу юниксоиды, которые сами тридцать лет толковго штатного парсера коммандной строки сделать не могли, то становится в какой-то степени даже логично.
Dummy00001,
08 Марта 2012
-
−85
- 1
http://pastebin.com/UaTdN6K2
А выложу ка я это тут.
Гуано трёхлетней выдержки. Фрагментации не поддаётся. Ныне отправлено на удобрения.
krypt,
06 Марта 2012
-
+153
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
// Проверка на взлом куков
$sql2 = mysql_query("SELECT * FROM `gl_users` WHERE username = '".$_COOKIE['username']."' ");
$row = mysql_fetch_assoc($sql2);
if($_COOKIE['password'] != $row['password'] OR (isset($_COOKIE['member_id']) AND !preg_match('/^[0-9]+$/', $_COOKIE['member_id']))) {
setcookie('logined','0',time() +3600*24*30);
setcookie('member_id','',time() +3600*24*30);
setcookie('username','',time() +3600*24*30);
setcookie('password','',time() +3600*24*30);
header('Location: ?');
die();
}
Слил двиг знакомого, нашел это в конце конфига *facepalm*
dellok,
27 Февраля 2012
-
+994
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
http://paste.org.ru/?qgrubj
http://paste.org.ru/?r6kovp
#define X3J11_CallFunction(WinApi,FuncHash,ModHash,...) \
((sizeof(WinApi(__VA_ARGS__),'~')),(X3J11_Gate<FuncHash,ModHash,boost::add_pointer<BOOST_TYPEOF(WinApi)>::type>(__VA_ARGS__)))
#define X3J11_CallOverload(Signature,FuncHash,ModHash,...) \
((sizeof(((boost::add_pointer<Signature>::type)0)(__VA_ARGS__),'~')),(X3J11_Gate<FuncHash,ModHash,boost::add_pointer<Signature>::type>(__VA_ARGS__)))
63F45EF45RB65R6VR,
24 Февраля 2012
-
+155
- 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
<?php
//скрипт для выполнения SQL запросов
function runQuery($str = false, $returnType='', $indexField = false, $from = false, $limit = false, $aggregate = false)
{
if (!$str){ //Проверка на наличие SQL
return false;
}
//Будем сохранять SQL запросы с результатами в cache
//Для этого создадим массив глобальный
if (!isset($GLOBALS['dbcache'])){
$GLOBALS['dbcache'] = array();
}
//Но использовать этот cache не будем
if (0 && isset($GLOBALS['dbcache'][$str])){
$this->cached = true;
return $GLOBALS['dbcache'][$str];
}
//...
//Строки для получения данных с SQL, записываються в $retValue
//...
//Вот получили результат, сохраним его в ранее заданный массив
if ($str != 'SELECT LAST_INSERT_ID()'){
$GLOBALS['dbcache'][$str] = $retValue;
}
return $retValue;
}
Трудясь над проектом, не понимал, куда используется вся память.
Решил выяснить и наткнулся на такое, что и было основной причиной.
Edd,
17 Февраля 2012
-
+150
- 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
// Функция авторизации
function auth()
{
// Ищем пользователя с именем, указанным в куках
$result = $this->query("SELECT * FROM auth_members
WHERE name = '" . mysql_escape_string($_POST['name']) . "' AND password = '" . md5($_POST['pass']) . "' LIMIT 1");
// Еслии пользователя с таким именем нет, делаем редирект
if (mysql_num_rows($result) == 0) {
$this->redirect("not_auth");
}
// Парсим полученную запись.
$user = mysql_fetch_object($result);
// Получаем текущее время с учетом дробных частей секунды
$tm = $this->getmicrotime();
// Вставляем запись в таблицу с сессиями.
$this->query("INSERT INTO auth_sessions
VALUES( " . $user->id . " , " . time() . " , '" . $this->hash2($user->name, $_SERVER['HTTP_USER_AGENT'], $this->get_ip(), $tm) . "' )");
// Ставим пользователю куки с его логинов и уникальным временем авторизации. Время жизни кук - 15 минут
setcookie("time", $tm, time() + SES_LIVE, "/");
setcookie("name", $user->name, time() + SES_LIVE, "/");
// делам редирект без параметра, т.к. никаких ошибок не было
$this->redirect("");
}
Легкое чтиво от Орловских веб-девелоперов :D
englandpost,
17 Февраля 2012