Search
Write a publication
Pull to refresh
3
0.5

WEB-программист, сетевой администратор

Send message

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

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

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

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

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

Извлекаем золото из старой электроники

Reading time2 min
Views783K


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

Инженер и химик Джозеф Мурчинсон (Josehf Murchison) опубликовал на сайте Instructables пошаговую инструкцию, как выплавлять золото из старых электронных приборов, которые вы собирались выбросить на свалку: старые ноутбуки, телефоны, камеры, принтеры, сканеры и прочее ненужное барахло.
Читать дальше →

Правильные способы исключения файлов в Git

Reading time1 min
Views210K
Иногда встречаю в файле .gitignore то, чего там быть никак не должно. Например, папка .idea, в которой лежат конфиги известных IDE от JetBrains. Это часть вашего рабочего окружения и она никаким боком не относится к проекту и репозиторию. Если над проектом работает несколько человек и каждый из них добавит конфиги своего окружения в .gitignore, то он превратится в нечитаемую помойку.

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

Лайфхак: в любой непонятной ситуации умножай на три

Reading time6 min
Views63K


Статья была написана три года назад но так и пылилась в черновиках. Публикую без изменений. Много воды утекло с тех пор. Однако может быть мой опыт кому-то пригодится.


Хочу обсудить проблемы, связанные с предварительной оценкой времени и сроков проектов. В этой статье я расскажу как обстоят дела на проекте, который я веду немногим более 5 месяцев. Я приведу некоторые свои мысли, объясню какие эксперименты с оценками я делал и какие выводы получил по прошествию этого срока.
Читать дальше →

Аналог ambilight из LED ленты WS2812, arduino и киндер-сюрприза

Reading time9 min
Views201K
Ambilight — разработанная Philips технология боковой подсветки пространства за телеящиком, которая, по мнению создателей, помогает зрителю еще больше погружаться в происходящее на экране.

В сети можно найти довольно много упоминаний о DIY Ambilight-like проектах, известны также коммерческие реализации подобного функционала в продуктах сторонних производителей / opensource-проектах, например, Lightpack.

Около года назад я практически случайно приобрел LED ленту на базе управляемых RGB диодов WS2812, рассчитывая задействовать её в каком-нибудь Arduino-проекте. Нехватка времени и противоречивая информация о возможности совместной работы с AVR контроллерами (сиречь Arduino) привела к тому, что реализация отодвинулась почти на год. Каково же было мое удивление, когда весь мини-проект по созданию Ambilight и организации его совместной работы с XBMC занял всего два вечера, т.е. 5-6 часов, включая поиск рабочего решения, написание скетча для arduino и конфигурационного скрипта к boblight, отладку их совместной работы, резку, пайку и монтаж ленты, а также прокладку 8м кабеля от arduino к телевизору.
Цель данного топика — поделиться с сообществом опытом и удивлением по поводу того, насколько все было просто, и задать направление желающим повторить это у себя дома. Мне кажется, что при наличии необходимых компонентов, повторение моего опыта «на столе» займет не более получаса.
А причем здесь киндер-сюрприз?

Несколько интересностей и полезностей для веб-разработчика (выпуск 6)

Reading time3 min
Views29K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Zephir — Ze(nd Engine) Ph(p) I(nt)r(mediate). Зефир — это компилируемый высокоуровневый язык программирования, предназначенный для написания PHP расширений без использования C. Проект от создателей Phalcon (скомпилированный PHP MVC Framework). О Zephir на Sitepoint
   

JSDB.IO — большая и качественная база нужных скриптов/библиотек/фреймворков на JavaScript. Все распределено по категориям: Animation, Application, Audio, Video, Games и др. Дабы собрать все популярные .js воедино добавлю еще три ссылки: Microjs (множество маленьких полезностей до 5кб), а еще jsdelivr и cdnjs, которые позволяют добавлять собственные скрипты.

Snap.svg — продукт от Adobe Webplatform. Недавно я рассказывал про "достойного конкурента Raphaël" и в комментариях оспоривали эту фразу из за отсутствия поддержки такого же множества браузеров. В разработке Snap участвует автор Raphaël — Дмитрий Барановский, а причина создания новой библиотеки для работы с SVG — невозможность поддерживать все возможности SVG в старых браузерах.

At.js — очень юзабельный скрипт для автозаполнения (в демо используется Emojify). А еще есть более функциональная библиотека для автозаполнения — Typehead от Twitter.
$('.atwho-inputor').atwho({
  at: "@", data: ["one", "two", "three"],
});

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

«Идеальный» www кластер. Часть 1. Frontend: NGINX + Keepalived (vrrp) на CentOS

Reading time9 min
Views113K


Этом цикле статей «Идеальный www кластер», я хочу передать базовые основы построения высокодоступного и высокопроизводительного www решения для нагруженных web проектов для неподготовленного администратора.
Статья будет содержать пошаговую инструкцию и подойдет любому человеку кто освоил силу copy-paste
Ошибки найденые вами, помогут в работе и мне и тем кто будет читать эту статью позже! Так что любые улучшение и правки приветствуются!

