+319        
        
                            - 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
 
                        template<typename OpeningBracketRange,
	typename ClosingBracketRange,
	typename StopTokenRange,
	typename CommentBlockRangePairRange,
	typename RecursiveCommentBlockRangePairRange>
Meta::EnableIf<
	IsFiniteForwardRange<OpeningBracketRange>::_ &&
	IsFiniteForwardRange<ClosingBracketRange>::_ &&
	IsFiniteForwardRange<StopTokenRange>::_ &&
	IsFiniteForwardRange<CommentBlockRangePairRange>::_ &&
	IsFiniteForwardRange<RecursiveCommentBlockRangePairRange>::_,
decltype(Meta::Val<R>().Take(0))> ReadRecursiveBlock(int& counter, size_t* ioIndex,
	OpeningBracketRange openingBracket, ClosingBracketRange closingBracket, StopTokenRange stopToken,
	CommentBlockRangePairRange commentBlocks, RecursiveCommentBlockRangePairRange recursiveCommentBlocks)
{
	R start = me();
	size_t index = 0;
	const size_t openingBracketLen = openingBracket.Count();
	const size_t closingBracketLen = closingBracket.Count();
	const size_t stopTokenLen = stopToken.Count();
	while(!me().Empty() && counter!=0)
	{
		if(openingBracketLen!=0 && me().StartsWith(openingBracket))
		{
			counter++;
			me().PopFrontExactly(openingBracketLen);
			index += openingBracketLen;
			continue;
		}
		if(closingBracketLen!=0 && me().StartsWith(closingBracket))
		{
			counter--;
			me().PopFrontExactly(closingBracketLen);
			index += closingBracketLen;
			continue;
		}
		if(stopTokenLen!=0 && me().StartsWith(stopToken))
		{
			me().PopFrontExactly(stopTokenLen);
			index += stopTokenLen;
			break;
		}
		bool commentFound = false;
		for(auto& commentBlock: commentBlocks)
		{
			commentFound = me().StartsWith(commentBlock.Get<0>());
			if(!commentFound) continue;
			const size_t commentBlockOpeningLen = commentBlock.Get<0>().Count();
			const size_t commentBlockClosingLen = commentBlock.Get<1>().Count();
			me().PopFrontN(commentBlockOpeningLen);
			index += commentBlockOpeningLen;
			me().FindAdvance(commentBlock.Get<1>(), &index);
			me().PopFrontN(commentBlockClosingLen);
			index += commentBlockClosingLen;
			break;
		}
		if(commentFound) continue;
		for(auto& commentBlock: recursiveCommentBlocks)
		{
			commentFound = me().StartsWith(commentBlock.Get<0>());
			if(!commentFound) continue;
			int commentCounter = 1;
			ReadRecursiveBlock(commentCounter, &index, commentBlock.Get<0>(), commentBlock.Get<1>(), null, null);
			break;
		}
		if(commentFound) continue;
		me().PopFront();
	}
	if(ioIndex!=null) (*ioIndex) += index;
	return start.Take(index);
}
                                     
        
            Это мои последние достижения в написании сверх универсального обобщённого кода.
 Начиналось всё с функции, которая парсила блок кода до закрывающей фигурной скобки, учитывая встречающиеся открывающие скобки. Затем появилась поддержка комментариев и строк. Позже я решил, что нечего привязываться к какому-то конкретному языку, ведь можно же таким же образом парсить другой язык, где вместо скобок begin end и комментарии по-другому оформляются.
 А потом я подумал, зачем вообще привязывать типы параметров к строкам и массивам строк? И почему код, который парсится, вообще должен быть строкой, хранящейся в памяти непрерывно? В итоге мои размышления привели к такой реализации, которая способна парсить всё подряд, в том числе и связные списки, причём необязательно состоящие из символов. При этом открывающуюся скобку можно передать связным списком, закрывающуюся - массивом, а блоки комментариев передавать как массивом кортежей, так и хеш-таблицей.
 При этом эта функция относится к классу примеси и наследованием её можно подмешать к любому классу, имеющему нужные методы.
        
        
            
 gammaker,
            15 Августа 2016
        
        
        
        
        
        
        
                +261        
        
                            - 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
 
                        /* load config */
        for (i = 0; ; i++) {
                conf[0] = '\0';
                switch (i) {
                case 0:
                        /* ~ */
                        snprintf(conf, sizeof conf, "%s/.%s",
                            pwd->pw_dir, SWM_CONF_FILE);
                        break;
                case 1:
                        /* global */
                        snprintf(conf, sizeof conf, "/etc/%s",
                            SWM_CONF_FILE);
                        break;
                case 2:
                        /* ~ compat */
                        snprintf(conf, sizeof conf, "%s/.%s",
                            pwd->pw_dir, SWM_CONF_FILE_OLD);
                        break;
                case 3:
                        /* global compat */
                        snprintf(conf, sizeof conf, "/etc/%s",
                            SWM_CONF_FILE_OLD);
                        break;
                default:
                        goto noconfig;
                }
                if (strlen(conf) && stat(conf, &sb) != -1)
                        if (S_ISREG(sb.st_mode)) {
                                cfile = conf;
                                break;
                        }
        }
                                     
        
            Вот так spectrwm грузит конфиги.
        
        
            
 codemonkey,
            15 Августа 2016
        
        
        
        
        
        
        
                +273        
        
                            - 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 
                        #include <math.h>
