Эта тема не относится к IT напрямую, но все знают, что без нее никуда. К сожалению, далеко не у всех есть возможность изучать английский с преподавателями. Ну что ж, попробуем заняться этим дома и с максимальной отдачей!
Андрей 'virus' Янцен @zvirusz
Backend developer
Библиотеки для визуализации данных в вебе
1 min
7.7KТема визуализации данных в интернете для меня достаточно актуальная, поэтому периодически мне приходится искать различные библиотеки для отображение тех или иных данных в вебе.
К таким библиотекам я отношу визуализацию графиков, чартов, графов, таблиц, отчетов, инфографик и т.д.
В свое время я написал несколько статей на тему визуализации данных в вебе (их можно поискать на хабре по ключевой фразе «Визуализация данных в вебе»).
Но с тех пор появилось много новых инструментов, мы получили HTML5 и т.д., поэтому вопрос опять стоит достаточно остро. Я решил собрать информацию о всех JavaScript инструментах, с помощью которых можно визуализировать данные в вебе (в первую очередь для себя, но потом решил, что, возможно, будет интересно это и другим). Я уже начал собирать информацию в виде списка инструментов с примерами в одном месте для того, чтобы не бегать по разным сайтам в поисках демок и описания функционала. Есть уже около 10 библиотек.
К таким библиотекам я отношу визуализацию графиков, чартов, графов, таблиц, отчетов, инфографик и т.д.
В свое время я написал несколько статей на тему визуализации данных в вебе (их можно поискать на хабре по ключевой фразе «Визуализация данных в вебе»).
Но с тех пор появилось много новых инструментов, мы получили HTML5 и т.д., поэтому вопрос опять стоит достаточно остро. Я решил собрать информацию о всех JavaScript инструментах, с помощью которых можно визуализировать данные в вебе (в первую очередь для себя, но потом решил, что, возможно, будет интересно это и другим). Я уже начал собирать информацию в виде списка инструментов с примерами в одном месте для того, чтобы не бегать по разным сайтам в поисках демок и описания функционала. Есть уже около 10 библиотек.
+47
YAF — самый быстрый php фреймворк*
1 min
15KYaf — это PHP микро-фреймворк, взявший за основу структуру приложения Zend Framework, но написанный на С и является PHP extension доступным через PECL.
Основной (и единственной) задачей для написания его послужила необходимость максимально быстрой (сравнимой с php) обработки запросов в парадигме MVC но с удобством предоставляемым Zend Framework.
Yaf и Zend Framework, имеют аналогичные API и подобную концепцию, сохраняя при этом совместимость.
Я сгенерировал тестовое приложение (zf create project test) и провел небольшой синтетический тест производительности.
Основной (и единственной) задачей для написания его послужила необходимость максимально быстрой (сравнимой с php) обработки запросов в парадигме MVC но с удобством предоставляемым Zend Framework.
Yaf и Zend Framework, имеют аналогичные API и подобную концепцию, сохраняя при этом совместимость.
Я сгенерировал тестовое приложение (zf create project test) и провел небольшой синтетический тест производительности.
+51
Streams.js: отложенные (ленивые) вычисления в Javascript
2 min
5.1KJavascript-библиотека stream.js вводит «новую»1 структуру числовых данных: поток (stream). Это контейнер, который похож на массив (array) и связный список (linked list), но содержит неограниченное количество элементов, реализованное методом отложенных вычислений.
Для аргумента
var s = Stream.range( 10, 20 );
s.print(); // prints the numbers from 10 to 20
Для аргумента
Stream.range( low, high )
можно указать только начальную границу диапазона Stream.range( low )
, тогда поток будет состоять из неограниченного количества натуральных чисел. По умолчанию Stream.range()
начинается с 1.+29
Задача о восьми Ферзях на Oracle SQL
6 min
11KПривет, Хабролюди!
В мае месяце в Москве прошла олимпиада IT-Планета, одной из номинаций которой было «Программирование СУБД Oracle». Задания были интересными и сложными, и хотелось бы поделиться решением некоторых из них.
Первая задача, о которой я расскажу — задача о восьми ферзях, решить ее было необходимо используя для этого только SQL и ничего более, сначала я эту задачу просто вычеркнул из списка тех, которые собираюсь решать, но в последний час все-таки ее решил, что принесло мне первое место и диплом из рук министра связи и массовых коммуникаций РФ.
В мае месяце в Москве прошла олимпиада IT-Планета, одной из номинаций которой было «Программирование СУБД Oracle». Задания были интересными и сложными, и хотелось бы поделиться решением некоторых из них.
Первая задача, о которой я расскажу — задача о восьми ферзях, решить ее было необходимо используя для этого только SQL и ничего более, сначала я эту задачу просто вычеркнул из списка тех, которые собираюсь решать, но в последний час все-таки ее решил, что принесло мне первое место и диплом из рук министра связи и массовых коммуникаций РФ.
+28
Мгновенный поиск в 75 гигабайтах
8 min
34KРечь пойдет о том, как был реализован быстрый поиск по большим объемам данных на этой страничке. Там можно искать пароль по хешу, для игрового сервера PvPGN, и генерировать эти же хеши.
Поиск написан на чистом PHP, без использования модулей и сторонней БД. В принципе, таким образом можно наращивать объемы до многих терабайт, было бы место — скорость от этого не сильно пострадает.
Далее от начала до конца описан весь процесс, который включает в себя брутфорс, создание хеш таблицы, её сортировка и, собственно, поиск.
Поиск написан на чистом PHP, без использования модулей и сторонней БД. В принципе, таким образом можно наращивать объемы до многих терабайт, было бы место — скорость от этого не сильно пострадает.
Далее от начала до конца описан весь процесс, который включает в себя брутфорс, создание хеш таблицы, её сортировка и, собственно, поиск.
+101
Методы защиты веб-формы без капчи
3 min
61KО чём речь?
В последнее время на Хабре было предложено довольно много идей для капчи. Сложная, умная, смешная, капча остаётся одним из основных способов защиты формы от ботов.
Однако, одновременно с этим, капча является проблемой юзабилити, поскольку заставляет пользователя выполнять лишнее действие.
В этом обзорном посте я бы хотел рассмотреть незаметные для пользователя методы защиты от ботов.
Методы защиты
+108
Для изучающих Ruby
1 min
2.7KНедавно на github была создана организация — Habraruby(в ее состав пока входят 2 человека, надеюсь, что это число значительно вырастет). Изначально ей принадлежал один репозиторий с задачами с сайта acm.mipt.ru. Но в виду того, что решающих людей мало, а сами задачи нетривиальны, я решил открыть еще один репозиторий с задачами с сайта spoj.pl
Во-первых, в отличие от задач МФТИ(коих около 400, если я не ошибаюсь), на spoj более 9 тысяч задач. Не стоит, наверное говорить, что и уровень многих из них приемлем для начинающих. Правда, условия на английском, но думаю, что это не беда.
Повторюсь, для чего это все нужно — для тех, кто только начал изучать Ruby, или только познакомился с синтаксисом, часто необходимо читать простой код. Обычно, все доступные исходники на Ruby связаны с RoR и являются бесполезными для начинающих. И как раз в роли такой базы несложного для понимания кода будет служить репозиторий.
Для маститых рубистов это просто шанс поделиться опытом и может быть почерпнуть что-то новое даже для себя. В любом случае, каждый сможет найти что-нибудь для себя.
Во-первых, в отличие от задач МФТИ(коих около 400, если я не ошибаюсь), на spoj более 9 тысяч задач. Не стоит, наверное говорить, что и уровень многих из них приемлем для начинающих. Правда, условия на английском, но думаю, что это не беда.
Повторюсь, для чего это все нужно — для тех, кто только начал изучать Ruby, или только познакомился с синтаксисом, часто необходимо читать простой код. Обычно, все доступные исходники на Ruby связаны с RoR и являются бесполезными для начинающих. И как раз в роли такой базы несложного для понимания кода будет служить репозиторий.
Для маститых рубистов это просто шанс поделиться опытом и может быть почерпнуть что-то новое даже для себя. В любом случае, каждый сможет найти что-нибудь для себя.
+38
Репозиторий с задачами на Ruby
2 min
8KНедавно начал изучать Ruby. Несмотря на большое количество туториалов и мануалов, отсутствие официальной документации несколько замедляет процесс обучения.(Официальная документация все-таки существует — спасибо Kane). Но тем не менее, идея от этого не теряет ценности.
Чтобы получше освоить синтаксис языка, многие советуют решать задачи из спортивного программирования. Это позволяет набить руку в максимально кратчайший срок.
Нашелся отличный сайт с ejudge — acm.mipt.ru с интерпретатором Ruby. Но при решении задач(особенно на незнакомом языке), постоянно присутствует ощущение, что может быть это можно было сделать как-то иначе — легче, быстрее, удобнее.
Чтобы получше освоить синтаксис языка, многие советуют решать задачи из спортивного программирования. Это позволяет набить руку в максимально кратчайший срок.
Нашелся отличный сайт с ejudge — acm.mipt.ru с интерпретатором Ruby. Но при решении задач(особенно на незнакомом языке), постоянно присутствует ощущение, что может быть это можно было сделать как-то иначе — легче, быстрее, удобнее.
+16
Проектирование программного обеспечения
5 min
310K Сегодня процесс создания сложных программных приложений невозможно представить без разделения на этапы жизненного цикла. Под жизненным циклом программы будем понимать совокупность этапов:
Остановимся детально на процессе проектирования. В ходе проектирования архитектором или опытным программистом создается проектная документация, включающая текстовые описания, диаграммы, модели будущей программы. В этом нелегком деле нам поможет язык UML.
- Анализ предметной области и создание ТЗ (взаимодействия с заказчиком)
- Проектирование структуры программы
- Кодирование (набор программного кода согласно проектной документации)
- Тестирование и отладка
- Внедрение программы
- Сопровождение программы
- Утилизация
Остановимся детально на процессе проектирования. В ходе проектирования архитектором или опытным программистом создается проектная документация, включающая текстовые описания, диаграммы, модели будущей программы. В этом нелегком деле нам поможет язык UML.
+20
Книга Application Architecture Guide, Second Edition
1 min
9KДоступен для бесплатного скачивания финальный вариант книги Application Architecture Guide во второй редакции. Книга содержит 560 страниц разбитых на 28 больших глав. Application Architecture Guide посвящена архитектуре и дизайну ПО, как то: дизайну и разработке различных типов ПО (мобильные, web, клиентские, RIA, сервисы и облачные сервисы), организации и разработке уровней ПО (представления, бизнеслогики, данных, сервисов), созданию компонентов.
Получить книгу можно несколькими путями:
* скачать pdf (7.5 Mb);
* читать online;
* купить на Amazon;
* скачать дополнительную информацию на App Arch Guide 2.0 Knowledge Base.
Официальный анонс одного из авторов в его блоге J.D. Meier's Blog.
Получить книгу можно несколькими путями:
* скачать pdf (7.5 Mb);
* читать online;
* купить на Amazon;
* скачать дополнительную информацию на App Arch Guide 2.0 Knowledge Base.
Официальный анонс одного из авторов в его блоге J.D. Meier's Blog.
+27
Сделай сам: регистрация ООО
6 min
33KНе так давно мы размещали подкаст, в котором Антон Шаяхов поведал миру, как быстро и качественно зарегистрировать ИП. Совершенно незаслуженно мы обошли вниманием более сложный процесс. Исправляемся.
Дано: ведется деятельность в качестве ИП, есть доступ в интернет, уровень интеллекта выше среднего.
Задача: в кратчайшие сроки и с минимальными затратами закрыть ИП и зарегистрировать ООО.
Дано: ведется деятельность в качестве ИП, есть доступ в интернет, уровень интеллекта выше среднего.
Задача: в кратчайшие сроки и с минимальными затратами закрыть ИП и зарегистрировать ООО.
+118
Основы и заблуждения насчет JavaScript
9 min
55KОбъекты, классы, конструкторы
ECMAScript, будучи высоко-абстрактным объектно-ориентированным языком программирования, оперирует объектами. Существуют также и примитивы, но и они, когда требуется, также преобразуются в объекты. Объект — это коллекция свойств, имеющая также связанный с ней объект-прототип. Прототипом является либо также объект, или же значение null.В JavaScript нет привычных классов, но есть функции-конструкторы, порождающие объекты по определенным алгоритмам (см. Оператор new).
Прототипное делегирующее наследование
Классическое наследование очень похоже на то, как люди наследуют гены своих предков. Есть какие-то базовые особенности: люди могут ходить, говорить… И есть характерные черты для для каждого человека. Люди не в состоянии изменить себя — свой класс (но могут поменять собственные свойства) и бабушки, дедушки, мамы и папы не могут динамически повлиять на гены детей и внуков. Все очень по земному.
Теперь представим другую планету, на которой не такое как на Земле генное наследование. Там обитают мутанты с «телепатическим наследованием», которые способны изменять гены своих потомков.
Разберем пример. Отец наследует гены от Дедушки, а Сын наследует гены от Отца, который наследует от Дедушки. Каждый мутант может свободно мутировать, и может менять гены своих потомков. Например у Дедушки был зеленый цвет кожи, Отец цвет унаследовал, Сын тоже унаследовал цвет. И вдруг Дед решил: «надоело мне ходить зеленым — хочу стать сними», смутировал (изменил прототип своего класса) и «телепатически» распространил эту мутацию Отцу и Сыну, вобщем посинели все. Тут Отец подумал: «Дед на старости лет совсем двинулся» и поменял свой цвет в генах обратно на зеленый(изменил прототип своего класса), и распространил «телепатически» свой цвет сыну. Отец и Сын зеленые, Дед синий. Теперь как бы дед ни старался Отец и сын цвет не поменяют, т.к сейчас Отец в своем прототипе прописал цвет, а Сын в первую очередь унаследует от Прототипа Отца. Теперь Сын решает: «Поменяю ка я свой цвет на черный, а моё потомство пусть наследует цвет от Отца» и прописал собственное свойство, которое не влияет на потомство. И так далее.
+148
JavaScript F.A.Q: Часть 1
15 min
74KНесколько дней назад мы с TheShock создали топик в котором собирали ваши вопросы, касательно JavaScript (архитектура, фрэймворки, проблемы). Настало время ответить на них. Мы получили очень много вопросов, как в комментариях так и по email. Эта первая часть ответов — те вопросы, которые достались мне.
+222
Пять способов вызвать функцию
5 min
371KTranslation
Мне часто приходится сталкиваться с JavaScript-кодом, ошибки в котором вызваны неправильным понимаем того, как работают функции в JavaScript (кстати, значительная часть такого кода была написана мной самим). JavaScript — язык мультипарадигменный, и в нем имеются механизмы функционального программирования. Пора изучить эти возможности. В этой статье я расскажу вам о пяти способах вызова функций в JavaScript.
+124
Шнуровик — плагин для подбора кабеля
1 min
721Привет всем хабражителям!
У нас в проекте наконец-то появился человек, который самостоятельно занимается разработкой плагина для подбора кабелей, шнурков и прочей коммутации.
Пока готова первая версия и есть несколько идей, куда можно двигаться дальше, но нужно более четкое понимание, чего хочет пользователь.
Поэтому просим feedback :)
У нас в проекте наконец-то появился человек, который самостоятельно занимается разработкой плагина для подбора кабелей, шнурков и прочей коммутации.
Пока готова первая версия и есть несколько идей, куда можно двигаться дальше, но нужно более четкое понимание, чего хочет пользователь.
Поэтому просим feedback :)
+28
Релиз Nginx CT++ Module 0.5 — высокопроизводительного модуля-шаблонизатора для веб-сервера
2 min
3.4KПервоначально хотел оформить как топик-ссылку, но тогда не получилось бы вставить картинку:
а она всё иллюстрирует, как нельзя лучше. Если картинка вас заинтересовала, то вы можете сразу пройти на открытый по случаю релиза сайт, или заглянуть под хабракат за комментами и некоторыми моими мыслями.
Позднее, как появится свободное время, напишу более подробную пошаговый HowTo, что вообще можно и что нужно делать с модулем, как можно представить MVC в виде: M — ваши сервисы, V — этот модуль и C — Nginx.
а она всё иллюстрирует, как нельзя лучше. Если картинка вас заинтересовала, то вы можете сразу пройти на открытый по случаю релиза сайт, или заглянуть под хабракат за комментами и некоторыми моими мыслями.
Позднее, как появится свободное время, напишу более подробную пошаговый HowTo, что вообще можно и что нужно делать с модулем, как можно представить MVC в виде: M — ваши сервисы, V — этот модуль и C — Nginx.
+57
Цветной man или как разукрасить вывод echo
8 min
111KКогда пишешь даже минимальный скриптик, часто используешь echo — подсказки.
Согласитесь "цветной man" ведь намного приятнее читать, так почему бы не раскрасить вывод echo?
это достаточно легко.
Итак…
Задача:
Раскрасить текстовую строку выводимую на экран через команду echo
т.е. раскрасить эти самые подсказки
Согласитесь "цветной man" ведь намного приятнее читать, так почему бы не раскрасить вывод echo?
это достаточно легко.
Итак…
Задача:
Раскрасить текстовую строку выводимую на экран через команду echo
т.е. раскрасить эти самые подсказки
+46
Паять просто (комикс)
1 min
64KБуквально неделю назад ребята из MightyOhm выпустили 8ми страничный комикс об азах пайки. Он понравился мне тем, что не смотря на свой формат и объём, в мелких деталях объясняет основные принципы этого процесса, которые совсем не очевидны для людей ни разу не державших в руках паяльник (как показывает практика, для многих державших тоже).
В общем, потратив сутки я всё там перевёл, постаравшись сохранить оригинальную верстку и стиль.
Если вы давно хотели научиться паять сами, или планируете научить этому своих детей, то все необходимые ссылки под катом.
В общем, потратив сутки я всё там перевёл, постаравшись сохранить оригинальную верстку и стиль.
Если вы давно хотели научиться паять сами, или планируете научить этому своих детей, то все необходимые ссылки под катом.
+216
IndexedDB: пробуем готовить
7 min
22KIndexedDB – стандарт хранения больших объемов структурированных данных на клиенте – был ожидаем также как и WebSocket (ну может самую малость меньше). В свете выхода FireFox 4 я нашёл время и силы всё-таки разобраться, как им пользоваться, и попытаться написать что-то больше, чем пример с адресной книгой, гуляющий по интернетам (в процессе поиска информации у меня сложилось впечатление, что это был единственный пример).
+43
Information
- Rating
- Does not participate
- Location
- London, England - London, Великобритания
- Date of birth
- Registered
- Activity