Pull to refresh
28
0

User

Send message

Как писать тестируемый код

Reading time 17 min
Views 87K
image


Если вы программист (или чего хуже архитектор), то можете ли вы ответить на такой простой вопрос: как писать НЕ тестируемый код? Призадумались? Если с трудом можете назвать хотя бы 3 способа добиться не тестируемого кода, то статья для вас.

Многие скажут: а зачем мне знать, как писать не тестируемый код, плохому хочешь меня научить? Отвечаю: если знать типичные паттерны не тестируемого кода, то, если они есть, можно легко увидеть их в своем проекте. А, как известно, признание проблемы — уже половина пути к лечению. Также в статье дается ответ, как собственно осуществляется такое лечение. Прошу под кат.
Читать дальше →
Total votes 72: ↑63 and ↓9 +54
Comments 77

15 тривиальных фактов о правильной работе с протоколом HTTP

Reading time 7 min
Views 231K
Внимание! Реклама! Пост оплачен Капитаном Очевидность!

Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
Читать дальше →
Total votes 191: ↑186 and ↓5 +181
Comments 120

Не Таиландом единым или Как фрилансеру за три часа поменять место обитания без проблем с визами

Reading time 10 min
Views 51K
С падением курса рубля жизнь фрилансера-путешественника сильно осложнилась. Однако если все же заработок позволяет, а европейского гостеприимства, как и солнца, ох как не хватает в России – добро пожаловать в восемь стран, где фрилансер найдет покой и красивую картинку позади монитора без проблем и волнений с оформлением виз.


Маршруты кочевников за полторы тысячи лет не поменялись. Но нравы стали помягче
Читать дальше →
Total votes 69: ↑64 and ↓5 +59
Comments 126

Пишем клиент для любимого сайта на phoneGap

Reading time 7 min
Views 50K
Бывает что есть сайт, но пользоваться им с мобильного телефона не очень удобно и было бы замечательно иметь отдельное приложение для него. Любители веб разработки легко смогут это сделать использую phoneGap. Под катом речь пойдет про сервис отслеживания почтовых отправлений, которым я часто пользуюсь и написанный для него демонстрационный клиент с базовым функционалом: авторизация, получение списка треков и описания к ним и возможность добавить новый трек. Я не связывался с разработчиком по этому поводу и очень надеюсь что он на меня не обидится за наглость, за копание в JavaScript коде и за то что в приложении не будет показана реклама. Так же прошу простить за костыльность и велосипедность кода, воспринимайте его как пример.
Читать дальше →
Total votes 44: ↑35 and ↓9 +26
Comments 18

Адаптивные письма? Пожалуйста!

Reading time 10 min
Views 28K
Доброго дня.

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

Итак, письмо:



Футер нас не особо интересует, ибо там все ок.
Но на экране телефона все не так радужно.
Total votes 43: ↑32 and ↓11 +21
Comments 78

Используем Google Voice Search в своем приложении .NET

Reading time 3 min
Views 130K


Функция распознавания речи с некоторого времени доступна в браузере Google Chrome. Посмотреть как это выглядит можно, например, здесь.

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

Как это часто бывает, все уже сделано за нас в этой статье. Все оказывается очень просто, необходимо сделать POST запрос на адрес www.google.com/speech-api/v1/recognize со звуковыми данными в формате FLAC или Speex. Реализуем демонстрацию распознавания WAVE-файлов с помощью C#.

Читать далее
Total votes 80: ↑72 and ↓8 +64
Comments 25

WebP, новый формат изображений для интернета

Reading time 3 min
Views 25K
В рамках инициативы компании Google, заключающейся в том, чтобы сделать интернет более быстрым, в течении прошедших месяцев мы выпустили целый набор инструментов, призванных помочь владельцам сайтов их ускорить. Мы запустили расширение для Firefox под названием Page Speed, позволяющее изучать производительность веб страниц, а также получать предложения о том, как её увеличить. Мы представили Speed Tracer, расширение для Chrome, позволяющее найти и исправить проблемы с производительностью в веб приложениях. Кроме того, мы выпустили набор инструментов для завершающей стадии разработки (closure tools), призванный помочь создавать сложные веб приложения с польностью оптимизированным javascript-кодом. В то время, как эти инструменты были невероятно успешны, помогая разработчикам оптимизировать их сайты, мы продолжали работу, и нам удалось обнаружить единственный компонент веб страниц, который полностью ответственнен за большинство задержек на страницах: изображения.

Большая часть распространенных форматов изображений, используемых в сети, были созданы более 10 лет назад и основаны на технологиях того времени. Инженеры из Google решили проверить: нет ли способа увеличить степень сжатия алгоритмов сжатия с потерями (как JPEG), чтобы позволить изображениям загружаться быстрее, при этом полностью сохраняя их разрешение и визуальное качество. В результате работы на этим проектом мы выпускаем новый формат изображений, WebP, в предварительной версии для разработчиков. Этот формат обещает существенно уменьшить бинарный размер фотографий в сети, позволяя сайтам загружаться быстрее, чем раньше.
Читать дальше →
Total votes 99: ↑91 and ↓8 +83
Comments 78

Опыт составления резюме

Reading time 5 min
Views 33K

Проблема


Не так давно мне потребовалось обновить своё резюме. Последний раз я это делал несколько лет назад, так что решил написать резюме с нуля.

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

Читать дальше →
Total votes 131: ↑107 and ↓24 +83
Comments 215

HTML5 и события сервера (обновлено)

Reading time 3 min
Views 2.7K
Помимо уже упомянутого мною двунаправленного коммуникационного канала известного как WebSocket, HTML5 включаетв себя также сервер-push технологию Server-Sent Events (SSE). В то время как WebSocket широко обсуждается, доступно множество реализаций серверов WebSocket, технология уже почти в полном объеме доступна в браузере Google Chrome, SSE, по большей части остаются в тени.

Мы привыкли что HTTP ограничен моделью запрос-ответ, что значит: клиент посылает запрос HTTP и ожидает на него HTTP-ответ. По сути, сервер не может сообщить что-либо клиенту до тех пор пока клиент его его «не попросит». Даже для такой тривиальной вещи как онлайн статус пользователя, нам надо прибегать к различным уловкам. Ну вы знаете – неугомонная изобретательность энтузиастов породила множество таких решений, на что есть собирательное имя Comet. Впрочем, цитируя экспертов: «Comet есть не что иное как гигантский хак». Похоже, HTML 5 призван обогатить нас нативными возможностями, на смену ныне используемому Comet. В случе SSE, HTML5 предоставляет API для открытия специального HTTP соединения для принятия уведомлений со стороны сервера. Взгляните, на то какой простой интерфейс
Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Comments 16

Учимся жить без копирайта

Reading time 9 min
Views 3.5K
Использование торрентов стало повсеместным. Пираты создали вокруг себя вполне устойчивую бизнес-модель, которая пока и не думает себя изживать. Конечно, правообладатели активно пытаются с этим бороться, но всеми этими судебными исками и штрафованием пользователей они вряд ли завоюют народную любовь, а ведь лояльность потребителей — одна из важнейших составляющих коммерческого успеха интеллектуальных творений.
Важно понимать одну простую вещь — на данный момент не существует стопроцентно надежных и гарантирующих успех способов защитить авторское право и препятствовать свободному распространению продукции. Как ни пугай народ, как ни договаривайся с провайдерами, какие только DRM не ставь — все равно даже неискушенный пользователь интернета сможет без труда найти в сети «защищенный» продукт.
image
Возможно, для правообладателей лучшим решением в этой непростой ситуации будет не поиск новых технических и юридических методов защиты своего драгоценного творчества, а сделать так, чтобы свободное распространение, из-за которого они сейчас теряют деньги, наоборот, создавало возможность зарабатывания денег. Другими словами, вспоминая знаменитое изречение Линкольна, лучший способ победить врага — это обратить его в друга.
Итак, в этом после я хотел перечислить, говоря формальным языком, все возможные альтернативные механизмы компенсации затрат на создание интеллектуальных продуктов, которые мне известны. В данном блоге уважаемые хабраюзеры множество раз обсуждали эту тему, но никто пока не брал на себя труд обобщить все доводы и факты. Я попробую взяться за это.
Читать дальше →
Total votes 139: ↑98 and ↓41 +57
Comments 410

Как я покупал iPod touch на ebay, и как мне пришло не совсем то…

Reading time 5 min
Views 39K
Привет, image
Я хочу рассказать интересную историю, как я покупал на Ebay плеер Apple iPod touch 32Gb. О том, как я использовал «снайпер», пользовался посредником и о том какие проблемы возникли. Я уже больше полугода делаю покупки из-за рубежа и особых проблем по поиску того что мне надо не возникло.
image
Читать дальше →
Total votes 329: ↑295 and ↓34 +261
Comments 284

Регистрируем программу, получаем свидетельство

Reading time 2 min
Views 3.9K
Забрал из Федерального института промышленной собственности (ФИПС) свидетельство на программу.

Зарегистрировали достаточно быстро: со дня подачи заявки, до подготовки свидетельства прошло 1,5 месяца. Из финансовых затрат – только уплата госпошлины около 1200 руб. Сама заявка состояла из 74 листов фрагмента исходного кода системы и 5 листов других бумаг.

Кратко сам процесс регистрации:
1) Отправил на электронный адрес otd69@rupto.ru соответствующего отдела ФИПСа запрос, о том, что нужны документы по регистрации программы для ЭВМ

Тема письма: Запрос пакета документов на регистрацию ПрЭВМ
Текст письма:
Добрый день.
Прошу выслать пакет документов, который необходимо подготовить для официальной регистрации ПрЭВМ.
1) объект регистрации ПрЭВМ;
2) статус правообладателя юридическое лицо;
3) кол-во авторов 4 человека.
С уважением,
Дмитрий Бороздин


2) Через несколько дней ожидания позвонил им, попросил обратить внимание на мой запрос, так уж работают наши гос.службы.
Зам. зав отделом регистрации ПрЭВМ, БД и ТИМС ФГУ ФИПС Куликовский Вадим Александрович тел. (499) 240-63-54
На следующий день пришло письмо с документами, которые надо было заполнить и инструкцией.
3) Оплатил гос. пошлину в банке.
4) Далее подготовил заявку и отнес её в ФИПС (дни приема: вторник, четверг).
5) Позвонил в ФИПС через 2 месяца после сдачи заявления, долго выяснял нужный номер телефона (+7(499)240-33-42 – телефон экспертной группы отдела).
6) В ФИПСе обязательно нужна была печать – когда приехал туда за свидетельством, пришлось дополнительно прошивать листы с исходным кодом, ставить на них роспись и печать.

При прошивании исходных кодов сломал одно шило, другим чуть не проткнул стол – эксперт сказал «Государство всё простит». Я понял, на что уходят деньги с оплаты госпошлин за регистрацию).

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

Похоже в сравнении с регистрацией товарного знака регистрации программы для ЭВМ намного проще и быстрее.
Если у кого-то есть вопросы по данной теме – обращайтесь, могу дать примеры заявки и детали процесса регистрации.

UPD: добавляю список документов:
1) Заявление
2) Дополнение к заявлению (форма РП/Доп)
3) Распечатка исходного текста программы
4) Реферат
5) Платежный документ об уплате госпошлины
Формат документов вам укажут в ответе на запрос по электронной почте.
Total votes 30: ↑23 and ↓7 +16
Comments 35

Как подобрать цвет для оформления своей работы

Reading time 1 min
Views 3.1K
Эдвард Тафти в Envisioning Information упоминает об одном способе выбора цветовой палитры для оформления. Он говорит, что очень хорошо использовать цвета окружающего нас мира. Человеку должны быть приятны те сочетания цветов, которые окружают его в природной приятной обстановке в солнечный день.

Решив попрактиковаться, я взял несколько своих мыльничных фотографий, потыкал в них пипеткой и покрасил получившимися цветами маленький бессмыссленный шаблон.

Вот погожий зимний пейзаж



Под катом еще фотографии, а если вам интересен Тафти, у меня на сайте есть ссылки на его книги и примеры из них.

Читать дальше →
Total votes 86: ↑81 and ↓5 +76
Comments 43

1 апреля

Reading time 1 min
Views 765
Итак, скоро первое апреля. И как назло, вся фантазия куда-то улетучилась. Все забавные идеи и сайты, найденные за прошедший год и помечавшиеся в голове тэгом «Надо использовать 1 апреля», завалились в самые пыльные уголки памяти, а то и вовсе превратились в утиль-сырье.

Но мне повезло наткнуться на на один сайт, который прекрасно подойдет для розыгрышей, совсем недавно.

image

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

Что интересно — человек, которому звонят видит на определителе не набор цифр, а номер абонента, от которого поступил звонок.

P.S. Ресурс по идее платный, но после регистрации первые пару звонков происходят бесплатно. А зарегистрироваться там — дело не более 15 секунд.

Если у вас есть какие-то интересные розыгрыши и ресурсы, которые можно использовать на первое апреля — поделитесь ими в комментариях. :)

Пока забавным розыгрышом (идея и исполнение Vilz) поделился только adm0r
Total votes 62: ↑58 and ↓4 +54
Comments 57

СМС-сервисы кидают…

Reading time 1 min
Views 859
Как-то не везет мне с СМС сервисами :(
Мало того, что комиссии зверские, так еще и не платят.

Началось все с RocketBill.ru. Несколько месяцев все шло отлично. Хорошие проценты, еженедельные выплаты. А потом все заглохло. Весь декабрь ждал выплат. С клиентов исправно деньги снимались за СМС, я высылал им регистрационные ключи. В статистике сервиса значились выплаты, но на WebMoney я ничего видел. Безуспешно пытался связаться с сервисом, но ни ответа, ни привета… Никаких новостей про проблемы этого сервиса не видел. Примерно в то же время Russian Billing, вроде, накрылся, но они не связаны.

Деньги потерял, пошел дальше. Попробовал i-Free. Судя по датам новостей на сайте, сервис исправно работал. Настроил проект. Все ок, СМС идут, деньги с абонентов снимают. Только спустя ни месяц, ни два я так ничего от них не получил. Поддержка не отвечает, второй проект находится на стадии модерации с января.
UPD: 25 марта получил платеж за январь от i-Free. Уже лучше =)

Мой сервис заключается в продаже ключей на мой софт. Все прилично, ни единой жалобы.
Вот такой вот я неудачнег. Сейчас попробую настроить ROBOXchange… Посмотрим.

У кого какой опыт с sms-платежами?
Total votes 44: ↑39 and ↓5 +34
Comments 45

Почему я против SEO

Reading time 1 min
Views 1.4K
SEOЭх, рискую я навлечь гнев специалистов SEO на свою карму голову. Ну да ладно — заодно оценим хабранастроение по данному вопросу.

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

Гораздо более важно уделять внимание содержанию и удобству работы с сайтом, а также регулярно добавлять новые публикации. Суета вокруг ключевых слов, мета-тегов, обмена ссылками стала вызывать у меня неприятие и здоровую лень в плане применения всего этого.
Читать дальше →
Total votes 201: ↑171 and ↓30 +141
Comments 145

Как продлить жизнь (ресурс) литий-ионной аккумуляторной батареи

Reading time 4 min
Views 109K

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


Литий-ионные аккумуляторы больше страдают от процесса «старения» (ухудшение характеристик на протяжении времени), чем от циклирования. Это означает, что большинство аккумуляторов не может служить свыше 5 лет при обычных условиях эксплуатации (оптимистичный прогноз). Мораль такова — если покупаете литий-ионный аккумулятор, внимательно относитесь к дате изготовления — при полугодовой давности вы потеряете 10% от заявленого ресурса.


Старение батарей ускоряется при работе или хранении в жарких условиях – смотри таблицу для литий-кобальтовых аккумуляторов (для литий-марганцевых и литий-железных батарей результаты немного лучше)



Деградация характеристик литий-кобальтовых аккумуляторов всвязи с температурой хранения
Температура, °C 40% уровень заряда (рекомендуемый уровень заряда) 100% уровень заряда (поддерживается пользователями при работе)
0°C
98% через 1 год
94% через 1 год
25°C
96% через 1 год
80% через 1 год
40°C
85% через 1 год
65% через 1 год
60°C
75% через 1 год
60% через 3 месяца

Читать дальше →
Total votes 58: ↑55 and ↓3 +52
Comments 79

Цветовая идентификация

Reading time 1 min
Views 725
function get_username_html_color($username )
{
   return '#' . substr( md5($username ), 0, 6 );
}

Я, например, вот такой subz. Первые попавшиеся под руку %username%: rost, anvar, navosha.
Пытливым умам посчитать хватит ли краски для всех хабраюзеров.

Спасибо Dreadatour за реализацию dreadatour.ru/username
Спасибо salvator за реализацию ssalvator.googlepages.com/colorizer.html
Читать дальше →
Total votes 80: ↑71 and ↓9 +62
Comments 116

Information

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