#include <stdio.h>
double  DoubleToTheInt(double base, int power) {
    return pow(base, power);
}
int main() {
    // приводим к указателю на функуцию с обратным порядком аргументов
    double (*IntPowerOfDouble)(int, double) =
        (double (*)(int, double))&DoubleToTheInt;
    printf("(0.99)^100: %lf \n", DoubleToTheInt(0.99, 100));
    printf("(0.99)^100: %lf \n", IntPowerOfDouble(100, 0.99));
}
                                     
        
            "Изящный способ отстрелить себе ногу по самую голову."
Утащено с Хабры.
        
        
            
 Vindicar,
            15 Августа 2016
        
        
        
        
        
        
        
                +341        
        
                            - 1
 - 2
 
                        $dom = new DOMDocument;
$dom->loadHTML('<?xml encoding="UTF-8">' . $document);
                                     
        
            Выжал самое интересное.
Кто угадает, зачем к документу прилепляется строка '<?xml encoding="UTF-8">', тому ничего. Но без неё не работает. Точнее, работает, но неправильно.
        
        
            
 inkanus-gray,
            13 Августа 2016
        
        
        
        
        
        
        
                +111        
        
                            - 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 
                        @AutoValidated
    public void remove(
            @NotNull PaymentProviderConfiguration paymentProviderConfiguration
    ) {
        paymentProviderConfiguration.setDeleted(true);
        paymentProviderConfiguration.setDisabled(true);
        paymentProviderConfiguration.setEditable(false);
        paymentProviderConfigurationDAO.update(paymentProviderConfiguration);
        context.getHibernate().evict(paymentProviderConfiguration);
        context.getHibernate().flush();
    }
                                     
        
            интересно еще и то, что внутри paymentProviderConfigurationDAO.update(p  aymentProviderConfiguration); есть еще один flush
        
        
            
 vorozhtsov,
            12 Августа 2016
        
        
        
        
        
        
        
                +9        
        
                            - 1
 - 2
 - 3
 - 4
 - 5
 
                        var actualCharCount = DisplayCharactersCount;
while (DisplayCharactersCount != actualCharCount)
  {
    Thread.Sleep(500);
  }
                                     
        
            и такое бывает
        
        
            
 ewenso,
            12 Августа 2016
        
        
        
        
        
        
        
                +4        
        
                            - 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
 
                        // Change the color of the displayed status
		if ($status == "active") {
			$status_display = '<font color="white">' . $status . '</font>';
		} elseif ($status == "sold") {
			$status_display = '<font color="green">' . $status . '</font>';
		} elseif ($status == "emis") {
			$status_display = '<font color="orange">' . $status . '</font>';
		} elseif ($status == "alert") {
			//
		} elseif ($status == "deleted") {
			$status_display = '<font color="white">' . $status . '</font>';
			//$style="text-decoration: line-through;";
		} elseif ($status == "closed") {
			$status_display = '<font color="closed">' . $status . '</font>';
		} elseif ($status == "options_sent") {
			$status_display = '<font color="yellow">' . $status . '</font>';
		}
		if ($trip_type == "one_way") {
			$one_way = "SELECTED";
			$round_trip = "";
			$trip_type = '<font color="DarkBlue">One Way</font>';
		} else {
			$one_way = "";
			$round_trip = "SELECTED";
			$trip_type = '<font color="#348017">Round Trip</font>';
		}
		if ($cabin_class == "economy_class") {
			$eco_class = "SELECTED";
			$bus_class = "";
			$ooo_class = "";
		} elseif ($cabin_class == "business_class") {
			$eco_class = "";
			$bus_class = "SELECTED";
			$ooo_class = "";
		} elseif ($cabin_class == "o_class") {
			$eco_class = "";
			$bus_class = "";
			$ooo_class = "SELECTED";
		}
		if ($num_pass == "1") {
			$n1 = "SELECTED";
			$n2 = "";
			$n3 = "";
			$n4 = "";
			$n5 = "";
			$n6 = "";
			$n7 = "";
			$n8 = "";
			$n9 = "";
			$n10 = "";
		} elseif ($num_pass == "2") {
			$n1 = "";
			$n2 = "SELECTED";
			$n3 = "";
			$n4 = "";
			$n5 = "";
			$n6 = "";
			$n7 = "";
			$n8 = "";
			$n9 = "";
			$n10 = "";
		} elseif ($num_pass == "3") {
			$n1 = "";
			$n2 = "";
			$n3 = "SELECTED";
			$n4 = "";
			$n5 = "";
			$n6 = "";
			$n7 = "";
			$n8 = "";
			$n9 = "";
                                     
        
            Вот почему не надо мелочиться. И нанимать нормальных программистов.
        
        
            
 OMD,
            11 Августа 2016
        
        
        
        
        
        
        
                +4        
        
                            - 1
 
                        var options = [<?php echo implode(',', range(App\Service\Service::CONSTANT_MIN, App\Service\Service::CONSTANT_MAX)); ?>];
                                     
        
            
        
        
            
 Diwms,
            11 Августа 2016
        
        
        
        
        
        
        
                +8        
        
                            - 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
 
                        #include <vector>
#include <iostream>
template<class T>
struct reverse_view_impl {
	const T& cont;
	reverse_view_impl(const T& cont): cont(cont) {}
	using iterator = typename T::const_reverse_iterator;
};
template<class T>
reverse_view_impl<T> reverse_view(const T& cont) {
	return reverse_view_impl<T>(cont);
}
template<class T>
typename reverse_view_impl<T>::iterator begin(const reverse_view_impl<T>& view) {
	return view.cont.crbegin();
}
template<class T>
typename reverse_view_impl<T>::iterator end(const reverse_view_impl<T>& view) {
	return view.cont.crend();
}
std::vector<int> one_two_three() { return { 1, 2, 3 }; }
int main() {
	for (auto i : reverse_view(one_two_three())) {
		std::cout << i << std::endl;
	}
}
                                     
        
            // Surprise, motherfucker
        
        
            
 Bobik,
            10 Августа 2016
        
        
        
        
        
        
        
                +4        
        
                            - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 
                        bool shift = keys.Shift;
if (keys.Control)
{
	return SelectNextControl(shift ? false : true);
}
                                     
        
            Телерик опять жжот. Цветёт и пахнет.
        
        
            
 kerman,
            10 Августа 2016