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

      image


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

      Многие скажут: а зачем мне знать, как писать не тестируемый код, плохому хочешь меня научить? Отвечаю: если знать типичные паттерны не тестируемого кода, то, если они есть, можно легко увидеть их в своем проекте. А, как известно, признание проблемы — уже половина пути к лечению. Также в статье дается ответ, как собственно осуществляется такое лечение. Прошу под кат.
      Читать дальше →
    • 15 тривиальных фактов о правильной работе с протоколом HTTP

        Внимание! Реклама! Пост оплачен Капитаном Очевидность!

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



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

        Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
        Читать дальше →
      • Не Таиландом единым или Как фрилансеру за три часа поменять место обитания без проблем с визами

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


          Маршруты кочевников за полторы тысячи лет не поменялись. Но нравы стали помягче
          Читать дальше →
        • Пишем клиент для любимого сайта на phoneGap

          • Tutorial
          Бывает что есть сайт, но пользоваться им с мобильного телефона не очень удобно и было бы замечательно иметь отдельное приложение для него. Любители веб разработки легко смогут это сделать использую phoneGap. Под катом речь пойдет про сервис отслеживания почтовых отправлений, которым я часто пользуюсь и написанный для него демонстрационный клиент с базовым функционалом: авторизация, получение списка треков и описания к ним и возможность добавить новый трек. Я не связывался с разработчиком по этому поводу и очень надеюсь что он на меня не обидится за наглость, за копание в JavaScript коде и за то что в приложении не будет показана реклама. Так же прошу простить за костыльность и велосипедность кода, воспринимайте его как пример.
          Читать дальше →
        • Адаптивные письма? Пожалуйста!

            Доброго дня.

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

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



            Футер нас не особо интересует, ибо там все ок.
            Но на экране телефона все не так радужно.
          • Используем Google Voice Search в своем приложении .NET



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

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

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

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

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

              Большая часть распространенных форматов изображений, используемых в сети, были созданы более 10 лет назад и основаны на технологиях того времени. Инженеры из Google решили проверить: нет ли способа увеличить степень сжатия алгоритмов сжатия с потерями (как JPEG), чтобы позволить изображениям загружаться быстрее, при этом полностью сохраняя их разрешение и визуальное качество. В результате работы на этим проектом мы выпускаем новый формат изображений, WebP, в предварительной версии для разработчиков. Этот формат обещает существенно уменьшить бинарный размер фотографий в сети, позволяя сайтам загружаться быстрее, чем раньше.
              Читать дальше →
            • Опыт составления резюме

                Проблема


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

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

                Читать дальше →
              • HTML5 и события сервера (обновлено)

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

                  Мы привыкли что HTTP ограничен моделью запрос-ответ, что значит: клиент посылает запрос HTTP и ожидает на него HTTP-ответ. По сути, сервер не может сообщить что-либо клиенту до тех пор пока клиент его его «не попросит». Даже для такой тривиальной вещи как онлайн статус пользователя, нам надо прибегать к различным уловкам. Ну вы знаете – неугомонная изобретательность энтузиастов породила множество таких решений, на что есть собирательное имя Comet. Впрочем, цитируя экспертов: «Comet есть не что иное как гигантский хак». Похоже, HTML 5 призван обогатить нас нативными возможностями, на смену ныне используемому Comet. В случе SSE, HTML5 предоставляет API для открытия специального HTTP соединения для принятия уведомлений со стороны сервера. Взгляните, на то какой простой интерфейс
                  Читать дальше →
                • Учимся жить без копирайта

                    Использование торрентов стало повсеместным. Пираты создали вокруг себя вполне устойчивую бизнес-модель, которая пока и не думает себя изживать. Конечно, правообладатели активно пытаются с этим бороться, но всеми этими судебными исками и штрафованием пользователей они вряд ли завоюют народную любовь, а ведь лояльность потребителей — одна из важнейших составляющих коммерческого успеха интеллектуальных творений.
                    Важно понимать одну простую вещь — на данный момент не существует стопроцентно надежных и гарантирующих успех способов защитить авторское право и препятствовать свободному распространению продукции. Как ни пугай народ, как ни договаривайся с провайдерами, какие только DRM не ставь — все равно даже неискушенный пользователь интернета сможет без труда найти в сети «защищенный» продукт.
                    image
                    Возможно, для правообладателей лучшим решением в этой непростой ситуации будет не поиск новых технических и юридических методов защиты своего драгоценного творчества, а сделать так, чтобы свободное распространение, из-за которого они сейчас теряют деньги, наоборот, создавало возможность зарабатывания денег. Другими словами, вспоминая знаменитое изречение Линкольна, лучший способ победить врага — это обратить его в друга.
                    Итак, в этом после я хотел перечислить, говоря формальным языком, все возможные альтернативные механизмы компенсации затрат на создание интеллектуальных продуктов, которые мне известны. В данном блоге уважаемые хабраюзеры множество раз обсуждали эту тему, но никто пока не брал на себя труд обобщить все доводы и факты. Я попробую взяться за это.
                    Читать дальше →
                  • Как я покупал iPod touch на ebay, и как мне пришло не совсем то…

                      Привет, image
                      Я хочу рассказать интересную историю, как я покупал на Ebay плеер Apple iPod touch 32Gb. О том, как я использовал «снайпер», пользовался посредником и о том какие проблемы возникли. Я уже больше полугода делаю покупки из-за рубежа и особых проблем по поиску того что мне надо не возникло.
                      image
                      Читать дальше →
                    • Регистрируем программу, получаем свидетельство

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

                        Зарегистрировали достаточно быстро: со дня подачи заявки, до подготовки свидетельства прошло 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) Платежный документ об уплате госпошлины
                        Формат документов вам укажут в ответе на запрос по электронной почте.
                      • Как подобрать цвет для оформления своей работы

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

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

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



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

                          Читать дальше →
                        • 1 апреля

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

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

                            image

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

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

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

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

                            Пока забавным розыгрышом (идея и исполнение Vilz) поделился только adm0r
                          • СМС-сервисы кидают…

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

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

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

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

                              У кого какой опыт с sms-платежами?
                            • Почему я против SEO

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

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

                                Гораздо более важно уделять внимание содержанию и удобству работы с сайтом, а также регулярно добавлять новые публикации. Суета вокруг ключевых слов, мета-тегов, обмена ссылками стала вызывать у меня неприятие и здоровую лень в плане применения всего этого.
                                Читать дальше →
                              • Опасный Кружечный Кекс

                                  Почему опасный? Да потому что этот кекс уже в 5 минутах от Вас!

                                  image

                                  Что нужно:


                                  • 1 кружка (безопасная для микроволновой печи)
                                  • 4 Столовые ложки муки
                                  • 4 С.л. сахара
                                  • 2 С.л. какао
                                  • 1 яйцо
                                  • 3 С.л. молока
                                  • 3 С.л. растительного масла
                                  • Щепотка ванили
                                  • 3 С.л. шоколадной крошки, желательно

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

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


                                    Литий-ионные аккумуляторы больше страдают от процесса «старения» (ухудшение характеристик на протяжении времени), чем от циклирования. Это означает, что большинство аккумуляторов не может служить свыше 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 месяца

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