Skip to main content

Posts

Showing posts from 2012

Первые шаги в Selenium

Цель расплывчата: понять и сделать хоть что-нибудь =) Selenium Selenium - группа продуктов. Отличное описание в статье Что такое Selenium? Selenium IDE - плагин для Firefox, позволяет записать тест, выполняя действия в браузере. Казалось бы, Selenium WebDriver должен дать больше возможностей: всё таки не из графического интерфейса тесты пишем, а с помощью языка программирования, но интересная мысль в другой статье того же автора  Что такое Selenium WebDriver? : "... WebDriver не имеет прямого отношения к тестированию. Он всего лишь предоставляет автотестам доступ к браузеру. На этом его функции заканчиваются.Структурирование, группировку и запуск тестов, а также генерацию отчётов о тестировании, обеспечивает фреймворк тестирования, такой как JUnit или TestNG для Java, .."  Локаторы Выбрать элемент на странице можно используя локаторы. Локаторы (в Selenium IDE в поле target) используют DOM, XPath или CSS (или просто ищут по id/name). Полезное: XPath: XML Path La...

JSP & EL: доступ к данным

EL (expression language) - язык, упрощающий доступ к данным на странице.  Общее Выражения EL могут быть выполнены при первом отображении страницы (immediate evaluation). Тогда они имеют следующий (более привычный) вид: ${person.name} Или технология, которая использует EL, может вычислять их в какой-то другой момент жизненного цикла страницы (deferred evaluation). Тогда используется синтаксис   #{} .  Этот синтаксис более привычен тем, кто использует JSF. Первая переменная (если она переменная, а не, скажем, ${42}) всегда является либо атрибутом, либо неявным объектом: Доступ к полям Можно использовать квадратные скобки [] или точку . . используется как имя поля в бине или имя ключа в Map: [] кроме вышеперечисленного могут обращаться по индексу к элементу массива или списка: Да, индекс будет в кавычках. Картинки позаимствованы из O'Reilly. Head First. Servlets and JSP. Что почитать: 1) Коротко от Oracle:  http://docs.oracle.com...

Шпаргалка по MySQL

1. Создание базы и пользователя CREATE DATABASE testdb character set utf8; CREATE USER 'testdbuser'@'localhost' IDENTIFIED BY 'testpwd'; GRANT ALL PRIVILEGES ON testdb.* TO 'testdbuser'@'localhost' WITH GRANT OPTION; 2.  Какие пользователи существуют? Если у пользователя есть права на эту таблицу: SELECT * FROM mysql.user; 3. Использовать ключевое слово в качестве имени столбца можно, взяв его в одинарные обратные кавычки (над «ё», иногда называют «гравис»). 4. Визуально про JOIN:  Визуальное объяснение SQL Joins . В том числе ответ на вопрос, как найти строки левой таблицы, которых нет в правой таблице. 5. TODO

JavaScript