Хочу отметить, что эта инструкция родилась в процессе миграции web-систем компании Acronis в высокодоступный кластер. Надеюсь мои заметки будут полезны и для Вас!.

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

На frontend мы будем использоваться связку из двух службы:



keepalived — реализации протокола VRRP (Virtual Router Redundancy Protocol) для Linux. Демон keepalived следит за работоспособностью машин и в случае обнаружения сбоя — исключает сбойный сервер из списка активных серверов, делегируя его адреса другому серверу.

Другими словами, у нас 2 сервера на которых прописано по одному публичному адресу. Если любой из этих серверов падает, то адрес упавшего подхватывается вторым.
Демоны keepalived общаются по протоколу VRRP, посылая друг другу сообщения на адрес 224.0.0.18.
Если сосед не прислал свое сообщение, то по истечению периода он считается умершим и оба адреса обслуживает оставшаяся нода. Как только упавший сервер начинает слать свои сообщения в сеть, все возвращается на свои места


nginx [engine x] — это HTTP-сервер и обратный прокси-сервер, а также почтовый прокси-сервер, написанный Игорем Сысоевым. Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как Яндекс, Mail.Ru, ВКонтакте и Рамблер. Согласно статистике Netcraft nginx обслуживал или проксировал 15.08% самых нагруженных сайтов в октябре 2013 года.

Основная функциональность HTTP-сервера

  • Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
  • Акселерированное обратное проксирование с кэшированием, простое распределение нагрузки и отказоустойчивость;
  • Акселерированная поддержка FastCGI, uwsgi, SCGI и memcached серверов с кэшированием, простое распределение нагрузки и отказоустойчивость;
  • Модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр, преобразование изображений; несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно;
  • Поддержка SSL и расширения TLS SNI.


Другие возможности HTTP-сервера

  • Виртуальные серверы, определяемые по IP-адресу и имени;
  • Поддержка keep-alive и pipelined соединений;
  • Гибкость конфигурации;
  • Изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов;
  • Настройка форматов логов, буферизованная запись в лог, быстрая ротация логов;
  • Специальные страницы для ошибок 3xx-5xx;
  • rewrite-модуль: изменение URI с помощью регулярных выражений;
  • Выполнение разных функций в зависимости от адреса клиента;
  • Ограничение доступа в зависимости от адреса клиента, по паролю (HTTP Basic аутентификация) и по результату подзапроса;
  • Проверка HTTP referer;
  • Методы PUT, DELETE, MKCOL, COPY и MOVE;
  • FLV и MP4 стриминг;
  • Ограничение скорости отдачи ответов;
  • Ограничение числа одновременных соединений и запросов с одного адреса;
  • Встроенный Perl.


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

HTML Academy, Хабр и краудфандинг

Reading time3 min
Views90K
HTML Academy — это интерактивные онлайн-курсы по HTML и CSS. Проект существует уже более года, за который мы создали более 15 курсов, большая часть из которых бесплатна. Всё это время работа велась на чистом энтузиазме, однако, сейчас уже нужно выходить на новый уровень, чтобы делать курсы чаще, круче и полезнее. Для этого есть много путей, и один из них — народное финансирование.

Немного об HTML Academy


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

Практическое задание
Читать дальше →

Файл, который нужно закоммитить перед уходом с работы

Reading time2 min
Views113K
Немножко пятничного настроения в субботу. Я думаю, все видели этот код:

image

Но Aras Pranckevičius пошел еще дальше. Как написать код, который не так просто обнаружить?
И если вначале идут простые примеры, то дальше начинается…
Осторожно, чистое зло

CentOS 6.x 64 и Squid с авторизацией из Win2008AD

Reading time7 min
Views30K
Установка Squid на CentOS 6.x 64 с авторизацией из Win2008AD, групповое распределение, привязка по mac адресам, фильтр расширений файлов и запрещенных сайтов.

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

Создаем пользователя squid, он будет отвечать за получение списка пользователей их паролей и групповую принадлежность. Назначаем ему делегирование на эти возможности.
Читать дальше →

Схемы рецептов для кухни пиццерии. Процесс, тестирование, инструкция к схемам

Reading time6 min
Views38K
В прошлом посте  я описал процесс создания схем рецептов для пиццерии. Там же я обещал рассказать о процессе работы и тестировании.

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

Для понимания задачи я приведу пример процесса изготовления Гавайской пиццы. Если на экране пиццамекера высветилось название этой пиццы, он находит инструкцию по ее приготовлению.
image
  1. Рецепты пицц. Тут можно найти список ингредиентов конкретного продукта.
  2. Схемы количества ингредиентов. Если поступил заказ на пиццу среднего размера (30 см), то пиццамейкер обратит внимание именно на блоки с количествами для этой пиццы.
  3. Инструкция. Она существует для ознакомления с принципами схем. Тут показано что и как зашифровано.


