Search
Write a publication
Pull to refresh
180
0
spmbt @spmbt

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

Send message

Пилим Adblock

Reading time9 min
Views174K


Стратегия


Итак, Адблок… Но здесь я буду говорить не столько о блокировке рекламы, сколько об оптимизации и правильном использовании этого интересного своей универсальностью дополнения. Не отношусь к тем, кого раздражает сама реклама — меня раздражает способ ее доставки.
Читать дальше →

Работа с моделями данных в javascript

Reading time4 min
Views20K
Здравствуйте, Хабралюди.

Мал по-малу из моего опыта и наших проектов родилась небольшая библиотека для работы с моделями в джаваскрипте. Она так и называется — Model.js.

Я расскажу вам вкратце об этой библиотеке и этим постом запрашиваю обратную связь у тех, кто создавая сложные джаваскрипт-приложения, уже решает эту проблему каким-то определенным образом без фреймворков. Интересно также и мнение тех, кто только подыскивает подходящий инструмент для своих нужд: какой инструмент вам нужен и насколько вам подходит Model.js?
Читать дальше →

Программисты-оптимисты

Reading time5 min
Views78K

Мы, программисты, — оптимисты. Это проявляется во всем цикле разработки ПО от оценки сроков до написания кода и внедрения. Как показывает моя практика, в разработке ПО законы Мерфи работают в 100% случаев. Несмотря на это, я раз за разом сталкиваюсь с «программистами-оптимистами».

Топ «оптимистичных» допущений:
Читать дальше →

Шпаргалка по пакетному менеджеру NPM

Reading time5 min
Views421K

npm — это пакетный менеджер node.js. С его помощью можно управлять модулями и зависимостями.
Небольшая шпаргалка всех моих любимых команд npm:

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

Сайт для программиста. Часть 2. Публикация

Reading time4 min
Views39K

В первой части я рассказал, как программисту относительно просто запустить с нуля свой личный сайт с использованием Github, Heroku и Twitter Bootstrap.

Но запустить сайт мало. Скорее всего, вам захочется на него периодически что-то выкладывать. Например, новые проекты в портфолио, или записи в блог.

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

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

HabraCitizen — новое android-приложение для Хабрахабра с темной темой и свайп навигацией

Reading time10 min
Views18K


Здравствуй, Хабрасообщество. Сегодня ночью в Play Market было выложено мое первое android-приложение — HabraCitizen. Сабж представляет собой новую хабрачиталку со множеством возможностей и фич. Просили удобный хабра-клиент для android-устройств? Встречайте :)

Особенности приложения (из описания в маркете):
— Светлая и темная тема!
— Слайд-меню с возможностью настройки расположения (слева или справа);
— Свайп-навигация!
— Авторизация*;
— Авторизованные пользователи могут видеть количество новых комментариев к постам в списке постов, а также видеть новые комментарии в посте (комментарии подсвечиваются зеленым)*;
— Возможность загрузки постов для чтения в офлайне (с картинками!)*;
— Техника pull-to-refresh для обновления списков — чтобы обновить комментарии или список постов теперь достаточно потянуть сам список, а не нажимать кнопку;
— Полноэкранный режим чтения постов и вопросов;
— Настраиваемый отдельно шрифт в посте и в комментариях;
— Практически все возможные разделы сайта: посты лучшие (за сутки, неделю, месяц, все время), тематические и корпоративные (захабренные, новые, отхабренные), вопросы, события, хабы, профили компаний и пользователей (со списком опубликованных постов, вопросов, ответов и т.д),
лента*, избранное*;
— Полноценный поиск по ресурсу — посты, вопросы, хабы, пользователи, комментарии;
— Поддержка хабраката
— Просмотр полноразмерной версии картинок по тапу (с возможностью ресайза)!
— Запуск youtube-видео в youtube приложении прямо из постов и комментариев;
— Приложение не «теряет» позицию при чтении поста или комментариев при повороте экрана, а также способно восстановить загруженный пост с комментариями или список постов даже если приложение было «убито» в фоне
— Приложение способно «ловить» ссылки, ведущие на домен habrahabr.ru и открывать соответствующий раздел автоматически;

* — авторизация и загрузка постов для чтения в офлайне доступны в полной версии приложения, которую можно разблокировать из приложения. Об этом ниже.

Ссылка на приложение в маркете: play.google.com/store/apps/details?id=com.allesad.HabraCitizen

Заинтересованы? Прошу под кат (осторожно, тонна картинок).

История разработки и подробное описание возможностей

Как начать писать тесты за 10 шагов по 10 минут

Reading time7 min
Views79K
Дайте-ка угадаю: вы согласны с тем, что писать тесты — это хорошо. Это повышает надежность системы, ускоряет разработку, проект с хорошим тестовым покрытием поддерживать легко и приятно, а TDD — это вообще почти идеал процесса разработки. Но не у вас в проекте. То есть, оно клёво, но, к сожалению, сейчас столько работы — просто завал. Куча задач, одних только критических багов — два десятка, плюс надо срочно дописать этот модуль и еще написать письмо заказчику… Так что тесты, наверное, будем прикручивать уже в конце, если время останется. Или в следующем проекте. Нет, ну там точно полегче будет. Скорее всего.

Как, узнали ситуацию?

Так вот — чушь всё это. Сфера ИТ — бесконечна, как вселенная, куча работы будет всегда. Можно или начать писать тесты прямо сейчас, или не сделать этого никогда. Я тут набросал короткий план, как начать это делать за 10 шагов, по шагу в день, по 10 минут на шаг. И когда я говорю «10 минут» я имею в виду не «3 с половиной часа» и не «ну сколько-то времени, лучше побольше», а именно 600 секунд. Если у вас нету в день 600 секунд свободного времени — срочно меняйте проект, работу, профессию, страну проживания (нужное подчеркнуть), потому что это не жизнь, а каторга какая-то. Поехали.
Читать дальше →

Рекомендательные системы: You can (not) advise

Reading time9 min
Views44K

Более полугода назад в поисках что посмотреть, я листал топ произведений. Это занятие повторялось уже много раз и успело надоесть — постоянно приходилось пропускать то, что я смотреть не хочу. Имхонетами раньше не пользовался, да и не доверял им из-за специфики искомых произведений. На сайте, где я производил поиски, была возможность создать свой список просмотренных произведений и выставить оценку, также были доступны оценки других пользователей. Тут мне в голову пришла гениальная идея, как оказалось позднее банальная, — используя оценки других пользователей делать рекомендации. Данная деятельность называется коллаборативной фильтрацией, а программа её реализующая — Рекомендательной системой(РС). Оглядываясь назад я понимаю, что совершил множество ошибок из-за недостатка информации и её труднодоступности в данной тематике, а что самое главное — сильно переоценил РС. В данном посте я сделаю обзор основных типов и алгоритмов РС, а также постараюсь передать часть своих знаний и опыта.
Читать дальше →

Делаем жизнь проще, GruntJS (для новичков)

Reading time5 min
Views84K

Что такое GruntJS


Большинство JS разработчиков уже используют какие-то инструменты компоновки для своих разработок, даже если не знают или не используют этот термин. Они объединяют файлы при разработке, уменьшают код JavaScript-а, чтобы ускорить загрузку страниц и конвертировать Sass, или уменьшают количество файлов в CSS для браузера, и много чего другого. Чаще всего это разные инструменты, что есть не очень удобно.

Grunt помогает управлять всеми этими шагами в одном месте и организовать сторонние компоненты.
Читать дальше →

Формальные языки и грамматики

Reading time9 min
Views121K

Мотивация


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

Этот текст задуман как популярное введение в теорию формальных языков и грамматик. Эта теория считается (и, надо сказать, справедливо) довольно сложной и запутанной. На лекциях студенты обычно скучают и экзамены тем более не вызывают энтузиазма. Поэтому и в науке не так много исследователей в этой тематике. Достаточно сказать, что за все время, с зарождения теории формальных грамматик в середине 50-х годов прошлого века и до наших дней, по этому научному направлению было выпущено всего две докторских диссертации. Одна из них была написана в конце 60-х годов Алексеем Владимировичем Гладким, вторая уже на пороге нового тысячелетия — Мати Пентусом.

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

Захабренный договор на разработку сайта, дизайна, софта. Версия 1.1

Reading time18 min
Views246K
На сайте немало постов о том, какие условия нужно включать в договор на создание сайтов и программ (краткий список ниже), но нет договора в формате, который можно взять за основу для составления своего договора. Мы изучили условия из постов (спасибо авторам), подумали над ними, переработали и учли в предлагаемой на ваш суд форме договора. Так что договор пока можно считать частично «захабренным».


Договор авторского заказа

Декомпиляция Java приложений

Reading time3 min
Views205K
Декомпиляция — процесс воссоздания исходного кода декомпилятором
Недавно я задался вопросом: Какой декомпилятор лучше?
Начал мучить Google, экспериментировать. В итоге нашел отличное решение. Как декомпильнуть любую программу и получить рабочие «исходники»? Об этом в сабже.
Читать дальше →

Берем под контроль криптографию в облачном хранилище MEGA

Reading time19 min
Views49K
После запуска в какой-то мере скандального сервиса MEGA разговоры о его защищенности немного побурлили и затихли. На сегодняшний день сервис живет своей жизнью и его никто даже не поломал. Из всех разговоров почему-то был упущен термин «User Controlled Encryption» (UCE, или Контролируемая пользователем криптография), которой кичится MEGA. Под словом «упущен» я подразумеваю тот факт, что мы не рассмотрели все возможности, которые дает нам криптографический движок, выполняющийся в JavaScript на стороне клиента.

Конечно, сам сервис MEGA под этим подразумевает всего лишь то, что ключи шифрования не хранятся на сервере, а вся их криптография выполняется в контексте браузера. При этом после запуска сервиса было много разговоров о том, что в нем используются нестойкие криптографические алгоритмы и что вообще все плохо и мы все умрем, а наши файлы прочитает ФСБ. Это подтолкнуло меня на мысль расширить понятие «UCE» и действительно взять криптографию под свой контроль, а именно — заменить или дополнить некоторые механизмы обеспечения безопасности сервиса.

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

ASP.NET MVC. Урок 0. Вступление

Reading time2 min
Views784K
Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

Почему именно asp.net mvc

ASP.NET MVC я люблю потому что:
  • Это .net. Я знаю .net и С#.
  • Это компилируемый код.
  • Это не ASP.NET WebForms, я работаю с html-кодом.
  • Используется MVC-паттерн.
  • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
  • Отличные инструменты отладки.


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

NoSQL базы данных: понимаем суть

Reading time9 min
Views595K
В последнее время термин “NoSQL” стал очень модным и популярным, активно развиваются и продвигаются всевозможные программные решения под этой вывеской. Синонимом NoSQL стали огромные объемы данных, линейная масштабируемость, кластеры, отказоустойчивость, нереляционность. Однако, мало у кого есть четкое понимание, что же такое NoSQL хранилища, как появился этот термин и какими общими характеристиками они обладают. Попробуем устранить этот пробел.


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

Случайные советы

Reading time3 min
Views12K
Здравствуйте, вот прошло почти пол года, как я опубликовал на хабрахабре свой небольшой сервис заметок/советов программисту. К моему большому удивлению, откликнулось очень много людей, которым понравилась идея.



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

Суть сервиса


Для начала, приведу цитату с сайта:
В базе хранится список советов с прикрепленными тэгами. Вы можете задать фильтр интересующих тем. Сервис не является online-учебником/сборником статей/каталогизированным FAQs. Основная идея: случайные советы, заметки, задания «с подвохом» на собеседованиях.

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

Заметки для построения эффективных Django-ORM запросов в нагруженных проектах

Reading time11 min
Views61K
Написано, т.к. возник очередной холивар в комментариях на тему SQL vs ORM в High-Load Project (HL)

Преамбула


