среда, 15 декабря 2010 г.

Игнорирование


Шаблон:
svn propset [шаблон для ингорирования] [путь по которому прим. шаб.]

Чтобы игнорировать например папку кеш в проекте, и не заливать ее в репозиторий, нужно находясь в папке, которая содержит папку кеша выполнить:
svn propset svn:ignore DIRNAME .

Или например в папке сессий сами сессии не добавлять  в репозиторий:

svn propset svn:ignore '*' sess/
 
Чтобы задать несколько шаблонов то:
svn propedit svn:ignore .

или эсли на сервере нет эдитора по-умолчанию, или этот дефолтовый не нарвится
svn propset svn:ignore --editor-cmd VI .

Шаблоны для игнорирования должны опеределяться каждый в новой строке.

четверг, 25 ноября 2010 г.

Строковые типы в MySQL

Строковые типы бывают двух классов binary strings и nonbinary strings. Первый класс это массивы байтов, а второй - массивы символов. То есть первый всегда состоит из элементов по 1 байту, и сравнивается просто математически. А второй в зависимости от кодировки может состоять и из двухбайтовых елементов и сравниваться с определенными COLLATION-ами.

четверг, 18 ноября 2010 г.

Зачем менять delimiter в MySQL?

Делается это так:
mysql> delimiter [NEW_DELIMITER]

Это нужно напримере для того, чтобы:'

mysql> delimiter //
mysql> CREATE PROCEDURE dorepeat(p1 INT)
    -> BEGIN
    ->   SET @x = 0;
    ->   REPEAT SET @x = @x + 1; UNTIL @x >p1 END REPEAT;
    -> END
    -> //
    -> delimiter ;

Таким образом ";" внутри BEGIN...END не завалит определение нашей хранимой процедуры.

среда, 17 ноября 2010 г.

Системные переменные сервера

Эти переменные определяют как будет работать сервер. Дефолтовое из значение определяется при компиляции сервера.

вторник, 16 ноября 2010 г.

Конструкция INSERT ... ON DUPLICATE KEY UPDATE

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

Курсоры

Курсоры.

Это указатели на область в памяти. А точнее это набор результата SELECT и указатель на его поточную строку, указатель позволяет итерировать по этому результату. Это обычно используется в хранимых процедурах.

Хранимые процедуры.

Хранимые процедуры.
 
Это обьект СУБД, который хранит в себе набор sql-инструкций, он обычно хранится в откомпилированном виде, что обеспечивает его продуктивный вызов.
Обычно хранимая процедура вызывается так:
CALL имя(параметры)
или
EXECUTE имя(параметры).

ACID

Это требования к транзакционной системе.

четверг, 11 ноября 2010 г.

Получение стилей хтмл елемента by javascript

Параметр style хтмл обьекта пуст, поэтому мы можем только так устанавливать стили, но не получать:

document.getElementById("myid").style.paddingLeft = "10px";

суббота, 6 ноября 2010 г.

Патерны в Java EE

MVC тут представлен в двух видах:
1) Model1
2) Model2.

Роль View в обеих играют JSP, роль Model - JavaBeans. А вот Controller у второго это Servlet, а у первого JSP. Из-за перешивания логики с дизайном первая модель применяется редко.

Servlet Session & Filters

Сессии
Контейнер сервлетов конечно же реализует механиз http-сессий.
Для того, чтобы создать сессию нужно выполнить:

HttpSession session = request.getSession(true);

пятница, 5 ноября 2010 г.

Отрицательные марджины

Упустил я из вида один из методов верстки, который позволяет контент страницы размещать первее в структуре html-документа, а уже потом сайдбары и тому подобное. Что очень позитивно сказывается на поисковой оптимизации...

Кроссдоменная загрузка рессурсов

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

четверг, 4 ноября 2010 г.

Java I/O ObjectStreams

Это очень прикольные потоки, они наследники от DataStreams? поэтому они могут писать/читать микс -- и простые типы и обьекты.

Java I/O DataStreams

Это потоки для работы с простыми типами, вот примеры их использования:

Java I/O formating

Форматирование представляются два класса:
PrintWriter -- символьное.
PrintStream -- байтовое.

