Skip to main content

Posts

Windows hints

1. Хотим остановить зависшую  службу, но через Administration -> Services показывает статус Stropping бесконечно. Хорошая статья: http://www.examiner.com/list/how-to-kill-a-windows-service-that-s-stuck-on-stopping-or-starting Общий смысл: sc queryex servicename     где servicename из свойств службы, покажет PID taskkill /f /pid [PID]

Using filesort; Using temporary

При выполнении explain в колонке Extra иногда значатся Using filesort; Using temporary. Что бы это значило? Хороший ответ на английском  What does Using filesort mean in MySQL? Его перевод на русский с дополнениями: Если в памяти создается временная таблица, хранящая результаты запроса, то это Using temporary. Временная таблица может быть сохранена на диск, если она слишком велика, чтобы поместиться в память. // TODO: слишком велика - это сколько? по какой еще причине она может быть записана на диск? Каждый раз, когда сортировка не может быть выполнена по индексу, это using filesort. Плохое имя заставляет нас думать о файлах, но они тут не при чем. Filesort могла бы называться просто sort. На самом деле это quicksort. Если сортировка больше, чем "sort buffer" (?), то она выполняется по частям. Объем памяти, выделяемый для filesort(), хранится в переменной @@sort_buffer_size .  Если сортируемые данные не помещаются в эту память, filesort будет использовать временные ...

Spring

Wikipedia: The Spring Framework is an open source application framework and inversion of control container for the Java platform. Это Container, так как Spring управляет жизненным циклом всех объектов контейнера: создает их и связывает (wiring) их друг с другом. Это Framework, Spring позволяет создавать и конфигурировать сложные приложения из простых компонент, предоставляя гибкие и эффективные реализации многих необходимых сервисов. 1. DI и IoC Фаулер считает одним и тем же, просто DI - более подходящий термин. Паттерн DI предоставляет компоненту внешнюю зависимость (вместо того, чтобы захардкодить её). То есть мы сообщаем объекту о его зависимостях вместо того, чтобы он сам о них знал. Предыстория: Мы стараемся использовать интерфейсы, например tree.getFruits(), но где мы создаем объект tree? Если в классе, который его использует, то получается, что класс зависит не только от интерфейса ITree, но и от конкретной реализации, скажем AppleTree. А если кто-то захочет использоват...

Liferay

1. При использовании ServiceBuilder build.number из файла service.properties сохраняется в таблице servicecomponent. Если при каждом старте Liferay пытается сделать апгрейд до новой версии, backup таблиц и виснет, то имеет смысл выкинуть все строки из servicecomponent, касающиеся создаваемой нами базы, поменять необходимые колонки или таблицы вручную, запустить. 2. Где в базе данных найти содержимое страницы пользователя? Из таблицы user_ : userId= 2 Из таблицы group_ : userId =2 => groupId= 88 Из таблицы layout: groupId=88, private, /home => typesettings = "layout-template-id=2_columns_ii column-2=33, column-1=82,3," В таблице layout, колонка typesettings содержит layout и id портлетов. 3. При старте liferay не деплоит war-файлы из папки deploy? Нет ли в логах строки вида 10:08:35,909 INFO Auto deploy scanner started for C:\Selenium\liferay-portal-6.1.1-ce-ga2\deploy и путь совсем не тот что у вашего liferay? Смотреть portal-setup-wizard.properties 4. How to get ...

Classloader, Tomcat, PermGen, ...

Classloader подгружает классы по мере необходимости. Когда в контейнере происходит undeploy, classloader и подгруженные классы должны быть собраны GC. Память JVM состоит из Heap и Permanent Generation. Heap делится на Young Generation (Eden + Survivor) и Old Generation. PermGen - Permanent Generation -  область памяти под управлением VM, которая хранит объекты классов (Class) и interned sttrings (уникальные строки, скажем так). OutOfMemory: PermGenSpace может возникать, если что-то держит Classloader. Когда стартует Tomcat, он создает иерархию classloader'ов: Bootstrap | System | Common / \ Webapp1 Webapp2 ... 1) Каждый объект держит линк на его Class 2) Каждый объект типа Class держит линк на ClassLoader и наоборот (за исключением загруженных Bootstrap loader'ом) holds -------> Servlet1 / | / v / Servlet1.clas...

Android: pull-to-refresh с двух концов списка

Когда пользователь дойдет до верхнего или нижнего края списка ListView, надо подгрузить следующие записи. Как-то обозначить прогресс выполнения. Если бы подгружать надо было только в конце списка, то можно использовать  Endless scrolling ListView . Если только в начале, то компонент  ActionBar-PullToRefresh, написанный Chris Banes  - впрочем внешний вид компонента красив, поэтому... Мы хотим что-то в духе ActionBar-PullToRefresh, но с обоих концов списка. Как отследить событие "оттягивания" края списка? Начиная с 2.3 (api level 9) в android у AbsListView появляется Overscroll: возможность отследить оттягивание края списка. И это прекрасно работает на эмуляторах 2.3 и 4.3, но на телефоне samsung c 2.3 не работает, де самсунг решил не поддерживать эти методы. Поэтому будем использовать события touch . Возьмём решение  Fiddler'a со Stackoverflow . updatesList.setOnTouchListener(new View.OnTouchListener() { private static final float OVERSCROLL_THRESHOLD_IN_P...

Собеседования: БД и работа с ними

1. Реляционная БД Построена на реляционной модели данных, на отношениях. Отношение - математический термин, согласно wiki это подмножество декартова произведения множеств, называемых доменами. Например, отношение Человек может быть подмножеством произведения домена Имя (Андрей, Сергей) и Фамилия (Иванов, Смирнов). Таблица (множество кортежей) - это представление отношения. 2. Нормализация Процесс приведения к нормальной форме. Есть несколько нормальных форм. 1НФ - все атрибуты атомарны. "ФИО, Телефоны". Телефонов может быть несколько, этот атрибут не атомарен - должен быть разделен. 2НФ - все столбцы, не входящие в полный первичный ключ, должны зависеть от полного первичного ключа. Если ключ составной (Покупатель, Товар), то поля должны зависеть от всего ключа: Количество - хорошо, ФИО Покупателя - плохо - зависит только от Покупателя. 3НФ - все столбцы, не входящие в полный первичный ключ, должны зависеть от него и не должны зависеть друг от друга. Машина, Производ...