Search
Write a publication
Pull to refresh
1
0
Andrew @Bonch

User

Send message

Проблемы сжатия и объединения Javascript

Reading time5 min
Views16K
сжатие текстовых файловПосле публикации ряда заметок на тему сжатия и объединения JavaScirpt-файлов стоит все же осветить наиболее характерные проблемы этого самого сжатия и объединения.

Начнем с простого: как JS-сжатие способно испортить нам настроение. И как его поднять обратно :)

UPD стартовал конкурс ускорения сайтов. В призах: монитор, веб-камера, мышь. Все гипер-быстрое.
Читать дальше →

Test Infected

Reading time5 min
Views4.7K

Все, все будут писать тесты


Уже 3 года прошло, с тех пор как я увидел свою первую красную полоску. Что меня дернуло начать писать тесты, уже не важно. Я начал собирать информацию, перечитал весь wiki.agiledev.ru и торжественно запустил свой первый тест на SimpleTest. Конечно, эти тесты были ужасны, да и архитектура тоже (в моем сегодняшнем понимании). Тогда я, наверное, словил большинство ошибок, но зато замечательно провел время :)

Потом перешел на PHPUnit — просто было интересно, чем он отличается от SimpleTest и что в нем такого «навороченного».
А lime — гадость. Чего ребята из Symfony в него так вцепились? Понимаю ветка 1.*, наследие и все такое. Но 2.0 можно было бы и на PHPUnit начинать.
Да, мне это было интересно. Я активно писал тесты, даже честно пытался делать это перед тем, как писать код. Что-то не получалось, читал разные статьи на тему, как надо и не надо писать тесты, перечитывал wiki.agiledev.ru. Но внутри явно чего-то не хватало.
Читать дальше →

Фокус с HeadScript (сборка в один файл)

Reading time8 min
Views3.2K
Если сделать так:
<?php $this->headScript()->appendFile('/js/my1.js');?>
<?php $this->headScript()->appendFile('/js/my2.js');?>
<?php $this->headScript()->captureStart() ?>
  var action = '<?php echo $this->baseUrl ?>';
<?php $this->headScript()->captureEnd() ?>

<?php echo $this->headScript(); ?>
<?php echo $this->magicHeadScript(); ?>


то вместо чего-то типа такого:
<script type="text/javascript" src="/js/my1.js"></script>
<script type="text/javascript" src="/js/my2.js"></script>
<script type="text/javascript">
  var action = '/123';
</script>

получим на выходе:
<script type="text/javascript" src="/cache/js/1b1004a203..._compressed.js"></script>

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

Подготовим и сдадим декларацию по УСН за 15 минут не выходя из дома

Reading time2 min
Views1.4K
Смертельный номер: сейчас с помощью сервиса "Мое дело" и любого клиент банка мы за 15 минут подготовим декларацию индивидуального предпринимателя на упрощенной схеме налогообложения и отправим ее в налоговую инспекцию, не выходя из дома.

Итак, друзья, засекаем время.

Делай Раз


Создаем выписку в клиент-банке в формате 1С за 2009 год. 3 Минуты.
Читать дальше →

Асинхронное программирование: Примитивы высокого уровня

Reading time2 min
Views3.1K
После появления асинхронного каркаса Twisted концепция отложенного результата (continuable) стала очень популярной.

Прежде всего рекомендую прочитать статьи: Асинхронное программирование: концепция Deferred, Deffered для JavaScript.

Но пользоваться отложенными результатами не очень удобно без абстракций более высокого уровня. И теперь у нас есть каркас Do.
Читать дальше →

Down Notifier — бесплатный сервис мониторинга работы сервера

Reading time1 min
Views1.1K
«А этот сайт у тебя работает? А этот?»
Знакомы ли вам эти вопросы? Думаю да.
Мне не хватало простого как доска сервиса для определения, работает ли сайт или это проблемы моего соединения.

