Pull to refresh
0
0
Markus Tisse @Tisse

User

Send message

Из мухи в слона

Reading time1 min
Views3.8K
Казалось бы, картинка как картинка — каждый день в интернете можно встретить сотни подобных… и, наверное, мало кто задумывается над тем, а как же появляются на свет финальный результат.

image
Читать дальше →
Total votes 212: ↑170 and ↓42+128
Comments77

JQuery FormNavigate — плагин для удобной работы с onbeforeunload

Reading time2 min
Views4.4K
Все, кто пользуется веб-интерфейсом gmail, наверняка замечали, как гугл заботится о нас и не даёт закрыть страницу, если мы начали составлять письмо и не сохранили его в черновики. И понадобилось мне для своего проекта сделать нечто похожее.

Сперва сделал это используя window.onbeforeunload, но злая опера не поддерживает это событие.
Призадумался, попутно нашёл плагин для jquery под названием FormNavigate.
Читать дальше →
Total votes 47: ↑39 and ↓8+31
Comments19

Если пришла проверка

Reading time5 min
Views45K
Первоначально необходимо выяснить цель визита и полномочия сотрудников на совершение определённых действий. Данные полномочия могут быть выражены в различных документах (постановлениях начальника органа дознания, суда, следователя, дознавателя) в зависимости от того, каким законом регламентированы их действия (доследственная проверка в рамках ст. 144, 145 Уголовно-процессуального кодекса РФ или деятельность в рамках Законов «О милиции», «Об ОРД»).

Читать дальше →
Total votes 168: ↑165 and ↓3+162
Comments176

Сброс стилей с помощью CSS Reset

Reading time6 min
Views347K
Данная статья — первая из цикла на тему укрощения CSS. Сегодня мы рассмотрим технологию CSS Reset.

Зачем это нужно?


Каждый браузер устанавливает свои значения стилей по умолчанию для различных HTML-элементов. С помощью CSS Reset мы можем нивелировать эту разницу для обеспечения кроссбраузерности стилей.

Например, вы используете элемент a в вашем документе. Большинство браузеров, как Internet Explorer и Firefox, добавляют ссылке синий цвет и подчёркивание. Однако представьте, что через пять лет кто-то решил создать новый браузер (назовём его UltraBrowser). Разработчикам браузера не нравился синий цвет и раздражало подчёркивание, поэтому они решили выделять ссылки красным цветом и полужирным шрифтом. Именно исходя из этого, если вы установите базовое значение стилей для элемента a, то он гарантированно будет таким, каким вы хотите его видеть, а не как предпочитают его отображать разработчики UltraBrowser.

Читать дальше →
Total votes 100: ↑85 and ↓15+70
Comments102

Как FriendFeed использует MySQL для хранения данных без схемы

Reading time7 min
Views3.2K

Условия


Мы используем MySQL для хранения любых данных FriendFeed. Наша база данных растёт вместе с числом пользователей. Сейчас у нас более 250 миллионов записей, это записи пользователей (post'ы), комментарии, оценки («likes»)

По мере того как росла база данных, мы время от времени имели дело с проблемами масштабируемости. Мы решали проблемы стандартными путями: slave-сервера, используемые только для чтения, memcache для увеличения пропускной способности чтения и секционирование для увеличения пропускной способности записи. Однако, по мере роста, использованные методы масштабируемости привели к затруднению добавлению новой функциональности.

В частности, изменение схемы базы данных или добавление индексов к существующим 10-20 миллионов записей приводили к полной блокировке сервера на несколько часов. Удаление старых индексов требовало времени, а не удаление ударяло по производительности, так как база данных продолжала использовать их на каждом INSERT. Существуют сложные процедуры с помощью которых можно обойти эти проблемы (например создание нового индекса на slave-сервере, и последующий обмен местами master'a и slave), однако эти процедуры настолько тяжелые и опасные, что они окончательно лишили нас желания добавлять что-то новое, требующее изменение схемы или индекса. А так как наши базы сильно распределены, реляционные вещи MySQL как например JOIN никогда не работали для нас. Тогда мы решили поискать решение проблем, лежащее вне реляционных баз данных.

Существует множество проектов, призванных решить проблему хранения данных с гибкой схемой и построением индексов на лету (например CouchDB). Однако, по-видимому ни один из них не используется крупными сайтами. В тестах о которых мы читали и прогоняли сами, ни один из проектов не показал себя стабильным, достаточно зрелым для наших целей (см. this somewhat outdated article on CouchDB, например). А все это время MySQL работал. Он не портил данные. Репликация работала. Мы уже в достаточной мере понимали все его узкие места. Нам нравился MySQL именно как хранилище, вне реляционных шаблонов.

Все взвесив, мы решили создать систему хранения данных без схемы поверх MySQL, вместо использования полностью нового решения. В этой статье я попытаюсь описать основные детали системы. Так же нам любопытно как другие сайты решили эти проблемы. Ну и мы думаем, что наша работа будет полезна другим разработчикам.
Читать дальше →
Total votes 116: ↑110 and ↓6+104
Comments60

Как создать приложение на iPhone не имея Mac OS Х и SDK?

Reading time2 min
Views48K


Я всегда хотел попробовать себя в таком деле, как написание приложений для iPhone. Пусть для начала оно было простым, как «Hello world!», но зато написанное своими руками. Тем более платформа iPhone OS стала очень популярна, и большинство разработчиков отдают предпочтение именно ей. Но как говорится — мои желания не совпадают с моими возможностями. SDK доступен только для маков, а возможности купить мак у меня нет — дорогой. Но в интернете, случайно, узнал об одном сервисе о котором я расскажу далее.

Читать дальше
Total votes 76: ↑53 and ↓23+30
Comments41

Авторизация по протоколу OAuth на примере Desktop Twitter-клиента

Reading time6 min
Views26K
Потребовалось мне тут написать некий кроссплатформенный Twitter-клиент с закрытым исходным кодом, не спрашивайте зачем мне это надо, работа у меня такая, деньги я за это получаю. Что логично, языком разработки был выбран С++ с использованием Qt.
Сам API Twitter'a прост как кирзовый сапог. Но! Есть такая важная штука как авторизация, и тут есть два пути, старый — аутентификация посредством HTTP Headers и новый — использование протокола OAuth. Старый метод прост, также как и само API, но, к сожалению, он не безопасен, и самое главное команда Twitter'a предупреждает, что откажется от него в конце июня сего года. Поэтому остается второй метод OAuth. Надо сказать, что данный протокол используется не только в Twitter, но поскольку я писал Twitter-клиент, и рассматривать мы будем на примере Twitter'a.
и как же это сделать?
Total votes 43: ↑36 and ↓7+29
Comments33

Использование паттерна Builder в случае, когда мы сталкиваемся с конструктором с многими параметрами

Reading time7 min
Views39K
Статья представляет вольный перевод главы из книги Effective Java, Second Edition by Joshua Bloch

В статье рассматриваются 3 альтернативных подхода к упрощению использования класса, с конструктором с многими параметрами.

Читать далее
Total votes 47: ↑42 and ↓5+37
Comments52

Программа из одного exe

Reading time4 min
Views43K
Как правило, при написании .NET программ используются не только классы из .NET BCL, но и сторонние библиотеки. Во время выполнения программы все используемые библиотеки должны быть найдены. Для этого зависимые dll кладут в одну папку с exe файлом.

Однако существуют программы, использующие сторонние библиотеки, но при этом состоящие из одного единственного файла. Все утилиты от SysInternals, а также любимый мной LINQPad представляют из себя один файл в котором содержится все, что требуется для работы. Пользоваться такими утилитами одно удовольствие — они сразу готовы к использованию, их удобно передавать и хранить.

В статье рассказывается, как создавать такие автономные программы из одного файла. Разобран пример как со сжатием зашить библиотеку AutoMapper в программу и как ее потом достать и использовать.

Программа из одного EXE
Total votes 90: ↑75 and ↓15+60
Comments75

Работа с ICQ в Java

Reading time8 min
Views7.8K

Предыстория


Как-то раз мы решили создать свой собственный микроблоггинг с блекджеком и шлюхами c шахматами и поэтессами. Сначала сделали сайт, но быстро стало понятно, что для реализации идеи его недостаточно. Необходимо было работать с сообщениями через Jabber и ICQ.
Начали с простого — с джаббера. Никаких проблем тут не возникло — мы писали на Java, поэтому прикрутили Smack API и все заработало. Но, как это не печально, но самым популярным IM протоколом все еще является ICQ…

Задача


Итак, задача: залогиниться в ICQ, принимать и отправлять сообщения, понимать X-статусы, работать с кириллицей.

Рассмотрим пути решения.
Читать дальше →
Total votes 47: ↑31 and ↓16+15
Comments16

Мгновенное сообщение из консоли в jabber

Reading time2 min
Views18K
xmpp logoНередко перед системными администраторами встает задача оповещения себя и коллег о каких-либо событиях на сервере, будь то отчет об успешных входах по ssh, резко возросшая нагрузка, падение сервиса, сообщение о переключении на резервное питание или вскипевшем чайнике.
Чаще всего такая задача решается, например, отправкой почтового сообщения. Но нельзя гарантировать, что сообщение, во-первых, прийдет вовремя, а во-вторых, что его сразу прочтут. Тогда, подумает администратор, будем использовать IM. Но как? Держать, например, centerim постоянно открытым в screen? Согласитесь, не самый радужный вариант.
На выручку к нам спешит чип и дейл открытый протокол XMPP. Написано множество расширений к популярным языкам и примеров кода, позволяющих отослать сообщение кому требуется, и отослать его быстро.
Пример такого кода я и приведу.
Читать дальше →
Total votes 73: ↑66 and ↓7+59
Comments31

iPhone разработка: Интегрируем In-App Purchases

Reading time8 min
Views88K
In-App Purchases — это простой и удобный механизм для организации продаж своих приложений или дополнительных фич непосредственно из своего приложения. In-App Purchases легко встраивается и открывает для Вас новый канал продаж. Взаимодействие с App Store осуществляется с помощью StoreKit.framework, который поставляется вместе с SDK, начиная с версии 3.0.
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments22

#1 Организация активных продаж в веб-студии

Reading time10 min
Views66K
Привет, хабр. Я собираюсь опубликовать небольшой цикл материалов, посвященный бизнесу веб-студий (интерактивных агентств) и его развитию. Начну с нескольких материалов о продажах.

В условиях кризиса продажи стали узким местом почти для всех небольших и не очень веб-студий. Я хочу поделиться своими соображениями по организации одной из трех составляющих продаж в компании.

Итак, продажи в веб-студии делятся на три типа:
  • Новые продажи со входящего потока (заказчик обращается с запросом сам). Расширение данного канала – основная задача внешнего маркетинга и PR компании.
  • Повторные продажи по текущим клиентам. Увеличение продаж по данному направлению – одна из важных задач службы клиентского сервиса.
  • Холодные/активные продажи (инициируется контакт с заказчиком, который не проявлял до этого интереса к компании).

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

Сразу оговорюсь – ни про какой спам и прочие массовые безадресные акции речь не пойдет.
Читать дальше →
Total votes 68: ↑61 and ↓7+54
Comments35

Делаем простое веб приложение на Spring Framework MVC

Reading time13 min
Views252K
image
В данной статье я хочу рассказать начинающим Java разработчикам, как написать простое веб приложение, используя популярный фреймворк Spring Framework.

При разрабокте приложения мы будем использовать утилиту Ant для автоматизации действий и изучим, как писать простой тест с помощью библиотеки JUnit. Весь код будем писать в Eclipse IDE.

Статья написана на основе первой части руководства «Introduction to Spring MVC». Вам достаточно иметь лишь общее представление о Spring, чтобы прочитать статью с пользой.

Так что милости просим :)
Читать дальше →
Total votes 56: ↑43 and ↓13+30
Comments81

Dropbox — простейший минихостинг сайтов

Reading time2 min
Views41K
Как показали комментарии к моему хабратопику, где я упомянул о способе хостинга сайта, используя только Dropbox, знают далеко не все. То есть все знают, что это один из самых неплохих продуктов для синхронизации файлов (более того, его используют как механизм синхронизации для приложений), что с помощью Dropbox легко опубликовать свой файл, положив его в папку Dropbox/Public, а потом скопировав на него ссылку (public link).

Однако кроме всего этого, Dropbox может выступать как простейший хостинг для ваших минипроектов.

Рецепт под катом
Total votes 125: ↑109 and ↓16+93
Comments138

«Агония IT проекта» или «Как узнать, что лошадь мертва?»

Reading time3 min
Views2.2K
Студентов MBA на западе учат древней индейской мудрости — если Вы замечаете что лошадь, на которой Вы скачете сидите, мертва, то лучше всего с неё слезть. Применимо к бизнесу и стартапам это означает, что если продукт помер, его часто лучше списать в утиль и идти дальше, чем вкладывать деньги в реанимацию или особенно бездействие. Замечу, что даже сидя на мёртвой лошади менеджмент может быть уверен, что скачет галопом в светлое будущее. Многие будущие CEO эту мудрость на вооружение берут более дословно — мол не зазорно уйти с тонущего корабля одним из первых, существуют и другие выводы, результирующие из недо-, пере- и иначе-понимания этой мудрости.

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

Что мы делаем когда закрадывается смутное предположение, что компания скачет на мёртвой лошади:

[ Индикаторы класса «Возможны ложные срабатывания» ]
— Мы достаём более хлёсткий и мощный кнут для мёртвой лошади (а нередко и на конюхов розг хватает)
— Ждём, ничего не делаем, ведь мы всегда точно так ездили на мёртвых лошадях и раньше проблем не было
— Меняем наездника. Когда мёртвая лошадь не скачет виноват обычно он
— Облагораживаем стойло, достаём конюхам пряников
— Едем за бугор, там с незапамятных времён водились наездники на мёртвых лошадях, перенимаем их опыт
— В добровольно-принудительном порядке предлагаем курсы верховой езды сотрудникам отдела
— Создаём группу и анализируем мёртвую лошадь, время смерти и меру окоченения
— Признаём мёртвую лошадь неверно аттестованной, она живее всех живых

Более веские приметы под катом
Читать дальше →
Total votes 89: ↑60 and ↓29+31
Comments29

Учись говорить

Reading time3 min
Views25K
В предыдущей статье я написал несколько советов, которые как мне кажется, могут помочь правильно задавать вопросы. Советы универсальны и подходят также для отвечающего, и для обучающего.

Однако, есть тонкость: пусть вы сформулировали все в голове очень точно, правильно подобрали слова. Осталось сказать. И вот тут то часто кроется коварный враг — наш, как говорят профессионалы ораторского искусства, речевой аппарат.

Признайтесь себе, только не лукавьте: бывали ли у вас случаи, когда какой-нибудь «лохоманагер» со школьной скамьи пренебрежительно отзывался о вас как о скованном, нелюдимом человеке или «умнике» себе на уме? Да кто он такой? Что он может — только языком молоть… Стоп!

Читать дальше →
Total votes 125: ↑118 and ↓7+111
Comments76

А вы готовы перейти на Google Chrome? — 30 незаменимых расширений для Хрома

Reading time7 min
Views25K
Chrome
На протяжении уже 5-6 лет я использую только Firefox и никогда не думал, что захочу выбрать что-то другое. Firefox — отличный браузер, а делают его таковым все те тысячи расширений, которые каждый может скачать бесплатно. Можно найти расширение для чего угодно. Есть лишь один существенный недостаток — Firefox значительно медленнее, чем Chrome и сжирает больше ресурсов компьютера, чем остальные браузеры.

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

В этой статье я попытаюсь ответить на вопрос — могут ли дизайнеры, веб-разработчики, SMO-шники, SEO-оптимизаторы безболезненно перейти на Chrome. Есть ли расширения, которые могут послужить равноценной заменой на Хроме таким вещам как: Firebug, Webdeveloper, Color Picker, SEO для Firefox, Alexa Ranks, средства для отладки?
А далее 30 полезных расширений
Total votes 262: ↑212 and ↓50+162
Comments321

Опыты интеграции: iPhone

Reading time3 min
Views6.4K
В Evernote распространена идея, что наши главные конкуренты — это желтые стикеры на мониторах, салфетки в кафе и послания самому себе по электронной почте. И это, в общем-то, правда. Evernote — расширение человеческой памяти, и прямых конкурентов у сервиса нет. Зато есть целый класс приложений и сервисов, дублирующих отдельные функции (например, сервисы сбора веб-закладок, агрегаторы данных или to-do листы).

Ну а поскольку хочется сделать Evernote максимально универсальным в использовании, мы с удовольствием и без опаски помогаем независимым разработчикам интегрировать свои продукты с сервисом. Об API мы уже писали, а сегодня хотим рассказать о довольно разнообразных программах для iPhone/iPod Touch, которые уже используют функции сервиса Evernote.

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

1) AP News (бесплатное) — официальное новостное приложение Association Press, в котором предлагается сохранять статьи напрямую в Evernote. Кстати, если наше приложение не установлено у пользователя, AP News предложит его инсталлировать.
2) Paint for Evernote ($2,99) — многим пользователям гораздо быстрее написать/нарисовать короткую заметку от руки, чем вводить ее с экранной клавиатуры, и для них была разработана специальная утилита, кстати говоря, целиком и полностью «заточена» конкретно под Evernote.

3) PixelPipe (бесплатно) — программа для загрузки фотографий с iPhone на Evernote и многие другие (в основном, социальные) сервисы — более сотни ресурсов.

4) reQall (бесплатно) — поддерживает распознавание голоса при создании новых задач и умеет искать в Evernote записи, связанные с задачей по смыслу.
Читать дальше →
Total votes 23: ↑15 and ↓8+7
Comments28

ЧТО смотреть, ГДЕ скачать, КОГДА выйдет DVDRip?

Reading time3 min
Views4.7K
Привет,
В отличие от других статей в блоге «Я пиарюсь», чтобы узнать, о каком сайте эта, придётся зайти под хабракат. Можно этого не делать и не забивать свободное место в мозгу ещё одним названием, но тогда ты не узнаешь, как, например, найти в рунете лучшие фантастические комедии за последние два года, узнать, когда появится HD-рип Аватара или гд
...часть текста отсутствует...
Total votes 290: ↑261 and ↓29+232
Comments236

Information

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