Search
Write a publication
Pull to refresh
4
0
Сергей @sketcompani

User

Send message

Интерактивная SVG картограмма с помощью d3.js

Reading time7 min
Views92K
Приветствую вас, хаброжители! Сегодня я расскажу вам как сделать интерактивную SVG картограмму при помощи d3js.org, о возможностях этой JavaScript библиотеки в общем, а также придётся немного разобраться в том как и где лучше хранить геоинформацию для веба. В финале мы получим следующее:

Картограмма
Начать сие увлекательное путешествие можно под катом.
Читать дальше →

Тестирование производительности Python 2.7 при обработке списков различными способами

Reading time4 min
Views14K
image

В ходе одного из моих питоновских проектов, с большой примесью ООП и обработкой большого числа данных — у меня возник вопрос, а насколько эффективно обрабатывать списки в классе с использованием вызовов его методов, или может использовать вызов внешней функции? Для этого были написаны 24 теста которые показали очень интересные результаты, Кому интересна данная тема, прошу в подробности.
Подробности

Doom 3 BFG — обзор исходного кода: Многопоточность (часть 2 из 4)

Reading time6 min
Views42K
Часть 1: Введение
Часть 2: Многопоточность
Часть 3: Рендеринг (Прим. пер. — в процессе перевода)
Часть 4: Doom classic — интеграция (Прим. пер. — в процессе перевода)

Движок для Doom III был написан в период с 2000 по 2004 год, в то время, когда большинство ПК были однопроцессорными. Хотя архитектура движка idTech4 разрабатывалась с учетом поддержки SMP, это закончилось тем, что поддержка многопоточности делалась в последнюю минуту (см. интревью с Джоном Кармаком).
Читать дальше →

Понимание Html-кода, сгенерированного ненавязчивой валидацией в ASP.Net MVC

Reading time6 min
Views21K
Это 2 часть серии «Понимание ненавязчивой валидации в ASP.Net MVC»

1. Работа плагина jQuery validate изнутри
2. Понимание Html-кода, сгенерированного ненавязчивой валидацией в ASP.Net MVC
3. Внутренняя работа плагина unobtrusive jQuery validate в ASP.Net MVC.

О чем мы поговорим в этой статье:

  • Идея ненавязчивого JavaScript
  • Разница между нормальной и ненавязчивой валидацией
  • Понимание ненавязчивой валидации:
    • Элементы «input», правила их валидации и как они работают
    • Сообщения валидации и как они работают в ненавязчивой валидации.


Основная идея ненавязчивого JavaScript



Microsoft представил первый модуль валидации в первой верисии MVC. Модуль совершенствовался с каждой версией, и превратился в ненавязчивую валидацию в ASP.Net MVC 3.
Если коротко, даже в современном JavaScript, который мы пишем в основном в отдельном js файле, мы нуждаемся иногда в данных, связанных с Html, и поэтому записываем метаданные объектов JavaScript внутри страницы Html. Мы вызываем функцию из файла js, которой передаем метаданные объекта на странице.

Одна из целей ненавязчивого JavaScript отделить JavaScript от Html разметки.
Почитать больше об этом можно тут ( автор отсылает нас к статье о ненавязчивом JavaScript в англоязычной Википедии, прим. переводчика)

Разница между нормальной и ненавязчивой валидацией.



Ниже представлен код модели и Html разметки, сгенерированной используя валидацию MVC 2 и ненавязчивую валидацию MVC 3.
Читать дальше →

Внутренняя работа плагина unobtrusive jQuery validate в ASP.Net MVC

Reading time7 min
Views27K
Это 3 часть серии «Понимание ненавязчивой валидации в ASP.Net MVC».

1. Работа плагина jQuery validate изнутри
2. Понимание Html-кода, сгенерированного ненавязчивой валидацией в ASP.Net MVC
3. Внутренняя работа плагина unobtrusive jQuery validate в ASP.Net MVC.

О чем мы поговорим в этой статье:
  • Метод «parse»
    • секция «parceElement»
      • объяснение параметра «skipAttach»
      • объяснение функции «parceElement»

    • секция «validateInfo»
      • объяснение функции «validateInfo»
      • объяснение объекта «return»


  • Адаптеры


