Search
Write a publication
Pull to refresh
0
0
Anton @raven

User

Send message

FireUnit: Javascript Unit Testing Extension

Reading time2 min
Views684
Юнит-тесты это то, на что никогда нет времени. А если есть время, то нет желания. И наконец, если есть время и желание, то обязательно найдется какой-нибудь засранец, который найдет, как забрать твое время и отобьет всякое желание что-либо делать вообще… Да, заказчику тяжело объяснить что такое юнит-тесты и зачем они нужны. Но тем не менее, хочу сделать небольшой обзор нового плагина для Firefox, который позволяет юнит-тестить ваш джаваскрипт. Если быть совсем точным, то это расширение для Firebug – излюбленного инструмента javascript-разработчиков.
Итак, те кто не владеет теорией юнит-тестирования идут учить матчасть, а с остальными мы рассмотрим простейшие юнит тесты:

// Простой true/false юнит-тест
fireunit.ok( true, "Тест пройдет успешно!" );
fireunit.ok( false, "Тест будет провален!" );
// Сравниваем две строки и показываем разницу
// если строки отличаются между собой
fireunit.compare(
"Ленивый программист чистит зубной щеткой унитаз.",
"Ленивый программист уронил зубную щетку в унитаз",
"Это одинаковые строки?"
);
// Сравниваем две строки, используя регулярные выражения
fireunit.reCompare(
/Ленивый программист .* унитаз./,
"Ленивый программист уронил зубную щетку в унитаз.",
"Сравниваем две строки, используя регулярные выражения."
);
// Отображаем результаты тестов
fireunit.testDone();

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

Генерация скрипта базы данных по модели данных Entity Framework

Reading time1 min
Views1.3K
В будущей версии редактора моделей Entity Framework в Visual Studio ожидается такая полезная функциональность, как обратная генерация базы данных по модели данных (SSDL — Storage Schema Definition Language). Но пока её нет, можно воспользоваться XSLT-преобразованием, которое поможет получить из XML-описания модели хранилища SQL-DDL код для создания таблиц и связей в БД.

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

Кризисный коммуникатор или приятный девайс за 4 килорубля

Reading time4 min
Views1.2K
Побаловавшись с китайским девайсом, описанным в прошлом моем топике, пару недель и передав его следующему, несомненно, счастливому владельцу я решил, что неплохо было бы обзавестись коммуникатором. Дело в том, что кпк я продал и как-то сразу ощутилось его отсутствие, а с учетом финансовой непогоды за нашими окнами, сильно много дьявольских бумажек выделять на покупку не хотелось, да и покупать китайский мало-функциональный аппарат желания никакого не было. И тут пришел на выручку старый добрый ebay.

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

Делаем красивую флеш галерею в программе Picasa

Reading time1 min
Views933
image
Совсем недавно мне понадобилось составить подборочку из нескольких моих фотографий. Это должны были быть портреты. Недолго думая, я решил что нужно всё это реализовать это на флеш, т.к. это просто, карасиво, да и флеш-плеер я думаю уже почти у всех есть.

Первая мысль была скачать какую-нибудь галерею, куда можно привязать фликр или пикасу. Но вдруг я наткнулся на один хороший сайт. Там были выложены шаблоны галерей и их демонстрации. Скачав понравившийся шаблон я, к своему удивлению, не нашел никакого readme… Пришлось поискать на сайте. Оказалось что эти шаблоны нужно вставлять в программу пикаса… А потом в интерфейсе программы создавать готовую галерею.
Читать дальше →

Используем Adobe Illustrator для создания макета страницы

Reading time4 min
Views93K
Данное руководство создано для тех, кто уже умеет пользоваться Adobe Illustrator, но пока не знает всех тонкостей работы с ним и хочет познакомиться поближе.

Товарищ CurlyBrace уже сверстал представленный здесь макет, спасибо ему!

Для начала посмотрите на то, что мы будем стараться сделать:



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

Первые крупные IT жертвы финансового кризиса

Reading time1 min
Views644
Все кто хоть раз сталкивался с услугами sms биллинга конечно же знают что флагманами этого рынка являются такие компании как Russian Billing, SMSCoin, MPBill и десятки более мелких компаний. В связи с наступившим не легким положением в финансовой сфере и на рынке кредитования многие задались вопросом — «А выстоят ли столпы?»

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

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

Reading time5 min
Views8.6K
Заменяем диспетчер задач
Управляем автозагрузкой и следим за состоянием системы
Устанавливаем переключение раскладки
Создаем виртуальные рабочие столы
Сохраняем все заметки в одно место, не задумываясь ни о чем, кроме текста
Ускоряем навигацию по винчестеру
Ставим плагины к проводнику Windows и радуемся
Легко и быстро удаляем папки-файлы «занятые другими процессами»
Копируем и перемещаем быстрее и качественнее
Перестаем парится с кодировками, заменив блокнот

и как мы это сделаем?

Десять советов как написать (чуть) менее ужасное резюме

Reading time19 min
Views21K

«Цель: получить работу в IBM»
— пишет какой-то идиот-соискатель в Amazon.com.




ВНИМАНИЕ: это мое собственное, *персональное*, мнение, не Google, не Amazon или кого-либо еще. Я думаю вы обнаружите, что большинство рекрутеров, оценивающих анкеты в технических компаниях — особенно в технических компаниях, которые производят собственное программное обеспечение сами, такие как Yahoo!, Ebay, Amazon.com, Microsoft или Google — в целом, согласятся со многим из перечисленного. Но опытные рекрутеры расходятся во мнениях касательно многих мелких деталей, и, в конце-концов, это всего лишь мое собственное мнение. Эти советы не гарантируют получения Вами сколь-нибудь лучших результатов. Возможно, у вас будет другой опыт. Не используйте эти советы в ванной или стоя в луже. Не стучите по стеклу, это раздражает советы. Советы не кормить! И т.д.

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

Что такое фотоблог?

Reading time16 min
Views3.7K
Лучше один раз увидеть, чем сто раз услышать.

Не секрет, что человеческое восприятие устроено таким образом, что свыше 80% информации человек воспринимает зрительно. В век цифровых технологий, вкупе со взрывообразным увеличением количества сетевых «дневников» – блогов, и доступной цифровой фототехникой, во всем мире получили распространение так называемые фотоблоги. Что же такое «фотоблог»?


Введение


Фотоблог (photoblog) — вебсайт, содержащий в своей основе регулярно публикуемые фотографии, сопровождаемые названием снимка, датой/временем, текстовым описанием, сведениями EXIF и другими параметрами. Записи публикуются в обратном хронологическом порядке. Как правило, фотоблоги работают под управлением системы управления контентом (CMS) и являются динамическими сайтами. Система управления контентом (мы ее будет называть движком или скриптом) фотоблога часто содержит возможность добавления комментариев, выставления оценок или рейтинга фотографиям, поддерживает технологию RSS/ATOM и рассчитана на возможность просмотра с помощью RSS-аггрегаторов. Фотоблог может быть авторским или коллективным. В настоящей статье мы будем рассматривать только авторские фотоблоги.
Строго говоря, любой блог, содержащий в своих записях (постах) фотографии, можно считать фотоблогом. Тем не менее, за последние годы сформировалась классическая структура авторского сайта, которой придерживаются большинство фотоблогов, а именно: на главной странице обычно представлена последняя загруженная фотография, ссылка на предыдущую фотографию, а также ссылки на архив фотографий и другие страницы сайта. Таким образом, исходя из этого определения, количество одновременно отображаемых записей всегда равно одному.
Читать дальше →

Восстановление битых пикселей ЖК

Reading time1 min
Views144K
Сомневался в успешности метода, а также в том, что мой вечно салатовый пиксель, застывший полгода назад и постоянно мозоливший мне глаз, «станет на место». Но…
О чудо, помогло!
screenshot

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

Свободный и бесплатный софт

Reading time12 min
Views18K
Я знаю, подобный топик уже был, но я думаю этот будет более полным. Свобода… Зачем платить, если можно оценивать чужой энтузиазм и иногда, когда чувства переполняют, жать кнопочку Donate.

далее список программ

Азбука хорошего разработчика. Книжки для чтения

Reading time2 min
Views3.6K
Часто разработчиков нужно направить, поскольку они не имеют понятия о том, что им нужно изучить для повышения своего уровня. В этой заметке я опишу источники знаний, в моем понимании, необходимые для этой цели. Пишу в порядке, в котором я их предлагаю читать.

Паттерны проектирования

Википедия — там, в принципе, на хорошем уровне все описано и приведены примеры на разных языках.
Базовая книга – классика:
«Приемы объектно-ориентированного проектирования. Паттерны проектирования» — читал книгу давно, и раза 3. Вам того же советую. Даст возможность понимать большое количество терминов, произносимых другими разработчиками.

Рефакторинг

«Рефакторинг. Улучшение существующего кода» — вероятно, эта книга сделала революцию в написании кода. Читается быстро и интересно. Методы рефакторинга должны отложиться в голове до конца жизни. Ваш код отныне будет лучше. В книге есть упоминание про юнит тестинг.
Читать дальше →

Бесплатный Cryptic Disk 4 с поддержкой TrueCrypt

Reading time1 min
Views31K
Выпуск бесплатной версии Cryptic Disk Free — первый шаг навстречу пользователям.
Второй шаг — встроенная поддержка контейнеров умирающего TrueCrypt.
Ждём ещё один, последний шажок — открытые исходники.

image

Скачать бесплатную версию
История версий
Официальная новость

Sqimitive.js — Frontend Primitive или «Backbone без фантиков»

Reading time31 min
Views20K
Уже довольно давно большинство сайтов перестало быть набором HTML/PHP/CSS/JS-файлов, которые достаточно просто загрузить на сервер. Bower, Grunt, Component.js, AMD, Require.js, CoffeeScript, Clojure, Composer, npm, LESS и ещё 100500 инструментов — всё это сегодня применяется для сборки проектов, обновления компонентов, загрузки зависимостей, сжатия кода, компиляции из одного JavaScript в другой, подтасовки карт, прополки огорода и даже готовки яичницы.

Многих людей это вдохновляет. Да что там — 95% моих знакомых в один голос твердят, как подключив всего пару-тройку библиотек с особой, уличной магией можно забабахать сайт на over-9000 зелёных австралийских долларов — и всего за один вечер, с перерывом на кофе и бублики.

А я — странный человек. Не люблю смешения языков, технологий, библиотек. Angular, Knockout, React — они все хороши, но каждая — по-своему сложна. А ведь есть и «гибриды», где сходится сразу несколько миров — как Ember и Knockout.Bootstrap. Вдобавок, многие построены на jQuery — впрочем, к ней даже у меня претензий нет; наверное, таким и должен был быть JavaScript.

Как бы то ни было, реальность беззастенчиво входит в контакт с мечтами и расставляет точки над «i». Мне так же приходится писать на «new & popular» — а когда пишешь, душа томится и просится создать очередной велосипед… а ей разве откажешь? Она ведь как дитя малое.

Велосипед был создан. Велосипед без фантиков. Такой же простой, как автомат Калашникова, и многогранный, как швейцарский нож, где вместо наследования — события, вместо моделей, коллекций и представлений — один класс, с неограниченной вложенностью и полной свободой действий, почти в два раза меньший Backbone.js, использующий Underscore.js и, необязательно, jQuery/Zepto.

Добро пожаловать в Sqimitive.
Zen Book: введение в нирвану

История разработки Xenonauts — независимого ремейка X-COM

Reading time18 min
Views58K
Разработка Xenonauts заняла пять лет. На нее ушло в десять раз больше времени и в двадцать раз больше денег, чем я ожидал, но она стала настолько важной частью моей жизни, что мне даже немного жаль, что это путешествие завершилось. С разработкой было связано немало личных рисков. Когда она началась в 2009 году, мне было 22 года и я ничего не знал о разработке игр. Я потратил на этот проект все свои сбережения, значительную часть которых составляло наследство. Моим офисом была моя спальня, я работал над Xenonauts по вечерам и на выходных, после полноценной рабочей недели консультанта в KPMG, включавшей в себя три года экзаменов по бухучету (провал каждого из них привел бы к моему увольнению). К счастью, все закончилось хорошо. Эта статья представляет собой обещанный на Кикстартере дневник, в котором оцениваются все стороны разработки — правильно я поступал или нет. Надеюсь это будет интересно и возможно поможет кому-то избежать моих ошибок.


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

Range, TextRange и Selection

Reading time13 min
Views78K
Многим JavaScript-разработчикам приходилось сталкиваться с объектами, перечисленными в заголовке, например, при решении следующих задач:
— создание визуальных редакторов (wysiwyg),
— поиск в окне браузера,
— выставление BB-кода,
и т.д.

В этой статье автором предпринята попытка собрать перевод документации об этих объектах в одном месте + написать небольшие сопроводительные примеры. Перевод вольный, не дословный, так что если встретите неточность или корявую формулировку — пишите в комментариях.

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

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

Трансдьюсеры в JavaScript. Часть вторая

Reading time7 min
Views13K
В первой части мы остановились на следующей спецификации: Трансдьюсер — это функция принимающая функцию step, и возвращающая новую функцию step.

step⁰ → step¹

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

result⁰, item → result¹

Чтобы получить новый текущий результат в функции step¹, нужно вызвать функцию step⁰, передав в нее старый текущий результат и новое значение, которое мы хотим добавить. Если мы не хотим добавлять значение, то просто возвращем старый результат. Если хотим добавить одно значение, то вызываем step⁰, и то что он вернет возвращаем как новый результат. Если хотим добавить несколько значений, то вызываем step⁰ несколько раз по цепочке, это проще показать на примере реализации трансдьюсера flatten:

function flatten() {
  return function(step) {
    return function(result, item) {
      for (var i = 0; i < item.length; i++) {
        result = step(result, item[i]);
      }
      return result;
    }
  }
}

var flattenT = flatten();

_.reduce([[1, 2], [], [3]], flattenT(append), []); // => [1, 2, 3]

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

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

Итак, сейчас мы можем:
  1. Изменять элементы (прим. map)
  2. Пропускать элементы (прим. filter)
  3. Выдавать для одного элемента несколько новых (прим. flatten)

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

Трансдьюсеры в JavaScript. Часть первая

Reading time5 min
Views30K
Рич Хикки, автор языка Clojure, недавно придумал новую концепцию — Трансдьюсеры. Их сразу добавили в Clojure, но сама идея универсальна и может быть воспроизведена в других языках.

Сразу, зачем это нужно:

  • трансдьюсеры могут улучшить производительность, т.к. позволят не создавать временные коллекции в цепочках операций map.filter.takeWhile.etc
  • могут помочь переиспользовать код
  • могут помочь интегрировать библиотеки между собой, например underscore/LoDash могут уметь создавать трансдьюсеры, а FRP библиотеки (RxJS/Bacon.js/Kefir.js) могут уметь их принимать
  • могут упростить FRP библиотеки, т.к. можно будет выбросить кучу методов, добавив один метод для поддержки трансдьюсеров


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

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

oDesk (Upwork). Мой опыт за полтора года

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

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity