Search
Write a publication
Pull to refresh
1
0
Владимир Пестов @KozzyKoder

User

Send message

Прагматичность TDD

Reading time4 min
Views21K
Итак, моя последняя запись: стартап-ловушка (здесь её перевод — прим. переводчика) наделала много шуму. Среди людей, выражающих согласие и поддержку, нашлась и группа людей, которая была категорически не согласна. Я не буду здесь резюмировать все разногласия, ибо в этом месяце я уже исчерпал свой лимит ругательных слов. Но одним альтернативным мнением я проникся и считаю нужным его обсудить.
Речь о старом конфликте «прагматизм против догматизма».
Читать дальше →

Выпущена новая версия Python Tools for Visual Studio 2.0

Reading time1 min
Views18K
Для загрузки доступна новая версия инструментов разработки на языке Python в среде Visual Studio. Инструменты Python Tools for Visual Studio распространяются с открытым кодом и предлагают следующие возможности: поддержка CPython, IronPython, функциональный редактор кода, Intellisense, отладка, профилирование, HPC-кластеры, IPython, Django и облачные решения с клиентскими библиотеками для Windows, Linux и MacOS.



Python Tools for Visual Studio 2.0 Alpha содержит важные нововведения, такие как: усовершенствованные анализ кода и intellisense для Python, virtualEnviroment for Python, удаленная отладка из Linux/OSX, функция Debug as a Script (для быстрой отладки).
ниже эти функции описаны в виде коротких видео

Использование Razor отдельно от ASP.NET MVC

Reading time4 min
Views11K
По роду деятельности студентом мне часто приходится писать различные лабораторные и курсовые работы. Неотъемлемая часть этих работ(как и в 80% задач бизнес-программирования) — код составления отчета о найденных элементах в базе данных или выполненной длительной и сложной операции. В десктопном программировании в рамках .NET Framework есть различные способы решения подобных проблем:
  • Старая школа: формат RTF никто не отменял, однако вручную составить что-либо сложнее цветного текста со шрифтами разного цвета и ссылками лично у меня не получалось. Способ действенный, но стандарт не самый легкий для понимания, на последнюю версию даже смотреть страшно
  • Для Silverlight/WPF — формирование FlowDocument своими руками. Объектная модель однозначно удобнее формирования старого формата вручную, но вариант тоже только для смелых
  • Сторонние решения вроде Crystal Reports, возможно и очень мощный инструмент для создания отчетов, но не всегда в этом есть необходимость, к тому же не всегда есть возможность тянуть пару-тройку дополнительных программных продуктов1
  • Использование Microsoft Office Interop. Нет, это издевательство. Ручная работа с памятью в управляемой среде вызывает лишь бурю радости. Начинающий программист выпьет не одну упаковку кофе, прежде чем смирится с подобным принципом работы.
  • Формирование HTML. На нашу радость, стандарт позволяет создать документы средней степени форматированности, с помощью CSS можно довести до ума. Минусы — оформить документ по всем требованиям крайне затруднительно. Но это если в этом есть необходимость. Плюсы: простота стандарта и всеобщий переход «в облака и браузеры» стимулирует развитие HTML.

О последнем я и буду вести речь.
Читать дальше →

Оценка сложности алгоритмов

Reading time4 min
Views86K

Введение


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

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

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

Подробности

Код с душком (рефакторинг М. Фаулера)

Reading time2 min
Views78K
Всем привет.

Небольшая шпаргалка для новичков, и всех остальных кто забыл, по книге Рефакторинг. Улучшение существующего кода Мартин Фаулер.
Читать дальше →

Использование Selenium WebDriver для автоматического тестирования веб-интерфейса Яндекс.Почты

Reading time2 min
Views150K
Без качественного тестирования невозможно разрабатывать и поддерживать крупный веб-сервис. На ранних этапах его развития часто можно обходиться только ручным тестированием по заданному тест-плану, но с появлением новых фич и увеличением количества тест-кейсов довольствоваться только им становится все сложнее и сложнее. В этой статье мы расскажем о том, как автоматизируем функциональное тестирование веб-интерфейса Яндекс.Почты с помощью Selenium WebDriver и Node.js.

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

Как придумать идею для своего проекта (на примере WORKZILLA)

Reading time9 min
Views71K

Началось все примерно 4 года назад, в феврале 2009 года. Тогда мы с моим будущим партнером Сергеем работали в компании производителе электроники в Южной Корее. Оба были полны желания что-нибудь сделать, и располагали достаточным количеством свободного времени. Сергей работал девелопером, а я занимался логистикой…
Читать дальше →

Полезные советы новичкам в дизайне под Android

Reading time3 min
Views171K
Этот пост послужит своеобразным началом серии публикаций на тему «как я учусь дизайну под Android». Никогда не уделял гайдлайнам достаточно внимания, считая их скучными и неинтересными, но все изменилось. Сейчас я начинаю понимать, платформа достигла своей зрелости и предлагает ряд интересных решений.
Читать дальше →

Видеокурс по DevTools от Google и Codeschool

Reading time1 min
Views24K
image

Известные нам по гениальным обучающим скринкастам Rails for Zombies, Try Ruby и Try Git — команда Codeschool объединилась с корпорацией добра для создания Try DevTools — подробнейшего обучающего курса из семи глав, который, конечно же, является абсолютно бесплатным.
Читать дальше →

Как мы перешли с 30 серверов на 2: Go

Reading time4 min
Views69K

Как мы перешли с 30 серверов на 2: Go


Когда мы выпустили первую версию IronWorker около 3 лет назад, она была написана на Ruby, а API было написано на Rails. Через некоторое время нагрузка стала быстро расти и мы быстро достигли предела возможностей наших Ruby приложений. Короче говоря, мы перешли на Go. И если вы хотите узнать подробности — продолжайте читать…
дальше

Сравнение C++ Standard и Boost

Reading time9 min
Views110K
Должно ли C++ сообщество придерживаться стандарта или отойти от него, чтобы создавать лучшие вещи с Boost?


Погодите, не та библиотека.

В марте 2011 года комитет ISO C++ утвердил финальную версию черновика новейшего стандарта C++. Языка, который официально был стандартизирован в августе того же года и стал известен как C++ 11. Теперь, по прошествии 2 лет, мы можем оглянуться назад и посмотреть на некоторые проблемы, затронувшие язык(аж с момента принятия первого международного стандарта в 1998 году) и сравнить его финальный вариант с популярной C++ библиотекой Boost.

Читать далее

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

Reading time5 min
Views8.4K
image От переводчика. Одним из направлений деятельности нашей компании является промышленное сканирование документов.
В зарубежных текстах по проблематике ECM (Enterprise Content Management) термин capture употребляется для обозначения операции оцифровки документов, их распознавания, индексирования и сохранения в системе. Как и многие другие термины из области ECM, не имеет буквального аналога в русском языке. Обычно его переводят как «захват» (мы используем именно этот вариант) или «ввод».

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

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



Является ли всеобщее увлечение мобильными технологиями данью моде или же началом действительно революционных изменений? Попытаемся разобраться в этом, обратившись к зарубежным публикациям по теме. Цикл статей по проблеме использования мобильных устройств в ECM мы начинаем с перевода статьи Криса Райли, директора по маркетингу американской компании Pingar. Статья написана почти два года назад, но многие из высказанных мыслей не утратили актуальности и сейчас.



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

AppCode 2. Сделан как надо

Reading time1 min
Views19K
Мы рады сообщить, что сегодня официально стал доступен AppCode 2.0. В этот релиз мы добавили поддержку популярного фреймворка для тестирования Kiwi. В новый AppCode интегрированы два внешних браузера документации Dash и Ingredients.

AppCode не был бы самим собой, если бы не приобрел целую пачку «умных» фич, среди которых: новые рефакторинги, расширенные возможности генерации кода, улучшенная поддержка написания кода и его анализа, а также многое другое.
Читать дальше →

Web-сервер на базе Cowboy

Reading time10 min
Views35K
Привет!
В этом туториале я планирую показать тем, кто еще не знаком с веб-сервером Cowboy, как им пользоваться. Для людей, которые имеют опыт работы с ним, данный туториал врядли будет интересен, а вот для тех, кто знает о Ковбое лишь по наслышке — welcome!

Что мы будем делать:
  1. Простейшая установка и запуск сервера
  2. Краткий обзор роутинга, обслуживание статики
  3. Шаблонизация с помощью ErlyDTL (Django Template Language для Erlang)

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

HoloEverywhere v1.5

Reading time2 min
Views16K

Вчера, немного поматерясь, мной таки был сделан релиз HoloEverywhere 1.5.

Для тех, кто не в курсе: HoloEverywhere — бекпорт Holo темы с Android 4.1 на 2.1 и выше. Да и не только темы.

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

Что такое алгоритмы?

Reading time1 min
Views44K
Я учился в Канаде (в моих старых постах на Хабре можно проследить за тем процессом) благодаря стипендии правительства Казахстана под названием «Болашак» (каз. «будущее»). Ребята с сайта essay.kz совместно с администрацией этой стипендии регулярно приглашают выпускников «Болашака» и снимают мини-лекции. Недавно позвали и меня, решил рассказать об алгоритмах.

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

  • Что такое информатика и computer science?
  • Что такое алгоритм?
  • Лучшие решения обычно не очевидны
  • Машина Тьюринга и фундаментальные ограничения копьютеров
  • Что такое простые и сложные задачи?
  • Задача Коммивояжера
  • Почему языки программирования не похожи на человеческие языки?


Видео разбито на две части (один, два). Чтобы пропустить введение – начинайте смотреть с 2:56.

Часть 1:


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

Сказ о том, как один нерадивый провинциал в MIT поступал

Reading time9 min
Views413K
Всем здравствуйте, меня зовут Олег, мне 17 лет, и сегодня я расскажу вам о процессе поступления в MIT.
Дабы сохранить цельность повествования, следует отметить, что статья написана 15 марта 2013 года, в день оглашения вердиктов о зачислении студентов.
image
Картинка для привлечения внимания

Когда я поступал в Массачусетский технологический институт, я с удивлением обнаружил, что в рунете нет не то что мало-мальски съедобной «истории успеха», связанной с поступлением в MIT, а вообще хоть какого-то руководства по поступлению в топовые американские университеты своими силами. Особенно на бакалавриат. Я подумал: «Что ж, видимо, придется написать мне». Я постараюсь донести информацию в наиболее понятном виде.
Читать дальше →

Эмуляция хвостовой рекурсии в JavaScript

Reading time6 min
Views28K
Если кто-то ещё не знает, что такое хвостовая рекурсия, вот простой пример метода, складывающего в лоб натуральные числа от 1 до n (n≥0):
function add(n,acc) {
  if(n===0) return acc;
  return add(n-1,acc+n);
}

Изначально функция вызывается с параметром acc=0. В случае, если n не равно нулю, метод вызывает сам себя с другими параметрами и возвращает результат. Компилятор (или интерпретатор, или виртуальная машина) могут понять, что текущий вызов функции в стеке уже не нужен, стереть его и заменить следующим вызовом. Таким образом, рекурсия не приводит к разрастанию стека. Строго говоря, хвостовой вызов не обязан обращаться к текущей функции: вызов любой другой тоже может быть хвостовым. Главное условие: вызов функции и возврат её результата должны быть последними действиями в текущей функции. К примеру, в такой реализации метода хвостовой рекурсии нет, так как после вызова происходит ещё сложение:
function add(n) {
  if(n===0) return 0;
  return n+add(n-1);
}

По ряду причин хвостовая рекурсия в JavaScript не поддерживается (обсуждение на эту тему есть на StackOverflow). Поэтому вызов вроде add(100000,0) завершится исключением. На Хабре предпринимались попытки решить эту проблему через setTimeout, но это выглядит не очень честно и не очень красиво. Более изящное решение для языка Python было предложено с использованием «трамплина». Похожий подход для JavaScript рассмотрен здесь. Но мне захотелось, чтобы работало быстро и чтобы функцию можно было записать прямо как в примере выше. Посмотрим, что можно сделать.
Читать дальше →

intro.js — пошаговое руководство для веб-страницы

Reading time1 min
Views52K


Эта маленькая библиотека позволяет очень просто создать пошаговое введение для сайта или приложения. Достаточно добавить атрибуты data-intro и data-step с описанием и номером шага соответственно к нужным элементам страницы. Вот так:

<a href='http://google.com/' data-intro='Hello step one!' data-step='1'></a>
Читать дальше →

Information

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