Pull to refresh
82
Karma
0
Rating
Сергей Панарин @spanarin

Финансист

IBM PC своими руками — это очень просто

DIY
image

После того, как я воплотил свою давнишнюю мечту и все-таки (хотя и с опозданием почти на 30 лет) построил Радио 86РК, некоторое время мне казалось, что на этой части моей истории поставлена вполне достойная точка.

Тем не менее, обнаружилось, что болезнь до конца не вылечена, и она вернулась еще более острым рецидивом. Наверное, сказались как неожиданно успешный опыт постройки 86РК, так и то, что у меня в ходе данного процесса образовалось довольно большое количество весьма притягательно выглядящих инструментов, приборов и деталей, которым очень хотелось найти применение.
В конце концов ломка стала нестерпимой, и мне пришлось снова взяться за паяльник, а также вспомнить некоторые другие навыки из прошлого. Что из этого получилось, можно увидеть вместе с некоторым количеством картинок и очень (повторяю – ОЧЕНЬ) большим количеством букв (и даже не букв, а страниц) дальше…
Читать дальше →
Total votes 261: ↑260 and ↓1 +259
Views 197K
Comments 79

Реализация мечты, или Радио 86РК — 25 лет спустя

DIY
Sandbox
В уже далеком 1986 году у меня появилась мечта. Вернее, МЕЧТА – построить свою собственную микро-ЭВМ «Радио-86РК», схема которой была опубликована в журнале «Радио» (и который уже неоднократно упоминался на Хабре, например, здесь — habrahabr.ru/post/172405 ).
Читать дальше →
Total votes 249: ↑249 and ↓0 +249
Views 181K
Comments 85

Анализ исходного кода движка Doom: рендеринг

Game development *Algorithms *Reverse engineering *
Translation
image

От экрана дизайнера к экрану игрока


Карты разрабатывались дизайнером уровней в 2D с помощью редактора Doom Editor (DoomED). LINEDEFS описывали замкнутые секторы (SECTORS в исходном коде), а третье измерение (высота) указывалась посекторно. Первый уровень Doom E1M1 выглядит так:

image

После завершения работы над картой она нарезается методом двоичного разбиения пространства (Binary Space Partitioning, BSP). LINEDEF рекурсивно выбирались и их плоскости превращались в секущие плоскости. То есть LINEDEF разрезались на сегменты (SEGS) до тех пор, пока не оставались только выпуклые подсектора (SSECTOR в коде).

Интересный факт: И DoomED, и iBSP писались на… Objective-C на рабочих станциях NextStep. Пятнадцать лет спустя тот же язык почти в той же операционной системе выполняет игру на мобильном устройстве! [прим. пер.: в 2010 году Doom вышел на iPhone] Я немного поработал веб-археологом и мне удалось найти исходный код idbsp. На него стоит посмотреть.
Total votes 66: ↑66 and ↓0 +66
Views 33K
Comments 10

Как я выиграл суд у Макхоста

Copyright
          Надо бить суку! Обязательно надо бить суку © А.Н.Стругацкий
          Настоящих буйных мало – вот и нету вожаков © В.С.Высоцкий

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

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

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

Под катом анализ ситуации, исковое заявление, приведшее в скором итоге к вынесению решения в нашу пользу, а также мои впечатления от процесса.
Читать дальше →
Total votes 383: ↑374 and ↓9 +365
Views 3.1K
Comments 155

Облегчение жизни пользователю Safari на iPhone

Smartphones
Облегчение жизни пользователю Safari на iPhone.

В моей прошлой статье, мы разбирали, как за короткий промежуток времени возможно изготовить версию сайта, адаптированную для Apple iPhone.Сегодня я продолжаю свою статью. Сейчас мы рассмотрим некоторые мета теги (и не только), которые облегчат жизнь не только посетителю сайта, но и разработчику веб-проекта.



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

Читать дальше →
Total votes 92: ↑83 and ↓9 +74
Views 8.5K
Comments 43

#UKRTWEET январь 2010 — наследник #RETWEET09?

Social networks and communities
С новым Годом ХабраНарод!

Может и рано, но надеюсь, что вовремя 8)…

Немного предистории.

В 2009 году в России провели первый твитер баркемп retweet09(ru), который собрал множество учасников, и хоть я лично не присутствовал на нём — было интересно наблюдать за главными фразами в твитере баркемпа.(ru)

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

— при наличии 2000 друзей(фоловеров) добавление линка в твитер может собрать до 300 кликов в первые 20 минут. Пропорции в принципе работают — представляем сколько эффекта будет с пользователя в десятки тысяч фоловеров.
— мобильный твитер позволяет быть в курсе последних новостей без напряга по $$$ практически везде, где есть покрытие Вашего оператора. К слову, твитер, именно благодаря мобильным клиентам начал приносить прибыль создателям.
— наличие офлайн бизнеса и твитера при нём открывает новые возможности обратной связи с клиентами. С наиболее активными из клиентов.
— слежение за ключевыми словами в тви — хорошая возможность как улучшения своего собственного Я(товара, услуги, компании, авторитета). К примеру хабр я читаю только через тег #habr — так получается намного интересней.
— и не только

Не прошло и полгода, как в Украине заявлена попытка на проведение аналогичного #retweet мероприятия — #ukrtweet.
Конференция — баркемп.

image

Читать дальше →
Total votes 14: ↑10 and ↓4 +6
Views 412
Comments 3

Тоби Сегаран «Программируем коллективный разум»

Professional literature *Reading room
Знаете, люблю я книжки про всякие интересные алгоритмы, и вот недавно попалась еще одна такая книжка.

Книга «Программируем коллективный разум» в основном посвящена алгоритмам классификации и кластеризации, хотя есть главы, посвященные другим темам вроде создания собственного поисковика, генетическим алгоритмам и генетическому программированию. Почти все описанные алгоритмы применяются в духе Web 2.0, используя анализ поведения пользователей на разных сайтах, которые предоставляют свой API. Но что особенно приятно удивило, так это то, что все примеры написаны на языке Python.


Вот какие алгоритмы описываются в книге:


  • Коллаборативная фильтрация. Или, говоря человечески языком, алгоритмы, которые могут рекомендовать вам какие-то покупки, сайты или музыку в зависимости от оценок, которые вы поставили другим подобным вещам. По таким алгоритмам работает навязывание покупок в интернет-магазинах или подбор музыки на last.fm. В конце главы приводится пример, который будет рекомендовать вам ссылки из сервиса del.icio.us.
  • Алгоритмы группировки (кластеризации). Создаваемый пример анализирует RSS-каналы блогов и пытается их автоматически разделить на группы в виде дерева в зависимости от частоты слов, которые попадаются в блоге. Заодно Сегаран рассказывает как можно сделать так, чтобы названия блогов расположились на плоскости кучками в зависимости от их близости в плане рассматриваемых тем.
  • Отдельная глава посвящена построению поисковиков – созданию паука и, самое главное, рассматриваются алгоритмы ранжирования ссылок, в том числе и с учетом ссылок страниц друг на друга, создавая, таким образом, аналог Google PageRank. Еще интересно, что в этой же главе есть пример, где для выдачи наиболее релевантных ссылок используется нейронная сеть, которая обучается по мере того как пользователь щелкает на понравившиеся ему ссылки.

Читать дальше →
Total votes 73: ↑67 and ↓6 +61
Views 9.5K
Comments 29

Применение нейросетей в распознавании изображений

Artificial Intelligence
Про нейронные сети, как один из инструментов решения трудноформализуемых задач уже было сказано достаточно много. И здесь, на хабре, было показано, как эти сети применять для распознавания изображений, применительно к задаче взлома капчи. Однако, типов нейросетей существует довольно много. И так ли хороша классическая полносвязная нейронная сеть (ПНС) для задачи распознавания (классификации) изображений?
Читать дальше →
Total votes 134: ↑131 and ↓3 +128
Views 233K
Comments 73

Как проектировался новый Photo Viewer в Facebook

Web design *
Translation
Это перевод поста из Facebook Engineering Blog, который интересен, наверное, даже не столько сутью решения, которое в нем описано, сколько рассказом о «кухне» разработки в Facebook. Речь идет об обновленном функционале просмотра фотографий, который появился в конце сентября 2010 г. и был немного еще улучшен на днях.

imageЗадумавшись об обновлении Photo Viewer, мы столкнулись с множеством трудностей. Очевидно, что фотографии это наиболее востребованная функция Facebook. Ежедневно наши пользователи загружают более 100 миллионов фотографий, а предназначенный для этого функционал был создан довольно давно и явно нуждался в доработке.

Благодаря проделанной работе, пользователи стали просматривать на 5% больше фотографий, что в количественном выражении означает примерно один миллиард дополнительных просмотров ежедневно.

Как нам это удалось
Мы начали с составления списка текущих проблем:
  • Наибольшие проблемы возникали с надежностью. Изображения загружались медленно, и иногда процесс зависал на неопределенное время. Пользователям приходилось обновлять страницу в браузере, чтобы увидеть фотографии и комментарии к ним.
  • При просмотре фотографий из Ленты новостей приходилось либо открывать их в новой вкладке, либо мириться с тем, что после просмотра нужно было заново прокручивать ленту вниз, чтобы вернуться к предыдущей позиции. Для разбирающихся в компьютере людей это не составляло особых проблем, но многие из наших пользователей испытывали связанные с этим неудобства.
  • Функционал просмотра комментариев к фотографиям был также реализован не самым удобным образом. Процесс выглядел так – нужно было посмотреть фотографию, промотать страницу вниз, чтобы увидеть подпись и комментарии к ней, а потом вернуться обратно наверх, и так каждый раз.
  • JavaScript, предназначенный для загрузки и кэширования фотографий, а также для публикации комментариев, был также реализован не самым лучшим образом. Он оставался неизменным на протяжении многих лет, на фоне того, что технологии работы браузеров и требования к ним значительно ушли вперед.

Перед нами стояла задача решить вышеописанные проблемы и, в идеале, создать новый, более приятный в работе функционал, способный объединить просмотр фотографий, расстановку меток для людей на них, возможность комментировать и отмечать понравившиеся снимки «лайками».
Читать дальше →
Total votes 64: ↑59 and ↓5 +54
Views 807
Comments 37

Ещё два открытых проекта от Opera Software

Opera corporate blog
image


Сегодня мы обнародовали два новых проекта, входящих в наш Open Source портфолио — OperaWatir и OperaDriver. Как и Opera Dragonfly, оба проекта относятся к средствам разработки, облегчающим несладкую жизнь веб-программиста. Если говорить кратко, то данные инструменты позволяют создавать автоматические тесты, имитирующие действия бешеного пользователя, зашедшего на ваш веб-сайт и без какой-либо чёткой цели кликающего ссылки, вводящего всякую тарабарщину в текстовые поля или заполняющего любые формы, подвернувшиеся под руку. В общем, в реале подобного уникума вряд ли встретишь, но на всякий случай лучше проверить свою работу на стойкость — наша жизнь, знаете ли, всякие фокусы любит выкидывать.
Читать дальше →
Total votes 83: ↑76 and ↓7 +69
Views 12K
Comments 28

Основы проектирования веб-интерфейсов в Axure RP Pro

Interfaces *
Axure RP ProВ последнее время разработчики веб-проектов все чаще начинают задумываться о том, что до начала разработки продукта было бы неплохо узнать, что это будет за продукт и как он будет выглядеть.

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

Средств для визуального проектирования становится все больше. Одни пользуются Adobe InDesign, другим нравится Visio, третьи довольствуются OpenOffice Draw. Но все больше поклонников появляется у довольно тяжелой и функциональной программы Axure RP Pro.

О том, как с ее помощью облегчить себе жизнь, и пойдет речь в этой статье. Осторожно, трафик!
Total votes 62: ↑51 and ↓11 +40
Views 122K
Comments 76

Чего не может SVN

Version control systems *
Когда вышла версия SVN 1.5, помню, мы с коллегами очень обрадовались долгожданной поддержке записи истории переноса изменений (merge), которую до тех пор мы вели в комментариях к правкам и это, конечно, очень нас напрягало. На радостях нам в голову начали приходить различные идеи, как можно использовать эту новую возможность, и однажды мы решили реализовать с ее помощью модульность на уровне исходного кода.

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

Вначале ничего не предвещало проблем
Total votes 49: ↑43 and ↓6 +37
Views 2.1K
Comments 62

Непрерывная интеграция на примере Hudson

IT systems testing *
Все мы прекрасно понимаем, что тестирование является неотъемлемой частью жизненного цикла разработки ПО. Чем чаще мы тестируем наш код, тем быстрее мы сможем обнаружить ошибку, вкравшуюся в него в ходе разработки, и быстрее её исправить. При этом стоит понимать, что тестирование крайне желательно проводить в окружении, максимально близком к боевому (ОС, ПО, Hardware, Нагрузка), что бы иметь возможность обнаружить ошибки, которые не проявляются на сервере разработки, но могут появиться в бою. Компануя два вышесказанных тезиса вместе мы получаем концепцию, называемую Continuous Integration.

Суть CI заключается в постоянной (например, после каждого commit'а) сборке и тестировании разрабатываемого ПО в максимально приближенной к боевой среде с целью как можно более раннего обнаружения ошибок и оповещения о них разработчиков. Сама идея CI принадлежит Martin Fowler, подробно описавшему её в своей статье.

Для автоматизации процесса непрерывной сборки существуют готовые решения (Hudson, CruiseControl), интеграцию одного из которых (Hudson) я и опишу в этой статье.

Читать дальше →
Total votes 40: ↑38 and ↓2 +36
Views 32K
Comments 21

Как не дать программисту написать плохой код

Programming *
Tutorial
image
Как-то раз в одной неглупой статье один неглупый хабраюзер рассказал одну неглупую идею. Суть её была в том, что в его компании настроена система, контролирующая написанный программистами код в момент попытки добавления его в репозиторий и отклоняющая код, не проходящий по некоторым критериям. Мне идея понравилась. Я (и еще 3 человека) попросили автора развить мысль и написать статью об этом, но она так и не появилась. И я решил разобраться сам.
Читать дальше →
Total votes 159: ↑141 and ↓18 +123
Views 6.2K
Comments 111

Латентно-семантический анализ

Algorithms *
Sandbox
Как находить тексты похожие по смыслу? Какие есть алгоритмы для поиска текстов одной тематики? – Вопросы регулярно возникающие на различных программистских форумах. Сегодня я расскажу об одном из подходов, которым активно пользуются поисковые гиганты и который звучит чем-то вроде мантры для SEO aka поисковых оптимизаторов. Этот подход называет латентно-семантический анализ (LSA), он же латентно-семантическое индексирование (LSI)

Латентно-семантический анализ

Читать дальше →
Total votes 104: ↑101 and ↓3 +98
Views 93K
Comments 27

Результаты Django Dash 2010

Django *
31 августа были подведены итоги международного конкурса по программированию Django Dash.

Целью конкурса было создать веб-приложение за 48 часов в команде из 3 человек. В соревновании принимали участие 51 команда из всех частей света.

1 место Great Big Crane от West meets West


Great Big Crane

Great Big Crane это application server для Django и Python проектов. То есть он ставится на сервер и в пару кликов развертывает вам новое веб-приложение. Развертыванием всех проектов на сервере теперь можно удобно управлять из единого интерфейса.
остальные сервисы
Total votes 59: ↑58 and ↓1 +57
Views 748
Comments 20

Open API

VK corporate blog
Команда «ВКонтакте» так и не ушла на выходные, чтобы вслед за Merchant API успеть запустить еще один важный сервис для разработчиков — Open API. Благодаря VK Open API, любые внешние сайты теперь имеют возможность производить у себя авторизацию наших пользователей.



Читать дальше →
Total votes 464: ↑293.5 and ↓170.5 +123
Views 65K
Comments 312

Развертывание Django-проектов c помощью Fabric

Django *
В одном из проектов необходимо регулярно выкладывать код из ветки stage на staging сервер. Начали делать это вручную — входишь через ssh, делаешь git push origin stage, если нужно — обновляешь базу и затем перезапускаешь apache. К концу этой недели решили, что хорошо бы все эти действия выполнять одной командой. Я прошерстил блоги — сейчас очень активно пишут про использования для этих целей библиотеки Fabric (это аналог Capistrano из Ruby on Rails).
Читать дальше →
Total votes 49: ↑40 and ↓9 +31
Views 11K
Comments 11

Работа с формами в Django

Django *
Translation
image

Формы являются одной из самых вкусных вещей в Django (после моделей, админки, url-маршрутизации и т.д.). Перед вами небольшое, но ёмкое руководство по их использованию, представляющее собой разбор 8 часто встречающихся ситуаций при программировании форм.

  • Задача. Проверка и отображение простейшей формы.
    Copy Source | Copy HTML<br/>class UserForm(forms.Form):<br/>    username = forms.CharField()<br/>    joined_on = forms.DateField() <br/>

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

Читать дальше →
Total votes 44: ↑39 and ↓5 +34
Views 38K
Comments 33

Тестирование Django приложений с помощью Selenium

Django *


Selenium


Selenium — это очень удобный (имхо) инструмент для тестирования веб-приложений.

Тесты создаются с помощью дополнения для Firefox, которое может генерировать код теста на различных языках, в том числе и на Python. Затем эти тесты выполняются специальным сервером, Selenium RC.

Сам по себе Selenium не привязан ни к языкам ни к фреймворкам, поэтому чтобы интегрировать его в систему тестирования Django-приложений, нужно приложить очень небольшие усилия.

Для решения задачи интеграции я буду использовать библиотеку Django: Sane Testing. Это библиотека, расширяющая возможности стандартной системы тестирования Django, в том числе и поддержкой тестов Selenium.
Читать дальше →
Total votes 56: ↑42 and ↓14 +28
Views 6.6K
Comments 16
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity