• Изначально ущербная система подготовки к переговорам
    +1
    Уважаемый, простите за придирку к словам, но «помудомоечная машина» — это просто волшебно! :)
  • Используем старый рабочий сканер с пользой
    +2
    На рабочем компе Windows 7 x64 — и вот я, как дурак, запускал виртуалку каждый раз, когда нужно было что-то сосканировать, а другого сканера рядом не было.

    VueScan вам в помощь.
  • Язык программирования и база данных Q: в энтерпрайсе синтаксис роли не играет
    0
    Так какой тариф выбрали-то в итоге? )
  • Юзабилити посадочного талона: как спасти две человеческие жизни в год
    0
    Расскажите, а что не так с интерфейсом видеомагнитофона?
  • Обзор и классификация CMS по категориям (2013)
    +1
    Вот, в обзоре появилась HostCMS, спасибо )
    Но неплохо бы еще указать, что у нее есть два демо-сайта:
    один официальный, но без права редактирования demo.hostcms.ru/ логин и пароль demo
    а второй неофициальный, с правами на редактирование, но живущий всего полчаса, форма создания здесь www.hostcmsblog.ru/demosites/
    логин и пароль на создаваемые сайты — demo1
  • Обзор и классификация CMS по категориям (2013)
    +3
    Среди систем общего назначения обошли вниманием hostcms :(
  • Kingnovel K-R42 — медиаплеер с Android 4.2.2 на борту
    0
    по слухам новая ревизия устройства уже производится с радиатором, к сожалению, подтвердить или опровергнуть эту информацию я не могу

    Да, совершенно верно, новая ревизия уже с радиатором.
  • ZTE Open Firefox OS вскоре будет продаваться на eBay по 80 долларов
    0
    Не хватает фотографии автора статьи :-)
  • Собеседование на junior позицию. Антипатерны собеседующих
    –1
    Google/Yandex/Bing не выдают одинаковые результаты кандидатам на вакансию и людям проводящим собеседование

    Да-да, во всех крупных поисковиках сидят специально обученные люди, которые пишут алгоритмы, определяющие к какой категории относится автор поискового запроса и выдающие в зависимости от этого разные результаты! :-)
  • PHP класс для удобной и безопасной работы с MySQL
    +1
    /* offtopic */

    Развивая эту концепцию далее, мы приходим к мысли, что пейсхолдеры ...

    Таки спасибо вам, вы обогатили мою речь новым расово верным словом! :-)
  • Использование xslt-шаблонов в реальных проектах
    0
    И кстати, отличная система!
  • Письмо программиста — дизайнерам (в процессе подготовки нового проекта Winx...)
    0
    Было бы интересно прочитать еще и ответ дизайнера :)
  • Объединение javascript файлов
    +1
    Ну вообще-то еще есть такая штука как Google Minify — она объединяет и минифицирует и сжимает в gzip файлы «налету» при первом обращении к ним, и кеширует сжатый итоговый файл на диск и в дальнейшем отдает только его, пока какой-либо из исходных файлов не изменится.
    В итоге вы работаете с отдельными неминифицированными и несжатыми файлами, а в браузер отдается один объединенный файл, минифицированный и сжатый.
    У Google Minify есть плагины под некоторые распространенные CMS — например WordPress, Zend Framework, Yii, HostCMS, с остальными системами Minify можно использовать в чистом виде, с помощью входящего в комплект билдера
  • Шнуровик — плагин для подбора кабеля
    +1
    Был бы хорошо ввести какую-то разумную фильтрацию на возможные сочетания штекеров на разных концах кабеля.

    Например, мне удалось с помощью плагина запросить кабель вида DVI-D — Миниджек 3,5. Автомагии, правда, не получилось, что соверешенно логично, но все же посоветовали обратиться к менеджерам :)

    Было бы резонно, если бы после выбора, например, DVI-штекера на одном из концов кабеля, из вариантов для второго конца кабеля исчезли бы всякие расово неверные разъемы, типа джеков или BNC.
  • FizzBuzz, или почему программисты не умеют программировать
    0
    Если _действительно_ требуется целый миллион итераций в XSLT, то вероятнее всего имеет место быть некая серьезная ошибка в постороении системы.
    Потому что в таком случае действительно единственно верный способ — это учесть такую потребность еще на этапе формирования документа. Тут я с вами совершенно согласен.
  • FizzBuzz, или почему программисты не умеют программировать
    0
    Рекурсия это более распростаненный метод организации цикла со счетчиком в XSLT.
    Однако он же и более ресурсоемкий.

    Метод Пиза позволяет избавиться от рекурсии и тем самым оптимизировать выполнение шаблона. При этом, надо учитывать, что в реальных задачах можно в качестве содержимого переменной $set использовать не набор узлов обрабатываемого XML-документа, а набор узлов самого шаблона, записав переменную как
    <xsl:variable name="set" select="document('')//node()"/>
    , и тогда наш цикл не будет зависеть от обрабатываемого документа.
    (В данной, чисто условной задаче, это к сожалению, невозможно, из-за малого числа узлов в XSL-шаблоне цикл доходит только до 36. Но тут можно вспомнить о том, что каждый комментарий в шаблоне тоже считается узлом. Поэтому можно написать комментариев к каждой строке, и добить всеь шаблон пустыми комментариями в конце, чтобы цикл дошел до ста, пример ниже)

    Ну и если уж совсем удариться в оптимизацию, то имеет смысл вынести деление в отдельные переменные и оптимизировать первое условие, проверяя в нем сначала делимость на 5 а потом только делимость на 3.

    Тогда получится следующее:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="text" encoding="UTF-8"/>
    
    	<!--Программа FizzBuzz-->
    
    	<xsl:template match="/">
    
    		<!--Выберем все узлы текущего документа-->
    		<xsl:variable name="set" select="document('')//node()"/>
    
    		<!--Создадим цикл со счетчиком-->
    		<xsl:for-each select="$set[position() <= 100]">
    
    			<!--Вычислим значение остатка от деления текущего числа на 5-->
    			<xsl:variable name="mod5" select="position() mod 5"/>
    
    			<!--Вычислим значение остатка от деления текущего числа на 3-->
    			<xsl:variable name="mod3" select="position() mod 3"/>
    
    			<!--Проверим выполение условий задачи-->
    			<xsl:choose>
    
    				<!--Если число кратно и пяти и трем то выведем "FizzBuzz"-->
    				<xsl:when test="$mod5 = 0 and $mod3 = 0">FizzBuzz</xsl:when>
    
    				<!--Если число кратно трем то выведем "Buzz"-->
    				<xsl:when test="$mod3 = 0">Buzz</xsl:when>
    
    				<!--Если число кратно пяти то выведем "Fizz"-->
    				<xsl:when test="$mod5 = 0">Fizz</xsl:when>
    
    				<!--Во всех остальных случаях выведем само число-->
    				<xsl:otherwise>
    					<xsl:value-of select="position()"/>
    				</xsl:otherwise>
    			</xsl:choose>
    
    			<!--Выведем пробел-->
    			<xsl:text> </xsl:text>
    
    		</xsl:for-each>
    
    	</xsl:template>
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- -->
     <!-- --> 
    </xsl:stylesheet>
    

    Да, это извращение чистой воды, но… на профайлере ваш способ выполняется примерно 0,0184 с, а мой — 0,0104 с. При этом глубина стека в вашем варианте составляет 301, а в моем — 4.
    По-моему это профит, однозначно! :)

    Ну то есть я понимаю что именно в данной задаче подобная оптимизация не имеет никакого практического смысла, но мои рассуждения вообще-то к тому, что не стоит всегда пользоваться только стандартными походами. В одном из проектов учет подобных нюансов серёзно облегчил жизнь серверу, а в конечном итоге и мне :-)
  • FizzBuzz, или почему программисты не умеют программировать
    +4
    Вот XSLT здесь еще не было :) Поэтому вот он:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="text" encoding="UTF-8"/>
    
    	<xsl:template match="/">
    		<xsl:variable name="set" select="//node()"/>
    
    		<xsl:for-each select="$set[position() <= 100]">
    			<xsl:choose>
    				<xsl:when test="position() mod 3 = 0 and position() mod 5 = 0">FizzBuzz</xsl:when>
    				<xsl:when test="position() mod 5 = 0">Buzz</xsl:when>
    				<xsl:when test="position() mod 3 = 0">Fizz</xsl:when>
    				<xsl:otherwise>
    					<xsl:value-of select="position()"/>
    				</xsl:otherwise>
    			</xsl:choose>
    			<xsl:text> </xsl:text>
    		</xsl:for-each>		
    	</xsl:template>
    </xsl:stylesheet>
    

    Для краткости кода использован метод Пиза, поэтому число узлов в обрабатываемом xml должно быть не менее ста.