Сообщения

Сообщения за 2011

Заметка о PowerMock (+Mockito)

Статья SuppressUnwantedBehavior покрывает большинство основных вопросов (также советую статью про замену методов класса). Несколько моментов, которые я хотел бы подчеркнуть: PrepareForTest В эту аннотацию нужно вписать все классы, в которых используется PowerMock. @PrepareForTest(MyClass.class) SuppressStaticInitializationFor Эта аннотация поможет, когда нужно создать класс без статической инициализации. @SuppressStaticInitializationFor("path.to.class.ClassWithStaticParameter") class ClassWithStaticParameter() { private static final Log log = LogFactory.getLog(ClassWithStaticParameter.class); } Замена статичных методов replace(method(OldClass.class, "callOldMethod")).with(method(NewClass.class, "callNewMethod")); Указание сигнатуры метода Если есть несколько методов с одинаковым названием, то, например для подавления метода, нужно указывать сигнатуру. suppress(method(MyClass.class, "callMethod", String.class /*сигнатура*/)); Moc

Еще одна статья о Latex

Изображение
В этой статья рассказывается о тех командах и фокусах, которые пригодились мне для написания диплома. Поскольку иногда удобнее изучать что-либо на примере, сразу привожу пример моего Ссылка на диплом (но только несущественную по смыслу часть). А так он выглядит после конвертации в pdf. Начнем с самого начала, хотя порядок может быть и другим. Доктор Who, Meglos Установка Скачиваем LaTeX . При установки разрешаем скачивать дополнительные файлы из интернета, т.к. в последующем при подключении разных модулей для форматирования текста, потребуется докачка файлов. Полезные ссылки Ссылка не небольшой справочник . При наборе формул может помочь редактор формул . Создание документа Набирать диплом в стандартной оболочке Miktex не очень удобно, т.к. у него есть маленькие проблемы с русским языком. Вместо этого я набирал диплом в Notepad++, в котором также есть поддержка синтаксиса LaTeX. Теперь определимся с иерархией файлов для документа. Я использовал следующую структуру: main

Упрощение 3D модели

Изображение
Если необходимо провести упрощение 3D модели, в частности уменьшить количество узлов и поверхностей тела, то возможно пригодиться программа MeshLab . В данной программе присутствует множество различных фильтров, однако в них можно и запутаться (как это произошло со мной). Для моей цели необходимо было упростить модель примерно в 15000 узлов до 3000. Затем набор точек преобразовывался с помощью небольшой программы на Python из формата *.wrl в команды понятные ANSYS. К сожалению не все фильтры из MeshLab упрощают модель, и еще меньше фильтров позволяют не поломать топологию (из-за чего ANSYS не может построить объемную модель из поверхностей). Quadric Edge Collapse Decimation - один из фильтров, который позволяет упростить модель без нарушения топологии. Он находиться в Filters \ Remeshing, simplification and reconstruction \ Quadric Edge Collapse Decimation. Настройки фильтра показаны на рисунке ниже Для последовательного применения фильтра необходимо закрыть и снова открыть фил

Шкала оценки

Существует множество шкал оценки чего-либо. Мне кажется, что самая лучшая - это шкала в 7 элементов. Попробую объяснить свою точку зрения. Самая большая из наиболее известных шкал - 100-бальная шкала. Согласитесь, если вас попросят сказать как вы оцениваете свое отношение, например к шоколаду, трудно будет сказать с точность до одного балла свое отношение. Скорее всего, оценка будет производиться по 10-бальной шкале, но с учетом, что 1 балл = 10 баллам. Поскольку мне сложно представить с чем ассоциировать каждый элемент для шкалы-10, то и другим людям это может быть проблематично, поэтому шкалу-10 можно отбросить. С другой стороны самая маленькая шкала "да|нет" часто не позволяет оценить свое отношение, особенно когда вы затрудняетесь ответить. В этом случае будет использоваться шкала "да|нет|не знаю". Еще одним важным моментом для шкал является наличие нейтрального элемента, таким образом шкала должна быть нечетной. Итак сократили количество шкал до 3, 5, 7,

Широкий Blogger

Изображение
Когда пишешь новый пост, по появляется довольно узкое окно ввода. Почему оно не расширяется мне не понятно, а так как я недавно начал писать большой пост - узкое окно просто не приемлемо для меня. В связи с этим я решил написать плагин для FF , что бы окно было шире. Прощу прощения за ошибки в коде/архитектуре плагина, т.к. это мой первый плагин, на данный момент в большей степени пробный экземпляр нежели готовый продукт. Результат же выглядит следующим образом Альбом: 29 июля 2011 г. Изменения размера формы происходит благодаря коду (overlay.js, подробности можно посмотреть в предыдущем посте о том как создавать плагины для FF): var gbepfw = { onLoad: function() { var appcontent = document.getElementById("appcontent"); if (appcontent) appcontent.addEventListener("DOMContentLoaded", gbepfw.onPageLoad, true); }, getFirstDivByClass: function(theClass,doc) { var allHTMLTags=doc.getElementsByTagName("div"); for (i=0; i < a

Минимализация плагина для FF

Прежде чем начать статью, хочу сослаться на "Как создать свой плагин для Firefox" - очень лаконичный пост для начинающих писателей плагинов для FF. Однако, хоть та статья и написана очень просто, я умудрился наступить на несколько граблей. Вот о них я и напишу, чтобы самому их помнить, да и другим помочь, если получиться. Итак, для того чтобы разобраться в чем-то новом лучше начинать с простого, но в большинстве случаев, на мой взгляд, даже мануалы типа Getting started имеют множество лишних элементов. Так и с Add-on Developer Hub из указанной выше статьи. Даже в самом простом плагине мы получаем аж 9 файлов (>100 cтрок кода) - согласитесь это никак не подходит для программы типа Hello world. Уменьшим количество кода как можно больше, но так, что бы мы могли вывести заветную мантру "Hello World!!!". Для этого оставим такую структуру файлов: ./chrome /content ff-overlay.xul overlay.js chrome.manifest install.rdf Уберем лишний код и оставим то

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

Изображение
Многие, наверно, знают как выглядит контрол для набора времени в htc sense На мой субъективный взляд htc sense позволяет быстрее выбирать время, чем стандартный контрол для android Но мне кажется можно сделать контрол, который позволит еще быстрее выбирать время (по крайней мере 'эффективнее, чем стандартный контрол). Поэтому представляю свой концепт набора времени. Концепт написан на html+js+css. исходный код можно взять здесь .

Метод создания форм для конфеты "Петушок"

Изображение
Как-то захотелось поесть конфету "Петушок", давно уже не видел их в продаже, везде сплошной чупа-чупс. Для тех кто не в теме Петушок состоит из вареного сахара и воды (рецепт можно найти например здесь ), а выглядит он так: Готовить Петушок на ложке это не интересно, а результат не столь красивый. Поискав формы в интернете по магазинам, я с удивление отметил, что форм нет. Немного расстроившись решил почитать форумы. После прочтения этого ресурса идея конфеты, именно в форме петуха, меня захватила. Т.к. форм у меня не было пришлось выкручиваться и тогда я решил сделать slim-петушок. Для этого нам понадобиться: Ножницы Картон Бумага Для начала скачаем силуэт петуха из инета (причем можно выбрать любую другую фигуру), у меня он выглядит так: Теперь вырежем из картона фигуру петуха, получим: Далее нам понадобиться фольга, которую, в отличие от форм, легко купить в магазине. Положим ее на картон с отверстием в виде петуха и прижмем картонкой в виде петуха: Хотя

Маленький linux

В этой статье показано как установить небольшой линукс, скажем на прототип робота, на примере операционной системы damn small linux . Его плюс в том, что он весит очень мало и его не надо собирать. Начнем установку. Теперь заставим его загружаться всегда в текстовом режиме, что бы не тратить ресурсы на графику. И наконец установим СИ, чтобы можно было программировать устройство, на котором мы поставили dsl. Для этого предварительно нужно скачать пакеты для установки с репозитория dsl . В частности в разделе system нам понадобятся пакеты: gcc1-with-libs.dsl libc6-dev.dsl Установка происходит в виртуальной машине, поэтому перед установкой в видео подключается диск на котором предварительо закачены необходимые файлы. Следующими шагами могут являться написание программы для работы с com-портом и настройка автоматического запуска этой программы после запуска ОС.

Web-инструменты

За полгода работы с web-приложениями у меня накопился небольшой набор инструментов, которыми я пользуюсь. В этом посте я хочу рассказать об этих приложениях т.к. еще полгода назад я о них (почти о всех) даже и не слышал. Начнем с того, что разработка преимущественно ведется для IE7, IE8, FF. Причем в качестве языков программирования я использую java + javascript. Итак для программирования под IE7, IE8 собственно нужны эти браузеры, для этого можно использовать IE collection . Великолепный снифер - HttpWatch . Однако, я считаю, нет смысла в использовании бесплатной версии, потому что в ней недостаточно функциональности, в отличии от Professional Edition. В качестве инструмента просмотра html и javascript-консоли я использую BebugBar Для debug'a javascript установлено СompanionJS Для FF есть отличное комплексное решение Firebug , которое совмещает все возможности из перечисленных выше инструментов для ie и имеет большую функциональность. Правда по части анализа трафика HttpW

График успеха

Изображение
Я участвовал в нескольких проектах, и как-то раз, начиная новый проект, я заметил, что сложность, с которой у меня получается решать задачи на проектах, меняется со временем в общем-то одинаково для различных проектов. Поэтому представляю график зависимости успеха (под успехом я понимаю насколько оптимально получается решать задачи на проекте) в зависимости от времени, которое человек проработал на проекте. Стоит отметить, что этот график субъективен, поскольку я его строил исходя из собственных ощущений. В самом начале человек приходит на проект, проект кажется очень интересным, обычно в этот период дают простые задачи. Также в период О-А присутствует так называемый эффект новичка, когда все решается легко. Но потом в период А-B задачи становятся сложнее их иногда вообще не получается решить быстро и легко. Человеку перестает нравиться проект, кажется, что он не сможет его решить никогда, и он для него не подходит. К моменту B все становиться совсем плохо. В этот переломны