Search
Write a publication
Pull to refresh
3
0
Александр Тимофеев @ATimofeev

User

Send message

Признаки плохого программиста

Reading time18 min
Views69K

Неспособность рассуждать о коде


«Рассуждать о коде» значит понимать порядок исполнения инструкций («исполнять программу в голове»), зная, каково предназначение кода.

Симптомы

  • Наличие «волшебного», «вуду» кода или кода, который не имеет никакого отношения к целям программы, но всё равно тщательно поддерживается (например, инициализация переменных, которые никогда не используются, вызов функций, не имеющих отношения к цели, создание выходных данных, которые не используются, и т.д.).
  • Многократные вызовы идемпотентных функций (например, вызов save() по нескольку раз, «чтобы уж точно»).
  • Исправление ошибок написанием избыточного кода, который замещает данные, полученные при исполнении неисправного кода.
  • «Йо-йо код», который конвертирует значения в различные представления, а потом конвертирует их обратно ровно в то же представление, с которого начинали (например, преобразование десятичного числа в строку, а потом обратно в десятичное число, или padding строчки с последующим trim'ом).
  • «Бульдозерный код», который создает впечатление рефакторинга посредством разбития кусков кода на процедуры, которые, правда, затем невозможно использовать где-либо еще (высокая когезия).

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

Capybar — некоторое время спустя

Reading time2 min
Views513
image

Когда я первый раз писал про проект "CapyBar" меня переполняли эмоции и радость, в связи с чем статья получилась сумбурной и малопонятной.
Спустя некоторое время осознав, что мог бы написать лучше решил, что переписывать не буду, а лучше дальше продолжить работу над проектом.

Для тех кто читает впервые, а таких большинство, следует сказать, что CapyBar это плагин для браузера, который позволяет пользователям любого сайта общаться между собой и заводить новые знакомства, а функция «share» позволит делиться вашими находками в соц сети!
image

Что из этого вышло — смотрите по скриншотам
image
image
image

А теперь по порядку...

Кастомизация социальных кнопок

Reading time3 min
Views45K
Многие из нас так или иначе сталкивались с проблемой кастомизации кнопок соцсетей, а многие ещё столкнутся. Недавно нам на Sports.ru пришлось решать задачу, как не только настроить внешний вид «лайков», но и разместить на одной странице сразу несколько блоков социальных кнопок, относящихся к разным текстовым блокам.

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

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

Сделано у нас — опыт раскрутки

Reading time5 min
Views2.1K
Сделано у нас
После публикации о моем проекте "Сделано у нас", мне пришло несколько писем с просьбой рассказать о том, как я раскручивал и продвигал проект. Сначала я отписывался общими фразами типа «не виноватая я, он сам пришел», в смысле ресурс раскрутил себя сам, а я усилий к этому не прилагал.

По сути, это правда. Я не заказывал каких-то дорогостоящих пиар акций, у меня не было никакой четкой стратегии продвижения проекта. Но все же, подумав, я решил, что рассказать есть о чем.
Читать дальше →

Бутстреппинг как глупость или трусость?

Reading time3 min
Views1.6K
Недавно я вдруг подумал, а не является ли желание заниматься бутстреппингом отговоркой для тех людей, которые на самом деле не готовы к тому, чтобы как следует заниматься реальным делом? Я сейчас не имею в виду людей, занимающихся построением очередного интернет-магазина или мелкогородского портала. Я имею в виду людей, которые гордо называют то, что они делают, «стартап» и говорят о том, что они завоюют мир.

UPD: Оказывается не все в этом блоге знают значение слово «бутстреппинг». Bootstrapping, бутстрэппинг, бутстреппинг. Есть стартаперы, которые сидят по кухням и потихоньку делают свои проекты, которые говорят, что они все сделают сами, которым не нужны инвестиции или которые считают, что то, что они делают, уже стоит миллионы долларов.

Можно ли на бутстреппинге завоевать мир?
Читать дальше →

DAFGroup, как мы заработали первый миллион

Reading time8 min
Views2.2K
DAFGroup logoМногие школьники осенью пишут сочинение на тему «Как я провёл лето». Вот и я, хоть давно не школьник, решил написать статью из серии «Как это было». Из нее узнаете как мы, организовав вместе с друзьями и родственниками компанию DAFGroup и заработали миллион на продаже своего программного обеспечения.

Случилось так, что одним холодным мартовским утром 2008 года, я совершил свою первую сделку на бирже ММВБ. Она оказалась удачной, и мой счёт увеличился на 20 рублей буквально за 5 минут. Ничего себе, сказал я,
Читать дальше →

Будущее CSS разметки

Reading time8 min
Views14K
Питер Гасстон, автор книги по CSS3, опубликовал статью под названием The future of CSS layouts, перевод которой специально для читателей хабра представлен ниже.

Несмотря на все поразительные возможности CSS, их недостаточно для реализации фундаментальных принципов разметки страницы. Однако, дополнительные возможности для создания более динамических страниц уже начинают появляться.

После нескольких лет обещаний, CSS3 наконец-то преуспел в стилях. Он добавил в наш арсенал целый набор новых инструментов, обеспечив нас закруглёнными углами, градиентами, прозрачностью, преобразованиями элементов, анимацией и многим другим. Что же ещё сможет порадовать наш глаз?

Следующая проблема CSS это разметка. До текущего момента мы делали её, используя плавающие блоки, относительные позиции и трюки с отрицательными отступами, и всё это было сложно реализовать, чтобы результат был похож на стандартную двух- или трехколоночную разметку.

Консорциум W3C и создатели браузеров в курсе этих проблем и работают над рядом решений. Лидером среди них является (как не удивительно) Internet Explorer. Похоже, что IE10 будет предвестником новой эры CSS разметки, которая позволит создавать отличные, динамические и привлекательные сайты, используя недосягаемые ранее возможности.

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

Избегаем распространенных ошибок в HTML5 разметке

Reading time8 min
Views120K
HTML5 Уважаемые хабровчане, представляю вам вольный перевод статьи Avoiding common HTML5 mistakes. Здесь мы рассмотрим частые ошибки в HTML5 разметке с точки зрения семантики, и как их избежать.
Читать дальше →

«Инвестиционный эквалайзер» – новый термин в стартап-лексике

Reading time5 min
Views1.3K
Стартап-движение переживает бум. Вместе с этим финансово-правовые отношения между участниками стартапа (включая руководителя проекта, команду, инвестора, соинвесторов и т.д.) еще не имеют устоявшихся форм, шаблонных практик, «откалиброванных» настроек. Завышенные риски, необоснованно высокие доли, высокая степень неопределенности, — с одной стороны это и есть венчурный бизнес, с другой — он может быть более регулируемым, справедливым, адекватным вкладу сторон в общий успех. Это и явилось предпосылкой для возникновения нового термина — «инвестиционный эквалайзер».


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

Мотивация на здоровье! Или как сохранить здоровье, постоянно работая за компьютером

Reading time7 min
Views4.5K
История одного проекта.

Делая проекты и работая, сидя за компьютером, по 12-15 часов в сутки (часто и дольше), я начал замечать как мои глаза начали слезиться и краснеть, шейные позвонки просто ныли (небольшой стресс и они просто не давали спокойно жить), кисти рук, поясница и ноги немели. Вечером, поужинав, засыпал, но ночью просыпался и опять работать. Вырос живот, обвисли мышцы, стал раздражителен.
Хотя все мы знаем о пользе гимнастики. Читали, сохраняли много упражнений себе в «Избранное» (у самого куча подобного в избранном и на дисках). Может пару раз, потом забывали или лень, или не хватает времени, глядя в зеркало и обещая себе «В понедельник начинаю новую жизнь!». Это не очередная статья, которая рассказывает о том, чем нам грозит сидячий образ жизни и какую пользу приносит гимнастика – вы наверняка знаете об этом предостаточно.

Позвольте рассказать свою историю, от понимания проблемы, до реализации решения в виде сервиса…

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

Правила личной эффективности от ЭД

Reading time21 min
Views66K
Заранее предупреждаю и извиняюсь, но оно того стоит: букаф многа.

Введение

В средней школе я был «круглым» двоечником, которого переводили в следующий класс только под значительным влиянием моего отца, в то время проректора ФПИ, довольно влиятельного (в личном общении) и властного человека.

В конце седьмого класса у меня встал выбор — идти в ПТУ или учиться дальше в школе. Все учителя, настаивали на том, что мне бесполезно учиться не то что в институте, но и в старших классах, в виду моей бездарности. Естественно, это мне не очень понравилось, и я решил стать лучшим в школе.

Попытка понять программу восьмого класса провалилась в виду отсутствия элементарных знаний предыдущих классов (начиная с второго-третьего), что не оставляло передо мной выбора, кроме как начать изучать все предметы по новой, самостоятельно.

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

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

has_many :through => Как быстро обратиться к join-объектам?

Reading time3 min
Views7.3K
Вы знаете, что когда требуется организовать many-to-many отношения между двумя моделями, прогрессивная часть человечества применяет join-таблицы и метод has_many с опцией :through => :join_model_name. Каждая связь между двумя ActiveRecord-объектами представляет собой ActiveRecord-объект.

И это чудесно, ибо в join-таблице можно насоздавать полезных (так называемых «extra») полей с дополнительной информацией о связях между объектами.

Вопрос в том, как красиво достучаться до этих extra атрибутов.

Все скринкасты и книжки, как назло, оперируют простыми примерами. Например, дружат между собой модели Article и Category. Само собой, для join-класса интуитивно напрашивается имя Categorization или ArticleCategorization.

has_many through

Соответственно, если у нас есть два объекта — article и category, и мы хотим найти AR-объект (или объекты), олицетворяющий связь между ними, то авторы книжек с чистым сердцем предлагают делать так:

relations = article.article_categorizations.find_by_category_id(category)


В жизни все сложнее. Модели нередко имеют длинные составные имена, либо между моделями такая связь, что придумывание имени для каждой join-модели превращается в маленькую пытку. Представим, что у нас модели не Article и Category, а UserGroup и Community, или Preorder и CustomerNotification. Как должна называться связующая модель? Возможны варианты.

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

Результаты акции с Групон. Практический опыт

Reading time4 min
Views2.2K
Вот уже несколько месяцев я развиваю LangNote.net — сервис, позволяющий совершенствовать иностранный язык. Суть сервиса крайне простая: пользователи пишут заметку на иностранном языке, преподаватель проверяет ее на предмет ошибок и возвращает исправленную версию со своими комментариями. Правки и комментарии выделены визуально для удобства изучения.

Месяц назад я решил провести акцию с сервисом коллективных покупок, чтобы ускорить продвижение Langnote. После небольшого анализа выбор пал на Групон, и акция состоялась 16 сентября. Уже сейчас результаты показывают, что подобные сервисы можно использовать для весомого ускорения бизнеса на стадии стартапа. Об этом и пойдет речь в статье ниже.
Читать дальше →

Intvideo.tv — придумали, воплотили, сгорели, нашли деньги, переписали, делимся опытом, ищем деньги

Reading time7 min
Views865
image

Здравствуйте, с вами команда Intvideo. Меня зовут Дмитрий, я являюсь PM'ом в этой компании. Мы хотели бы поделиться с Вами нашими успехами и трудностями, которые нам пришлось пройти за 3 года существования проекта. С этой целью я попросил поведать об этом одного из основателей проекта, Черногубова Евгения. Далее рассказ от его лица.

История очень интересная, расскажу все и даже больше, но все по порядку.

О проекте

Идея проекта принадлежит моему приятелю, с которым мы знакомы еще со школьного возраста. Сегодня мы партнеры.

Сервис Интвидео транслирует видео-опросы.
Видео-опрос – это рекламный видеоролик с онлайн-опросом в конце. Он объединил в себе преимущества самого продуктивного вида рекламы — видео-рекламу и анкету интернет-опроса.

Сервис интересен как пользователям, так и рекламодателям.

Для пользователей — не сложная регистрация, после которой можно начать пользоваться сервисом и зарабатывать. При этом, чем детальнее заполнен профиль, тем больше оплачиваемых видео-опросов он будет получать. Время участия оплачивается из расчета $3,60 в час. Кроме этого, дополнительный доход приносит партнерская программа, благодаря которой, пользователь зарабатывает процент от участия в видео-опросах, приглашенных им пользователей. Регистрация в проекте возможна только по коду приглашения, поэтому каждая рекомендация учитывается при начислении комиссионных.
Читать дальше →

Принципы партнёрства в стартапе MyClasses.org — история, манящая в Доминикану

Reading time9 min
Views1.6K
В этом посте я расскажу реальную историю о том как четыре человека (экспат-проказник, москвич, лимитчик да косолапый мишка) договорились о принципах партнёрства, закрепили эти договорённости простым письмом по электронной почте и, доверившись друг другу, за 9 месяцев географически-распределённой работы приблизились к своей мечте о независимости. Лично у меня эта мечта зародилась давно, но окончательно сформулировалась после прочтения «Четырёхчасовой рабочей недели» Тима Ферриса: идея о том, что надо создавать продукт, а не просто работать за зарплату, стала просто навязчивой.

Немного предыстории. Три года назад я поставил крест на своём предыдущем двухгодичном самоокупаемом, но слабо растущем проекте и начал регистрировать домены для нового: MyClasses.org — сеть локальных справочников (уровня города) о всевозможных курсах и уроках. На сайтах организуется процесс общения между школами, учителями и учениками. Этакая смесь Yellow pages + CMS + CRM + Feedback/Review + Social network. Локально-глобального масштаба.

Logo of MyClasses.org
Регистрировал домены я много, увлечённо и постоянно. Домейнерство, не в прямом смысле этого слова, — моя слабость — появилась идея и бац! — надо срочно зарегистрировать домен! Потом ажиотаж проходит, и появляется понимание что ни сил, ни времени, ни достаточных перспектив нет. Но домены остаются. Иногда их удавалось продать (3 раза по запросу, сам никогда не выставляю на продажу, лучшая сделка — $2.200, всего на $3.000 — не разбогатеешь). Но в этот раз всё было не так.

Очередная авантюра подкупала целым набором благоприятных факторов:
Читать дальше →

Английский для айтишника? Легко!

Reading time2 min
Views183K
Эта тема не относится к IT напрямую, но все знают, что без нее никуда. К сожалению, далеко не у всех есть возможность изучать английский с преподавателями. Ну что ж, попробуем заняться этим дома и с максимальной отдачей!
Читать дальше →

Радио Pianorama. В небеса за неделю

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

Так вот, неделю назад, во время очередного отключения света в нашем провинциальном городе, мне пришла мысль создать интернет-радио, в эфире которого играет только фортепианная музыка.

image

Откладывать задумку в долгий ящик не стал.
Читать дальше →

Пример ≈двукратного ускорения загрузки шрифта для заголовков из Google Web Fonts, осуществляемого выборкою оптимальной версии его

Reading time6 min
Views17K
[иллюстрация-скриншот]Если на сайт вики-энциклопедии «Циклопедия» забредёт пользователь компьютера, оснащённого современным программным обеспечением Корпорации Microsoft, то тогда взгляд его прежде всего окажется привлечён шрифтом заголовков первого и второго уровня («Циклопедия», «Культура», «Общество», «Наука и техника», «Природа и человек», «Быт»): такой шрифт нынче не часто встречается во Всемирной Паутине (это вы можете без труда смекнуть и самостоятельно, когда сравните фрагмент скриншота, мною справа для того приложенный, с собственным вашим опытом).

Но этот шрифт, господа, да станет всем нам примером того, как не следует оформлять наши заголовки. А угадаете ли, почему это так? Да потому, что шрифт этот — Candara (и это нетрудно увидать воочию: достаточно прибегнуть к расширению «Context Font» или вглядеться в нынешний вики-код заглавной страницы Циклопедии и её подшаблона «Раздел»). Некоторые из нас ужé знают или хотя бы догадываются (а другим достаточно взглянуть в Википедию, чтобы узнать) о том, что Candara — это шрифт эксклюзивный, который встречается только в сравнительно недавних продуктах Корпорации Microsoft, таких как последние Windows (Vista, Windows 7) и Office 2007, да ещё раздаётся в составе Microsoft Powerpoint Viewer 2007 и Microsoft Office Compatibility Pack (в том числе для более ранних систем — для Windows XP, для Windows 2000). Если же на такой сайт забредёт читатель с Линуксом, или Маком, или Андроидом, или Айфоном, или Айпадом — то тогда, сами понимаете, «Кандару» взять ему будет неоткуда — и вид заголовка поневоле станет далеко отличаться от желаемого.

А ведь можно обеспечить единообразное отображение заголовка во всех системах и браузерах; для этого достаточно попросту отгрузить всем читателям один и тот же шрифт. Шрифт можно раздавать с собственного же сайта (добавив продуманные правила @font-face в свой CSS), а можно воспользоваться услугами внешнего хостинга шрифтов — например, услугами коллекции свободных и бесплатных шрифтов «Google Web Fonts», чей красивый новый интерфейс обсуждали на Хабрахабре в конце июня. О ней-то и поговорим под хабракатом.

Что следует сказать по поводу употребления Google Web Fonts при оформлении заголовков?

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

Выбираем дисковую систему для базы MySQL

Reading time3 min
Views32K
Для многих крупных высоконагруженных веб-проектов зачастую «узким» местом в производительности становится скорость работы базы данных. Можно добавлять память, тюнить те или иные параметры… Но в итоге чаще всего всё упирается в диск.



Мы и сами на собственных проектах сталкивались с подобными «бутылочными горлышками» (bottleneck), периодически наблюдая близкую к 100% утилизацию диска в iostat.

О нашем опыте решения этого вопроса и хотим рассказать вам в этом посте…
Читать дальше →

DealHunter – как мы делали foursquare для любителей скидок и распродаж

Reading time5 min
Views946
Привет всем! Хочу рассказать об опыте создания и запуска мобильного геосоциального сервиса DealHunter, в котором мы постарались совместить несколько наиболее актуальных и интересных трендов и механик.

От трендов к идее


Идея сервиса, где пользователи могли бы сами добавлять скидки и распродажи, родилась больше года назад, когда в интернете и мобильных приложениях стремительно набирало силу два тренда: daily deals (порожденный Groupon и подхваченный сотнями аналогичных сервисов) и геосоциальные приложения с игровой механикой (одними из первых были Foursquare и Gowalla, потом Foodspotting и чекинизация всего и вся – от факт просмотра телепередачи до количества выпитых кружек пива). Причина, по которой Foursquare за последние 2 года набрал больше 10 миллионов пользователей и собрал с помощью них беспрецедентную базу данных о различных местах и заведениях по всему миру – это влияние еще одного тренда – применение игровых механик к неигровым сервисам (gamification). С одной стороны многие сделали это ради баллов и бейджей – то есть статуса в игровой вселенной Foursquare. Но многих также мотивировал и простой альтруизм, желание предостеречь других пользователей от посещения «плохих» мест и порекомендовать хорошие.

image

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

Information

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