В общем-то ничего сложного в таком сервисе быть не может, поэтому я решил быстренько набросать его. И, чтобы не заморачиваться с хостингом (и его стабильностью :)), написал всë как приложение для гугль ежа.

Сварганил чтоб работало кое-как, показал друзьям и мне посоветовали добавить пару фич, которые мне показались приятными. Вот теперь решил показать сервис вам — ничего нового, зато он простой, бесплатный, ненапряжный и работает. ;)
Собственно сам сервис – Down Notifier.

В чем фишка:
1) бесплатный
2) быстрый (примерно нужно10 секунд на то чтоб подписаться на уведомление)
3) не требует регистрации
4) уведомление через email, twitter, xmpp, sms (про это чуть дальше)
5) проверка каждые 10 минут (возможно, потом будет меньше, сейчас все в режиме тестирования)
6) после проверки ресурса можно получить proof link на состояние.
7) отказоустойчивый (находится на серверах Google)

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

Насчет уведомления через SMS хочу сказать следующее: поскольку сервис бесплатный, то изощряться не стал и сделал возможность уведомлений через стандартные шлюзы.
Этот пункт в настройках пользователя представлен как «Additional email».
Вот тут есть список шлюзов (правда он устаревший, насколько он актуален я ответить не могу).

10+ удобных онлайн-редакторов для программистов

Reading time3 min
Views155K
Как у разработчика, очевидно, что ваш основной рабочий инструмент, который позволит вам быстро идею превратить в код: текстовый редактор. Время идёт, и теперь нам доступно множество онлайновых текстовых редакторов, которые могут помочь вам создавать свой код с любого компьютера, имеющего доступ в интернет. В этой статье рассмотрим более 10 таких редакторов.

Amy Editor


Созданый в 2007 Петром Кронторадом (Petr Krontorad), Amy Editor продвинутый редактор с интерфейсом в стиле Mac. Amy Editor имеет в наличие кучу полезных опций, такие как нумерация строк, подсветка синтаксиса, сниппеты для более чем 20 языков, совместное использование и прочее.
Ami Editor
» http://www.amyeditor.com

Под катом ещё 11

Видео. Пример разработки приложения с помощью TDD

Reading time1 min
Views5.6K
В этом видео я разрабатываю приложение с помощью TDD на языке C#. Кроме демонстрации того, как надо писать модульные тесты, я постарался показать, как работает TDD на уровне приложения в целом.

При разработке применил принцип инверсии зависимости, а также использовал IoC-контейнер.

HTML 5. Работа с Web SQL базой данных

Reading time3 min
Views175K
В HTML 5 есть много новых возможностей, которые позволяют web разработчикам создавать более мощные и насыщенные приложения. К этим возможностям относятся и новые способы хранения данных на клиенте, такие как web storage(поддерживается в IE8) и web SQL database.

При этом если web storage ориентирован на хранение пар ключ-значение, то в случае с web SQL database у нас есть полноценный sqlite(во всех текущих реализациях применяется именно этот движок баз данных, что является проблемой при стандартизации).

Далее я расскажу, как работать с web SQL database. При этом примеры естественно будут на JavaScript. Кроме того, стоит отметить, что с поддержкой браузерами всего этого хозяйства дела обстоят, не очень хорошо, но всё постепенно меняется к лучшему и, скажем, в Opera 10.50 поддержка будет, а браузерах на движке WebKit она уже есть. Более подробно про то, какой браузер, что поддерживает можно узнать, пройдя по ссылке.

Соединение с базой данных.


Подсоединиться к базе данных очень просто:

db = openDatabase("ToDo", "0.1", "A list of to do items.", 200000);
Читать дальше →

Ох уж этот javascript

Reading time1 min
Views17K
Считаете себя гуру JS'а? Попробуйте предсказать результаты следующих операций:

Number.MIN_VALUE > 0; // true or false?

typeof null; // what type?
null === Object; // true or false?

// и самый сок

NaN === NaN; // true or false?

typeof NaN; // what type?


* This source code was highlighted with Source Code Highlighter.


Сомневаетесь? Тогда именно для вас Брайан Леру (Brian Leroux) создал WTFJS — сайт, содержащий коллекцию странностей JS. «JavaScript — это язык, который мы любим несмотря на все его ненавистные особенности».

Для нетерпеливых ответы под катом.

Подглядеть

Проект «Карандаш» (The Pencil Project): создание диаграмм и прототипов GUI на движке от Файерфокса

Reading time1 min
Views14K
The Pencil Project поставил своей целью создание свободного (на открытых исходниках) срéдства для создания диаграмм и прототипов GUI на движке от Файерфокса.

Его ужé обсуждали на Хабрахабре в позапрошлом году; с тех пор в Pencil появились средства экспорта (в HTML, PNG, документы Openoffice.org, Word и PDF), а также просмотр клипартов.

Выглядит так:

[The Pencil Project: скриншот]

Существуют версии «Карандаша», встраиваемые в Firefox, а есть и отдельные.

Pencil распространяется по лицензии GPL v2 и работает всюду, где способен работать Firefox 3. Например, первую версию Pencil проверяли на GNU/Linux 2.6 с GTK+, на Windows XP и Windows Vista.

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

[The Pencil Project: пример итога]

nodeJS и nonblocking I/O

Reading time5 min
Views9.7K

Добрый вечер уважаемые читатели,


На хабре последнее время проскакивало несколько упоминаний о node, быстрой платформе для создания вэб приложений на javascript, обладающей довольно уникальной на сегодняшний день особенностью, неблокирующим I/O (вводом/выводом).

Для начала о nodeJS:


1) В качестве языка используется JavaScript
2) Для выполнения JavaScript используется движок V8 от Google, который работает довольно быстро благодаря компиляции в машинный код перед выполнением.
3) Для реализации неблокирующего I/O используются libev и libeio, (libev показывает более хорошие результаты по сравнению с libevent)
4) Для реализации подключения библиотек выбран синтаксис commonJS
5) Есть возможность писать модули ещё и на C/C++, при этом подключаются они точно так-же как и js модули, это позволит Вам, к примеру, любое узкое место в вашем приложении переписать на C++ без каких либо трудностей.

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

Программирование: Практики которые я возьму с собой

Reading time3 min
Views4.3K
Я имею довольно небольшой опыт работы в сфере разработки программного обеспечения (всего 6 лет), но я уже накопил ряд полезных и правильных практик (по моему скромному мнению), которые можно использовать при создании программного обеспечения.

В основном описаны моменты которые касаются поддержки процесса разработки программного обеспечения, не затрагиваются темы планирования хода выполнения работ. Также не затронут процесс программирования и полезные плюшки для него (например расслоение системы на уровни, использование шаблонов проектирования). Но все ниже приведенное было и остается полезным для меня лично, и я буду рад если и вам на что нибудь сгодится :)
Читать дальше →

MythBusters: Правда и вымысел о Flash

Reading time6 min
Views6.9K

Последнее время, ходит очень много разговоров о html5, тэге видео и отсутствию Flash на iPad (это очень обидело flash разработчиков) и заявлению Стива Джобса в адрес Adobe. Было много разных мнений — кто-то считал, что это плохо, кто-то что хорошо. В этой статье я бы хотел рассказать от технологии flash со стороны разработчика и рассказать что, почему и как.

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

Элементы DSL на PHP: как сделать библиотечные API удобнее в использовании

Reading time8 min
Views8.5K
При разработке нашего внутреннего фреймворка (к сожалению, PHP вообще очень способствует постоянному переизобретению велосипеда), мы старались таким образом проектировать интерфейсы библиотечных модулей, чтобы клиентский код, использующий эти интерфейсы, получался простым, лаконичным и читаемым.

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

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

Стартап Интернет-магазина часть2 (оплата и доставка)

Reading time9 min
Views9.9K
В этой статье продолжение темы стартапа интернет-магазина и на сей раз речь пойдет об оплате и доставке. Из комментариев к прошлой статье стало ясно, что уважаемые хабравчане желают видеть больше цифр, поэтому постараюсь сделать эту статью более прозрачной в плане понимания затрат и острых углов.
Итак…
Читать дальше →

TDD для начинающих. Ответы на популярные вопросы

Reading time8 min
Views51K
Исходники проекта написанного с помощью TDD. Visual Studio 2008/C#
Для написания тестов использована библиотека xUnit, для создания mock-объектов – Moq.




На очередном собеседовании, спрашивая о TDD, я пришел к выводу, что даже основные идеи разработки через тесты не поняты большинством разработчиков. Я считаю, что незнание этой темы – большое упущение для любого программиста.

Мне задают много вопросов про TDD. Из этих вопрсов я выбрал ключевые и написал на них ответы. Сами вопросы вы можете найти в тексте, они выделены курсивом.
Читать дальше →

Новые подходы к валидации в Rails 3

Reading time4 min
Views8.8K

Введение


Как вы уже знаете из поста тов. Yehuda Katz об ActiveModel абстракции, в Rails 3.0, ActiveRecord отныне содержит в себе некоторые аспекты ActiveModel, среди которых модули валидации.

И прежде чем мы начнем, давайте вспомним, какие методы валидации у нас уже есть:
  • validates_acceptance_of
  • validates_associated
  • validates_confirmation_of
  • validates_each
  • validates_exclusion_of
  • validates_format_of
  • validates_inclusion_of
  • validates_length_of
  • validates_numericality_of
  • validates_presence_of
  • validates_size_of
  • validates_uniqueness_of
Все они по прежнему в строю, но Rails 3 предлагает несколько новых отличных альтернатив.
Читать дальше →

ActiveRecord Query Interface 3.0

Reading time5 min
Views5.8K
В данном переводе рассмотрены нововведения в следующей версии ActiveRecrod для Ruby on Rails 3, а так-же описана часть модуля, которая будет исключена в пользу поддержки новых интерфейсов.

Что потеряет поддержку в Rails 3.1?


Следующие методы будут считаться устаревшими в релизе Rails 3.1 (но не Rails 3.0), и будут полностью исключены из Rails 3.2 (хотя можно будет установить специальный плагин для их дальнейшего использования). Имейте в виду это предупреждение, т.к. оно влечет за собой значительные изменения в коде.

В кратце, передача хеша options, содержащего :conditions, :include, :joins, :limit, :offset, :order, :select, :readonly, :group, :having, :from, :lock любому методу класса, предоставленного ActiveRecord’ом отныне считается устаревшим.

Рассмотрим это более подробно.
Читать дальше →

Использование SVG для гибких, расширяемых и занятных фонов. Часть первая

Reading time5 min
Views12K
Решил сделать вольно-раздолбайский перевод статьи о SVG с ALA. Это перевод первой части, в ближайшее время постараюсь перевести вторую.

Масштабируемая векторная графика (SVG) состоит из кругов, прямоугольников и путей, представленных в XML и объединенных в изображения на веб-страницах. Вы можете применять сплошную заливку,  градиенты и некоторые фильтры  SVG — не все браузеры поддерживают все типы фильтров. Вы можете включать текст, изображения и можете копировать ваши SVG столько, сколько хотите. Чаще всего SVG используется в графических программах, для создания диаграмм, иллюстраций, анимаций.  Однако, ничто не мешает нам использовать SVG для дизайна сайтов —это дает нам удивительно универсальные возможности в веб-дизайне, занятные в использовании. В этой вводной статье я рассмотрю некоторые важные моменты в работе с SVG, включая поддержку в браузерах. Во второй части мы рассмотрим, как найти и адаптировать SVG, которые вы можете найти в Сети, или как создать SVG-изображения самостоятельно и добавить их на вашу страницу.

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity