• Tower Defence (Portable)

      image

      В хабратопике inlanger рассказал о веселой игре «Tower Defence в стиле Starcraft2».

      Мне подобные игры нравятся (Xeno Tactics на флешке уже пару лет живёт), а порубать злобных терранов дают только в интернете. В итоге за 30 минут на Delphi был написан «эмулятор» сайта Starcraft2.pro. Сам эмулятор простой как тяпка. Встроенный http сервер, EmbedIE с настройкой прокси сервера на этот самый http сервер.

      Скачать: Лоадер + Игра + Исходники лоадера (21,8 Мб)
      Скачать v2: Лоадер + Игра + Исходники лоадера (22.4 Мб)
      Скачать v2 (обновление): Лоадер + Исходники лоадера (0.66 Мб)

      UPD: в файлике data\config_0.txt лежат настройки уровня.
      UPD: Сделал обновление.
    • Общие советы по составлению оптимальных регулярных выражений

        Регулярные выражения — неотъемлемая часть любого инструмента обработки данных.
        Логично, что в различных вариациях поддерживается различный синтаксис и различный функционал.
        Не смотря на это принципы работы самих регулярных выражений, машины регулярных выражений и базовые установки оптимизации практически едины.
        Где-то на просторах сети видел совершенно глупое заявление, что “регулярные выражения не приспособлены для решения нерегулярных данных” или нечто похожее. Полнейшая ерунда.
        Читать дальше →
      • Удивительная Курта

        • Translation
        Curta

        Возможно, ни один калькулятор любого типа не вызывал столько дискуссий, сколько Курта. Хотя об этом невероятном устройстве и его создателе может быть написана целая книга, в этой статье приведена лишь небольшая часть информации.
        Читать дальше →
      • Launchy 2.0: НЛО прилетело и опубликовало эту кнопку здесь

          Launchy 2.0 внешний вид
          Тихо и незаметно обновилась довольно примечательная Win32 утилита, экономящая время любого, чья ведущая верхняя конечность чаще находится в районе клавиатуры нежели мыши (субъективно).
          Читать дальше →
        • Бекап важной информации с помощью Rar+nnCron

            Уже давно пользуюсь весьма интересной, простой, и удобной программой для архивации важных данных, которая не дала ни одного сбоя за 2 с половиной года работы!
            Называется эта программа nnCron, для xUSSR регистрация бесплатная. Работает nnCron в связке с winrar и выполняет несколько простых операций, благодарая которым у меня хранится архив важных мне папок в течении полугода. Естественно пришлось пожертвовать кусочком дискового пространства, но информация дороже.
            Читать дальше →
          • От данных — к информации

              В последнее время в специализированной прессе все чаще появляется «загадочная» аббревиатура ILM – Information Lifecycle Management. Ведущие разработчики один за другим предлагают решения для той или иной части ILM, красиво расписывая общую схему хранения данных в реорганизованном соответствующим образом датацентре. Однако ясного понимания, что же такое ILM, у российских заказчиков, на наш взгляд, пока не сложилось.

              Первое, что стоит отметить: ILM – не панацея, не технология, не решение и не руководство к действию. Это концепция, отражающая современный взгляд на корпоративные данные; набор практик управления, нацеленных на достижение оптимального соотношения ценности информации для бизнеса и стоимости инфраструктуры её хранения.

              ILM, согласно SNIA (Storage Networking Industry Association, www.snia.org), это политики, процессы, практики, сервисы и инструменты, используемые для того, чтобы соотнести ценность информации с точки зрения бизнеса с наиболее подходящей и эффективной по стоимости инфраструктурой, начиная с момента создания информации и заканчивая ее размещением. Информация сопоставляется с бизнес-требованиями через политики управления и уровни предоставления сервиса, связанные с приложениями, данными и метаданными.

              Говоря проще, это концепция автоматического размещения данных в инфраструктуре датацентра на основании требований бизнеса к параметрам защищенности, доступности информации и с учетом ее ценности для бизнеса, актуальности и минимизации расходов на хранение. Какие же проблемы хранения помогает решить ILM?

              Не захлебнуться в океане данных

              Ни для кого не секрет, что объем корпоративной информации с каждым годом увеличивается, и очень серьезно. В соответствии с отчетами IDC рост объемов хранимых и обрабатываемых данных составляет более 70% в год. В среднестатистической современной компании три тысячи сотрудников ежедневно передают по электронной почте терабайт данных. Всего в мире, по подсчётам Gartner, в 2005 году отправлялось 36 миллиардов электронных сообщений в день — в три раза больше, чем в 2001-м. В некоторых специфичных отраслях, например в медицине, наблюдается экспоненциальный рост информационных объёмов.

              Ситуация осложняется требованиями нормативных актов и внутрикорпоративныхстандартов, предписывающих длительное хранение некоторых видов информации — иногда в течение 5--10 лет. А это значит, что компания, имеющая корпоративные данные скромного объема в 1 Тбайт и показывающая рост этих объёмов 60% в год (не самый большой по современным меркам), через 10 лет будет хранить уже 110 Тбайт информации. Увеличение более чем в 100 раз!

              Проблема взрывного роста объемов данных тесно связана с другой проблемой: постоянно усложняются процессы управления распределенной инфраструктурой датацентров. Современный центр обработки данных состоит из тысяч взаимодействующих компонентов – серверов, элементов систем хранения (логических единиц, дисков, контроллеров, управляющих серверов, ленточных накопителей и т. д.), элементов сетей хранения и локальных сетей (маршрутизаторов, хост-контроллеров, адаптеров и пр.). Для управления сложной инфраструктурой применяются специальные инструменты, причём для каждого вида инфраструктурных элементов — свои. И чем больше в датацентре разнородных компонентов, тем больше инструментов управления вы вынуждены использовать. Что ещё больше увеличивает сложность системы.

              Кроме того, использование специализированных инструментов управления инфраструктурой не решает основной задачи – управлять лавинообразно растущим потоком данных. Компании продолжают хранить информацию в дорогих высокопроизводительных системах и, несмотря на снижение стоимости оборудования, с каждым годом расходуют всё больше средств на её хранение. Процесс резервного копирования становится всё сложнее и требует больше и больше времени. При этом существующие инструменты управления не автоматизируют в достаточной степени процессы размещения информации – администраторы фактически вручную выделяют место для ее хранения, задают привязку к необходимым серверам, создают расписание резервного копирования, определяют источники и места назначения.

              Сложившуюся ситуацию в области хранения данных можно охарактеризовать следующим образом: объем данных катастрофически растет, а имеющиеся инструменты управления не в силах с этим справиться.

              Нужны ли бизнесу все сохраняемые в системах данные?

              Возвращаясь к примеру компании, за 10 лет увеличившей объём корпоративной информации в 100 раз, зададимся вопросом: так ли необходимы её бизнесу эти 110 Тбайт данных, размещенных в оперативных хранилищах?

              Очевидно, что нет. С течением времени меняется как ценность данных, так и требования к их доступности и защищенности. Так, ценность финансовой транзакции максимальна в течение первого месяца и впоследствии неуклонно снижается. Кроме того, финансовая запись в ERP-системе компании и, скажем, личное письмо сотрудника имеют разную ценность для бизнеса уже в момент создания.

              Между тем в оперативных высокопроизводительных хранилищах датацентра располагаются все данные, включая устаревшие и ненужные, в то время как храниться там должны только те, к которым предъявляются высокие требования доступности.

              Анализ, проведенный Enterprise Storage Group, показывает, каким образом ценность информации для бизнеса изменяется с течением времени в зависимости от ее типа.



              Мы можем сделать важный вывод: разные классы информации имеют разную ценность для бизнеса, и эта ценность меняется с течением времени.

              Следующее важное свойство корпоративных данных – их состояние. Создаваемые данные сохраняются в датацентре для последующей обработки и затем в зависимости от решаемых бизнесом задач изменяются. Пока данные изменяются, они находятся в активном состоянии и называются оперативными. Но с течением времени наступает момент, когда данные «закрепляются» и более изменениям не подвергаются. Они могут использоваться для генерации новых документов, сводных отчетов и т. п. Такие данные называют ссылочными. Естественный способ хранения ссылочных данных – архив.

              В современных датацентрах обычно оперативные и ссылочные данные размещаются вместе, в одних и тех же хранилищах, что не только увеличивает стоимость хранения, но и создает трудности с соблюдением нормативных актов, регламентирующих хранение определенных видов информации.

              Наконец, есть еще одно состояние – устаревшие данные, которые нигде более не используются, а срок их хранения, регламентируемый нормативными актами, истек. Такие данные больше не нужны бизнесу, их ценность нулевая, и они могут быть удалены. В настоящее время устаревшие данные отслеживаются практически вручную, их удаление из системы представляет собой кошмар для администратора, а хранение – пустую трату денег.

              Вперед и вверх!

              Описывая текущую ситуацию с хранением данных, мы намеренно не акцентировали внимания на различии между данными и информацией. Точно так же эти различия не учитываются в сложившейся сегодня практике организации процессов и инфраструктуры хранения. Однако именно этот аспект – один из важнейших в концепции ILM: данные ≠ информация

              Данные – это просто набор байтов, способ отражения бизнес-информации в инфраструктуре хранения. С такой точки зрения все они представляют одинаковую ценность, поскольку их семантика не определена, а значение здесь имеют такие параметры, как надежность хранения, защищенность и доступность. Именно этими характеристиками оперируют современные системы хранения данных и инструменты управления инфраструктурой.

              Информация – это данные, представляющие определенный смысл для бизнеса. Аналогичные по структуре данные, одинаково размещенные в системе хранения, могут иметь совершенно разный смысл и, следовательно, разную ценность для компании. Например, личное письмо сотрудника, посланное по электронной почте, и письмо того же сотрудника, содержащее конфиденциальные сведения о клиенте.

              ILM предлагает уйти от управления данными и сфокусироваться на управлении информацией. Для этого необходимо в первую очередь изменить подход к ее хранению. В рамках ILM предлагается классифицировать бизнес-информацию компании, прежде чем она попадет в инфраструктуру хранения. Классификация – это необходимый для эффективного управления жизненным циклом информации процесс, обеспечивающий хранимые данные адекватной семантикой.

              Для этого процесса вводятся понятия целевых показателей уровня сервиса (Service Level Objectives — SLO) и «политик» (Policies), на основе которых будет осуществляться управление хранением информации. SLO определяет, какие показатели ключевых характеристик (надежности, доступности и др.) должны обеспечиваться инфраструктурой хранения для данного класса информации. «Политики» определяют необходимые действия с конкретными классами информации при возникновении определенных условий (например, при окончании срока жизни информации). Основой для формирования SLO и политик являются бизнес-требования и бизнес-процессы компании, а также различные нормативные акты.

              Таким образом, подход к хранению данных в датацентре становится информационно-центричным.



              Создаваемая информация классифицируется, с ней связываются определенные SLO, на основании которых интегрированный в инфраструктуру механизм управления размещает эту информацию согласно заданным политикам. Это значит, что информация, требующая высокой доступности, попадет в высокопроизводительные системы хранения, а та, что не является критически важной для бизнеса, разместится в недорогих хранилищах.

              При этом механизмы работы приложений с данными не меняются, но инструменты управления постоянно отслеживают ценность информации, ее состояние и перемещают ее в адекватные системы хранения согласно политикам и SLO. На определенном этапе жизненного цикла информация может стать ссылочной, устареть или повторно использоваться. Тогда механизм управления в первом случае передаст ее в архив, во втором – просто удалит, а в третьем – заново классифицирует и свяжет с другим SLO.

              Таким образом, датацентр, построенный согласно ILM, обеспечивает следующие основные преимущества:

              • снижение стоимости хранения информации (за счет своевременного переноса данных в недорогие системы хранения и уничтожения устаревшей информации);
                строгое соблюдение нормативных актов, регламентирующих хранение данных, путем автоматического применения политик;
                достижение соответствия характеристик хранения (надежности, защищенности, доступности и др.) различным классам информации;
                исключение дублирования информации (за счет управления ссылочными данными).

                И при этом информация всегда предоставляется в нужном месте, в нужное время и по оптимальной цене.
            • О, Боже, где же валидность?

                Разгорелась тут дискуссия на тему валидности. Вернее, суть там была в том, что развитие ИТ на (и не надо вот тут возмущенных вздохов!), на Украине, говорю я, позади планеты всей. Но про это как-то быстро забыли, и вопрос повернулся в другую плоскость.

                Валидность или не валидность? Вот в чем вопрос.

                К чему это фанатическое стремление к валидному коду? Каковы его практические плюсы, кроме того, что это в принципе стандарт?

                Вот «Хабра» не валидна, например. И что, давайте дружно перестанем тут тусоваться. Она ж не валидна!

                Короче, о пользователях надо думать, а не об имидже. Будет пользователь доволен — будет имидж.

                Update
                Спасибо всем, кто отметился в комментариях. Вразумительные объяснения только на пользу. Мне :)

                Правда, я не имел ввиду, что невалидная «Хабра» — это плохо. Но это уже другая история.

                Update2
                Своего рода продолжение дискуссии novikov.habrahabr.ru/blog/5404.html.
              • Коротко об дизайн-макетах, удобных XHTML-верстальщику

                  Заказчик прислал 14-мегабайтный PSD-файл, содержащий макет всего одной вебстраницы. Открыв его, обнаружил изрядный бардак в структуре: куча из скрытых слоёв, групп, поименованных абы как, каких-то продублированных несколько раз одинаковых слоёв и т.п. С грехом пополам разобрался, что к чему, сверстал. А потом выяснилось, что кое-что было забыто (я просто не смог увидеть это «кое-что»).

                  А ведь есть хорошие правила подготовки макетов перед отправкой их верстале. Я, пожалуй, запишу их сейчас, и по необходимости буду ссылаться на эту запись всякий раз, когда понадобится.

                  UPD: Хабралюди, не превращайте, пожалуйста, комментарии в арену для священных войн.

                  Читать дальше →
                • CSScomb 3.0: красивый код одной командой

                    На этой неделе вышла новая версия CSScomb — инструмента, который делает CSS-код красивым. О том, как «расчёску» используют в Яндексе, недавно писал Beyondtheclouds. Я же расскажу, что нового появилось в третьей версии и что делать, если базовой функциональности не хватает. Например, как написать свой плагин или даже постпроцессор.
                    Читать дальше →
                  • Образовательные и обучающие ресурсы для веб-разработчиков и веб-дизайнеров

                      Данным постом мы открываем рубрику «Переводы» в нашем блоге. Почему мы решили открыть такую рубрику? Дело в том, что сотни специалистов, работающих в Mail.Ru Group, для решения стоящих перед ними задач ежедневно прочитывают множество интересных статей и постов на форумах. Некоторые из них кажутся нам интересными, и мы считаем своим долгом перевести их на русский и поделиться этими ценными знаниями с Хабражителями.

                      Пользуясь случаем, хотим сообщить новость: сегодня состоялось открытие Технопарка — нашего образовательного проекта, о котором мы уже не раз писали на Хабре (например, тут, тут и тут). Теперь у технопарковцев есть свое собственное помещение. Изначально Технопарк задуман как место, где талантливые студенты МГТУ им. Баумана могут получить дополнительное образование в сфере веб-разработки, дизайна и программирования, а также окунуться в работу над реальными проектами высокой сложности. В общем, у Технопарка сегодня знаменательный день, и поэтому первый выпуск в рубрике «Переводы» мы решили посвятить образовательным ресурсам для веб-разработчиков и веб-дизайнеров. Ведь пока такие Технопарки не распространились по всей стране, разработчикам зачастую приходится заниматься исключительно самообразованием.

                      Читать дальше →
                    • Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

                        Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
                        Вы заказчик. Как убедиться, что работа выполнена качественно?
                        Как оценить качество вёрстки?

                        Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

                        Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

                        Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

                        Итак что же это за список?

                        Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

                        История обновлений:
                        • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
                        • 2015/08/10: актуализирован список исключений для CSSLint
                        • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
                        • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
                        • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
                        • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
                        • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
                        • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
                        • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
                        • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


                        Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
                      • Анализ применения SVG в качестве background-image


                          В последнее время все чаще появляются статьи, в которых авторы рекомендуют использовать SVG для backgroud-image. Действительно, применение SVG приносит большую пользу. Во всех прочитанных статьях очень вскользь упоминалось про производительность отрисовки SVG, что это более затратная операция, так как браузеру необходимо каждый раз заново отрисовывать растр.

                          И вот в один прекрасный день, открыв одно веб-приложение, я заметил, что мой браузер безумно «пожирает» память — одна вкладка «ела» около 600 МиБ. На МacBook с ретиной дела обстояли еще хуже. С этого момента началось расследование, куда же течет память. Кому интересно, добро пожаловать под кат.
                          Читать дальше →
                        • Hayaku — пишем CSS быстрее

                            Hayaku это сборник полезных скриптов, помогающих при быстрой веб-разработке.

                            Hayaku предоставляет способ быстрого способ написания и поддержки CSS кода в редакторе. К сожалению, он пока доступен лишь для Sublime Text 2, поддержка других редакторов ожидается позднее.
                            Читать дальше →
                          • Yate: Яндекс.Почта перешла на новый шаблонизатор

                              imageНекоторое время назад мы писали, что в Яндекс.Почте появился новый интерфейс, в котором используется шаблонизация данных в браузере. Немногие крупные сервисы отваживались на это, но мы и сейчас считаем такое решение наиболее удачным. Оно не только ускорило работу интерфейса, но и позволяет экономить трафик пользователя и эффективнее расходовать процессорное время серверов.

                              Тогда в качестве шаблонизатора мы использовали XSL, а данные передавали в формате XML. Переведя проект на новый интерфейс, мы начали искать другие способы ускорения работы интерфейса Яндекс.Почты.

                              Недавно мы перевели всю Почту на JS-шаблонизатор и JSON-данные.
                              И вот как это проходило
                            • Памятка пользователям ssh

                                abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

                                Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

                                Оглавление:
                                • управление ключами
                                • копирование файлов через ssh
                                • Проброс потоков ввода/вывода
                                • Монтирование удалённой FS через ssh
                                • Удалённое исполнение кода
                                • Алиасы и опции для подключений в .ssh/config
                                • Опции по-умолчанию
                                • Проброс X-сервера
                                • ssh в качестве socks-proxy
                                • Проброс портов — прямой и обратный
                                • Реверс-сокс-прокси
                                • туннелирование L2/L3 трафика
                                • Проброс агента авторизации
                                • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
                                Читать дальше →
                              • Как сделать группу инпутов удобной

                                  Когда я работал над сервисом заметок jotsky.com, еще до работы в Островке, надо было сделать ввод телефонного номера из двух инпутов. Примерно такой:



                                  Я сделал навигацию с помощью стрелочек. Сделал, чтобы по мере заполнения фокус переключался к следующем инпуту. А вот сделать правильную вставку из буфера обмена у меня никак не получалось.
                                  Читать дальше →
                                • Yet another cool story about bash prompt

                                    Я программист. По крайней мере так написано в трудовой книжке. Почти всё своё рабочее время я провожу в консоли и текстовом редакторе. Мне очень нравится bash. Почти год я жил в zsh, прислушавшись к советам своих многочисленных коллег и знакомых, но в итоге я вернулся в bash и ни капельки об этом не жалею.



                                    Zsh красив, приятен, чертовски функционален, но, признаюсь честно, я не смог совладать со всеми его многочисленными настройками. Я хочу работать, а не бороться со своим рабочим окружением. Простой пример: пару раз из-за автодополнения zsh я удалял все директории и файлы в текущей директории — zsh просто ставил пробел между автодополненной директорией и введённой мною звёзочкой (я хотел удалить всё в выбранной папке). Помните тот эпичный баг с пробелом и удалении директории /usr? У меня было то же самое. Спасибо гиту, выручил в который раз.

                                    Впрочем, дело не в zsh — будь я чуточку умнее, я бы с ним обязательно справился бы, и всё было бы хорошо, но мы, суровые программисты, будем использовать bash и vim, а гламурные zsh и textmate оставим хипстерам и прочим модникам ;)

                                    Я не напишу ничего оригинального и универсального решения я не приведу, но мне всегда нравилось читать конфиги и описания других людей, а если к ним были приложены интересные картинки, так я вообще перечитывал эти статьи несколько раз. Надеюсь, вам тоже будет интересно.
                                    Читать дальше →
                                  • Маньячная минимизация (в погоне за байтом)

                                      Hello World,

                                      Этот топик о том, каким образом можно предварительно зарефакторить код так, чтобы улучшить его минимизацию. Недавно я перед релизом минимизировал библиотеку Helios Kernel (о которой написал позавчера). Исходник библиотеки весит 28112 байт, в нём щедрые комментарии, и поэтому он с пол пинка ужимается YUI компрессором до 7083 байт. Не то что бы мне показалось, что 7 килобайт — слишком жирно. Но просто, посмотрев своими глазами на минимизированный код, я смог увидеть кучу мест, где можно было бы сэкономить ещё:



                                      Посмотрим, что можно сделать с кодом, чтобы превратить 7083 байт в 4009 3937.
                                      Читать дальше →
                                    • CSS хаки

                                      Браузеры и стандарты. Вечная погоня. Из-за несоответствий стандартам, из-за разных способов рендеринга страниц большая часть времени веб-дизайнера уходит на то, чтобы загладить эти несоответствия (использовать хаки). В итоге, вместо эффективной работы, дизайнер вступает в противоестественные отношения с браузерами, теряя драгоценное время.
                                      Читать дальше →