Java I/O streams

Потоки используются для приема передачи данных. Существует два основных вида потоков байтовыми и символьными:

Поэтому существует три вида классов:
1) InputStream & OutputStream -- это байтовые потоки.
2) Reader & Writer -- это символьные потоки.

суббота, 23 октября 2010 г.

Apache Tomcat изнутри

Это контейнер сервлетов java и веб-сервер одновременно.

Он состоит из трех основных компонентов:

четверг, 21 октября 2010 г.

Межфреймовое взаимодействие by javascript

Столкнулся с объектом в коде яваскрипта по имени top, как выяснилось это не доморощенный обьект, а обьект в яваскрипте по-умолчанию.

Он(если более точно window.top) означает окно браузера, которое содержит всю иерархию окон(вложенных фреймов) и является корневый окном. К этому объекту можно обратиться из любого вложенного фрейма и получить ссылку на корневое окно.

среда, 20 октября 2010 г.

Jetty and Share libraries

Jetty - сервис и библиотека, которая является веб-сервером и сервлет-контейнером.

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

Но также в систему устанавливается сервис jetty (/etc/init.d/jetty), значит и как-то подругому можно размемещать сервлеты в него, как в контейнер сервлетов.

Во время установки jetty by Synaptic, увидел, где живут shared libraries -- /usr/local/share.

Увидел как  в консоли подключать библиотеки...
При компиляции:
javac /path/to/sources/*.java --classpath /lib/path1:/lib/path2:.
При выполнении:
java /path/to/class/with/main --classpath /lib/path1:/lib/path2:.
Такой ключ я увидел в ман странице явы, а в статье использовался -cp. Ни то не то не проверял, нужно будет как-то по свободе, у меня все ант делал через нетбинс:)

вторник, 19 октября 2010 г.

Параллельное программирование в java

Для этих целей существует класс Thread.

Есть два варианта создания потока:
1) Наследовать класс Thread и перегрузить ему метод run.
2) Реализовать интерфейс Runnable, а потом воспользоваться конструктором класса Thread для создания нового потока:

Thread th = new Thread(new MyRunableImp(), "MyThreadName");

понедельник, 18 октября 2010 г.

log4j

Это библиотека для логирования приложения, разрабатываемая by apache.org. Есть не только для явы -- log4php, log4c, log4python...

Переменные окружения

Устанавливаются переменные окружения для отдельного пользователя тут:
~/.profile    --  юниксовый файл, вызывается при входе в систему пользователя.
~/.bash-profile(bash-login)   --- таже фишка, что и предыдущая но конкретно под баш, этот скрипт вызывается первее за предыдущий.
~/.bashrc   --   а этот скрипт вызывается при каждой новой сессии консоли.

воскресенье, 17 октября 2010 г.

Java ,библиотеки и что за юниттестирование (первое знакомство)

Увидел, что библиотеки написаны с применением шаблонных свойств языка, подобно тому, как написана STL С++. Ну типа Map...


Юниттестирование -- увидел это на практике. Создается класс для тестируемого класса, в котором много директив, как я понял от усатого ява-консультанта монстро'в, java 6 -- @BeforeClass. Там есть методы настройки, которые я пока не понял зачем. А также есть методы тестирования методов класса. Они создают экземпляры класса и пихают туда нужные параметры, выполняют методы и сравнивают с ожидаемым результатом.
Общий результат выводится...

Ну чтоже прикольно!

суббота, 16 октября 2010 г.

Теория сетей наcкоком:)

Ethernet -- канальный сетевой протокол.
Единица передачи информации фрейм. Состоит из 6 байт адресата, 6 байт адрессуемого, 2 байта типа, 54 -- байт под данные (айпи пакет и т.д.), контрольная сумма.
Адреса тут мак-адреса.

среда, 13 октября 2010 г.

Apache mod_rewrite и не только...

-----------------------------------------Регулярные выражения---------------------
Групирование

(abcd)
у него есть прикольная фишка -- запоминать и использовать уже найденные совпадения групировки, их можно использовать в построение динамических регекспов. 
Они сохраняются под номерами:
\1
\2
\3
\4
\5
\6
\7
\8
\9
В некоторых реализациях регекспов и дальше.

Call и apply в Javascript

Это методы объекта function. Их суть передавать в нее параметры и переопределять контекст.
Отличие между ними

func_name.call(context,arg1,arg2,...,argN)

var args = [arg1,arg2,...,argN]
func_name.apply(context,args) -- этот метод для удобства, можно в него передавать зарезервированное поле arguments вызывающего объекта(функции).

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

воскресенье, 5 сентября 2010 г.

Принцип файловой системы:

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

В каждом айноде есть дата создания ссылка на место надиске с данными файла, размер файла, дата подификации(создания), количество твердыхх ссылок на этот айнод.

Файл является нично иным как твердой ссылкой на айнод.

Директория --это файл, в ктором записано номер-айнода и название файла -- так рождается трердая ссылка (альтернативное имя файла под данным айнодом). Получается все имена тевердых ссылок ссылаются на один айнод.

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

Типы файлов:

- обычный файл

l симлинка

d диретория

c симфольный файл-устройство, побайтовый прием

b блоковый файл-устройство, блочный прем, возможна буфферизация.

s сокет (юникс сокет), порт для соединения двух процессов, через который они взаимодействуют.

вторник, 10 августа 2010 г.

ZF фронтконтроллер

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

воскресенье, 25 июля 2010 г.

Как сломать вход в систему на этапе загрузки GRUB

Когда загружается груб, то нужно держать Shif, чтобы попасть в выбор вариантов загрузки операционных систем.
Потом на нужном варианте нажимаем е(edit) и меняем "ro что-то там" на "rw init=/bin/bash"  Дальше получаем доступ к диску через баш, можем все править как нужно.

вторник, 18 мая 2010 г.

DB in php

В пхп есть два способа работать базами данных:
1) Через специализированные расширения под конкретную бд.
2) Через абстрактный слой -- это дает возможность мигрировать на продукт нового поставщика БД без серйозного изменения кода.

понедельник, 17 мая 2010 г.

php обработка ошибок

Как обрабатывать ошибки в php мы можем задать в .ini файлах. 
Уровень у этих директив PHP_INI_ALL (есть исключение для XMLRPC ошибок -- они PHP_INI_SYSTEM)

Директивы можно ставить в рантайм by ini_set, а error_reporting мы можем поставить by error_reporting()

воскресенье, 16 мая 2010 г.

Ссылки в php

Используются они для:
1) Для передачи по значению в функцию.
2) Для создания юниксподобных твердых ссылок.
3) Для возврата по ссылке.

суббота, 15 мая 2010 г.

Работа с сессиями

Продолжаю писать тестовое задание по пхп. Решил не искать легких путей и разобраться в вопроссе сессий глубоко. Тем более они мне показались мутным делом.
Есть вариант, что это все легко. Но как всегда есть но!
И так сессии, в последних версиях пхп этот процесс сделали полнстью атоматизированным и почти не нужно о нем беспокоится. Поведение сессий настраивается в php.ini, а также есть функции переопределия настроек в режиме выполнения (и это не только set_ini()).

пятница, 14 мая 2010 г.

Тонкий момент регулярок в javascript

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

В javascript регеспы создаются обьектом RegExp(pattern, flag).
Есть более короткая форма:
var patt = /^[A-za-z_][A-za-z_]{2,}@mail.ru$/g;
Теперь, чтобы проверить на соответсвие некую строку, мы пишем:
var bool = patt.test("Наша строка");
Но тут мы натыкаемся на проблему, после этого обьект разрушается и мы не можем проверить еще одну строку
Выход есть, просто нужно делать вот так:
var bool = "Наша строка".match(patt);
var bool2 = "Наша вторая строка".match(patt);

четверг, 25 марта 2010 г.

О патернах проектирования неформально

Изучаю проектирование информационных систем.
На сколько понял такого рода проектанты занимаются проектированием:
  1. объектов/классов (подзадача или детализация следующей);
  2. систем определенных архитектур (задача);
  3. систем, которые объединяют в одну уже функционирующие системы (интегрирующие среды)