Pull to refresh
1
0

Пользователь

Send message

Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО

Reading time3 min
Views382K
Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
Читать дальше →

Делаем приватный монитор из старого LCD монитора

Reading time2 min
Views983K


Вы наконец-то можете сделать кое-что со своим старым LCD монитором, который завалялся у Вас в гараже. Превратите его в шпионский монитор! Для всех вокруг он будет выглядеть просто белым экраном, но не для Вас, потому что у Вас будут специальные «волшебные» очки.

Всё что Вам нужно – это пара старых очков, нож для бумаги и растворитель для краски.

Читать дальше →

Попытка просто объяснить сложные, для новичков, вещи в javascript

Reading time8 min
Views24K
Я попытаюсь просто объяснить, как работают замыкания в Javascript, как работает this, как создавать конструкторы для своих классов и чем различаются различные подходы к их созданию.
Статья не претендует на новаторство, но достаточно доступные объяснения how it works для новичков я не видел, и на мой взгляд — это три самых узких места в Javascript (не привязанному к какому либо контексту, серверу или браузеру, например).
Читать дальше →

О ненужности Spanning Tree

Reading time7 min
Views67K


Сразу оговоримся, не стоит воспринимать заголовок слишком буквально. Если звезды зажигают… и так далее.

Тем не менее, семейство протоколов Spannning Tree, если не отживает свой век в качестве основного инструмента резервирования в ethernet-сетях, то как минимум плавно перетекает в узкие и специфические ниши (само собой, их обсуждение выходит за всякие рамки этой статьи, но в приветствуется в комментариях).

И да, конечно, никто не отменял Spanning Tree как технологию защиты от человеческой ошибки.
Читать дальше →

JavaScript паттерны… для чайников

Reading time8 min
Views181K
Однажды вечером, сразу после того, как я закончил разбираться с наследованием в JS, мне пришла в голову идея, что пора бы заняться чем-нибудь посложнее — например паттернами. На столе внезапно оказалась книжка Gof, а на экране ноутбука появился труд с названием «JavaScript patterns».

В общем, спустя пару вечеров, у меня появились описания и реализации на JavaScriptе самых основных паттернов — Decorator, Observer, Factory, Mediator, Memoization (не совсем паттерн, а скорее техника, но мне кажется что она прекрасно в этот ряд вписывается) и Singleton.

Читать дальше →

Несколько полезных сервисов

Reading time2 min
Views126K
Хочу поделиться ссылками на несколько полезных сервисов. Некоторые из них помогут сэкономить время, другие — сделают за Вас незнакомую/нелюбимую работу. Список разбит по категориям, чтобы было легче ориентироваться.

Сервисы опросов
userreport.com (добавил Romanych)
simpoll.ru
webanketa.com (добавил mihass)

Кнопки постинга в социальные сети
Кнопка от Яндекса
addthis.com (добавил UksusoFF)
share42.com
Читать дальше →

Создаем анимированные кнопки при помощи CSS3

Reading time11 min
Views57K


В данной статье я хочу поделиться с вами некоторыми экспериментами по созданию анимированных кнопок при помощи CSS3. Идея заключается в создании анимированных ссылок с разными стилями, hover-эффектами и пр.

В данных примерах используются иконки с webiconset.com, а также шрифт от Just Be Nice.

Мы рассмотрим каждый пример и разберем как выглядит их HTML-структура и стили для разных состояний кнопок.

Обратите внимание, что анимация/переходы будут работать только в браузерах, которые поддерживают эти CSS3-свойства.

Чтобы не захламлять код в уроке я не буду использовать префиксы для различных браузеров. Их вы сможете увидеть в архиве с примерами.
Читать дальше →

Использование bash completion в командной строке, собственных скриптах и приложениях. Часть 2

Reading time5 min
Views26K
Про bash completion на хабре я уже писал тут, и даже конце пообещал рассказать про настройку автодополнения для собственных скриптов.

Однако, прошло уже полтора года, а лично у меня до продолжения руки так и не дошли. Зато эту почетную обязанность взял на себя хабраюзер infthi, опубликую от его имени.

Читать дальше →

Использование bash completion в командной строке, собственных скриптах и приложениях. Часть 1

Reading time2 min
Views58K
Часть 2

Системный администратор — человек ленивый. Обычно он старается сделать максимум работы, приложив минимум усилий, а для этого зачастую требуется автоматизировать многие рутинные процедуры. Например — набор полных имен хостов при создании ssh-соединения, или же длинных аргументов некоторых команд :)

Сегодня я попробую рассказать про использование такого функционала шелла как bash completion.
вам интересно?

Subtle Patterns: фоновые текстуры для вашего сайта

Reading time1 min
Views72K
Если вы запускаете новый сайт и заканчиваете его оформление, то есть смысл посмотреть коллекцию Subtle Patterns: отлично оформленную коллекцию фоновых текстур (паттернов) под лицензией Creative Commons Attribution 3.0 Unported. Их можно использовать без ограничений.



Сайт привлекает удобным предварительным просмотром: каждую текстуру можно мгновенно применить на всей странице в качестве фона. Сейчас там 93 работы, коллекция еженедельно пополняется отличными новинками.

Все текстуры на сайте Subtle Patterns являются повторяющимися, то есть склеиваются в бесшовную заливку.
Читать дальше →

Типы багов: этимология и энтомология

Reading time4 min
Views49K

Какие бывают баги


1. Немного этимологии и энтомологии
Давайте посмотрим попристальней на такое знакомое и (до боли?) родное слово БАГ. Происходит оно от английского слова Bug, означающего «насекомое». Есть еще много сторонних значений, в частности английское выражение «to go bugs» — сойти с ума, что легко кореллируется со вполне русским «тараканы в голове завелись». Также вспоминаются и «жучки на линии» (тоже, кстати, по-английски – bugs). И опять мы пришли к насекомым.
Читать дальше →

6 советов для мотивации команды

Reading time2 min
Views27K
От себя: Советы из статьи, перевод которой я представлю, подходит скорее для начинающих руководителей, так как опытные, скорее всего, большую часть этих советов уже используют в своей практике.

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

Производительный и читабельный XSLT: сборник советов

Reading time7 min
Views11K
В моей практике чаще всего в качестве шаблонизатора используется именно XSLT. Я не буду рассуждать о том, почему так происходит — о преимуществах данной технологии написано вполне достаточно. Но ещё больше написано о её недостатках. Считается, что XSLT является слишком многословным и тяжёлым для чтения, а также не самым производительным. В этой статье я постараюсь собрать несколько советов по улучшению качества XSLT-кода с точки зрения читабельности и выразительности. Некоторые из них также позволят XSLT работать несколько быстрее.

Именованные шаблоны

Многие «проблемы» XSLT связаны с тем, что мы слишком часто пытаемся писать на нём в процедурном стиле. Мы постоянно пытаемся сделать из него Smarty, но упираемся в один простой факт — XSLT является декларативным языком, как бы необычно это для нас не выглядело.
Например, мы пытаемся использовать именованные шаблоны, воспринимая их как процедуры, выводящие данные в определённом формате:

<xsl:template name="CreateItemLink">
    <xsl:param name="item"/>
    <a href="/item/?id={$item/id}">
        <xsl:value-of select="$item/name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Наверное, многие программисты именно так написали свой первый шаблон. И он неплохо решает свою задачу. Декларативный XSLT предлагает немного другой подход:

<xsl:template match="item">
    <a href="/item/?id={id}">
        <xsl:value-of select="name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Разница совсем не велика. Дело вкуса и стиля программирования. Давайте посмотрим, как шаблон будет использоваться в дальнейшем.

Читать дальше →

Будущее гибкой разработки ПО

Reading time14 min
Views21K

Программное обеспечение проникает во все щели человеческого общества. Мы узнаем погоду через интернет, а не через обычный градусник за окном. Мы едем по новому адресу с навигатором, а не ищем квадрат G7 на странице 59. Мы включаем RunKeeper, когда катаемся на велосипеде, чтобы узнать среднюю скорость и похвастаться в твиттере. Мы используем софт каждый день. Наверное, бОльшую часть жизни мы уже проводим в обнимку с любимыми гаджетами и программным обеспечением, а не с любимым человеком.

Проблема в том, что никто не знает, как на самом деле писать классный софт быстро и правильно. Waterfall благополучно скончался на рубеже веков, а новые методы разработки (agile) пока не могут решить фундаментальные проблемы.
Узнать, что нам всем делать и как с этим жить

Применение метамодели при проектировании баз данных с несколькими абстрактными слоями

Reading time6 min
Views14K
Классический подход предусматривает разработку структур баз данных, где все сущности информационной модели находятся на одном абстрактном уровне, являются однородными. Однако, сложные и слабо-структурированные предметные области приводят реляционную декомпозицию к комбинаторному взрыву, непропорциональному росту количества таблиц и связей. А динамические предметные области, в которых ежедневные изменения являются нормой жизненного цикла, требуют постоянного реинженеринга структуры реляционной базы данных.
Читать дальше →

Принцип цикады и почему он важен для веб-дизайнеров

Reading time6 min
Views236K
Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →

Духи-покровители программиста

Reading time3 min
Views4.7K
За душу программиста сражаются три могущественных духа-покровителя: Художник, Трудяга и Прагматик.

Если вы слышите внутри себя голос: «Ты не можешь рисовать», рисуйте во что бы то ни стало, пока голос не стихнет.
— Винсент ван Гог


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

Читать дальше →

Динамическое программирование. Классические задачи

Reading time8 min
Views332K
Здравствуй, Хабрахабр. В настоящий момент я работаю над учебным пособием по олимпиадному программированию, один из параграфов которого посвящен динамическому программированию. Ниже приведена выдержка из данного параграфа. Пытаясь объяснить данную тему как можно проще, я постарался сложные моменты сопроводить иллюстрациями. Мне интересно ваше мнение о том, насколько понятным получился данный материал. Также буду рад советам, какие еще задачи стоит включить в данный раздел.

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

Однако среди переборных и некоторых других задач можно выделить класс задач, обладающих одним хорошим свойством: имея решения некоторых подзадач (например, для меньшего числа n), можно практически без перебора найти решение исходной задачи.

Такие задачи решают методом динамического программирования, а под самим динамическим программированием понимают сведение задачи к подзадачам.
Читать дальше →

Переезд с SVN на Mercurial: личный опыт

Reading time4 min
Views16K
Для работы с Mercurial под Windows нужен только TortoiseHG. Писать свои плагины для Mercurial не получится, но вроде большинство разработчиков их и не пишет. Во всяком случае я изредка пишу только скрипты для автоматизации. Если у вас Visual Studio, можно воспользоваться красивым плагином.

Локальные репозитории, команды на бумажке и прочая оставим для студентов и лабораторных работ, которых на весь интернет вагоны. Так как единственный бенефит Mercurial для простых смертных это работа в офлайне, этим и надо пользоваться. То есть, основной репозиторий создаём в онлайне: Mercurial сейчас поддерживает Microsoft и Google (вот удивительно!), поэтому апологеты могут выбрать любимую корпорацию без мучений. Но с одним нюансом, у MS не работает русский в комментариях к коммитам.
Читать дальше →

Регулярная ловушка

Reading time2 min
Views3.4K
Допустим, мы хотим проверить регулярным выражением, что в строке есть хотя бы одна цифра. Пишем код:

<script>

var digits = /([0-9])+/g;

function has_digit(s) { return digits.test(s); }

</script>


Этот код неверен.
Вам очевидно — почему? Если нет — добро пожаловать под кат!

Читать дальше →

Information

Rating
Does not participate
Registered
Activity