Сотрудник добавит 15 штук слайсов ветчины в 3 круга, двойную порцию ананасов (3/4 стаканчика два раза) и стандартную порцию сыра Моцарелла для средней пиццы (1 полный зеленый стаканчик — цвета стаканчиков подобраны не случайно, коробки для средних пицц у нас тоже зеленого цвета).

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

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

Backbone.js для «чайников»

Reading time13 min
Views289K
Backbone.js для чайников
Как то поздним вечерком мне пришла мысль изучить Backbone.js и привязать его к уже написанному на jQuery сервису. Сервис уже серьёзно расширился и меня достало это нагромождение обработчиков кликов, запросов и логики. Поэтому, я как усердный школьник полез в официальную документацию. Но либо я тупой, либо мой английский меня подкачал, либо то и другое вместе, но я не черта не понял. Я прочитал уже второй раз, внимательно, и для особо одарённых мест использовал google translate. Прочитал также и пример ToDo List. Всё показалось понятно, ровно до той поры пока я не стал писать. После чего я взял всё что нашел по этой библиотеке, как на английском так и переводы. Прочтя кипу документации я решил, что сейчас вроде всё понял. Я напрягся, но… Не вышел каменный цветок у мастера Данилы, т.е. вышло, но это явно был не цветок, и камень как то неправильно пах. Тогда, как прилежный ученик, я решил написать «Hello, KittyWorld» с нуля. Попутно комментируя и сохраняя шаги в hg, у меня получилось введение в backbone.js framework для таких как я, особо одарённых.
Данные 7 шагов с комментариями.

Простыми словами о преобразовании Фурье

Level of difficultyMedium
Reading time14 min
Views1.1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?

Фонетический поиск

Reading time4 min
Views16K
Пару лет назад была задача написать для одного из сайтов такой поиск, который бы распознавал опечатки и предлагал бы исправленные запросы. Было перепробовано несколько вариантов, об одном из которых я и хотел тут написать. Поиск на основе звучания слов может стирать языковые границы, поскольку имена собственные на разных языках созвучны. Например, ищешь «Арнольд Шварцнеггер» на русском — находишь «Arnold Schwarzenegger» на английском, или ищешь «Michael Jordan» — находишь «Майкл Джордан», или ищешь «Чак Норрис» — и вдруг он сам тебя находит. Помимо поиска созвучных слов этот метод нивелирует большое количество опечаток. А то че-то задолбала попса, надо больше про инсайд…

...больше про инсайд

Как находить и устранять утечки памяти на примере Яндекс.Почты

Reading time8 min
Views67K
На первый поверхностный взгляд, слова JavaScript и «утечка памяти» рядом стоять не могут. Настоящих утечек памяти в JS, конечно, не может быть, потому что процесс сборки мусора происходит автоматически и не может контролироваться из нашего кода. Выделить память под объект и забыть освободить невозможно. Но могут быть ситуации, связанные с ошибками в логике работы приложения, которые приводят к утечкам памяти другого рода. Например, забиндили обработчик, в котором что-то делаем с методами общего объекта и забыли его анбиндить. Или же посылаем письмо с большим телом и не очищаем тело даже после отправки.

image

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

Как мы строили свою WiFi-сеть

Reading time15 min
Views128K
Я хочу рассказать о том, как мы строили свой собственный, хороший WLAN — Wireless LAN.

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

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

JetBrains — разработка под Android для лентяев

Reading time1 min
Views79K
Хотите изучить разработку пoд Android, но лень читать большие книги с кучей теории? JetBrains подготовила курс из 12 уроков для быстрого старта. Темы уроков:

* Getting Started
* UI Designer
* Minimally Interactive
* Lifecycle
* More Activities
* List Views
* HTTP
* Storage
* Menus
* Dialogs
* Preferences
* Publishing
Читать дальше →

Как быстро запустить сложный проект?

Reading time4 min
Views20K

Три недели назад мы выступали на коференции RockIT Conf, которая прошла в Таллине в формате баркемпа. На RockIT технические доклады сменялись выступлением рок-команд, в кулуарах царила неформальная атмосфера. Событие прошло в два дня — первый был стопроцентно боевой, на второй народ разошелся и было немного кисло. Организаторы обещали провести следующий ивент в Питере и учесть ошибки первого RockIT.

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

Многое из того, что написано ниже, можно смело вложить в уста Капитана. Да, это действительно так. Но! Я сам из технарей и сам знаю, как часто мы увлекаемся какой-то технической фитюлькой, крутым рефакторингом или внедрением новых технологий. В 90% случаев пользователь об этом не узнает, особенно, если проект новый.

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

* еще раз, чтобы не было войны в комментариях — подход, описанный в статье подходит не всегда и не для всех проектов
Читать дальше →

Microduino — что если всё взять и поделить?

Reading time4 min
Views83K
Arduino — это очень популярная, универсальная и довольно бюджетная платформа, но порой её функциональность оказывается несколько избыточной, либо наоборот, чего-то остро не хватает. И тут на помощь приходит Microduino — это Arduino-совместимая платформа, состоящая из ядра и множества дополнительных модулей, отличающаяся компактностью и низкой ценой.
image
Много картинок

Information

Rating
3,668-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity