Как стать автором
Обновить
51
0

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

Отправить сообщение

Интервью с Грейс Хоппер

Время на прочтение1 мин
Количество просмотров17K
На Хабре о ней уже вспоминали: контр-адмирал ВМФ США, один из создателей первого американского компьютера MARK-I, автор первого в мире компилятора, разработчик языка программирования COBOL, изобретатель термина "баг" в его нынешнем понимании и просто талантливый человек Грейс Хоппер. А еще в её честь назван эсминец и учреждена премия, которую в своё время получили Кнут, Возняк, Столлман, Страуструп и прочие достойные люди.

Я взял на себя смелость сделать русские субтитры к интервью с Грейс, взятом у неё в возрасте 80 лет, когда она уже ушла со флота и работала на частную компанию. Грейс рассказывает о своей карьере, шутит о президентах и поясняет кой-какие термины. Дай Бог каждому за свою жизнь совершить хоть половину сделанного ею и сохранить к столь почтенному возрасту такую трудоспособность и ясность мысли.

(Кто не в курсе — субтитры включаются и настраиваются кнопкой «СС»)


P.S. Ютюб в некоторых странах рассказывает, что видео не доступно. Но вот например с американским ВПН — работает (и видео и субтитры).
Читать дальше →
Всего голосов 77: ↑73 и ↓4+69
Комментарии19

Офис компании Boomburum

Время на прочтение19 мин
Количество просмотров410K
image

Осторожно, трафик! Но можно хотя бы посмотреть картинки )

   Идея создать дома свой «рабочий кабинет» у меня зрела давно – как-то сам дошел до осознания его необходимости, хотя немалый вклад в начинания сделал этот давний пост на Хабре. У меня было своё рабочее место – большой удобный стол, где помещалось практически всё и даже больше… но, по сути, он был проходным двором – все время кто-то ходил, был рядом, отвлекал… такое очень часто мешает сосредоточиться и начать работать. Иногда, бывает, сидишь весь вечер за компом и понимаешь, что абсолютно ничего не сделал, хотя родным заявил «так, мне надо поработать».
Читать дальше →
Всего голосов 738: ↑625 и ↓113+512
Комментарии438

Не ещё одна статья о функциональном программировании

Время на прочтение6 мин
Количество просмотров19K
Вот уже несколько лет функциональное программирование набирает популярность. Это, конечно, не значит, что люди забрасывают свои старые языки и ООП и массово переходят на Haskell, Lisp или Erlang. Нет. Функциональная парадигма проникает в наш код через лазейки мультипарадигменных языков, а вышеупомянутые языки чаще служат флагами в этом наступлении, чем используются непосредственно.

Я собирался продолжить в том же духе и во второй части статьи представить свою библиотеку, добавляющую пару функциональных трюков в python, но потом понял, что фокус моей библиотеки не на функциональном программировании, а на практичности. На этом я и сосредоточюсь, приведу несколько жизненных примеров полезности funcy.
Читать дальше →
Всего голосов 44: ↑40 и ↓4+36
Комментарии15

Декодирование капчи на Python

Время на прочтение12 мин
Количество просмотров80K
Это перевод и форма повествования от первого лица сохранена. Автор — Бен Бойтер, бакалавр информационных технологий в Университете Чарльза Стерта (CSU).


Большинство людей не в курсе, но моей диссертацией была программа для чтения текста с изображения. Я думал, что, если смогу получить высокий уровень распознавания, то это можно будет использовать для улучшения результатов поиска. Мой отличный советник доктор Гао Джунбин предложил мне написать диссертацию на эту тему. Наконец-то я нашел время написать эту статью и здесь я постараюсь рассказать о всем том, что узнал. Если бы только было что-то подобное, когда я только начинал…

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

Капча устроена так, что человек может прочитать текст без труда, в то время, как машина — нет (привет, reCaptcha!). На практике это никогда не работало, т. к. почти каждую капчу, которую размещали на сайте взламывали в течение нескольких месяцев.

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

Читать дальше →
Всего голосов 72: ↑63 и ↓9+54
Комментарии65

GeoIP и Django

Время на прочтение3 мин
Количество просмотров14K
Вебразработчики частенько сталкиваются с классической задачей определения местоположения пользователя по его IP-адресу. Существует множество различных решений, например на основе мировой базы Maxmind Geolite или российской IpgeoBase. Все они обладают достаточно низкуровневыми API, ну оно и понятно: на входе айпишник, на выходе страна, либо город и, если повезёт, ещё какая-нибудь полезная информация.

У всех сайтов с GeoIP, которые мы запускали, есть общая черта: они не только нуждаются в простой геолокации, необходимо также выводить различный контент на сайте в зависимости от месторасположения пользователя. Чтобы упростить для себя эту задачу мы написали небольшую батарейку django-geoip, вдохновившись приложением django-ipgeobase.
Читать дальше →
Всего голосов 29: ↑24 и ↓5+19
Комментарии32

Django Gmap v3 Widget — геолокация с поиском, сохранение координат и адреса в JSONField

Время на прочтение6 мин
Количество просмотров10K
Привет. Была поставлена задача реализовать геолокацию (google maps v3) для пользователей в одном из проектов на django, хочу поделиться своим решением.

Необходимый функционал:

  1. Вывод карты с маркером текущего положения, возможность перемещать маркер (dragged), ставить по click событию
  2. Поиск по адресу (autocomplete)
  3. Сохранение как координат, так и самого адреса (если он имеет место быть)

Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии2

CSS3 градиент для границ блока

Время на прочтение2 мин
Количество просмотров60K


В этой статье я покажу один из вариантов создания градиента для границ у любого блока с помощью CSS3.
Читать дальше →
Всего голосов 39: ↑31 и ↓8+23
Комментарии32

Prototype, proto и оператор new

Время на прочтение3 мин
Количество просмотров83K
В этой статье я кратко в примерах объясню что такое свойства __proto__, prototype и работу оператора new в JavaScript.

Свойство __proto__


Абсолютно любой объект в JavaScript имеет свойство __proto__. Это скрытое системное свойство, и не во всех реализациях языка оно доступно пользователю.
При обращении к любому свойству объекта, оно в первую очередь ищется в самом объекте:
var obj = {ownProperty: 1};
console.log(obj.ownProperty);// 1
Но если его там нет, поиск происходит в свойстве __proto__:
obj.__proto__ = {propertyOfProto: 2};
console.log(obj.propertyOfProto);// 2
Если его нет и там, оно ищется дальше по цепочке:
obj.__proto__.__proto__ = {propertyOfProtosProto: 3};
console.log(obj.propertyOfProtosProto);// 3
Эта цепочка называется цепочкой прототипов (prototype chain).


Читать дальше →
Всего голосов 82: ↑67 и ↓15+52
Комментарии44

Django Admin Actions — действия с промежуточной страницей

Время на прочтение2 мин
Количество просмотров15K
Привет. Полезная штука экшены в админке! Хочу поделиться как можно сделать экшен который после выбора элементов будет отправлять пользователя на промежуточную страницу чтобы с этими элементами можно было сделать что то особенное. Пример? Например у вас есть интернет магазин, таблица товаров. Вы хотите перенести часть товаров из одного раздела (книги) в другой (книги технические). Выбираем нужные книги, выбираем действие «Перенести в другой раздел», жмем применить, переходим на промежуточную страницу, выбираем нужный раздел и жмем сохранить. Здорово? Давайте попробуем.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии9

Немного о хэшах и безопасном хранении паролей

Время на прочтение4 мин
Количество просмотров70K
Upd. Если вы знаете, что такое BCrypt, можете дальше не читать. Если вы используете PHP 5.5+ то можете прочитать эту статью. Ниже же я изобрел свой велосипед, рабочий, но с двумя рулями, задний запасной. Молод был, горяч.

Привет, хабр! Сегодня, в процессе разработки системы аутентификации для своего проекта передо мной встал выбор — в каком виде хранить пароли пользователей в базе данных? В голову приходит множество вариантов. Самые очевидные:

  • Хранить пароли в БД в открытом виде.
  • Использовать обычные хэши crc32, md5, sha1
  • Использовать функцию crypt()
  • Использовать статическую «соль», конструкции вида md5(md5($pass))
  • Использовать уникальную «соль» для каждого пользователя.

Читать дальше →
Всего голосов 71: ↑57 и ↓14+43
Комментарии100

Nginx — уходим на технические работы

Время на прочтение3 мин
Количество просмотров50K
image

Совсем недавно возникла интересная задача: реализовать закрытие доступа к веб-сайту из вне, на время технических работ. Мне показалось, что это довольно распространенная задачка, решение которой заинтересует многих.
Один из возможных вариантов решения — ниже.
Читать дальше →
Всего голосов 80: ↑67 и ↓13+54
Комментарии69

Django Micro

Время на прочтение1 мин
Количество просмотров6.6K
В комментариях к посту Django as a Micro-Framework в блоге Ивана Сагалаева некий Andrew Pendleton выложил отличное решение для использования Джанго для микропроектов — djmicro.

Внутри пример использования
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии100

Виртуальный хостинг Django, модель N

Время на прочтение5 мин
Количество просмотров5.8K
Существует множество способов разворачивания Django-приложений в *nix-среде. Не буду претендовать на оригинальность, просто поделюсь самым-самым-самым-самым своим.

Вводные условия


Предпосылки:
  • Один клиент (заказчик) — один юзер в системе на сервере.
  • Все проекты клиента — в одной файловой иерархии.
  • Virtualenv — это хорошо и must use.
  • Ftp — зло, используем современные средства (sftp).
  • Количество файлов для управления проектами должно быть сведено к минимуму.
Используемый софт:
  • nginx
  • uwsgi
  • cron
  • virtualenv
  • openssh

Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии14

Паттерны Визуализации Информации

Время на прочтение7 мин
Количество просмотров20K
Пару лет назад я сильно заинтересовался UX и всем, что с ним связано. Постепенно пришло понимание, насколько важна визуализация информации, особенно сейчас. Прочитав Тафти, Кливеленда и Бертена, просто невозможно не думать в этом направлении. Постоянно приходят в голову идеи, как сделать вещи (в частности, в нашем продукте) более визуальными, более понятными.

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

И, как обычно, прощу прощения за объем статьи. Но, надеюсь, вам будет интересно дочитать до конца.



Узнать интригующие подробности
Всего голосов 96: ↑92 и ↓4+88
Комментарии25

Техническое задание на сайт

Время на прочтение11 мин
Количество просмотров698K
UPD: Продолжение статьи с примером техзадания

Не так давно на хабре были две статьи (Согласно техническому заданию и А зачем мне ТЗ? Я и так знаю!) посвященные техническим заданиям. У меня обе статьи вызвали, мягко говоря, недоумение, в особенности статья «Согласно техническому заданию». На мой взгляд, это вообще вредная статья, которая приводит к неверному понимаю сути ТЗ. В связи с этим хочу выразить свой взгляд на этот вопрос. Не буду говорить обо всех тех. заданиях, слишком широка тема, но думаю смогу рассказать о ТЗ на сайт.

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

Большинство сайтов можно отнести к маленьким и очень маленьким проектам, масштаба единиц человеко-месяцев. В силу малости размеров такие проекты спокойно поддаются хорошему продумыванию и легко реализуются с помощью водопадной модели, достаточно просто не лениться на каждом этапе разработки (от написания ТЗ до сдачи проекта). Применять к этим проектам гибкие методологии разработки нет смысла, а как раз есть смысл применять хорошее ТЗ. К тем сайтам, которые не попадают под водопадную модель не стоит применять описанный ниже подход.

1. Обоснование необходимости ТЗ


А зачем вообще нужно ТЗ на сайт? Заказчик говорит: «Нужен следующий сайт: каталог товаров, корзина, форма заказа, доставка, мы на карте, о нас, обратная связь». Что не ясно? Ничего необычного, всё обыденно и рутинно.

Разработчик отчетливо представляет, что нужно сделать, а сделать, в его понимании нужно вот так:



Далее много букв
Всего голосов 212: ↑209 и ↓3+206
Комментарии141

Защищаем веб-формы от спама без CAPTCHA — 2: Ботобор

Время на прочтение3 мин
Количество просмотров28K
Три года назад на Хабре была опубликована статья «Form Spam Bot Blocker: Защищаем Web-формы без CAPTCHA!», рассказывающая о принципиально отличном от CAPTCHA решении для PHP по защите форм от спам-ботов. Это решение основано на идеях, изложенных в своих статьях Филом Хааком (Phil Haack) — Honeypot Captcha и Недом Батчелдером (Ned Batchelder) — Stopping spambots with hashes and honeypots. К сожалению, предложенный в статье класс, написан для PHP4 и не развивается с 2007-го года. Хочу предложить вашему вниманию его аналог на PHP5.
Читать дальше →
Всего голосов 45: ↑36 и ↓9+27
Комментарии90

Асинхронный UI: будущее веб-интерфейсов

Время на прочтение4 мин
Количество просмотров7.4K
В то время как Ajax стал мейнстримом, пользовательские интерфейсы по-прежнему не могут похвастаться мгновенной отзывчивостью к действиям пользователя. Причина в том, что многие разработчики привыкли мыслить в терминологии «запрос/ответ» и думают, что UI должен работать параллельно с фронтэндом, дожидаясь ответа от сервера на каждый запрос. Но почему бы не обновлять интерфейс раньше, чем пришёл ответ?

Проблема довольно острая, потому что быстродействие является критически важной характеристикой UI. Например, по оценке Amazon, задержка загрузки страницы всего лишь в 0,1 секунды приводит к снижению оборота магазина на 1%. По оценке Google, задержка в 0,5 секунды уменьшает количество поисковых запросов на 20%.

Ruby/JavaScript-разработчик Алекс Маккоу (Alex MacCaw) из компании Twitter предлагает логичное решение проблемы: распространить принципы Ajax не только на фронтэнд, но и на пользовательский интерфейс. Он разработал соответствующий фремйворк для того, что называется AUI (асинхронный интерфейс пользователя).
Читать дальше →
Всего голосов 109: ↑100 и ↓9+91
Комментарии58

Легкий способ начать тестировать

Время на прочтение4 мин
Количество просмотров50K
Если вы PHP-разработчик, и по разным обстоятельствам тесты для своих приложений не пишете, то эта статья для вас. В ней я постараюсь вкратце показать с чего начать и что делать, чтобы написание тестов приносило вам радость, а вашему приложению стабильность.

Итак, первый совет. Забудьте всё что вы знаете о юнит-тестах. Швырните табуреткой в человека, который сказал вам, что без них не обойтись. Попробуем разобраться, в каких случаях нужно их использовать, а в каких — нецелесообразно.
Читать дальше →
Всего голосов 83: ↑61 и ↓22+39
Комментарии54

Удобное приложение для реализации субдоменов в Django — django-hosts

Время на прочтение1 мин
Количество просмотров7.4K
django-hosts — полезное приложение от замечательного Jannis Leidel, который входит в состав Django core-developers и курирует большое количество Django-проектов.
Документацию можно найти на readthedocs.
Пример установки:
  • Устанавливаем: pip install django-hosts
  • Добавляем 'django_hosts' в INSTALLED_APPS
  • Добавляем 'django_hosts.middleware.HostsMiddleware' в MIDDLEWARE_CLASSES
  • В директории проекта создаем файлик назовем его например hosts.py
  • Примерное содержание hosts.py:
    from django_hosts import patterns, host
    host_patterns = patterns('path.to',
        host(r'api', 'api.urls', name='api'),
        host(r'news', 'news.urls', name='news'),
        host(r'forum', 'forum.urls', name='forum'),
    )

    В соотвтетствии с файлом hosts.py у нас появятся 3 хоста: api.site.com, news.site.com, forum.site.com.
  • В settings.py добавляем: ROOT_HOSTCONF = 'projectname.hosts'

Не забываем про настройку wildcard субдомена (Хотя не обязательно wildcard — достаточно прописать необходимые. Ну а как все это сделать думаю все знают).
Читать дальше →
Всего голосов 61: ↑56 и ↓5+51
Комментарии19

Новые бесплатные онлайн курсы от Stanford

Время на прочтение1 мин
Количество просмотров24K
В начале текущего учебного года Stanford организовал 3 бесплатных онлайн курса (основаные на трёх стационарных курсах Стэнфорда): Machine learning, Artificial intelligence и Introduction to Database. Все курсы идут с видео лекциями и домашними заданиями. Для курсов Artificial intelligence и Introduction to Database предусмотрены ещё и экзамены. После успешного окончания любого из курсов будет выслан сертификат (digital-signed pdf) от преподавателя.

И вот, были анонсированы ещё несколько онлайн курсов, которые будут стартовать в январе/феврале 2012 года.

У нас есть замечательный шанс послушать некоторые знаменитые Стэнфордские курсы, записывайтесь!

Update Спасибо recky, который заметил, что добавились ещё несколько курсов. Один из CS секции — по криптографии, и два из Entrepreneurship секции:

UUpdate продолжают радовать, новый доступный курс:

Читать дальше →
Всего голосов 126: ↑125 и ↓1+124
Комментарии61

Информация

В рейтинге
Не участвует
Откуда
Красноярский край, Россия
Дата рождения
Зарегистрирован
Активность