В заметке Вы сможете найти, местами, банальные вещи. Большая часть из них доступна в документации, но человек современный часто любит хватать все поверхностно. Да и у многих просто не было возможности опробовать себя в HL проектах.
Читая статью, помните:
  • Никогда нельзя реализовать HL-проект на основе только одной манипуляции с ORM
  • Никогда не складывайте сложные вещи на плечи БД. Она нужна Вам чтобы хранить инфу, а не считать факториалы!
  • Если вы не можете реализовать интересующую Вас идею простыми средствами ORM — не используйте ORM для прямого решения задачи. И тем более не лезте в более низкий уровень, костыли сломаете. Найдите более элегантное решение.
  • Извините за издевательски-юмористический тон статьи. По другому скучно :)
  • Вся информация взята по мотивам Django версии 1.3.4
  • Будьте проще!

И-и-и да, в статье будут показаны ошибки понимания ORM, с которыми я столкнулся за три с лишним года работы с Django.
Читать дальше →

Обзор ECMAScript 6, следующей версии JavaScript

Reading time6 min
Views99K
Для начала, ликбез и несколько фактов:
  • ECMAScript — это официальный стандарт языка JavaScript (Слово JavaScript не могло быть использовано, потому что слово Java являлось торговой маркой компании Sun) Т.е. JavaScript — это имплементация стандарта ECMAScript.
  • TC39 — комитет, развивающий стандарт ECMAScript и принимающий решения по включению фич в него.
  • ECMAScript стандартов много. Самый популярный из них — ECMA-262.
  • ECMAScript 5 — последняя редакция стандарта ECMA-262 (утвержден в 2009 году).
  • Предыдущие версии стандарта ECMA-262 были (совсем старые не упоминаю):
    • ECMAScript 3 — поддерживается большинством браузеров (утвержден в 1999 году).
    • ECMAScript 4 — не принят в виду слишком радикальных изменений в стандарте. Позднее в июле 2008 году в урезанном варианте (но все же намного богаче, чем ECMAScript 3) вылился в новый проект ECMAScript Harmony.

  • ECMAScript 6 (кодовое имя ECMAScript.next) должен утвердиться до конца 2013 года.


Итак, что же нас ждет в новой версии JavaScript?

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

Pixi.js — 2D движок с прозрачной поддержкой WebGL

Reading time1 min
Views81K
Pixi.js позволяет использовать мощь WebGL для рендеринга 2D-сцен, совершенно не вникая в подробности реализации, более того, он умеет самостоятельно определять наличие поддержки WebGL и переключаться между способами рендеринга. В отсутствие WebGL рендеринг осуществляется средствами canvas. Кроме того в Pixi.js реализован граф сцены, поддержка текстур и спрайтов, чуть больше недели назад в нём появилась поддержка интерактивности — на спрайты можно повесить обработчики событий мыши и тачскрина.
Читать дальше →

9-килобайтный скрипт превратит любой браузер с WebRTC в узел распределённой CDN

Reading time3 min
Views26K
Чуть больше двух лет назад я написал статью-исследование "Темная материя интернета". Основная идея той статьи — использовать ресурсы миллионов обычных пользователей интернета для того, чтобы снять большую часть нагрузки с веб-сайтов, подобно тому, как в сетях BitTorrent участники помогают друг другу качать файлы. Это могло бы многократно снизить стоимость хостинга, уменьшить зависимость сайтов от рекламы и платных сервисов или пожертвований. Тогда любые попытки реализовать подобную «децентрализованную CDN» наталкивались на необходимость устанавливать специальный софт в виде отдельного приложения или расширения браузера.

Но пару месяцев назад состоялся первый видеозвонок между браузерами Firefox и Chrome, ставший возможный благодаря технологии WebRTC. Вместе эти браузеры имеют долю рынка почти в 60%, а значит всё необходимое, чтобы стать узлом P2P-сети, у большинства пользователей интернета есть уже сейчас или появится в ближайшие недели (когда полноценная поддержка WebRTC войдёт в стабильную сборку Firefox).

Стартап PeerCDN собирается использовать новые возможности для создания распределённой CDN для статического контента, воспользоваться которой можно будет, просто включив в код страницы небольшой (9 кб) скрипт. Никаких плагинов, дополнений и дополнительных телодвижений не нужно, всё происходит прозрачно для клиента. Создатели обещают запустить сервис в течение ближайших недель, а пока можно записаться в список рассылки.



Как это работает?

Information

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