- 1
- 2
- 3
- 4
- 5
bool GenerateException(int Code)
{
assert(false);
return false; //WTF??? Нужно перерефакторить.
};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+162
bool GenerateException(int Code)
{
assert(false);
return false; //WTF??? Нужно перерефакторить.
};
Ещё одно проектное решение...
+131
object FirstElement = null;
foreach(var item in SomeCollection)
{
FirstElement = item;
break;
}
Ось так от береться перший елемент з колекції :)
+24.7
session_start();
if ($_SESSION['ok'] !== 1){
echo "Сделали , блок сесиией";
$_SESSION['ok'] = '1';
} else {
echo "Блок!";
}
Mr_Smile: сматрите ) в первый раз на странице должна быть надпись "Сделали блок сессией"
Mr_Smile: при последующих обновлениях надпись должн абыть "Блок"
Mr_Smile: а сколько ни обновляй все кажет "Сделали блок сессией"
Mr_Smile: я ахутнГ?
http://www.govnokod.com/171
0
public class Solution
{
public string RemoveStars(string s)
{
char[] str = new char[s.Length];
int l = 0;
for(int i = 0; i < s.Length; ++i)
if(s[i] == '*')
--l;
else
str[l++] = s[i];
return new string(str, 0, l);
}
}
решил выйти из выгорания изучением новой технологии. литкод оказался прикольной штукой..
+5
#include <unistd.h>
#include <stdio.h>
#include <limits.h>
template<size_t Size> struct static_string {char data[Size];};
template<size_t ... Indexes>struct index_sequence {};
template<size_t Size, size_t ... Indexes>
constexpr static_string<sizeof ... (Indexes) + 1> make_static_string(const static_string<Size>& str,index_sequence<Indexes ...>) {return {str.data[Indexes] ..., '\0'};}
constexpr static_string<1> make_static_string() {return {'\0'};}
template<size_t Size, size_t ... Indexes>
struct make_index_sequence : make_index_sequence<Size - 1, Size - 1, Indexes ...> {};
template<size_t Size>
constexpr static_string<Size> make_static_string(const char (& str)[Size]) {return make_static_string(str, make_index_sequence<Size - 1>{});}
template<size_t ... Indexes>
struct make_index_sequence<0, Indexes ...> : index_sequence<Indexes ...> {};
template<size_t Size, size_t ... Indexes>
constexpr static_string<sizeof ... (Indexes) + 1> make_static_string(const char (& str)[Size],index_sequence<Indexes ...>) {return {str[Indexes] ..., '\0'};}
template<size_t Size>
constexpr size_t static_string_find(const static_string<Size>& str, char ch, size_t from, size_t nth) {return Size < 2 || from >= Size - 1 ? UINT_MAX :str.data[from] != ch ? static_string_find(str, ch, from + 1, nth) :nth > 0 ? static_string_find(str, ch, from + 1, nth - 1) : from;}
template<size_t Size>
constexpr size_t static_string_find_0(const static_string<Size>& str, char ch, size_t from, size_t nth) {return Size < 2 || from >= Size - 1 ? 0 : str.data[from] != ch ? static_string_find_0(str, ch, from + 1, nth) :nth > 0 ? static_string_find(str, ch, from + 1, nth - 1) : from;}
template<size_t Size1, size_t ... Indexes1, size_t Size2, size_t ... Indexes2>
constexpr static_string<Size1 + Size2 - 1> static_string_concat_2(const static_string<Size1>& str1, index_sequence<Indexes1 ...>,const static_string<Size2>& str2, index_sequence<Indexes2 ...>) {return {str1.data[Indexes1] ..., str2.data[Indexes2] ..., '\0'};}
template<size_t Size1, size_t Size2>
constexpr static_string<Size1 + Size2 - 1> static_string_concat_2(const static_string<Size1>& str1, const static_string<Size2>& str2) {return static_string_concat_2(str1, make_index_sequence<Size1 - 1>{},str2, make_index_sequence<Size2 - 1>{});}
template<size_t Begin, size_t End, size_t ... Indexes>
struct make_index_subsequence : make_index_subsequence<Begin, End - 1, End - 1, Indexes ...> {};
template<size_t Pos, size_t ... Indexes>
struct make_index_subsequence<Pos, Pos, Indexes ...> : index_sequence<Indexes ...> {};
template<size_t Begin, size_t End, size_t Size>
constexpr static_string<End - Begin + 1> static_string_substring(const static_string<Size>& str) {return make_static_string(str, make_index_subsequence<Begin, End>{});}
template<size_t Begin, size_t Size>
constexpr static_string<Size - Begin> static_string_suffix(const static_string<Size>& str) {return static_string_substring<Begin, Size - 1>(str);}
#define remove_underscore(arg) ([] () __attribute__((always_inline)) {constexpr auto a = static_string_find(make_static_string(arg),'_',0,0) == UINT_MAX? make_static_string(arg):static_string_concat_2(static_string_concat_2(static_string_substring<0,static_string_find_0(make_static_string(arg),'_',0,0)>(make_static_string(arg)),static_string_suffix<static_string_find_0(make_static_string(arg),'_',0,0)+1>(make_static_string(arg))),make_static_string("\0"));return a;}().data)
int main()
{
puts(remove_underscore("_testtest"));
puts(remove_underscore("test_test"));
puts(remove_underscore("testtest_"));
}
Убогий constexpr в c++11
0
https://habr.com/ru/company/vk/blog/527420/
ВКонтакте снова выкладывает KPHP
....
Сгенерировать С++ из PHP — этого мало. Собственно говоря, это самое простое.
Во-первых, в PHP мы используем кучу функций стандартной библиотеки: header(),
mb_strlen(), curl_init(), array_merge(). Их тысячи — и все должны быть
реализованы внутри KPHP с учётом типизации и работать так же, как в PHP.
Реализация всего PHP stdlib (а также KPHP-дополнений), всех PHP-типов с
операциями и допущениями — это называется runtime, вон там квадратик сверху.
Во-вторых, PHP-сайт — это веб-сервер. Следовательно, и в KPHP должна быть вся
серверная часть, чтобы можно было в том же nginx подменить PHP-шный upstream
на KPHP-шный — и всё продолжало работать так же. KPHP поднимает свой веб-сервер,
оркестрирует процессы, заполняет суперглобалы и переинициализирует состояние,
как и PHP… Это тоже хардкорная часть — называется server, квадратик снизу.
И только имея результирующий код C++, написанные runtime и server, всё это можно
объединить и отдать на откуп плюсовым компиляторам. Мы используем g++ — там в
диаграмме есть квадратик g++. Но не совсем так: у vk.com настолько огромная
кодовая база, что этот компилятор не справляется, и поэтому мы применяем патченный
distcc для параллельной компиляции на множестве агентов. В итоге всё линкуется в
один огромный бинарник (это весь vk.com), он раскидывается на кучу бэкендов и
синхронно перезапускается. Каждая копия запускает мастер-процесс, который порождает
группу однопоточных воркеров. Вот они на самом деле и исполняют исходный PHP-код.
Многие технические проблемы остаются за кадром — их не опишешь в статье на Хабре.
Чего стоит один только сбор трейсов при ошибках: ведь в С++ не получить
человекочитаемый стек, а хочется разработчику вообще его на PHP-код намаппить.
Гигантское количество внутренних нюансов, множество подпорок и легаси — но в итоге
продукт хорошо работает и развивается.
PHP и C++... два говна нашли друг друга
0
Trying to get property '%s' of non-object: Notice -> Warning
Undefined property: %s::$%s Notice -> Warning
тут брейкинг ченджес подвезли
https://wiki.php.net/rfc/engine_warnings
0
@Test
public void getTestcases_OffsetEqTwoAndLomitEqTen_ReturnTwoTestcasesInResponse()
Йажа - это не язык программирования, это состояние сознания
0
template <typename T, size_t size>
pure_nfsv4_op_array_tools::get_max_priority_opindex(
const std::array<T, size>& array, const std::unordered_map<uint32_t, uint32_t>& priority_map size_t pos = 0)
{
std::unordered_map<uint32_t, uint32_t>::const_iterator it, it_end = priority_map.end();
uint32_t max_priority = 0;
size_t i_max_priority = size;
for(; pos < size; ++pos)
{
it = priority_map.find(array[pos].opcode)
priority = (it != it_end) ? it->second : 4; // Анскилл
// лучше так:
// priority = get_priority(opcode);
if (priority > max_priority)
{
i_max_priority = pos;
max_priority = it->second;
}
}
return i_max_priority;
}
Какой дизайн-паттерн применить, если priority_map содержится в классе, методы которого используют эту функцию как вспомогательную?
То есть текущий файл подключается в файл-декларацию класса?
Можно, конечно, подключить его в .cc, но проблема останется.
+2
nameState() {
return this.name.length > 2 ? true : false
}
Из документации Bootstrap Vue
https://bootstrap-vue.org/docs/components/form-input#contextual-states