- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
if (test)
{
_inquiryLineRepository.RequestToOrderAPI(model, idetails, true);
}
else
{
_inquiryLineRepository.RequestToOrderAPI(model, idetails);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
if (test)
{
_inquiryLineRepository.RequestToOrderAPI(model, idetails, true);
}
else
{
_inquiryLineRepository.RequestToOrderAPI(model, idetails);
}
индусы радуются и танцуют групповые танцы, когда видят, что подобный код пишет кто то кроме них
+1
public Object [][] getResults (String query){
Object oArray [][] = {};
try (Connection con = Connector.getNewConnection()) {
Statement st = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
try (ResultSet rs = st.executeQuery(query)){
int rows = 0;
int cells = 0;
List<Object> lstObjX = new ArrayList<Object> (64);
while (rs.next()){
rows ++;
int x = 1;
while (true){
try {
lstObjX.add(rs.getObject(x));
x++;
}catch (Exception e) {
cells = (x != 1) ? x-1 : 0;
break;
}
}
for (; x-1 < cells; x++){
lstObjX.add(rs.getObject(x));
}
}
oArray = new Object [rows][cells];
int z = 0;
for (int y = 0; y < rows; y++){
for (int x = 0; x < cells; x++){
oArray[y][x] = lstObjX.get(z);
z++;
}
}
}
}
catch (SQLException e) {
System.err.println(e.getMessage());
}
return oArray;
}
Превращаем Resultset в 2-мерную таблицу [y][x], где [y] - индекс строки, а [x] - индекс значений полей
+1
struct Test
{
Array<int> intArray;
int fixedIntArray[3];
bool booleanVal;
float flt;
Array<string> stringArray;
ADD_REFLECTION(Test, intArray, fixedIntArray, booleanVal, flt, stringArray);
};
struct SuperTest
{
Array<string> strArr;
int foo;
string str;
Array<short> vals;
double dbl;
Test tests[3];
ushort bar;
ADD_REFLECTION(SuperTest, strArr, foo, str, vals, dbl, tests, bar);
};
int main()
{
StringView structText = R"({
.strArr = {"str1", "ergvwr", "brt"},
.foo = 5,
.str = "gammaker",
.vals = {-4, 66, 432, -95},
.dbl = 3.1415926535897932384626433832795,
{
{
.fixedIntArray = {9, 4, 85},
.stringArray = {"test 0 A", "test 0 B", "test 0 C"},
.booleanVal = true,
.intArray = {43, 54, 36, 76},
.flt = 1.23456,
.flt = 2.34567
},
{
.intArray = {},
.fixedIntArray = {3655456, 234, 3},
.booleanVal = false,
.flt = 2.718281828,
.stringArray = {"test 1 A", "test 1 B"}
},
{
.intArray = {1531, 1253, 16, 634, 236462363},
.fixedIntArray = {9435, 435, 8355},
.booleanVal = false,
.flt = 123.65,
.stringArray = {"test 2 A", "test 2 B", "test 2 C", "test 2 D"}
}
},
.bar = 1025
})";
Data::TextDeserializer deserializer(Data::DataLanguageParams::CStructInitializer, structText);
SuperTest test = deserializer.Deserialize<SuperTest>();
char charBuf[5000];
Data::TextSerializer serializer(Data::DataLanguageParams::Json, Data::TextSerializerParams::Verbose, ArrayRange<char>(charBuf, 5000));
serializer.NestingLevel=-1;
serializer.Serialize(test);
Console.PrintLine(serializer.GetString());
Data::DataLanguageParams rusML;
rusML.RequireFieldAssignments = false;
rusML.AddFieldNameAfterAssignment = false;
rusML.LeftAssignmentOperator = "равно";
rusML.FieldSeparator = " следующее поле";
rusML.LeftFieldNameBeginQuote = null;
rusML.LeftFieldNameEndQuote = null;
rusML.RightFieldNameBeginQuote = null;
rusML.RightFieldNameEndQuote = null;
rusML.StructInstanceOpen = "начало структуры";
rusML.StructInstanceClose = " структура кончилась";
rusML.OneLineCommentBegin = "комментарий:";
rusML.StringQuote="\"";
rusML.CharQuotes = "";
rusML.ArrayOpen = " массив начался ";
rusML.ArrayClose = " кончился массив ";
rusML.ArrayElementSeparator = " дальше";
rusML.FalseTrueNames[0] = "нет";
rusML.FalseTrueNames[0] = "да";
rusML.DecimalSeparator = ',';
serializer = Data::TextSerializer(rusML, Data::TextSerializerParams::Verbose, ArrayRange<char>(charBuf, 5000));
serializer.NestingLevel=-1;
serializer.Serialize(test);
Console.PrintLine(serializer.GetString());
return 0;
}
Сделал автоматический сериализатор с кучей параметров, используя которые можно описать JSON, инициализаторы C'шных и D'шных структур, подмножество XML или какой-нибудь свой кастомный формат. Здесь показана десериализация сишного инициализатора с designated initializers, который почему-то не добавили в C++. Затем полученная структура сериализуется в JSON (его описание в моём хидере, и здесь не приведено), а затем в придуманный мной ради прикола язык разметки rusML, описание которого можно видеть в коде.
Выводит (табы порезались):
{
"strArr" : ["str1", "ergvwr", "brt"],
"foo" : 5,
"str" : "gammaker",
"vals" : [-4, 66, 432, -95],
"dbl" : 3.141592653589789,
"tests" : [
{
"intArray" : [43, 54, 36, 76],
"fixedIntArray" : [9, 4, 85],
"booleanVal" : true,
"flt" : 2.3456699,
"stringArray" : ["test 0 A", "test 0 B", "test 0 C"]
},
{
"intArray" : [],
"fixedIntArray" : [3655456, 234, 3],
"booleanVal" : false,
"flt" : 2.7182817,
"stringArray" : ["test 1 A", "test 1 B"]
},
{
"intArray" : [1531, 1253, 16, 634, 236462363],
"fixedIntArray" : [9435, 435, 8355],
"booleanVal" : false,
"flt" : 123.6499938,
"stringArray" : ["test 2 A", "test 2 B", "test 2 C", "test 2 D"]
}
],
"bar" : 1025
}
начало структуры
strArr равно массив начался "str1" дальше "ergvwr" дальше "brt" кончился массив следующее поле
foo равно 5 следующее поле
str равно "gammaker" следующее поле
vals равно массив начался -4 дальше 66 дальше 432 дальше -95 кончился массив следующее поле
...
+1
#include <iostream>
#include <tuple>
using namespace std;
template<typename T, typename T0, typename T1, typename ...Args>
void PrintStruct(const tuple<T0 T::*, T1 T::*, Args T::*...>& members, const T& val)
{
cout << val.*std::get<0>(members) << endl;
PrintStruct(members._Get_rest(), val);
}
template<typename T, typename T0>
void PrintStruct(const tuple<T0 T::*>& members, const T& val)
{
cout << val.*std::get<0>(members) << endl;
}
struct MyStruct
{
int x;
float y;
static const tuple<decltype(&MyStruct::x), decltype(&MyStruct::y)> Members;
};
const tuple<int MyStruct::*, float MyStruct::*> MyStruct::Members = std::make_tuple(&MyStruct::x, &MyStruct::y);
int main()
{
MyStruct str = {123, 3.14159f};
PrintStruct(MyStruct::Members, str);
return 0;
}
Пытался понять, почему мой код не компилится в 2013 студии, и быстренько накатал этот минимальный пример. Но вышел облом - он почему-то компилится, в отличие от моей реальной либы со схожими шаблонными крестоконструкциями.
+1
static function saveoprosform_ajax()
{
global $DB, $USER;
$task_id = $_REQUEST["task_id"];
$qlist = $_REQUEST["qlist"];
$sql = "DELETE FROM `tickets_qc_results` WHERE `task_id`=" . $DB->F($task_id) . ";";
$DB->query($sql);
$DB->free();
if ($task_id && $qlist) {
// другой говнокод
$sql = "INSERT INTO `tickets_qc_results`...';
$DB->query($sql);
} else {
$ret["error"] = "Недостаточно данных для выполнения операции!";
}
echo json_encode($ret);
return false;
}
Сначала удаляем, потом проверяем by ©senior shaurma developer
+1
$arResult["ORDER_ID"] = (int)CSaleOrder::DoSaveOrder($arOrderDat, $arFields, 0, $arResult["ERROR"]);
if ($arResult["ORDER_ID"] > 0 && empty($arResult["ERROR"]))
{
CSaleBasket::OrderBasket($arResult["ORDER_ID"], CSaleBasket::GetBasketUserID(), SITE_ID, false);
}
Нам насрать на то что DoSaveOrder уже внутри себя делает OrderBasket, мы сделаем это еще раз.
+1
<? $dir = $APPLICATION->GetCurDir();
$slashCount = substr_count($dir, "/");
//убираем со страницы отдельной новости
if($slashCount<6){ ?>
...
}?>
Какая наикрасивейшая проверка на количество слешей в урл.
Супер решение
+1
...
if(empty($text)){
$response = chr(0xF0) . chr(0x9F) . chr(0x98) . chr(0x95);
}
else{
$textLines = explode("\n", $text);
if(preg_match('/^\d+$/', $textLines[0])){
$response = $this->doneTaskAction(
(int) $textLines[0]
);
}
else{
$response = chr(0xF0) . chr(0x9F) . chr(0x98) . chr(0x95);
}
}
...
class dCommand extends doneCommand{
protected $name = 'd';
protected $description = 'Псевдоним команды /done';
protected $usage = '/d <task_id>';
}
https://habrahabr.ru/post/305462/
https://github.com/Bashka/taskbot
+1
public void testGetInactiveSessionIds() throws Exception {
Session inactive1 = createTestSession();
Session inactive2 = createTestSession();
Thread.sleep(1001);
Date timestamp = new Date();
Thread.sleep(1001);
List<String> inactiveSessions = sessionDAO.getSessionsWithLastAccessTimeBefore(timestamp);
assertEquals(2, inactiveSessions.size());
assertTrue(inactive1.getId().equals(inactiveSessions.get(0)) || inactive1.getId().equals(inactiveSessions.get(1)));
assertTrue(inactive2.getId().equals(inactiveSessions.get(0)) || inactive2.getId().equals(inactiveSessions.get(1)));
}
Юнит тест поиск неактивных сессий перед их закрытием. Тут прекрасны задержки на секунду и проверка что сессия содержится в списке inactive
+1
if ($can_null || $can_unnull) {
...
}
Когда удачно назвал переменную.