Метод «parse»


Мы объясним цикл ненавязчивой валидации, который происходит, когда документ загружается, и поймем роль каждого компонента.
Если мы посмотрим в конец jquery.validate.unobtrusive.js мы найдем

$(function () {
  $jQval.unobtrusive.parse(document);
});

Итак, мы вызываем метод «parse()» и передаем ему «document»
Что представляет собой метод «parse()»?
Читать дальше →

Написание диссертации по IT-тематике ver. 2.0

Reading time6 min
Views45K

Лирика


В ответ на пост «Написание диссертации, связанной с it: ожидания и российская действительность».
Заранее прошу прощения, но для размещения этого поста в хабе «Учебный процесс в ИТ» у меня, как выяснилось, не хватает кармы. Условно будем считать диссертацию большим проектом, а мой пост неким алгоритмом ее написания.

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

По наблюдениям, на сегодняшний момент я вижу только 2 объяснения поступления в аспирантуру лицами мужского пола: 1. Что-то во время учебы накопал интересное -> участник студконференций -> диплом с отличием (или рядом) -> аспирантура. 2. Просто учился нормально -> нежелание после универа идти в ВС РФ -> аспирантура (из 10 успешно защищаются 1-2, остальные болеют). Бывает и 3 категория…залетная.
Читать дальше →

Распространенная ошибка верстки: тестируем горизонтальную прокрутку

Reading time1 min
Views17K
Эта ошибка крошечная и незаметная, но все же, это ошибка. Она присутствует на чудовищном количестве сайтов, в т.ч. на Хабрахабре.

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

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

Установка Debian Wheezy на Buffalo Linkstation Pro

Reading time7 min
Views13K


Начнем с того, что понадобился мне насик. И прикупил себе хоть и б/у зато с гигабиткой и двумя портами USB. Про стандартные прошивки насов, конечно кроме synology, я рассказывать не буду, и судя по сабжу итак понятно что будем ее менять. Вообще то изначально выбиралась модель NASа с возможностью установить что то другое, родное — дебиан например. После генты — дебиан конечно очень консервативный дистибутив. Поэтому уверен что танго с этим насиком еще не окончено. Ожидайте в скором времени гентушечку :) А пока давайте ознакомимся с дебианом. Характер у этого насика еще тот. 2 недели потрачено (обычно после роботы 3-4 часа). Мало того что пока не сделал консольный кабель, понять его было сложно. А теперь как родной.
Сразу скажу что в клин инсталле есть баги, которые мешают установить рабочую систему. Здесь я вам изложу все подробности. Если ты решился %username% порадовать своего сетевого накопителя свеженьким ядёрком, то тебе под кат!
Читать дальше →

Обзор новой Violin — флеш-СХД, работающей со скоростью, близкой к DRAM

Reading time10 min
Views63K

Производитель сделал три смелых маркетинговых заявления:
  • Системе всё равно, запись или чтение – скорость будет одинаковой.
  • При всём этом время отклика стабильно 250-500 микросекунд даже после месяца постоянной нагрузки.
  • Можно вынимать любые комплектующие «на горячую» — системе ничего не будет.

Для начала мы разбили пространство на несколько десятков виртуальных томов и запустили десяток приложений, делающих запись блоками по 4 килобайта в режиме 20/80 (80% записи). А затем продержали модуль под нагрузкой 5 дней. Выяснилось, что маркетинг соврал: скорость записи была очень далека от заявленной в презентации 1 мс и составляла в среднем всего 0,4 мс (при 40/60 дело доходило и до 0,25).

Затем при тест-драйве в офисе для IT-директоров у нас начались настоящие проблемы. Дело в том, что я в приглашении упомянул, что как-то во время демонстрации Disaster Recovery-решения мы вырубили стойку в ЦОДе «на живую», после чего просто не осталось шансов закончить мероприятие мирно. Аудитория ждала крови, и мне пришлось позвать сервис-инженера с отвёрткой.

При 450k IOPS я начал с вытаскивания двух вентиляторов. Это почти не впечатлило аудиторию, потому что хотелось добраться до одного из двух контроллеров и посмотреть, что Violin скажет на это. Минус два вентилятора заставили систему страшно зарычать (она автоматически ускорила остальные), поэтому дальше я услышал только что-то вроде «твою мать», когда инженер просто взял и выдернул один из двух контроллеров, и железка «просела» только на треть по скорости.