Многие могут что-то набросать на js, но, как мне кажется, уровень понимания языка у некоторых близок к моему :( В общем, сборник вопросов и ответов, которые иногда возникают: Определение функций Кто-то пишет так: var functionOne = function() { // Some code }; А кто-то так: function functionTwo() { // Some code } В чем разница? В том, что определением функции является только второе. Первое - объявление переменной, значением которой является анонимная функция. Соответственно, функция будет известна уже в parse-time, а вот переменная появится только при run-time: <script> // Error functionOne(); var functionOne = function() { } </script> <script> // No error functionTwo(); function functionTwo() { } </script> JSON и массивы Задача: сериализовать данные в json так, чтобы ключом был индекс. Должна получиться строка вида "{"0":{"name":"Имя1"},"1":{"name":"Имя2"}...

Попурри о Generics

Кто не встречал в коде и не использовал generics сам? Общая идея в том, что типы (классы или интерфейсы) могут выступать в роли параметров при определении классов, интерфейсов или методов. Generics - своего рода формальный параметр, при котором фактическим параметром будет не значение, а тип. Преимущества очевидны: Проверка типов времени компиляции Меньше приведений типов Можно реализовать более общий алгоритм для коллекций объектов разных типов, который будет легким для чтения и, в то же время, type safe. Generic ("Обобщенные" в русской традиции) типы и методы Хотим создать generic type - обобщенный класс или интерфейс. Чтобы использовать generic, мы создаем generic type declaration: эту самую <T>. После того как мы ввели type variable, можно использовать её в классе. /** * Generic version of the Box class. * @param <T> the type of the value being boxed */ public class Box<T> { // T stands for "Type" private T t; public...

LungoJS

Наткнулась на ссылку на LungoJS - фреймворк для мобильных приложений, использующий HTML5, CSS3 и JavaScript: http://www.lungojs.com/ Ссылки Захотелось попробовать, но вдруг поняла, что не знаю с какого края начать, потому как "последняя встреча с android'ом была давно, и лёгкая забывчивость дает о себе знать". Хорошая статья о структуре типового android-проекта в Eclipse:  http://www.androidteach.com/2013/02/android_8.html И очень хорошее руководство по WebView и отображению html:  http://developer.android.com/guide/webapps/webview.html . Задача Итак, давно было желание написать "разучивалку текстов песен": список песен, при выборе появляется текст и проигрывается минусовка. На карте памяти будет папка LyricsLearner, содержащая 2 подкаталога: text и music. Текст и музыка для одной песни будут носить одно имя, но разные расширения. Меню приложения будет показывать имена песен, то есть имена файлов из папки text. Если существует соответствующий файл...

Портлеты. Жизненный цикл.

Смесь из wiki,  http://cloud-cuckoo.com.ua/node/111 ,  http://cloud-cuckoo.com.ua/node/114  и других источников. Определения Портал - веб-приложение, которое обычно обеспечивает персонализацию, аутентификацию, предоставляют различную информацию (возможно из разных источников) в едином виде (и на одной странице). Портал может быть персонализирован: отображать разную информацию (или отображать по-разному) в зависимости от пользователя. Страницы портала содержат набор портлетов . Портлет - подключаемый, сменный компонент пользовательского интерфейса веб-портала. Благодаря существующим стандартам, разработчики могут создавать портлеты, встраиваемые в любой портал, следующий этим стандартам. Портлет управляется Портлет Контейнером : он обрабатывает запросы и генерирует динамический контент. Портлет Контейнер выполняет портлеты, предоставляет им среду для выполнения, управляет жизненным циклом портлета, предоставляет хранилище для настроек портлета. Портлет Конт...

Блочный, строчный, ...

Сборник советов: 1. Прижать элемент к нижнему краю контейнера: 2 . Две колонки: 3 . Что означает символ ">" в селекторе? Означает, что будут выбраны только прямые потомки. По-умному, direct descendant combinator. Иными словами, если есть: То "div a {color: blue;}" изменит цвет всех ссылок, а "div > a {color: blue;}" - только первой и третьей. 4 . TODO

CDH4 & YARN на Ubuntu Lucid

Устанавливаем CDH4 (YARN) на Ubuntu 10.4 lucid в pseudo-distributed mode ДО шагов из довольно подробного туториала  https://ccp.cloudera.com/display/CDH4DOC/Installing+CDH4+on+a+Single+Linux+Node+in+Pseudo-distributed+Mode  делаем следующее: 1) Беспарольный ssh:  http://www.ibm.com/developerworks/ru/library/l-hadoop-1/ 2) Отключаем IPv6:  http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/  Зачем? Не ясно, там по ссылке что-то умное написано... 3) Проверяем, что свободны нужные порты: netstat -tnlp (был занят 9000 - освобождаем). После этих трех шагов останавливаем и запускаем снова все 6 демонов CDH4. И наконец-то видим результаты. Кстати, посмотреть состояние кластера можно по адресу:  http://<url_машины>:8088/cluster Устанавливаем CDH4 (YARN) на Ubuntu 10.4 Lucid  В принципе, вот подробные руководства: https://ccp.cloudera.com/display/CDH4DOC/CDH4+Installation  и https://ccp.cloudera...