Осторожно, трафик: под катом схемы и скриншоты.
Читать дальше →

Удаленное редактирование файлов в Sublime Text 2 по SSH

Reading time1 min
Views43K
Речь пойдет об использовании rmate, небольшого скрипта позволяющего из консоли открыть удаленный документ в локальном текстовом редакторе, вместо nano или vim, он был написан для TextMate и те кто перешел на ST2 с этого редактора, наверняка пользуются этим инструментом, да и «матерые разрабы» не найдут в посте много нового, но если вы только начали пользоваться ST2 и единственный инструмент удаленного редактирования о котором вы слышали, это плагин SFTP, добро пожаловать под кат за подробностями.
Читать дальше →

Мобильные устройства Apple в корпоративном секторе. Профили конфигурации

Reading time9 min
Views34K
Первое, что приходит в голову при мысли о мобильном оборудовании для сотрудника крупной компании – это ноутбук типа HP EliteBook и смартфон BlackBerry. Подавляющее большинство считает, что MacBook очень далек от корпоративных стандартов, и подходит только для дизайнеров, инди-разработчиков и продвинутых домохозяек. iPhone считается стильным гаджетом для написания твиттов и фотографирования «луков» для модного Инстаграма.

ruVPN

Сейчас я попытаюсь развеять подобные стереотипы и рассказать, на что способны мобильные устройства знаменитой компании из Купертино.
Читать дальше →

Неожиданные результаты простого MySQL-запроса

Reading time3 min
Views34K

Недавно я потратил кучу времени, пытаясь понять, почему один запрос выдает такой странный результат. На MariaDB он выдавал явно некорректный результат, а на старом добром MySQL не выполнялся вовсе. Т.е. запрос запускался, но дождаться его завершения не удавалось. Для того чтобы разобраться, в чем же дело, пришлось провести небольшое исследование. Но давайте обо всем по порядку.
Читать дальше →

WordPress исполнилось 10 лет

Reading time1 min
Views9.4K
Одной из самых известных CMS — Wordpress — исполнилось 10 лет. На данный момент её используют огромная армия блоггеров и профессионалов, в том числе, и такие крупные проекты как CNN, TechCrunch, Dow Jones, UPS, NBC Sports, TED и ряд других.

По этому поводу Мэтт Мюлленвег (Matt Mullenweg), который считается автором Wordpress и которому принадлежат права на торговую марку, написал ностальгический пост у себя в блоге, первые строчки которого подтверждают, что Wordpress — еще один успешный продукт, появившийся благодаря энтузиастам.
Узнать подробности

Динамические Linq-запросы или приручаем деревья выражений

Reading time4 min
Views23K

Введение


Linq to Entity позволяет очень выразительно со статической проверкой типов писать сложные запросы. Но иногда надо нужно сделать запросы чуть динамичнее. Например, добавить сортировку, когда имя колонки задано строкой.
Т.е. написать что то вроде:
var query = from customer in context.Customers
    select customer;
//ошибка! не компилируется.
query = query.OrderBy("name");
var data = query.ToList();

На помощь в этом случае придет динамическое построение деревьев выражений (expression trees). Правда одних выражений будет недостаточно, потребуется динамически находить и конструировать шаблонные методы. Но и это не так сложно. Подробности ниже.
Читать дальше →

Радионяня — добрый «жук»

Reading time6 min
Views48K
Так уж совпало что появление ребенка в семье совпало с финансовыми трудностями. Но недостаток средств и времени не может заглушить заботу о малыше и жажду познания нового.
Статья не претендует на новизну, да и все используемые в ней технологии довольно неплохо «размазаны» по интернету. Но надеюсь все нижеизложенное поможет вам решиться помочь своим близким и сделает спокойным сон вашего ребенка. Учтите я никогда и нигде не учился «радио-ремеслу», но смог собрать устройство исправно работающее вот уже два года. Все что необходимо это паяльник, мультиметр и терпение.
Читать дальше →

Установка и настройка JetBrains PhpStorm 6 под Windows 7 для разработки web-приложений на PHP

Reading time10 min
Views54K
Я Microsoft Scum и привык к наличию инсталляторов, после успешного выполнения которых у меня на машине установлено и настроено всё необходимое.

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

Как это работает


Будучи web-разработчиком под ASP.NET ещё с 2003 года, я привык, что разрабатываемое приложение крутится на IIS. Сейчас вместе со Студией ставится компактная версия IIS, и, признаться, разработка под ним в большинстве случаев гораздо удобнее развёртывания дополнительной разработческой среды под полноценным IIS.

У PHP также есть режим запуска в качестве сервера с выбором корневой директории приложения. Однако, выяснилось, что такой режим не позволяет по-человечески отлаживать продукт. По этой причине мы будем воссоздавать более или менее родную среду для работы фреймворков: Apache+PHP. При этом возможность отладки и тестирования обеспечивается отдельными модулями, у которых есть конкретная сборка под конкретную сборку PHP без каких-либо свобод выбора. Оно и к лучшему — отсутствие свободы выбора версий ограничивает нас всего одним сценарием установки. Его то мы и опишем.
Читать дальше →

Текст в SVG

Reading time3 min
Views107K
Продолжаем изучать векторную графику, на этот раз разберемся с текстами в SVG, которые позволяют делать гораздо больше, чем обычный HTML.

image

Предыдущие статьи: Знакомство с SVG-графикой и Стилизация SVG-графики
Читать дальше →

Ruby on Rails. Установка, настройка, начало работы

Reading time7 min
Views112K

Зачем.


В этой маленькой статье, которую с удовольствием прочитал бы сам неделю назад, я попытался собрать все вещи, которые понадобились бы человеку, задумай он «с нуля» написать приложение на RoR. То есть не углубляясь ни в одну из областей, описать необходимый минимум действий, чтобы установить, настроить и написать своё первое приложение.Здесь собрано, как мне кажется, всё, что нужно и я надеюсь этот текст сэкономит кому-нибудь несколько часов поиска в интернете). Сам изучаю RoR вторую неделю, так что не судите строго).

Установка.


Просто и быстро ror ставится через rvm c rvm.io.

>\curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled


Запустить rvm:

>source /Путь_к_домашней_директории*/.rvm/scripts/rvm

*$HOME в дальнейшем.
После этого в $HOME/.bash_profile должна появиться строчка:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*


и при каждом открытии консоли rvm будет подгружаться, но у меня этого не случилось — пришлось ещё в $HOME/bashrc прописывать:

. ~/.bash_profile


Теперь всё точно должно быть хорошо.
Устанавливаем нужную(скорее всего это будет самая последняя) версию руби (сколько их и в чём отличие можно посмотреть здесь -http://www.ruby-lang.org).
>rvm install 1.9.3

Проверка на успешность создания
>ruby -v

должна вернуть более подробную информацию, вроде
ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux].

В процессе установки я случайно установил несколько версий, что потом доставило некоторые неприятности). Посмотреть список установленных версий руби можно так:
>rvm list
Если версий несколько, то текущая будет помечена "=>", дефолтная — "*", а текущая и дефолтная — "=*". Поменять на нужную используемую версию можно так:
>rvm use ruby-1.9.2-p320 (любая нужная версия)

Чтобы поменять дефолтную версию руби пишем:
>rvm use ruby-1.9.2-p320 --default

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

Arduino Robot: открытая платформа для сборки роботов

Reading time1 min
Views88K


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

Flickr дарит каждому пользователю по 1 терабайту для хранения фотографий и видео

Reading time1 min
Views77K


Марисса Майер (исполнительный директор компании Yahoo) только что опубликовала обращение к пользователям фотосервиса Flickr с несколькими приятными новостями.

  • Новый интерфейс (flickr.com/new).
  • Новое Android-приложение.
  • 1 терабайт дискового пространства каждому пользователю для хранения фотографий, бесплатно.

По мнению Мариссы Майер, одного терабайта человеку должно хватить на всю жизнь: это 537 731 фотография размером 6,5 мегапиксела, исходя из разрешения современных смартфонов.
Читать дальше →

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity