tag:blogger.com,1999:blog-35036384474254148442024-03-14T01:07:01.892+05:00Cofe +Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.comBlogger48125tag:blogger.com,1999:blog-3503638447425414844.post-47205670500268313712017-05-30T13:11:00.001+05:002017-05-30T13:12:09.589+05:00mssql 2000+ show backup listMSSQL Скрипт просмотра всех бэкапов определенной базы данных, работает на MSSQL 2000 + И выше<br />
<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;"><br />
declare @cmt varchar(200)<br />
set @cmt = ''<br />
<br />
declare @dbname varchar(250)<br />
set @dbname = '<b>db_name</b>' <br />
<br />
print @cmt+'database '+@dbname<br />
<br />
print @cmt+'full backup of '+@dbname<br />
declare @full_bs_id numeric(38)<br />
declare @full_start datetime<br />
declare @full_end datetime<br />
declare @full_created bit<br />
declare @full_lsn numeric(38)<br />
declare @full_media_id numeric(38)<br />
declare @full_media_file varchar(2000)<br />
declare @full_media_pos numeric(38)<br />
<br />
set @full_created = 0<br />
<br />
select top 1 <br />
@full_created = 1,<br />
@full_bs_id = backup_set_id,<br />
@full_start = backup_start_date,<br />
@full_end = backup_finish_date,<br />
@full_lsn = database_backup_lsn,<br />
@full_media_pos = position,<br />
@full_media_id = media_set_id,<br />
@full_media_file = (select b.physical_device_name from msdb.dbo.backupmediafamily b where b.media_set_id = bs.media_set_id)<br />
from msdb.dbo.backupset bs <br />
where <br />
bs.database_name = @dbname <br />
and bs.type = 'D'<br />
order by bs.backup_start_date desc<br />
<br />
if @full_created = 1 begin<br />
print @cmt+'full backupset id: '+cast(@full_bs_id as varchar)<br />
print @cmt+'full backupset started: '+convert(varchar(200),@full_start,120) -- +cast(@full_start as varchar)<br />
print @cmt+'full backupset finished: '+convert(varchar(200),@full_end,120) -- +cast(@full_end as varchar)<br />
print @cmt+'full backupset db lsn: '+cast(@full_lsn as varchar)<br />
print @cmt+'full backupset media id: '+cast(@full_media_id as varchar)<br />
print @cmt+'full media file: '+@full_media_file<br />
print @cmt+'full media position: '+cast(@full_media_pos as varchar)<br />
<br />
print @cmt+'diff backup of '+@dbname<br />
declare @diff_bs_id numeric(38)<br />
declare @diff_start datetime<br />
declare @diff_end datetime<br />
declare @diff_created bit<br />
declare @diff_lsn numeric(38)<br />
declare @diff_media_id numeric(38)<br />
declare @diff_media_file varchar(2000)<br />
declare @diff_media_pos numeric(38)<br />
<br />
set @diff_created = 0<br />
<br />
select top 1 <br />
@diff_created = 1,<br />
@diff_bs_id = backup_set_id,<br />
@diff_start = backup_start_date,<br />
@diff_end = backup_finish_date,<br />
@diff_lsn = database_backup_lsn,<br />
@diff_media_pos = position,<br />
@diff_media_id = media_set_id,<br />
@diff_media_file = (select b.physical_device_name from msdb.dbo.backupmediafamily b where b.media_set_id = bs.media_set_id)<br />
from msdb.dbo.backupset bs <br />
where <br />
bs.database_name = @dbname <br />
and bs.type = 'I'<br />
and bs.database_backup_lsn > @full_lsn<br />
order by bs.backup_start_date desc<br />
<br />
if @diff_created = 1 begin<br />
print @cmt+'diff backupset id: '+cast(@diff_bs_id as varchar)<br />
print @cmt+'diff backupset started: '+convert(varchar(200),@diff_start,120) -- +cast(@diff_start as varchar)<br />
print @cmt+'diff backupset finished: '+convert(varchar(200),@diff_end,120) -- +cast(@diff_end as varchar)<br />
print @cmt+'diff backupset db lsn: '+cast(@diff_lsn as varchar)<br />
print @cmt+'diff backupset media id: '+cast(@diff_media_id as varchar)<br />
print @cmt+'diff media file: '+@diff_media_file<br />
print @cmt+'diff media position: '+cast(@diff_media_pos as varchar)<br />
end<br />
end else begin<br />
print @cmt+'! full backup of '+@dbname+' not exists'<br />
end<br />
<br />
go<br />
</span></span>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-89204673477932666772017-05-26T10:28:00.001+05:002017-05-26T10:28:17.230+05:00tomcat ssl<span style="font-size: large;">Проверить время на сервере</span><br />
apt-get update<br />
aptitude install ntp<br />
apt-get install ntpdate<br />
dpkg-reconfigure tzdata<br />
ntpdate ntp.remco.org<br />
<br />
<span style="font-size: large;">Сгенерировать ключ</span><br />
cd /var/lib/tomcat8<br />
keytool -genkey -alias tomcat -keyalg RSA -keystore keystore -validity 300<br />
<br />
Enter keystore password:<br />
Re-enter new password:<br />
What is your first and last name?<br />
[Unknown]: *.cofe.xyz<br />
What is the name of your organizational unit?<br />
[Unknown]: cofe.xyz<br />
What is the name of your organization?<br />
[Unknown]: cofe.xyz<br />
What is the name of your City or Locality?<br />
[Unknown]: NTagil<br />
What is the name of your State or Province?<br />
[Unknown]: Sverdlovskay<br />
What is the two-letter country code for this unit?<br />
[Unknown]: ru<br />
Is CN=*.cofe.xyz, OU=cofe.xyz, O=cofe.xyz, L=NTagil, ST=Sverdlovskay, C=ru correct?<br />
[no]: yes<br />
<div>
<br /></div>
<div>
<span style="font-size: large;">Просмотр ключа</span></div>
<div>
keytool -list -keystore keystore</div>
<div>
Enter keystore password:</div>
<div>
<br /></div>
<div>
Keystore type: JKS</div>
<div>
Keystore provider: SUN</div>
<div>
<br /></div>
<div>
Your keystore contains 1 entry</div>
<div>
<br /></div>
<div>
tomcat, 04.01.2017, PrivateKeyEntry,</div>
<div>
Certificate fingerprint (SHA1): A0:6D:7E:41:88:E1:05:F9:06:21:58:7C:34:47:35:68:8E:6D:97:1A</div>
<div>
<br /></div>
Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-50231755690072956642016-10-08T01:58:00.001+05:002016-10-08T01:58:14.386+05:00публикую программу zipsfxДоброго времени! публикую свою программу<b> <a href="https://github.com/gochaorg/zipsfx-cpp" target="_blank">zipsfx-cpp</a></b><br />
<h2>
Преамбула</h2>
Была у меня такая идея создавать на лету <a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BC%D0%BE%D1%80%D0%B0%D1%81%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B8%D0%B9%D1%81%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D0%B2" target="_blank">SFX (Самораспаковывающийся архив)</a> файлы средствами JAVA<br />
<br />
JAVA из коробки поддерживает работу с zip архивами, при том хотелось чтобы были соблюдены следующие условия<br />
<ul>
<li>Создание sfx архива должно работать из любой ОС</li>
<li>Создание sfx архива должно быть реализовано в пределах JAVA</li>
</ul>
<div>
Облазив тырнет (где-то 2011 - 2012) я не нашел подходящего решения, из возможных решений было использование 7z, все хорошо, есть SDK, есть "модуль" SFX, кроме одного, оно работает с только 7z архивами (так было 2012)</div>
<div>
<br /></div>
<div>
Тогда было решено написать свой</div>
<h2>
О программе</h2>
<div>
Суть использования программы сводится к нескольким шагам</div>
<div>
<ol>
<li>Создать каким либо образом zip архив, тем же 7zip или средствами JAVA.<br />
Назовем этот файл <i>data.zip</i> или еще как либо.</li>
<li>Создать текстовый файл с параметрами распаковки (куда распаковывать, что потом сделать).<br />
Назовем этот файл <i>options.txt</i> или еще как либо.</li>
<li>Склеить файлы <i>install.exe = zipsfx + options.txt + data.zip</i></li>
</ol>
<div>
Вот пример <a href="https://github.com/gochaorg/zipsfx-cpp/tree/v0.4.1/dist/Release/MinGW2-Windows" target="_blank">работающей версии</a>:<br />
<h3>
Шаг 1 - создание архива</h3>
Файл <i><b>data.zip</b></i><br />
Содержит два файла:<br />
<ol>
<li>launcher.bat</li>
<li>data/launcher-2.bat</li>
</ol>
<div>
<i>data/launcher-2.bat</i> в себе содержит следующий код:</div>
<div class="code">
@echo off<br />
echo current dir "%CD%"<br />
pause</div>
<div>
<h3>
Шаг 2 - создание параметров</h3>
</div>
</div>
<div>
Файл <i><b>options.txt</b></i></div>
<div class="code">
<div>
OPTIONS BEGIN {</div>
<div class="comment">
# Hello text</div>
<div>
hello = HELLO4 Test arguments</div>
<div>
<br /></div>
<div class="comment">
# Show hello text</div>
<div>
showHello = false</div>
<div>
<br /></div>
<div class="comment">
# Show log progress</div>
<div>
showLog = false</div>
<div>
<br /></div>
<div class="comment">
# Delete files on exit</div>
<div>
deleteFiles = true</div>
<div>
<br /></div>
<div class="comment">
# Run after extract</div>
<div>
run = cmd /C launcher-2.bat $args</div>
<div>
<br /></div>
<div>
workDir = $dir\data</div>
<div>
<br /></div>
<div class="comment">
# return exit code from run</div>
<div>
return = true</div>
<div>
<br /></div>
<div class="comment">
# true - use temp dir; false - use current dir</div>
<div>
useTemp = true</div>
<div>
} OPTIONS END</div>
</div>
<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">run = cmd /C launcher-2.bat $args</span> - указывает, что после распаковки, необходимо выполнить команду запуска bat файла<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">workDir = $dir\data</span> - указывает, что выполнить надо команду, в под каталоге data, относительно распакованного каталога<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">deleteFiles = true</span> - указывает, что по завершению, надо удалить фалы<br />
<h3>
Шаг 3 - склейка фалов</h3>
</div>
Вот так склеиваем файлы (в командной строке)<br />
<div class="code">
copy /b zipsfx + options.txt + data.zip test.exe</div>
<br />
Выполнение того что получилось<br />
<br />
<img border="0" src="https://2.bp.blogspot.com/-f2UZDHIHPao/V_gGu2xruBI/AAAAAAAAEVk/-2tEJbxG1ewtU5Z7-X2Q7RGEFaZTfmHIQCLcB/s1600/zipsfx-sample.png" /><br />
<br />
<h2>
Дистрибутив программы</h2>
Дистрибутив программы, а так же исходный код (лицензия MIT) расположен на сайте <a href="https://github.com/gochaorg/zipsfx-cpp">https://github.com/gochaorg/zipsfx-cpp</a><br />
<br />
<a href="https://github.com/gochaorg/zipsfx-cpp/tree/v0.4.1/dist/Release/MinGW2-Windows" target="_blank">Дистрибутив программы</a> - это всего один файл (zipsfx), который не требует какой либо установки, он и является тем самым самораспаковывающийся архив, точнее заголовок exe файла.<br />
<br />
<a href="https://github.com/gochaorg/zipsfx-cpp/blob/master/README.md" target="_blank">Более подробное описание</a> расположено на сайте githubGochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-22875869696975661972014-03-12T01:26:00.002+06:002014-03-12T02:03:01.720+06:00Перевод BashrcНадоело смотреть на скучные комментарии на англицком в файле .bashrc<br />
Как известно этот файл отвечает за настройку командной строки (bash) в linux/freebsd и т.д.<br />
<div class="code bash"><div class="comment">#!/bin/bash<br />
# ~/.bashrc: выполняется программой bash для Non-login оболочки (да и для оной тоже)<br />
# см. /usr/share/doc/bash/examples/startup-files (в пакете документации bash-doc)<br />
# для примеров</div><br />
<div class="comment"># Если не интерактино, то ничего не делать</div>case $- in<br />
*i*) ;;<br />
*) return;;<br />
esac<br />
<br />
<div class="comment"># Не выводить в историю повторяющиеся строки<br />
# или строки начинающиеся с пробела<br />
# см. bash(1) для дополнительных опций</div>HISTCONTROL=ignoreboth<br />
<br />
<div class="comment"># добавить в файл истории, не перезаписать его</div>shopt -s histappend<br />
<br />
<div class="comment"># Длина файла истории см. bash(1)</div>HISTSIZE=1000<br />
HISTFILESIZE=2000<br />
<br />
<div class="comment"># Проверить размер окна после каждой команды и при необходимости, <br />
# Обновить значения строк (LINES) и столбцов (COLUMNS).</div>shopt -s checkwinsize<br />
<br />
<div class="comment"># Если установлено, шаблон "**" используется в контексте расширения путь будет <br />
# Соответствовать всем файлам и ноль или более каталогов и подкаталогов. </div>#shopt -s globstar<br />
<br />
<div class="comment"># Сделать менее более дружественным для входных файлов нетекстовых см. lesspipe (1) <br />
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"</div><br />
<div class="comment"># Установить переменную идентифицирующую работу в окружении chroot (используется в следующем приглашении)</div>if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then<br />
debian_chroot=$(cat /etc/debian_chroot)<br />
fi<br />
<br />
<div class="comment"># Установить подсказку цветной по возможности <br />
# Зависит от переменной TERM</div>case "$TERM" in<br />
xterm-color) color_prompt=yes;;<br />
esac<br />
<br />
<div class="comment"># Раскомментируйте для цветной подсказки, если терминал имеет эту возможность;<br />
# По умолчанию отключено, чтобы не отвлекать пользователя от фокуса внимания в окне терминала <br />
# Должно быть на выходе команд, а не вводимой строке<br />
#force_color_prompt=yes</div><br />
if [ -n "$force_color_prompt" ]; then<br />
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then<br />
<br />
<div class="comment"># У нас есть поддержка цвета; предполагаю, что это соответствует ECMA-48 <br />
# (ISO/IEC-6429). (Отсутствие такой поддержки крайне редко, <br />
# и пусть будет так. Как правило поддерживается SETF, а не setaf.)</div>color_prompt=yes<br />
else<br />
color_prompt=<br />
fi<br />
fi<br />
<br />
if [ "$color_prompt" = yes ]; then<br />
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '<br />
else<br />
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '<br />
fi<br />
unset color_prompt force_color_prompt<br />
<br />
<div class="comment"># Если это Xterm задать заголовок так: user@host:dir</div>case "$TERM" in<br />
xterm*|rxvt*)<br />
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"<br />
;;<br />
*)<br />
;;<br />
esac<br />
<br />
<div class="comment"># Включить поддержку цвета для ls, а также добавить удобные псевдонимы</div>if [ -x /usr/bin/dircolors ]; then<br />
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"<br />
alias ls='ls --color=auto'<br />
alias dir='dir --color=auto'<br />
alias vdir='vdir --color=auto'<br />
<br />
alias grep='grep --color=auto'<br />
alias fgrep='fgrep --color=auto'<br />
alias egrep='egrep --color=auto'<br />
fi<br />
<br />
<div class="comment"># Еще несколько ls псевдонимов</div>alias ll='ls -l'<br />
alias la='ls -A'<br />
alias l='ls -CF'<br />
<br />
<div class="comment"># Вы можете поместить все ваши дополнения в отдельный файл, как <br />
# ~/.bash_aliases вместо добавления их здесь непосредственно. <br />
# см. /usr/share/doc/bash-doc/examples в пакете документации bash-doc</div>if [ -f ~/.bash_aliases ]; then<br />
. ~/.bash_aliases<br />
fi<br />
<br />
<div class="comment"># Включить программируемые функции завершения (дополнительно включать не нужно,<br />
# т.к. уже включено в /etc/bash.bashrc , /etc/profile и /etc/bash.bashrc</div>if ! shopt -oq posix; then<br />
if [ -f /usr/share/bash-completion/bash_completion ]; then<br />
. /usr/share/bash-completion/bash_completion<br />
elif [ -f /etc/bash_completion ]; then<br />
. /etc/bash_completion<br />
fi<br />
fi<br />
</div><br />
<div class="code bash"><div class="comment">###############################################################################<br />
# Добавлено мной</div><br />
<div class="comment"># Переопределение цветной подсказки в таком виде:<br />
# ЧЧ.ММ.СС:user@host:dir<br />
# > тут_курсор_ввода</div>PS1='\[\033[02;32m\]\D{%H.%M.%S}\033[00m:\033[0;34m\u@\h\[\033[00m\]:\w\n> '<br />
export PS1<br />
<br />
<div class="comment"># Добавление путей поиска</div>PATH="~/.bin:~/bin:$PATH"<br />
export PATH<br />
<br />
</div>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com1tag:blogger.com,1999:blog-3503638447425414844.post-89873148332489160762013-07-25T17:10:00.000+06:002013-07-25T17:10:18.614+06:00Измерение отрезков общего положенияВ предыдущей <a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_5217.html">части</a>
я рассмотрел как построить отрезки в перспективе, были рассмотрены
только частные случаи - горизонтальные, вертикальные и уходящие в глубь
отрезки линий. <br /><br />
Теперь разберемся как измерить отрезок который расположен в
горизонтальной плоскости, под не известным углом и как нарисовать еще
один отрезок такой же длины в перспективе. <br /><br />
И так нам дано: перспектива отрезка AB и нам необходимо продлить этот
отрезок в глубь, на такую же длину что бы получился отрезок BC равный по
длине AB. <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294544584"><img alt="" height="334" src="http://cs323122.vk.me/v323122815/7d93/nnypT31RmAY.jpg" style="height: 334px; width: 396px;" title="" width="396" /></a> <br />
<a href="http://www.blogger.com/null" name="Алгоритм "></a><br />
<div class="wk_header">
<h2>
Алгоритм </h2>
</div>
1. Через точки A и B проведем линию до пересечения с линией горизонта hh1, точку пересечения отметим буквой F <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294544589"><img alt="" height="338" src="http://cs323122.vk.me/v323122815/7d9a/v8AkbSWuo8g.jpg" style="height: 338px; width: 400px;" title="" width="400" /></a> <br /><br />
2. Возьмем циркуль и проведем дугу, где центр будет точка - F, радиус
дуги будет - отрезок FSk, начало дуги в точке Sk, а ее конец на линии
горизонта в точке M. <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294544597"><img alt="" height="337" src="http://cs323122.vk.me/v323122815/7da1/XC-WxbqB7JM.jpg" style="height: 337px; width: 400px;" title="" width="400" /></a> <br />
Наша точка M - это специальная точка, ее название <b>масштабная точка</b>. Используя ее мы узнаем размеры отрезка AB <br /><br />
3. Через масштабную точку M проведем две линии, через точки A и B, до
основания картины. На основании картины отметим соот. точки Ao и Bo. <br /><br />
Реальный размер отрезка AB мы можем получить взяв линейку и померив ей отрезок AoBo <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294544602"><img alt="" height="357" src="http://cs323122.vk.me/v323122815/7da8/t57kdejqMF8.jpg" style="height: 357px; width: 400px;" title="" width="400" /></a> <br /><br />
4. Теперь отмерим на основании отрезок BoCo такой же по длине как и AoBo, и проведем линию из точки Co, до точки M. <br />
Линия пересечет прямую AB в точке C. <br />
Вот так мы и построили нужный нас отрезок BC. <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294544609"><img alt="" height="357" src="http://cs323122.vk.me/v323122815/7daf/3nKhYiEmzd8.jpg" style="height: 357px; width: 400px;" title="" width="400" /></a> Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-40382872601285916822013-07-25T17:02:00.002+06:002013-07-25T17:06:15.926+06:00 Перспективные масштабыВы уже знаете, что все предметы по мере удаления в даль на картине
уменьшаются в размерах, хотя в пространстве они как были так и остаются
не измененные. <br />
<br />
Напрашивается вопрос - как правильно отобразить размеры объекта в перспективе. <br />
Сначала рассмотрим три частных случая:
<br />
<ul class="listing">
<li><span class="l">Масштаб ширины - сокращение отрезков расположенных параллельно основанию картины </span></li>
<li><span class="l">Масштаб высоты - сокращение вертикальных отрезков </span></li>
<li><span class="l">Масштаб глубины - сокращение отрезков направленных в глубь картины, т.е. отрезки направленные в главную точку схода P </span></li>
</ul>
<a href="http://www.blogger.com/null" name="Масштаб ширины"></a><br />
<div class="wk_header">
<h2>
Масштаб ширины</h2>
</div>
Допустим у нас есть уже горизонтальный отрезок <i>AB</i> в перспективе, и есть еще точка <i>С</i> лежащая немного дальше этого отрезка. Необходимо построить перспективу горизонтального отрезка <i>CD</i> такой же длины как и <i>AB</i> <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294090406"><img alt="" height="364" src="http://cs323122.vk.me/v323122815/721e/RBOUTvWHJGI.jpg" style="height: 364px; width: 400px;" title="" width="400" /></a> <br />
<br />
<h3>
Алгоритм </h3>
1. Из точки <i>A</i> через точку <i>C</i> проведем до горизонта линию, точку пересечения обозначим буквой <i>F</i> <br />
2. Из точки <i>F</i> до точки <i>B</i> проведем вторую линию <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294090516"><img alt="" height="364" src="http://cs323122.vk.me/v323122815/7225/kD_q-iWztkA.jpg" style="height: 364px; width: 400px;" title="" width="400" /></a> <br />
<br />
3. Проводим горизонтальную линию из точки <i>C</i> до пересечения с прямой <i>FB</i>, точка пересечения - будет искомой точкой <i>D</i> <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294090657"><img alt="" height="364" src="http://cs323122.vk.me/v323122815/722c/O5cWuwkTKS0.jpg" style="height: 364px; width: 400px;" title="" width="400" /></a> <br />
<br />
<a href="http://www.blogger.com/null" name="Масштаб высоты"></a><br />
<div class="wk_header">
<h2>
Масштаб высоты</h2>
</div>
Масштаб высоты выполняется аналогично масштабу ширины <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294090699"><img alt="" height="364" src="http://cs323122.vk.me/v323122815/7233/f2sx2GUc1-k.jpg" style="height: 364px; width: 400px;" title="" width="400" /></a> <br />
<br />
<a href="http://www.blogger.com/null" name="Масштаб глубины"></a><br />
<div class="wk_header">
<h2>
Масштаб глубины</h2>
</div>
Теперь у нас немного другая ситуация, у нас есть отрезок <i>AB</i> который направлен строго в глубь, точка <i>B</i> пересекает основание картины. <br />
Нам необходимо построить перспективу отрезка <i>AB.</i> <br />
<br />
<a class="wk_photo" href="http://vk.com/photo30426815_294099122"><img alt="" height="400" src="http://cs323122.vk.me/v323122815/7242/wL0XQplC-RE.jpg" style="height: 400px; width: 250px;" title="" width="250" /></a> <br />
<br />
<h3>
Алгоритм </h3>
1. По скольку отрезок <i>AB</i> расположен перпендикулярно картинной плоскости, то точка схода прямой <i>AB</i> будет <i>P</i>. <br />
Проведем соот. линию <i>BP</i> - это будет перспектива прямой <i>AB</i>, но не отрезка <i>AB</i>, на еще необходимо найти точку <i>A</i> на этой прямой. <br />
<br />
2. Отложим от точки <i>B</i> вправо отрезок <i>BC</i> нужной длинны - такой же как и <i>AB</i>. <br />
<br />
3. Соединим прямой точки <i>AC</i>. <br />
<div align="left">
<a class="wk_photo" href="http://vk.com/photo30426815_294099750"><img alt="" height="400" src="http://cs323122.vk.me/v323122815/7252/8M2Z2aakUH0.jpg" style="height: 400px; width: 250px;" title="" width="250" /></a></div>
<br />
Теперь мы имеем прямую <i>AC</i> расположенную под 45 градусов, в соответствии о точках схода, эта прямая будет иметь точку схода <i>D</i> <br />
<br />
4. Нарисуем перспективу прямой <i>AC</i>, проведем из точки <i>C</i> в точку <i>D</i> прямую, точка пересечения прямых <i>CD</i> и <i>BP</i> - будет искомая точка <i>A</i>. <br />
<br />
<a class="wk_photo" href="http://vk.com/photo30426815_294097663"><img alt="" height="400" src="http://cs323122.vk.me/v323122815/723a/lgNx3UyLJy8.jpg" style="height: 400px; width: 250px;" title="" width="250" /></a> <br />
<br />
<h3>
Обратная задача </h3>
Теперь рассмотрим обратную задачу <br />
У нас есть уже нарисованная перспектива отрезка расположенного в глубь. В
дополнение у нас дистанционные точки выходят за границы листа <br />
<br />
Нам необходимо узнать размеры отрезка AB <br />
Вот ниже картинка этого случая <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294100151"><img alt="" height="305" src="http://cs323122.vk.me/v323122815/7261/1pCUNrDuYCk.jpg" style="height: 305px; width: 400px;" title="" width="400" /></a> <br />
<br />
<h3>
Алгоритм </h3>
1. Давай уменьшим величину <i>D</i> в два раза и отметим ее на горизонте как точка <i>D/2</i>. <br />
2. Проведем перспективу прямой <i>AB</i>, из точки <i>A</i>, через <i>B</i> и до точки <i>P</i> проведем прямую <br />
3. Теперь из точки <i>D/2</i> проведем две прямые через точки <i>A</i> и <i>B</i> до пересечения с основанием картины, <br />
4. Мы получили отрезок <i>AoBo</i> размером 5,6 см, по скольку он получен с использованием точки <i>D/2</i>, то реальный размер отрезка AB будет больше в два раза 5,6 * 2 = 11,2 см. <br />
<br />
Возможно использовать не только точки D/2, но и например D/4 и т.д.
соответственно реальные размеры необходимо будет увеличивать в
соответствующую кратность. <br />
<br />
<b>Пример построения перспективы квадрата</b> <br />
<div align="left">
<a class="wk_photo" href="http://vk.com/photo30426815_294100851"><img alt="" height="310" src="http://cs323122.vk.me/v323122815/7268/xUdpIu7W8_s.jpg" style="height: 310px; width: 400px;" title="" width="400" /></a></div>
В нашем примере точка D находится за пределами листа, по этому мы будем использовать точку D/2 <br />
Изначально у нас есть только точка P и отрезок 1-2 и мы хотим построить квадрат размером с этот отрезок. <br />
<br />
1. Проведем из точек <i>1</i> и <i>2</i> две прямых в точку <i>P</i> <br />
2. Возьмем отрезок <i>1-2</i> и разделим поровну получим два равных отрезка <i>1-5</i> и <i>5-2</i>, при использовании точки <i>D/2</i> отрезок <i>5-2</i> будет соответствовать боковой стороне квадрата. <br />
3. Из точки <i>5</i> проведем прямую до точки <i>D/2</i>, она пересечет прямую <i>2-P</i> в точке <i>3</i> <br />
4. Из точки <i>3</i> проведем горизонтальную прямую до пересечения с прямой <i>1-P</i>, в точке <i>4</i> <br />
<br />
Вот и все мы имеем перспективу квадрата с углами в точках 1,2,3,4
Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-13789161002395573942013-07-25T16:57:00.002+06:002013-07-25T17:22:43.552+06:00Перспектива паркетаТак же как и для <a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_3240.html">построения перспективы точки</a>, нам понадобятся следующее:
<br />
<ul class="listing">
<li><span class="l">Лист бумаги </span></li>
<li><span class="l">Длинная линейка </span></li>
<li><span class="l">Треугольная линейка </span></li>
<li><span class="l">Карандаш </span></li>
<li><span class="l"><a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_25.html">Основные понятия перспективы</a> </span></li>
<li><span class="l">Понятие о <a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_7063.html">совмещенной предметной плоскости</a> </span></li>
<li><span class="l">Понятие о <a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_1698.html">точках схода</a> </span></li>
</ul>
Рисунок будущего паркета у меня такой: <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294045971"><img alt="" height="177" src="http://cs323122.vk.me/v323122815/7131/y749XBid67c.jpg" style="height: 177px; width: 400px;" title="" width="400" /></a> <br />
По скольку все линии паркета располагаются под 45 градусов, то соответ.
эти линии в перспективе будут сходится в две точки, D и D1 (см. <a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_1698.html">Точки схода</a>) <br /><br />
Как я строил перспективу паркета <br />
1. Расстояние Sk P - взял с потолка, но по больше <br />
2. Высоту горизонта взял по меньше, чем расстояние SkP <br />
3. Провел линию горизонта <br />
4. На линии горизонта отметил центральную точку P <br />
5. Дистанционные точки D,D1 (они соответ. точкам схода 45 градусов)
отметил на линии горизонта, на расстояние равном SkP от точки P. <br />
6. Параллельно ниже провел линию основания картины на расстоянии соот. высоте горизонта <br />
7. Ниже линии основания нарисовал паркет, так если смотреть на него сверху <br /><br />
Вот что у меня на этом этапе соответственно получилось <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294045117"><img alt="" height="400" src="http://cs323122.vk.me/v323122815/7115/5qs6bH1CsCw.jpg" style="height: 400px; width: 327px;" title="" width="327" /></a> <br /><br />
8. Далее я пунктиром провел линии из основания картины в точки схода <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294045124"><img alt="" height="324" src="http://cs323122.vk.me/v323122815/711c/TfMOADQ8y2A.jpg" style="height: 324px; width: 400px;" title="" width="400" /></a> <br /><br />
9. Последним шагом я по намеченным пунктирным линиям закрасил
перспективные прямоугольники сверяясь с рисунком, и вот ниже вы можете
видеть результат <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294045131"><img alt="" height="324" src="http://cs323122.vk.me/v323122815/7123/c2zCLd9Ho78.jpg" style="height: 324px; width: 400px;" title="" width="400" /></a>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-63104454970864118232013-07-25T16:43:00.003+06:002013-07-25T17:22:25.569+06:00Перспектива точкиДля построения перспективы точки нам понадобится
<br />
<ul class="listing">
<li><span class="l">Лист бумаги </span></li>
<li><span class="l">Длинная линейка </span></li>
<li><span class="l">Треугольная линейка </span></li>
<li><span class="l">Карандаш </span></li>
<li><span class="l"><a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_25.html">Основные понятия перспективы</a> </span></li>
<li><span class="l">Понятие о <a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_7063.html">совмещенной предметной плоскости</a> </span></li>
<li><span class="l">Понятие о <a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_1698.html">точках схода</a> </span></li>
</ul>
В моем примере:
<br />
<ul class="listing">
<li><span class="l">лист бумаги составляет 12 см по горизонтали и 19 см по вертикали </span></li>
<li><span class="l">Расстояние SP равно 7 см (О точки зрения S до главной точки картины P) </span></li>
<li><span class="l">Высота горизонта от основания картины - 4 см </span></li>
</ul>
<h2>
<a href="http://www.blogger.com/null" name="Алгоритм построения "></a>Алгоритм построения </h2>
1) На предметной плоскости H" я произвольно отметил точку A", предлагаю вам отметить эту точку по ближе к краю листа <br />
<a class="wk_photo" href="http://vk.com/photo30426815_294036380"><img alt="" height="400" src="http://cs323122.vk.me/v323122815/70b6/2oOgHwhwy2E.jpg" style="height: 400px; width: 338px;" title="" width="338" /></a> <br />
<br />
2) От точки A" к основанию картины я провел перпендикуляр и отметил
точку пересечения Ao - основания картины (OO1) и проведенного
перпендикуляра <br />
<br />
3) По скольку все перпендикулярные линии (перпендикулярные к картине)
сходятся в главной точке P, я провел соот. линию от точки Ao до точки P <br />
<br />
<a class="wk_photo" href="http://vk.com/photo30426815_294036456"><img alt="" height="400" src="http://cs323122.vk.me/v323122815/70bd/-vyyNHHZ8xk.jpg" style="height: 400px; width: 339px;" title="" width="339" /></a> <br />
<br />
4) Из точки S до точки A" я провел прямую линию, и она пересекла
предыдущую перспективную линию Ao P, точка пересечения - это и есть
искомая перспектива точки A". Я ее отметил буквой A <br />
<br />
<a class="wk_photo" href="http://vk.com/photo30426815_294036175"><img alt="" height="400" src="http://cs323122.vk.me/v323122815/70a8/I2slVK3xhe4.jpg" style="height: 400px; width: 338px;" title="" width="338" /></a> <br />
<br />
<h2>
<a href="http://www.blogger.com/null" name="Построение прямоугольника "></a>Построение прямоугольника </h2>
Зная алгоритм, давайте построим перспективу прямоугольника лежащего на плоскости H" <br />
У меня получилось вот это: <br />
<br />
<a class="wk_photo" href="http://vk.com/photo30426815_294036643"><img alt="" height="400" src="http://cs323122.vk.me/v323122815/70c4/Ho3MkmgOb1A.jpg" style="height: 400px; width: 338px;" title="" width="338" /></a> <br />
<br />
К предыдущему рисунку я добавил три точки B", C" и D" и по антологии построил их перспективу
Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-42717303998419585592013-07-25T15:04:00.000+06:002013-07-25T16:39:40.232+06:00Точки сходаТочка схода - это такая точка на картине где сходятся вместе параллельные прямые, т.е. параллельные прямые они в пространстве не сходятся, а на картине сходятся.
Вот на пример железно дорожные линии
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Rsod46S3guU/UfDjQynguUI/AAAAAAAAC80/7c371QxO_2U/s1600/AqPYZIFjwUQ.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Rsod46S3guU/UfDjQynguUI/AAAAAAAAC80/7c371QxO_2U/s1600/AqPYZIFjwUQ.jpg" /></a></div>
Рассмотрим подробнее.
Я в 3D программе нарисовал три пары параллельных прямых: белые, синие и красные.
<br />
<ul class="listing">
<li><span class="l">Белые расположены перпендикулярно картине </span></li>
<li><span class="l">Синие повернуты на 20 градусов влево относительно белых </span></li>
<li><span class="l">Красные повернуты на 20 градусов вправо и на 5 градусов вверх </span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-mNWDxf8CSiQ/UfDkkuGDVAI/AAAAAAAAC9A/OPZvg8Rb1DU/s1600/RS6RDFFpuP8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-mNWDxf8CSiQ/UfDkkuGDVAI/AAAAAAAAC9A/OPZvg8Rb1DU/s1600/RS6RDFFpuP8.jpg" /></a></div>
И наблюдаем следующие закономерности
<br />
<ul class="listing">
<li><span class="l">Белые линии сходятся на горизонте в точке главной точке P </span></li>
<li><span class="l">Синие линии сходятся тоже на горизонте, но немного левее точки P, в точке F </span></li>
<li><span class="l">Красные линии сходятся во первых правее точки P, и выше линии горизонта, в точке W </span></li>
</ul>
<div class="ta_r wk_right">
<div style="text-align: right;">
<i>Обозначения F, V, W ... - это точки схода для произвольных прямых </i></div>
<div style="text-align: right;">
<i>согласно учебнику Соловьева</i></div>
</div>
Обобщая наблюдения можно заявить следующее:<br />
<b>Для двух и более параллельных прямых на картине будет одна общая точка схода</b>
<br />
<h2>
Частные случаи</h2>
Можно выделить несколько частных случаев для прямых.
Их три:
<br />
<ul class="listing">
<li><span class="l">Вертикальные прямые, они параллельны картине и ориентированы вертикально.
Для таких двух или более параллельных прямых нет общих точек схода. </span></li>
<li><span class="l">Горизонтальные прямые, они тоже параллельные картине и ориентированы горизонтально.
Для двух таких параллельных прямых, так же нет общих точек схода. </span></li>
<li><span class="l">Прямые перпендикулярные картине - для них всегда будет одна общая точка схода - главная точка P </span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-1SP6EBdL49I/UfDlXyNjZII/AAAAAAAAC9Q/Fh44h9YULy0/s1600/za5Hv7XPXlE.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-1SP6EBdL49I/UfDlXyNjZII/AAAAAAAAC9Q/Fh44h9YULy0/s1600/za5Hv7XPXlE.jpg" /></a></div>
<h2>
Точки схода на совмещенной плоскости</h2>
Теперь рассмотрим случай как выбирать точки схода для линий лежащих (либо параллельных) на предметной плоскости H.<br />
<div class="incut">
смотрите также понятие <a href="http://cofe-tv.blogspot.ru/2013/07/blog-post_7063.html">Совмещенна предметна плоскость</a></div>
Построим две прямые, одна под 45 градусов к картине, другая под 60 градусов:<br />
<br />
1) Соответственно для прямой под 45 градусов найдем точку схода D на горизонте, для этого из точки Sk проведем прямую под углом 45 градусов в линии горизонта, до пересечения с ним.
<div class="incut">
D - это специальная точка, ее название дистанционная.
Точки схода расположенные под 45 градусов называются дистанционными
и обозначаются буквами D и D1.
</div>
2) А для прямой в 60 градусов, сделаем аналогичное действие, эту точку обозначим буквой F<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-2T87j59EZvg/UfDmepLWk8I/AAAAAAAAC9c/4BwhQqSpPAg/s1600/UHxqDytKgwU.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="303" src="http://2.bp.blogspot.com/-2T87j59EZvg/UfDmepLWk8I/AAAAAAAAC9c/4BwhQqSpPAg/s400/UHxqDytKgwU.jpg" width="400" /></a></div>
А теперь нарисуем перспективу параллельных прямых 45 и 60 градусов
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-5N0TrvgJ2Sw/UfDmoSha9DI/AAAAAAAAC9k/eqLTpgL2zm4/s1600/Qr5Xdq7TkGc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="350" src="http://3.bp.blogspot.com/-5N0TrvgJ2Sw/UfDmoSha9DI/AAAAAAAAC9k/eqLTpgL2zm4/s400/Qr5Xdq7TkGc.jpg" width="400" /></a></div>
На рисунке пунктиром у нас обозначены прямые под 60 градусов, а сплошной линией прямые под 45 градусовGochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-42683936706792794842013-07-25T14:31:00.000+06:002013-07-25T14:31:43.894+06:00Совмещенная предметная плоскость При построение перспективного изображения пользуются таким методом как совмещенная предметная плоскость. <br />
<br />
Суть его сводится в том, что совмещают плоскость картины и предметную плоскость. <br />
<ol class="numbered">
<li><span class="l">Поворачивают луч зрения вверх на 90 градусов, вдоль линии горизонта </span></li>
<li><span class="l">Предметную плоскость поворачивают вниз на 90 градусов, вдоль основания картинной плоскости </span></li>
</ol>
Ниже на рисунке дано объяснение:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-rFq7HwhNvbI/UfDg5-4kpNI/AAAAAAAAC8M/Oy0N0Hkei7o/s1600/RnEmgbRvFmY.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://4.bp.blogspot.com/-rFq7HwhNvbI/UfDg5-4kpNI/AAAAAAAAC8M/Oy0N0Hkei7o/s400/RnEmgbRvFmY.jpg" width="400" /></a></div>
<div style="text-align: center;">
Начальное положение</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-6k2kdt5tL9o/UfDhBs-xvsI/AAAAAAAAC8U/af9VdK1UUoc/s1600/mw8FSGl4FfI.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://1.bp.blogspot.com/-6k2kdt5tL9o/UfDhBs-xvsI/AAAAAAAAC8U/af9VdK1UUoc/s400/mw8FSGl4FfI.jpg" width="400" /></a></div>
<div style="text-align: center;">
Повернули на 30 градусов</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-D32h4u5spPc/UfDhLFtcCOI/AAAAAAAAC8c/5bryE6-G1Tc/s1600/trqAIHhOwLQ.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://4.bp.blogspot.com/-D32h4u5spPc/UfDhLFtcCOI/AAAAAAAAC8c/5bryE6-G1Tc/s400/trqAIHhOwLQ.jpg" width="400" /></a></div>
<div style="text-align: center;">
Повернули на 60 градусов</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-1nE7Z1HMwkA/UfDhYSvJtFI/AAAAAAAAC8k/sfnABy9fAbA/s1600/Fr_u8SIlSLw.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://1.bp.blogspot.com/-1nE7Z1HMwkA/UfDhYSvJtFI/AAAAAAAAC8k/sfnABy9fAbA/s400/Fr_u8SIlSLw.jpg" width="400" /></a></div>
<div style="text-align: center;">
Повернули на 90 градусов, конечное положение</div>
<br />
Когда есть такая совмещенная плоскость с картинной - устанавливается перспективное соответствие. Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-61978584898411753082013-07-25T14:20:00.000+06:002013-07-25T14:20:17.225+06:00Основные понятия перспективыСлово<b> перспектива</b> с латыни <i>perspicere </i>означает смотреть сквозь. <br />
<br />
Сам предмет изучает изображение предметов объемного пространства на плоскости, без этих знаний тяжело будет постигать искусство рисования картин, по этому имеет прямой смысл обратиться к теории. <br />
<br />
Теория начинается с такого понятия как перспективный аппарат:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-cmGtyowOsoc/UfDSoeZ-g8I/AAAAAAAAC7w/ax8ft5L04XA/s1600/MhInH65_HtI.jpg" imageanchor="1"><img border="0" height="240" src="http://4.bp.blogspot.com/-cmGtyowOsoc/UfDSoeZ-g8I/AAAAAAAAC7w/ax8ft5L04XA/s400/MhInH65_HtI.jpg" width="400" /></a></div>
<br />
Это условный аппарат который можно представить в голове, но еще легче на бумаге <br />
На этом рисунке пресуствуют:
<br />
<ul class="listing">
<li><span class="l"><b>H</b> -Предметная плоскость, на ней расположен как и объект который рисуют (кубик), так и сам художник (точка зрения S) </span></li>
<li><span class="l"><b>К</b> - Картинная плоскость, в данном случаи картину
которую рисуют будет частью этой плоскости, эта картина не отображена на
рисунке. <br />
Картинная плоскость K расположена под углов в 90 градусов к Предметной плоскости H. </span></li>
<li><span class="l"><b>h h1</b> - Линия горизонта, она параллельна предметной
плоскости и находится на высоте глаз (отрезок от точки зрения S до
проекции этой точки s) </span></li>
<li><span class="l"><b>O O1</b> - Основание картины, точнее говоря линия
пересечения Картинной плоскости с Предметной плоскостью, сама картина
обычно находится на мольберте. </span></li>
<li><span class="l"><b>S</b> - точка зрения, </span></li>
<li><span class="l"><b>P</b> - Главная точка картины, она может находится как и по центру картины, так в ее углах. </span></li>
<li><span class="l"><b>SP</b> - Луч исходящий из глаза художника (S) и направленный в картинную плоскость перпендикулярно. </span></li>
<li><span class="l"><b>s</b> - Проекция точки зрения S на предметную плоскость H </span></li>
<li><span class="l"><b>p0</b> - Проекция главной точки P на предметную плоскость H </span></li>
<li><span class="l"><b>D, D1</b> - Дистанционные точки, они располагаются на
линии горизонта, их расстояние DP, PD1 и SP равны. Они нужны как
вспомагательные элементы для построения картины. </span></li>
<li><span class="l">Сам Кубик с параллельными линиями у его основания, проведенные до картинной плоскости <br /> </span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-7CXqwIY7zjw/UfDTw_K5zwI/AAAAAAAAC78/0pTx-TtWheU/s1600/Tq155Q3z__Q.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://1.bp.blogspot.com/-7CXqwIY7zjw/UfDTw_K5zwI/AAAAAAAAC78/0pTx-TtWheU/s400/Tq155Q3z__Q.jpg" width="400" /></a></div>
<span class="l"> </span><br />
<span class="l">Основные закономерности и отличия изображения кубика в перспективе и его
самого вы можете сами конечно перечислить, но я сделаю за вас:
</span><br />
<ul class="listing">
<li><span class="l">Передняя грань кубика, больше задней </span></li>
<li><span class="l">Реальный размер стороны куба указан на основании картины, через линии от его основания </span></li>
<li><span class="l">Если куб отодвигать ,по предметной плоскости, дальше
в глубь, то он будет уменьшаться в размерах на картине и приближаться к
линии горизонта (hh1) </span></li>
</ul>
Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-36250779165900600502013-07-25T12:18:00.000+06:002013-07-25T17:06:30.682+06:00Контроль процессов linux<b>Демоны liux</b><br />
<ul>
<li>man <a href="http://translated.by/you/man-start-stop-daemon-8-start-and-stop-system-daemon-programs/into-ru/">start-stop-daemon</a>(8) - запуск и остановка системных программ-демонов</li>
<li>man<a href="http://translated.by/you/man-update-rc-d-8-install-and-remove-system-v-style-init-script-links/into-ru/"> update-rc.d</a>(8) - установка и удаление ссылок сценариев инициализации в стиле System-V</li>
</ul>
<div>
<b><a href="http://ru.wikipedia.org/wiki/Fork_%D0%B1%D0%BE%D0%BC%D0%B1%D0%B0">fork-бомба</a></b></div>
<div>
<ul>
<li>Привязка процесса к определенному CPU в SMP системе под Linux<br /><a href="http://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=taskset&category=1"><b>taskset</b></a><br />пример: <a href="http://www.opennet.ru/tips/info/1017.shtml">http://www.opennet.ru/tips/info/1017.shtml</a></li>
<li><b>cpulimit</b> - процессу лимит использования ЦП (выражается в процентах, не в процессорном времени). Программа выставляет не значение nice или другие варианты приоритетов, а реальное использование процессора.<br /><a href="http://cpulimit.sourceforge.net/">source fourge</a></li>
</ul>
</div>
Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-4776730190406416902012-01-26T16:09:00.000+06:002016-10-08T01:18:02.962+05:00micro sfx zip installer<a href="http://cofe-tv.blogspot.com/2016/10/zipsfx.html" target="_blank">UPD Программа переехала на другой хостинг</a><br />
<br />
Написал небольшую программу, SFX ZIP архиватор, правильно сказать распаковщик.<br />
Особенность программы в том что создание <b>exe</b> архива создается при помощи простого, последовательно склеивания файлов:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">C:\Documents and Settings\user\Рабочий стол\sample-zip>copy /b zipsfx + options.txt + data.zip install.exe</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">zipsfx</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">options.txt</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">data.zip</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">Скопировано файлов: 1.</span><br />
<br />
<br />
Программа является "загрузчиком" инсталлятора.<br />
<br />
Умеет распаковывать во временную папку (переменная окружения TEMP) содержимое архива и запускаnm exe файл из распакованного архива с передачей ему аргументов.<br />
<br />
Не требует дополнительных DLL файлов, кроме тех что поставляются вместе с Windows (KERNEL32.DLL и MSVCRT.DLL).<br />
<br />
Скачать можно по этой ссылке <a href="http://jgef.googlecode.com/files/zipsfx">http://jgef.googlecode.com/files/zipsfx</a><br />
Распространяется по лицензии <a href="http://www.drupal.ru/license/gpl2ru" target="_blank">GPLv2</a>.<br />
<br />
Инструкцию по ее использованию вы можете найти здесь <a href="http://code.google.com/p/jgef/wiki/zipSfx">http://code.google.com/p/jgef/wiki/zipSfx</a><br />
исходники расположены там же, для доступа к ним советую воспользоваться каким нибудь <a href="http://ru.wikipedia.org/wiki/Subversion" target="_blank">SVN</a> клиентом.Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-4608302380541866992012-01-20T00:36:00.000+06:002012-01-20T00:53:39.978+06:00blogger tools<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-sQW0pYfwqIs/TxhimH5fI4I/AAAAAAAACqQ/gmv_KYNzHFM/s1600/22.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 2em;"><img border="0" height="156" src="http://3.bp.blogspot.com/-sQW0pYfwqIs/TxhimH5fI4I/AAAAAAAACqQ/gmv_KYNzHFM/s200/22.gif" width="200" /></a></div>
Создал инструмент для резервного копирования блога, а так же публикации постов (blogger.com / blogspot).<br />
<ul>
<li>Работает через командную строку</li>
<li>Экспорт и импорт постов используя формат html</li>
</ul>
<div>
Его можно использовать так же для публикации новых постов.</div>
<div>
Подробная инструкция расположена здесь <a href="http://code.google.com/p/blogger-tools/">http://code.google.com/p/blogger-tools/</a></div>
<div>
Ссылка на загрузку <a href="http://code.google.com/p/blogger-tools/downloads/list">http://code.google.com/p/blogger-tools/downloads/list</a><br />
<br />
Ключевые слова:<br />
<ul>
<li>GPL</li>
<li>Java</li>
<li>Crossplatform</li>
</ul>
</div>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-40421918958270168062011-10-12T02:16:00.000+06:002011-10-12T02:17:34.907+06:00Фотографии черепа человека<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-u2yfxnoPHuo/TpSjyxR1LDI/AAAAAAAACnw/eIerqrpGbUk/s1600/0_5fb4d_309a2d4_L.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-u2yfxnoPHuo/TpSjyxR1LDI/AAAAAAAACnw/eIerqrpGbUk/s320/0_5fb4d_309a2d4_L.jpg" width="212" /></a></div>
Когда я моделировал череп человека в Blender 3d, у меня не было хороших фотографий реального черепа. Конечно если поискать в сети, то фотографии можно найти, но....<br />
<br />
Но те фотографии что я нашел, они были фотографии разных черепов: одна фотография - череп в одном ракурсе, другая в другом ракурсе и вообще не того человека, или вообще хрень какая - то.<br />
<br />
Вот и получается чтобы изучить пластику/форму черепа и его костей, не хватает одной фотографии, надо много фотографий, с разных ракурсов, с хорошим разрешением, и хорошим качеством, а <b>главное:</b> <b>только одного черепа а не разных</b>, и не модели (гипсовой, пластмассовой, или какой-либо там) - а <b>реального черепа</b>, человеческого!.<br />
<br />
На реальном черепе (тот, что из кости) есть все детали, все нюансы, те которые обычно отсутствуют в моделях, т.к. считаются не важными, для изучаемого предмета.<br />
<br />
Так в анатомии Барчаии - фиг вы найдете хорошо и полного описания черепа человека, и уж тем более краниометрических точек. По не понятной причине, Барчаии мало уделил внимание к форме черепа, в отличии от Глицеску.<br />
<br />
В трехтомнике пластической анатомии Глицеску, есть подробное описание черепа для художника. Глицеску, рассматривает вопросы: общей анатомии черепа (то, что есть общее у всех), краниологии/антропологии (различии мужского от женского, разных рас и т.д.), морфологии черепа, а так же возрастных изменений, и дает описание по каким признакам рисовать портрет человека, как походить к вопросу изучения формы и пластики головы.<br />
<br />
Дабы вы не мучилась как я, с изучением черепа вот вам фотографии:<br />
<br />
<a href="http://fotki.yandex.ru/users/gochcha/view/392006">http://fotki.yandex.ru/users/gochcha/view/392006</a><br />
<br />
<object height="375" width="500"><param name="flashvars" value="author=gochcha&mode=album&effects=1&time=5&id=163299" />
<param name="bgcolor" value="#000000" />
<param name="movie" value="http://fotki.yandex.ru/swf/slideshow" />
<param name="allowFullScreen" value="true" />
<embed src="http://fotki.yandex.ru/swf/slideshow" allowFullScreen="true" width="500" height="375" flashvars="author=gochcha&mode=album&effects=1&time=5&id=163299" type="application/x-shockwave-flash" bgcolor="#000000" /></object>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-44106633830800344792011-10-04T09:31:00.000+06:002011-10-12T01:57:01.491+06:00Череп человека, модель Blender 3d<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-zoDMikxJPcI/Tol51wtrWDI/AAAAAAAACns/8tIgSSOHLxM/s1600/betta-03.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="http://4.bp.blogspot.com/-zoDMikxJPcI/Tol51wtrWDI/AAAAAAAACns/8tIgSSOHLxM/s400/betta-03.jpg" width="348" /></a></div>
Создал модель черепа человека с попыткой приблизить к реальной анатомии<br />
<br />
Вот <a href="http://dl.dropbox.com/u/21708112/design/2012-10-04/skull/skull.blend">ссылка</a> на файл blender 3d.<br />
<br />
Ниже еще картинки<br />
<hr size="1" style="clear: both;" />
<object width="500" height="375"><param name="flashvars" value="author=gochcha&mode=album&effects=1&time=5&id=169765" /><param name="bgcolor" value="#000000" /><param name="movie" value="http://fotki.yandex.ru/swf/slideshow" /><param name="allowFullScreen" value="true" /><embed src="http://fotki.yandex.ru/swf/slideshow" allowFullScreen="true" width="500" height="375" flashvars="author=gochcha&mode=album&effects=1&time=5&id=169765" type="application/x-shockwave-flash" bgcolor="#000000" /></object>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-73916899143307776892011-05-03T09:27:00.000+06:002013-07-25T12:17:07.087+06:00Отправка писем из командной строки<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-NqTDtK1kDdY/Tolm9cz7qaI/AAAAAAAACnc/zvNKaBTG1dc/s1600/img.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="227" src="http://3.bp.blogspot.com/-NqTDtK1kDdY/Tolm9cz7qaI/AAAAAAAACnc/zvNKaBTG1dc/s320/img.jpg" width="320" /></a></div>
Хорошая и удобная программа с исходниками находится <a href="http://caspian.dotconf.net/menu/Software/SendEmail/#download">тут</a> лицензия GPL v2<br />
<br />
Доступна для Linux, Windows, Mac, BSD, ....<br />
Устанавливать проблем особых нет - распаковать и запустить.<br />
Поддерживает SMTP аутентификацию (SSL, TLS, ...) и вложения.<br />
<br />
В управлении все просто:<br />
<img border="0" src="http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.png" />
<br />
<br />Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-18788756325261249222011-04-21T18:22:00.000+06:002011-10-03T10:11:59.340+06:00odt конвертер<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-VMRCDHeoZsg/Tok1_5zAkCI/AAAAAAAACmM/3RZ_lyemDUI/s1600/111px-ODFLogo2.svg.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-VMRCDHeoZsg/Tok1_5zAkCI/AAAAAAAACmM/3RZ_lyemDUI/s1600/111px-ODFLogo2.svg.png" /></a></div>
ODT Конвертер (odtExport) - это программулька написанная мною для конвертации файлов ODT в HTML.<br />
<br />
ODT файл - это файл текстового документа программы OpenOffice.<br />
<br />
Существует много программ по работе ODT файлом, и тем более для конвертации в HTML. Можно использовать встроенные функции OpenOffice, или поискать по просторам интернета оные программы.<br />
<br />
Но встроенная функциональность и тем более получающийся результат меня не устроил. Так в частности тяжко становится при попытке экспортировать документ который содержит код какой нибудь программы, и еще хуже становится работа со сносками, и таких казалось бы мелочей накопилось много. Ну ив довесок, а как быть если нет OpenOffice ? чем открыть odt ?<br />
<br />
Принял решение написать консольную программу для экспорта odt в html.<br />
<br />
Программа писалась на языке Scala и в текущей момент работает там где есть Java (<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JRE</a> 1.6.xxx или выше).<br />
Вот собственно <a href="http://code.google.com/p/odt-export/">ссылка на страницу с описанием</a> и на <a href="http://code.google.com/p/odt-export/downloads/list">страницу с дистрибутивом</a>.<br />
<br />
Пользоваться можно программой так:<br />
В командной строке набираете<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><i>Путь где установлена программа/</i><b>odtExport -input</b> <i>путь до файла.odt</i> <b>-output</b> <i>имя файла.html</i></span><br />
<br />
А вот пример работы:<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">$ odtExport -input /home/gocha/Программирование/worked/odtExport/sample/sample.odt </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">-output /home/gocha/Программирование/worked/odtExport/sample/sample.html </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">odtExport Версия 0.1 build 63. http://cofe.tv</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Используется язык "ru"</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Экспорт из /home/gocha/coding/test/BloggerCLI/binTarget/sample/sample.odt в </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">/home/gocha/coding/test/BloggerCLI/binTarget/sample/sample.html</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Создан файл </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">/home/gocha/coding/test/BloggerCLI/binTarget/sample/Pictures/10000000000001720000017</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">060F235D2.png</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Создан файл </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">/home/gocha/coding/test/BloggerCLI/binTarget/sample/Pictures/100000000000009F0000007</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">62085F2B3.png</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Создан файл </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">/home/gocha/coding/test/BloggerCLI/binTarget/sample/Pictures/100000000000016B0000012</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">BB24CC32E.png</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Создан файл </span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">/home/gocha/coding/test/BloggerCLI/binTarget/sample/Thumbnails/thumbnail.png</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Создан файл /home/gocha/coding/test/BloggerCLI/binTarget/sample/sample.html</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Создан файл /home/gocha/coding/test/BloggerCLI/binTarget/sample/style.css</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">Экспорт завершен</span><br />
<br />
Ссылки<br />
<ul>
<li><a href="http://code.google.com/p/odt-export/downloads/list">Скачать odtExport</a></li>
<li><a href="http://code.google.com/p/odt-export/">Исходники odtExport</a></li>
</ul>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-35932539099946802492011-04-08T01:22:00.000+06:002011-10-03T10:16:41.054+06:00Детский приемник распределитель "Созвездие Прометея"<div>
<div>
Сейчас закончил свертывать сайт посвященный детскому дому, ниже даны фотографии.</div>
<div>
Собственно говорить тут о нем что-то либо не могу, но сообщить считаю должным, на главной странице все написано.</div>
<div>
</div>
<div>
<br />
Главная страница: <a href="http://www.sozvezdieprometeya.ru/">http://www.sozvezdieprometeya.ru</a></div>
</div>
<div>
</div>
<br />
Фотографии из детского дома<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-CofMKQJx7ug/Tok3FPckjuI/AAAAAAAACmU/NdyjRJ1vVUA/s1600/0_569bc_9591ce4_L.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-CofMKQJx7ug/Tok3FPckjuI/AAAAAAAACmU/NdyjRJ1vVUA/s1600/0_569bc_9591ce4_L.jpg" /></a></div>
<br />
<br />
<br />
<a name='more'></a><br />
<br />
<a href="http://img-fotki.yandex.ru/get/4909/gochcha.f/0_569bd_3d73ccbc_orig"><img border="0" src="http://img-fotki.yandex.ru/get/4909/gochcha.f/0_569bd_3d73ccbc_XL.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/5804/gochcha.f/0_569ba_7f8bcded_orig"><img border="0" src="http://img-fotki.yandex.ru/get/5804/gochcha.f/0_569ba_7f8bcded_L.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/5605/gochcha.f/0_569c2_3599c85f_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/5605/gochcha.f/0_569c2_3599c85f_L.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/5109/gochcha.10/0_569c5_d3ca6830_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/5109/gochcha.10/0_569c5_d3ca6830_XXL.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/5007/gochcha.f/0_569c1_25b9ee1f_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/5007/gochcha.f/0_569c1_25b9ee1f_L.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/4809/gochcha.10/0_569c6_da5a33ae_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/4809/gochcha.10/0_569c6_da5a33ae_L.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/5904/gochcha.f/0_569be_b16eaf08_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/5904/gochcha.f/0_569be_b16eaf08_XL.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/4607/gochcha.f/0_569bf_a69e321d_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/4607/gochcha.f/0_569bf_a69e321d_L.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/4607/gochcha.f/0_569c3_4b612a40_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/4607/gochcha.f/0_569c3_4b612a40_L.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/4809/gochcha.f/0_569c0_3aa1c26_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/4809/gochcha.f/0_569c0_3aa1c26_L.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/4809/gochcha.10/0_569c7_8b90ca48_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/4809/gochcha.10/0_569c7_8b90ca48_XL.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/5603/gochcha.f/0_569c4_7f324afc_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/5603/gochcha.f/0_569c4_7f324afc_XL.jpg" width="500" /></a>
<br />
<br />
<a href="http://img-fotki.yandex.ru/get/5905/gochcha.10/0_569c8_9e6702c4_orig.jpg"><img border="0" src="http://img-fotki.yandex.ru/get/5905/gochcha.10/0_569c8_9e6702c4_L.jpg" width="500" /></a>
<br />
<br />
<object height="375" width="500"><param name="flashvars" value="author=gochcha&mode=album&effects=1&time=5&id=157196" />
<param name="bgcolor" value="#000000" />
<param name="movie" value="http://fotki.yandex.ru/swf/slideshow" />
<param name="allowFullScreen" value="true" />
<embed src="http://fotki.yandex.ru/swf/slideshow" allowFullScreen="true" width="500" height="375" flashvars="author=gochcha&mode=album&effects=1&time=5&id=157196" type="application/x-shockwave-flash" bgcolor="#000000" /></object>
<br />
<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Требуется</span><br />
<br />
Сумма, необходимая для проведения мероприятий и работ - 600 000 рублей.<br />
Перечень запланированных мероприятий:<br />
<br />
<ol>
<li>Ремонт санузла:<br />проведение вентиляции, замена сантехники, замена труб, отделочные работы, замена напольного покрытия;</li>
<li>Ремонт спальной комнаты:<br />замена напольного покрытия, замена окон и межкомнатных дверей, отделочные работы, замена гардин, штор, замена труб и радиаторов отопления;</li>
<li>Смена детской мебели: Столов, стульев, кроватей, мягкой мебели;</li>
<li>Обеспечение детей школьными принадлежностями, одеждой, игрушками.</li>
<li>Организация и проведение детского праздника, приуроченного к 1 мая.</li>
<li>Организация экскурсия для детей.</li>
</ol>
<div>
Контакты:</div>
<div>
<div>
<br /></div>
<div>
14а, ул. Свердлова, Сысертский р-н, г. Арамиль, Свердловская обл.</div>
<div>
624003</div>
<div>
8 (34374) 311-14</div>
</div>
<div>
<br /></div>
<div>
+7(343) 268-01-98, +7-904-987-65-55.</div>
<div>
<br /></div>
<div>
<br /></div>
<br />
<iframe frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.ru/maps?q=%D0%B3.+%D0%90%D1%80%D0%B0%D0%BC%D0%B8%D0%BB%D1%8C,+%D1%83%D0%BB.+%D0%A1%D0%B2%D0%B5%D1%80%D0%B4%D0%BB%D0%BE%D0%B2%D0%B0,+14%D0%B0&ie=UTF8&hl=ru&hq=%D0%B3.+%D0%90%D1%80%D0%B0%D0%BC%D0%B8%D0%BB%D1%8C,+%D1%83%D0%BB.+%D0%A1%D0%B2%D0%B5%D1%80%D0%B4%D0%BB%D0%BE%D0%B2%D0%B0,+14%D0%B0&hnear=&radius=15000&cid=4951564066074090025&ll=56.761004,60.855331&spn=0.131731,0.291824&z=11&iwloc=A&output=embed" width="425"></iframe><br />
<small><a href="http://maps.google.ru/maps?q=%D0%B3.+%D0%90%D1%80%D0%B0%D0%BC%D0%B8%D0%BB%D1%8C,+%D1%83%D0%BB.+%D0%A1%D0%B2%D0%B5%D1%80%D0%B4%D0%BB%D0%BE%D0%B2%D0%B0,+14%D0%B0&ie=UTF8&hl=ru&hq=%D0%B3.+%D0%90%D1%80%D0%B0%D0%BC%D0%B8%D0%BB%D1%8C,+%D1%83%D0%BB.+%D0%A1%D0%B2%D0%B5%D1%80%D0%B4%D0%BB%D0%BE%D0%B2%D0%B0,+14%D0%B0&hnear=&radius=15000&cid=4951564066074090025&ll=56.761004,60.855331&spn=0.131731,0.291824&z=11&iwloc=A&source=embed" style="color: blue; text-align: left;">Просмотреть увеличенную карту</a></small>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-54275198601196936302011-04-06T12:07:00.000+06:002011-05-03T09:12:43.301+06:00Запрет root пользователя для sshНашел <a href="http://www.howtogeek.com/howto/linux/security-tip-disable-root-ssh-login-on-linux/">заметку</a> о запрете root по ssh. Для этого необходимо:<br />
<br />
<ol>
<li>Поправить файл <span class="Apple-style-span" style="font-family: inherit;"><b>/etc/ssh/sshd_config</b></span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Рас комментировать строку<b> #PermitRootLogin no</b></span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Перезапустить sshd <b>/etc/init.d/sshd restart</b></span></li>
</ol>
<div>
К общим рекомендациям вообще использовать только вход по открытым ключам. Мол есть такая штука как bruteforce.</div>
<div>
<br /></div>
<div>
Для защиты от bruteforce, можно установить большое время ожидания между повторным вводом пароля:</div>
<div>
<b>LoginGraceTime 600</b></div>
<div>
Значение указывает время ожидания в секундах.</div>
<div>
<br /></div>
<div>
Можно запретить так же вход конкретным пользователям:</div>
<div>
<b>DenyUsers oracle</b></div>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-49429519921292244772011-02-23T03:25:00.000+05:002011-10-03T10:21:07.007+06:00Пропорции головыВот пропорции головы взятые из анатомии Бамеса и перерисованные мною:<br />
<br />
<b>Анфас</b><br />
<br />
<a href="http://img-fotki.yandex.ru/get/5905/gochcha.7/0_518b0_63f60232_XL.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://img-fotki.yandex.ru/get/5905/gochcha.7/0_518b0_63f60232_XL.jpg" width="640" /></a><b>Профиль</b><br />
<br />
<a href="http://1.bp.blogspot.com/-WdAUwzj-uCU/Tok3779kGZI/AAAAAAAACmc/O3Usg6Pnbmc/s1600/0_51836_5dcbb988_XL.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="451" src="http://1.bp.blogspot.com/-WdAUwzj-uCU/Tok3779kGZI/AAAAAAAACmc/O3Usg6Pnbmc/s640/0_51836_5dcbb988_XL.jpg" width="640" /></a>Пропорции головы в формате SVG: <a href="http://dl.dropbox.com/u/21708112/Anatomy/Face/Full%20face/anatomy-face-fullface-svg-simple.svg">Анфас</a>, <a href="http://dl.dropbox.com/u/21708112/Anatomy/Face/Profile/face-scheme-profile-svg-simple.svg">Профиль</a>, и в <a href="http://fotki.yandex.ru/users/gochcha/album/150900/?p=0">разрешении 300 dpi</a>.Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0tag:blogger.com,1999:blog-3503638447425414844.post-8957368659563539192010-11-16T16:47:00.000+05:002010-11-27T15:22:38.811+05:00Создание виртуальной машины DEBIAN в VIRTUALBOXОсновные шаги создания виртуальной машины DEBIAN в VIRTUALBOX состоят из следующих этапов:<br />
<ul><li>Вызов диалога создания виртуальной машины</li>
<li>Указания названия создаваемой машины и типа гостевой ОС</li>
<li>Указания размера виртуальной оперативной памяти</li>
<li>Указания размера виртуального жесткого диска</li>
<li>Подключения CDROM (ISO) образов</li>
<li>Указание настроек виртуального сетевого подключения</li>
</ul><br />
<a name='more'></a>Для практических занятий по развертыванию сервера DEBIAN лучше указать следующие параметры виртуальной машины:<br />
<br />
<table border="1" cellpadding="3" cellspacing="0"><tbody>
<tr> <td>Название виртуальной машины</td> <td>debian-practice</td> <td>Опционально</td> </tr>
<tr> <td>Тип операционной системы</td> <td>linux</td> <td>Крайне желательно</td> </tr>
<tr> <td>Версия</td> <td>debian</td> <td>Крайне желательно</td> </tr>
<tr> <td>Объем оперативной памяти</td> <td>256мб</td> <td>Желательно не меньше</td> </tr>
<tr> <td>Объем жесткого диска</td> <td>8гб</td> <td>Желательно не меньше</td> </tr>
<tr> <td>Объем видео памяти</td> <td>32мб</td> <td>Желательно не меньше</td> </tr>
<tr> <td>Сеть/адаптер 1/Тип подключения</td> <td>Внутренняя сеть</td> <td>Крайне желательно</td> </tr>
</tbody></table><br />
Ниже приводится пошаговая инструкция как это сделать.<br />
<br />
Указание начальных параметров<br />
В главном окне SUN VIRTUALBOX нажмите кнопку создать (рис 1)<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJr5oROzfI/AAAAAAAACVg/XLquVR8G0_k/s1600/dp1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJr5oROzfI/AAAAAAAACVg/XLquVR8G0_k/s1600/dp1.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 1</b></td></tr>
</tbody></table><br />
В окне мастера на русском языке по шагам даются инструкции следуя оным можно все настроить, нажмите кнопку далее (рис 2)<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/_7fujO4IzgzU/TOJsDph89xI/AAAAAAAACVk/WGB_qpudnrE/s1600/dp2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/_7fujO4IzgzU/TOJsDph89xI/AAAAAAAACVk/WGB_qpudnrE/s1600/dp2.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 2</b></td></tr>
</tbody></table><br />
Укажите как на рисунке 3 название (debian-practice), операционную систему (linux) и версию (debian)<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/_7fujO4IzgzU/TOJsKzgksiI/AAAAAAAACVo/axadV7zWz4U/s1600/dp3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/_7fujO4IzgzU/TOJsKzgksiI/AAAAAAAACVo/axadV7zWz4U/s1600/dp3.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 3</b></td></tr>
</tbody></table><br />
Укажите объем оперативной памяти желательно 256м, главное если будет превышен чем реально существует, то работать с виртуальной машиной будет очень затруднительно. см. рис 4.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJsUHqI8uI/AAAAAAAACVs/ahYUQfOCHuQ/s1600/dp4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJsUHqI8uI/AAAAAAAACVs/ahYUQfOCHuQ/s1600/dp4.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 4</b></td></tr>
</tbody></table><br />
<span class="Apple-style-span" style="font-size: x-large;">Создание виртуального жесткого диска</span><br />
Укажите виртуальный жесткий диск для данной машины, он будет создан в файле. Поставьте отметки: загрузочный ж. диск и создать новый ж. диск. см. рисунок 5.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/_7fujO4IzgzU/TOJsYw5Lu2I/AAAAAAAACVw/lD6valuG4fo/s1600/dp5.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/_7fujO4IzgzU/TOJsYw5Lu2I/AAAAAAAACVw/lD6valuG4fo/s1600/dp5.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 5</b></td></tr>
</tbody></table><br />
Появится диалог (рис 6) создания жесткого диска, нажмите далее.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJseQh07bI/AAAAAAAACV0/GKkOxCd5ZVE/s1600/dp6.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJseQh07bI/AAAAAAAACV0/GKkOxCd5ZVE/s1600/dp6.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 6</b></td></tr>
</tbody></table><br />
Укажите тип файл — динамически расширяющийся образ, для жесткого диска см. рис 7.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/_7fujO4IzgzU/TOJsjxvtV2I/AAAAAAAACV4/mK0LfJqrJrA/s1600/dp7.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/_7fujO4IzgzU/TOJsjxvtV2I/AAAAAAAACV4/mK0LfJqrJrA/s1600/dp7.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 7</b></td></tr>
</tbody></table><br />
На диалоге местоположения и размер укажите расположение (может оставить как есть, по умолчанию имя диска будет соответствовать имени машины), размер ж. диска укажите 8 гб. и нажмите далее см. рис 8.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/_7fujO4IzgzU/TOJss4TWHeI/AAAAAAAACV8/vFjGj2yVxl0/s1600/dp8.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/_7fujO4IzgzU/TOJss4TWHeI/AAAAAAAACV8/vFjGj2yVxl0/s1600/dp8.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 8</b></td></tr>
</tbody></table><br />
После появится окно (рис 9) с отчетом о создаваемом диске, если все устраивает нажмите готов или укажите другие параметры.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/_7fujO4IzgzU/TOJs2qq0inI/AAAAAAAACWA/V5DXcw1diVU/s1600/dp9.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/_7fujO4IzgzU/TOJs2qq0inI/AAAAAAAACWA/V5DXcw1diVU/s1600/dp9.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 9</b></td></tr>
</tbody></table><br />
Появится диалог — отчет (рис 10) о создаваемой виртуальной машине, если все устраивает нажмите готов или укажите другие параметры.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJs8MVJqHI/AAAAAAAACWE/Hf8463U7rSM/s1600/dp10.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJs8MVJqHI/AAAAAAAACWE/Hf8463U7rSM/s1600/dp10.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 10</b></td></tr>
</tbody></table><span class="Apple-style-span" style="font-size: x-large;">Указание дополнительных параметров</span><br />
После мастера-диалога необходимо указать такие параметры как:<br />
<br />
<ul><li>Объем видео памяти, если необходим графический режим</li>
<li>Источник установки — Физический привод CDROM или ISO образ диска DEBIAN.</li>
<li>Настройки локальной сети — внутренняя сеть</li>
</ul><br />
На рис. 11 изображено главное окно SUN VIRTUALBOX с созданной виртуальной машиной<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJtJ-QiqlI/AAAAAAAACWI/UazZ_gC_Kok/s1600/dp11.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="278" src="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJtJ-QiqlI/AAAAAAAACWI/UazZ_gC_Kok/s400/dp11.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 11</b></td></tr>
</tbody></table>Выберете ее и на вкладке Детали кликнете на пункт Общее (написано синим текстом), откроется общие настройки виртуальной машины (рис 12) укажите 32 мб. видео памяти.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/_7fujO4IzgzU/TOJuHLIx8_I/AAAAAAAACWM/ZnLXFm14yA0/s1600/dp12.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="297" src="http://3.bp.blogspot.com/_7fujO4IzgzU/TOJuHLIx8_I/AAAAAAAACWM/ZnLXFm14yA0/s400/dp12.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 12</b></td></tr>
</tbody></table><br />
В разделе CD/DVD-ROM укажите источник установки (ISO образ) и установите галку подключить CD/DVD см. рис 13.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJuQntYc1I/AAAAAAAACWQ/1NyxadWiI8I/s1600/dp13.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="310" src="http://4.bp.blogspot.com/_7fujO4IzgzU/TOJuQntYc1I/AAAAAAAACWQ/1NyxadWiI8I/s400/dp13.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 13</b></td></tr>
</tbody></table><br />
Если не указан (или указан не тот) ISO образ, то нажмите на пиктограмму с папкой ( ) на против пункта Файл ISO образа, откроется диалог (рис 14)<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/_7fujO4IzgzU/TOJuXnPb95I/AAAAAAAACWU/dpn738PjEZs/s1600/dp14.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="307" src="http://3.bp.blogspot.com/_7fujO4IzgzU/TOJuXnPb95I/AAAAAAAACWU/dpn738PjEZs/s400/dp14.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 14</b></td></tr>
</tbody></table><br />
Нажмите кнопку добавить и укажите файл ISO образа, затем выберете его и нажмите кнопку Выбрать (рис 14).<br />
<br />
В разделе Сеть, на вкладке Адаптер 1 укажите Включить сетевой адаптер и тип подключения — внутренняя сеть (рис 15).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/_7fujO4IzgzU/TOJujk-tjMI/AAAAAAAACWY/Few58pphWqA/s1600/dp15.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="295" src="http://1.bp.blogspot.com/_7fujO4IzgzU/TOJujk-tjMI/AAAAAAAACWY/Few58pphWqA/s400/dp15.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 15</b></td></tr>
</tbody></table><br />
Теперь все готово для установки DEBIAN LINUX на VIRTUALBOX.<br />
<br />
<span class="Apple-style-span" style="font-size: x-large;">Локальная — виртуальная сеть</span><br />
Для организация взаимодействия между двумя виртуальными компьютерами оба они должны быть в одной сети — например в внутренней сети см.Рисунок 16: .<br />
<br />
Так в последующих примерах используются два виртуальных компьютера организованные в одну сеть.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/_7fujO4IzgzU/TOJuvehfsuI/AAAAAAAACWc/LaKJPZH3whw/s1600/dp16.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/_7fujO4IzgzU/TOJuvehfsuI/AAAAAAAACWc/LaKJPZH3whw/s1600/dp16.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b>Рисунок 16: Учебная сеть</b></td></tr>
</tbody></table>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com1tag:blogger.com,1999:blog-3503638447425414844.post-45032836249795835272010-11-16T15:50:00.000+05:002011-10-03T10:46:59.089+06:00Добавляем новые возможности<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-wG6jHLzQL5A/Tok-ML2IReI/AAAAAAAACmg/Ll0woE7FQCI/s1600/gwt.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-wG6jHLzQL5A/Tok-ML2IReI/AAAAAAAACmg/Ll0woE7FQCI/s1600/gwt.png" /></a></div>
Теперь, когда вы разобрались с основами GWT, можно заняться изучением более специфичных возможностей, которые вам обязательно понадобятся как только вы начнёте создавать более сложные приложения.<br />
<ul>
<li>Использование удаленные вызов процедур (remote procedure calls)<br />
Вызов сервера с использованием GWT-RPC.</li>
<li>Интернационализация<br />
Перевод интерфейса StockWatcher на другой язык.</li>
<li>Поддержка JSON<br />
Получение данных формата JSON через HTTP сервер</li>
<li>Тестирование с помощью Junit<br />
Добавление unit-тестов.</li>
</ul>Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com1tag:blogger.com,1999:blog-3503638447425414844.post-23416145576843685102010-11-16T15:37:00.000+05:002012-12-01T01:22:37.800+06:00Учебник Google Web Toolkit<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-wG6jHLzQL5A/Tok-ML2IReI/AAAAAAAACmg/Ll0woE7FQCI/s1600/gwt.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-wG6jHLzQL5A/Tok-ML2IReI/AAAAAAAACmg/Ll0woE7FQCI/s1600/gwt.png" /></a></div>
Google Web Toolkit (GWT) — свободный Java фреймворк, который позволяет веб‐разработчикам создавать <a href="http://ru.wikipedia.org/wiki/Ajax">Ajax</a> приложения на основе <a href="http://ru.wikipedia.org/wiki/Java">Java</a>. Выпускается под <a href="http://ru.wikipedia.org/wiki/Apache_Software_License">лицензией Apache</a> версии 2.0. GWT делает акцент на повторное использование и кросс‐браузерную совместимость.<br />
<div style="text-align: right;">
<a href="http://ru.wikipedia.org/wiki/Google_Web_Toolkit">Взято из wiki</a></div>
<br />
Это неофициальный перевод руководства по использованию инструмента Google Web Toolkit. Учебник создан по личной инициативе переводчиков без содействия компании Google. Сам проект Google Web Toolkit находится по этому адресу (<a href="http://code.google.com/webtoolkit/">http://code.google.com/webtoolkit/</a>).<br />
<br />
Учебник написан по версии GWT 1.6, для GWT версии 2.0 или выше желательно использовать официальную документацию так как версия GWT 2.0 имеет значительные отличия от первой версии.1<br />
<br />
Вы уважаемый читатель можете внести свой вклад в данный учебник прислав свои замечания и пожелания или дополнения к данному учебнику по адресу указанному на сайте <a href="http://cofe-tv.blogspot.ru/">http://cofe-tv.blogspot.ru/</a> .<br />
<br />
Перевод осуществлен Камневым Георгием и Павлом Вязанкиным (pavel.vyazankin)<br />
<h1>
Учебник GWT</h1>
Это учебник по основам Google Web Toolkit (GWT), пошаговые уроки помогут вам создать учебное приложение просмотра состояния акций, данное приложение мы назовем "StockWatcher". Как нам построить приложение, вы узнаете из каждой части этого учебника GWT, в том числе библиотеку виджетов, работу в режиме отладки, вызов удаленных процедур Remote Procedure Calls, интернационализации, а также многое другое<br />
<br />
<img border="0" height="320" src="http://4.bp.blogspot.com/_7fujO4IzgzU/TN5KFs1rBxI/AAAAAAAACUE/A8bQAzbC3vw/s320/10000000000001B60000022D35839383.png" style="cursor: move;" width="251" /><br />
<br />
Ресурсы:<br />
<a href="https://docs.google.com/open?id=0B418nT5Bo9w_engtSTdpVDllY2s" target="_blank">Учебник в PDF</a><br />
<br />
Далее:<br />
<br />
<ul>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/gwt.html">Установка GWT</a></li>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/blog-post_8919.html">Создание проекта</a></li>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/blog-post_5644.html">Проектирование приложения</a></li>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/blog-post_7048.html">Создание пользовательского интерфейса</a></li>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/blog-post_6063.html">Добавление слушателей событий</a></li>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/blog-post_819.html">Реализация функциональности клиентской стороны</a></li>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/blog-post_4119.html">Добавляем новые возможности</a></li>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/blog-post_13.html">Использование удаленного вызова процедур</a></li>
<li><a href="http://cofe-tv.blogspot.ru/2010/11/google-web-toolkit-20.html">Google Web Toolkit 2.0 Новые возможности</a></li>
</ul>
Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com5tag:blogger.com,1999:blog-3503638447425414844.post-34696334014487740722010-11-15T02:56:00.000+05:002011-10-03T10:48:14.790+06:00Google Web Toolkit 2.0 Новые возможности<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-wG6jHLzQL5A/Tok-ML2IReI/AAAAAAAACmg/Ll0woE7FQCI/s1600/gwt.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-wG6jHLzQL5A/Tok-ML2IReI/AAAAAAAACmg/Ll0woE7FQCI/s1600/gwt.png" /></a></div>
Это не официальный перевод документации Google Web toolkit, оригинал <a href="http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html">What's New in 2.0</a>.<br />
Перевод по собственной инициативе осуществляли:<br />
<a href="http://www.blogger.com/post-edit.g?blogID=3503638447425414844&postID=3469633401448774072" name="tssf"></a>Васильев Андрей (<a href="http://www.google.com/profiles/112202968620375558084#buzz">http://www.google.com/profiles/112202968620375558084#buzz</a>) и<br />
<a href="http://www.blogger.com/post-edit.g?blogID=3503638447425414844&postID=3469633401448774072" name="oqt4"></a><a href="http://www.blogger.com/post-edit.g?blogID=3503638447425414844&postID=3469633401448774072" name="ei7q"></a>Камнев Георгий (<a href="https://www.google.com/profiles/100292672883824156195#buzz">https://www.google.com/profiles/100292672883824156195#buzz</a>)<br />
Вы уважаемый читатель можете внести свой вклад в данный учебник прислав свои замечания и пожелания или дополнения к данному учебнику по адресу указанному на сайте <a href="http://cofe.tv/">http://cofe.tv</a> (раздел Контакты).<br />
<a href="https://docs.google.com/leaf?id=0B418nT5Bo9w_YzQ2ODFjMmUtZTFhMi00YzQ2LWExOTktOGRmMzA0ODJhZTAx&sort=name&layout=list&num=50">PDF Версия</a><br />
<a name='more'></a><br />
<h2>
Новые возможности </h2>
<h2>
Режим разработки </h2>
Одно из самых больших изменений, которые вы заметите в версии 2.0 GWT - это режим разработки, который заменяет то, что раньше называлось "host mode" (режим хоста). До версии 2.0 отладка осуществлялась в "host" режиме при наличии специального браузера (это был переработанный firefox, входивший в состав SDK). Сейчас для версии GWT 2.0, веб-приложение разрабатывается и отлаживается в браузере (Safari, Firefox, Internet Explorer, и Chrome) c плагином Google Web Toolkit для разработчиков, который доступен для большинства популярных браузеров. Иными словами, теперь можно разрабатывать и отлаживать код для различных браузеров: Safari, Firefox, Internet Explorer, и Chrome. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/_7fujO4IzgzU/TN5jmio-DBI/AAAAAAAACVI/DHKF9yi7JPE/s1600/gwt-2.0-nf_html_m7cd7db90.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="317" src="http://3.bp.blogspot.com/_7fujO4IzgzU/TN5jmio-DBI/AAAAAAAACVI/DHKF9yi7JPE/s640/gwt-2.0-nf_html_m7cd7db90.png" width="640" /></a></div>
<br />
<br />
И не только это, исходный код даже не обязательно должен быть для той же операционной системой что и браузер! Например, можно разрабатывать и отлаживать код на Linux, пока ваше приложение работает в Internet Explorer на отдельной системе. Для получения дополнительной информации см. Руководство разработчика по отладке в режиме разработки. <br />
<br />
Используя отладку кода непосредственно в браузере, режим разработки позволяет использовать собственные, уникальные для каждого браузера, инструменты разработки в сочетании с отладкой Java. Так и есть, теперь вы можете отлаживать исходный код Java в Firefox и одновременно, использовать такие инструменты, как Firebug для просмотра DOM структуры и экспериментировать с CSS. То же относится к Safari и Инспектору, и так далее для других браузеров. <br />
<br />
Режим разработки также поддерживает меж-браузерную отладку кода, а это означает, что вы можете подключиться к сеансу отладки более чем одним типом браузера. Это особенно хорошо согласуется с возможностью покинуть работающую сессию режима разработки на продолжительное время, это позволяет простым обновления браузера просматривать результаты изменения в Java коде. Это отличный способ быстро убедиться, что ваш проект работает правильно во всех основных браузерах, без необходимости перезагрузки в отладчике Java. <br />
<br />
Наконец, новый плагин Google для Eclipse включает в себя поддержку запуска и управления режимом разработки, включая новый встроенный режим отображения логов (eclipse view), логи отображаются непосредственно в Eclipse. Кроме того, можно запустить режим разработки вручную, используя Swing-интерфейс можно работать совершенно вне контекста Eclipse, например в Netbeans (для Netbeans есть соответствующий плагин) или других IDE. <br />
<h2 class="western">
Анализ производительности Speed Tracer</h2>
<a href="http://3.bp.blogspot.com/_7fujO4IzgzU/TN5kPkcs4kI/AAAAAAAACVM/8aOw6IHY_LY/s1600/gwt-2.0-nf_html_m7e2ba07f.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="316" src="http://3.bp.blogspot.com/_7fujO4IzgzU/TN5kPkcs4kI/AAAAAAAACVM/8aOw6IHY_LY/s320/gwt-2.0-nf_html_m7e2ba07f.png" width="320" /></a>Speed Tracer это новый инструмент, который позволяет обнаружить и устранить проблемы производительности в web-приложениях. Он визуализирует измерения взятые из браузера и анализирует их во время работы приложения. Используя Speed Tracer, можно получить лучшее представление о том где тратится время в работе приложения.<br />
Speed Tracer разбивает приложение на следующие части: <br />
<ul>
<li>Синтаксический анализ JavaScript и его выполнение <br />
</li>
<li>Планировки (layouts) и всевозможные графики <br />
</li>
<li>Вычисление CSS стилей и селекторов CSS <br />
</li>
<li>Обработка событий DOM <br />
</li>
<li>Загрузка сетевых ресурсов <br />
</li>
<li>События таймера <br />
</li>
<li>XMLHttpRequest callbacks <br />
</li>
<li>и многое другое ... </li>
</ul>
См. Speed Tracer Getting Starting guide для более подробной информации. <br />
<h2>
Управляемое разработчиком разделение кода </h2>
Управляемое разработчиком разделение кода, позволяет разделить ваш GWT код на множество фрагментов для более быстрого старта. Представьте себе, что бы посмотреть весь фильм необходимо весь его загрузить. Ну, вот тоже вам нужно сделать с большинством приложений Ajax, скачать все целиком перед использованием. С расщеплением кода, вы можете загрузить минимальный сценарий, необходимый для получения интерактивного приложения, а остальные приложения загружаются по мере необходимости. <br />
<br />
Например, представьте, что вы создаете приложение электронной почты. Ваше приложение будет иметь некоторые ключевые компоненты, такие, как умение читать и писать письма. Тем не менее, у вас также будет много второстепенных функций, таких как редактирование профилей пользователей, настройка автоответчика, а также управление вашими контактами. С расщеплением кода, можно создавать приложение для скачивания только базовой функциональности, которая позволяет пользователям взаимодействовать с их электронной почтой в кратчайшие сроки. Код, необходимый для дополнительных функций, не будет загружаться, пока пользователь не потребует этого. <br />
<br />
Это может показаться сложным, но расщепление кода на самом деле легкое занятие. Просто найдите место в вашем проекте, где вы хотите разделить некоторый код и используйте метод GWT.runAsync () для создания точки разделения. Продолжая добавлять точки расщепления там, где это имеет смысл, вы можете легко и безопасно разделить код так что бы начальная загрузка когда была минимальна. Компилятор автоматически организует дополнительные фрагменты кода для загрузки позже. И, в отличие от расщепления вручную через тег <script type="text/javascript" ...>, компилятор GWT сделает весь этот тяжелый труд вручную, обеспечит, чтобы все зависимые части приложения загрузились в правильной последовательности автоматически. Для примера чтобы продемонстрировать расщепление кода см. приложение Витрина включенное в состав в GWT SDK, который был обновлен. <br />
<br />
См. Руководство разработчика по расщеплению кода для более подробной информации. <br />
<h2>
Оптимизация компилятора </h2>
В дополнение к расщеплению кода так же существуют фундаментальные улучшения способности компилятора генерировать JavaScript. С каждой новой версией GWT, мы добавляем оптимизацию компилятора, чтобы скомпилированный JavaScript был меньше и быстрее. Это большое преимущество, если у вас уже есть проекты GWT, потому что вы можете просто обновить, скомпилировать и - пуф - приложений запускается и работает быстрее. Действительно, GWT 2.0 включает в себя несколько удачных новых оптимизаций, и мы уже слышали анекдоты о сокращении размера в сжатом JavaScript от 3% до более чем 20% от исходного размера. <br />
<h2>
Сырая компиляция </h2>
Если вам нужно часто компилировать код в JavaScript - хотя и надеюсь режиме разработки потребность в этом будет не велика - вы можете использовать новый флаг компилятора draftCompile, который ускоряет компиляцию, пропуская оптимизации. Чтобы было ясно, вам определенно не следует развертывать (deploy) JavaScript скомпилированным таким образом, но можно сэкономить время на непроизводственных компиляциях (non-production builds). <br />
<h2>
Декларативный пользовательский интерфейс </h2>
С UiBinder, GWT теперь позволяет создавать пользовательские интерфейсы декларативно в XML вместо того, чтобы собрать их программно. Файл XML поддерживает следующие функции: код пользовательского интерфейса меньше, более удобен для чтения, проще в обслуживании и быстрее в разработке: <br />
<ul>
<li>Указание CSS стилей локально, без беспокойства о дублировании CSS имен. <br />
</li>
<li>Смешивание GWT виджетов с родным HTML для более быстрых и эффективных приложений. <br />
</li>
<li>Удобную поддержку связанных ресурсов и интернационализации. </li>
</ul>
UiBinder это отличный способ сотрудничества программистов с дизайнерами пользовательского интерфейса, которым более привычно использовать XML, HTML, CSS чем Java код. Он также облегчает переход от HTML макетов к реальному интерактивному виджету. Например, разработчики могут копировать / вставить HTML-код предоставляемый веб-дизайнерами. Мы также видели, что некоторые веб-дизайнеры, любят изменять UiBinder XML шаблоны и использовать быстрый цикл режима разработки отредактировать/обновить, пока они экспериментируют с дизайном интерфейса. Это гораздо веселее проектировать с использованием интерактивных виджетов, чем пассивное издевательство над HTML.<br />
<br />
UiBinder также помогает предотвратить попадание мелких ошибок, такие как опечатки в идентификаторах, в продукте путем проверки всех перекрестных ссылок между .ui.xml и .java файлами во время компиляции.<br />
<br />
Чтобы помочь вам эффективно использовать UiBinder Google плагин для Eclipse в настоящее время обеспечивает поддержку UiBinder-а своими wizarda-ми, завершение кода, подсветка ошибок, и рефакторинг. <br />
<br />
Демо приложение Mail было обновлено, чтобы показать практический пример использования UiBinder. Вы также можете прочитать Руководство разработчика по декларативной компоновке с UiBinder для получения дополнительной информации. <br />
<h2>
Панели компоновки </h2>
Создать такой внешний вид вашего пользовательского интерфейса какой вы хотите традиционно является сложным с HTML и CSS. До 2.0 GWT, даже виджеты GWT были не в состоянии полностью абстрагироваться от некоторых проблем с компоновкой, которые могут возникнуть. Однако, GWT 2.0 представляет панели компоновки, которые действительно позволяют надежно создавать нужный макет. Демо-приложение Mail в GWT SDK было обновлено, чтобы показать вам, как это работает <br />
<br />
Панели компоновки создают предсказуемую, основанную на ограничениях систему компоновки поверх стандартного CSS. Потому что это работает с CSS, а не вопреки ему, панели компоновки продолжают работать предсказуемо в присутствии пользовательских стилей CSS, которые вы возможно захотите включить. И потому, что основанный на CSS макет выполняется внутри, на движке браузера, JavaScript для этого не понадобится. В результате, макет работает быстро и плавно - вы можете заметить скорость особенно при изменении размера окна браузера. <br />
<br />
Как и следовало ожидать, работа панелей компоновки, особенно хороша с UiBinder. Только несколькими строками из XML, можно создать очень сложные схемы, в том числе анимированные переходы, сплиттеры и многое другое. <br />
<h2>
Связанные ресурсы с помощью ClientBundle </h2>
GWT представил ImageBundle в версии 1.4, чтобы обеспечить автоматический spriting изображений. ClientBundle обобщает эту технику, принося мощность объединения и оптимизации ресурсов в один загружаемый файл для таких вещей, как текстовые файлы, CSS и XML. Это означает меньшее количество обращений к сети, которая, в свою очередь, может уменьшить латентность приложения, особенно на мобильных устройствах. Смотрите в Руководстве разработчика, раздел по ClientBundle, для дополнительной информации. <br />
<h2>
Тестирование с помощью HtmlUnit </h2>
GWT версии 2.0 теперь кроссплатформен, GWTTestCase больше не использует SWT или native версии кода фактических браузеров для запуска модульных тестов. Вместо этого он использует HtmlUnit как встроенный браузер. Так как HtmlUnit полностью написана на языке Java, то уже нет native кода участвующего в типичной тестируемой разработке. Отладку GWT тестов в режиме разработки можно произвести исключительно в отладчике Java. <br />
<br />
Кроме того, GWT предлагает множество способов выполнения тестов в различных обозревателях, включая поддержку выполнения тестов в режиме разработки на любом браузере. См. Руководство разработчика разделы HtmlUnit и тестирование с помощью JUnit для получения дополнительной информации. <br />
<h2>
Обновление </h2>
Есть 3 задачи, связанные с обновлением 1.7 GWT проекта до GWT 2.0 проекта: <br />
<ul>
<li>Скачать GWT 2,0 и обновить ваши конфигурации запуска. <br />
</li>
<li>HostedMode был заменен DevMode, так что вам будет необходимо обновить настройки проекта в Eclipse соответственно. <br />
</li>
<li>Тесты в настоящее время работают в HtmlUnit по умолчанию. Вам нужно будет изменить некоторые из ваших тестов для работы с HtmlUnit. </li>
</ul>
<h2>
Загрузка GWT 2.0 </h2>
Скачайте GWT 2.0 со страницы загрузки и распакуйте его в папку по вашему выбору. GWT 2.0 поставляется в одном zip-архиве для всех платформ, так что вам не нужно загружать пакеты для каждой платформы. Если вы используете Eclipse для разработки, вы должны также скачать плагин Google для Eclipse на той же странице загрузки. <br />
<br />
Обновите путь сборки вашего GWT-проекта для использования последних GWT-user.jar и GWT-dev.jar (и любые другие jar файлы GWT, те что вы включили в ваш classpath). Заменить ссылки на gwt-dev-<платформа>.jar ссылками на новый gwt-dev.jar (больше нет суффикса конкретной платформы). <br />
<br />
Обновите конфигурации запуска или компиляции и shell-скрипты, чтобы включить в последние JAR-ы в classpath (те же Jar-ы, что упомянуты в пункте 2). <br />
<br />
Выполните компиляцию вашего GWT проекта для создания последних GWT-файлов приложения для вашего проекта. <br />
<br />
Развертывайте последние GWT-файлы приложения на ваш веб-сервер. <br />
<h2>
Переход от HostedMode к DevMode </h2>
После обновления библиотек (jar) до версии 2.0, вы увидите следующее сообщение при запуске режима разработки с использованием HostedMode: <br />
<div align="LEFT" style="background: #e6e6e6; border: 1px solid #000000; margin-bottom: 0cm; margin-left: 0.5cm; margin-right: 0.5cm; orphans: 0; padding: 0.1cm; page-break-after: auto; text-indent: 0cm; widows: 0;">
<span style="font-family: FreeMono, monospace;"><span style="font-size: x-small;"><b>[WARN] The class com.google.gwt.dev.HostedMode is deprecated and will be removed -- </b></span></span> </div>
<div align="LEFT" style="background: #e6e6e6; border: 1px solid #000000; margin-bottom: 0cm; margin-left: 0.5cm; margin-right: 0.5cm; orphans: 0; padding: 0.1cm; page-break-after: auto; text-indent: 0cm; widows: 0;">
<span style="font-family: FreeMono, monospace;"><span style="font-size: x-small;"><b>use com.google.gwt.dev.DevMode instead. </b></span></span> </div>
В целях устранения этого предупреждения, следует изменить свой основной класс com.google.gwt.dev.HostedMode на com.google.gwt.dev.DevMode. <br />
<br />
Как только вы запускаете режим разработки, вы можете выбрать для запуска браузер по умолчанию или скопировать URL режима разработки в буфер обмена и вставить его в свой любимый браузер. В любом случае, вам будет предложено установить Google Web Toolkit плагин в первый раз, когда вы подключите Ваш браузер к серверу кода в режиме разработки. Установите плагин и перезапустите браузер. <br />
Для получения дополнительной информации об отладке в режиме разработки, прочитайте Руководство разработчика по отладке в режиме разработки. <br />
<h2>
HtmlUnit и Тесты </h2>
В GWT 2.0, GWTTestCases использует HtmlUnit как встроенный браузер. HtmlUnit является браузером без графического интерфейса (GUI) на базе Java, который имитирует другие популярные браузеры, такие как Firefox (по умолчанию) или Internet Explorer. Это означает, что тесты выполняются быстрее и отладка в режиме разработки может быть сделана исключительно в отладчике Java. <br />
<br />
Так как HtmlUnit браузер без GUI, макет не может быть проверен на HtmlUnit. Пример теста компоновки - проверка offsetWidth в виджете прикрепленном к странице. Вам нужно будет аннотировать любые тестовые методы и классы, основанные на компоновке, с помощью @DoNotRunWith, чтобы они не выполнялись с использованием HtmlUnit. <br />
<br />
HtmlUnit иногда ведет себя несколько иначе, чем реальные браузеры, которые он имитирует. В частности, асинхронные тесты порой ведут себя непредсказуемо в HtmlUnit. Вы можете указать, сколько раз тест должен быть выполнен повторно передав -Xtries n (где n количество повторов теста перед сообщением об ошибке) в JUnitShell. Для получения дополнительной информации, читайте Руководство разработчика, раздел по HtmlUnit. <br />
<br />
Если вы хотите запустить GWTTestCases в реальном браузере, например, потому что они используют макет, вам придется использовать один из других стилей запуска тестирования. Все стили запуска поддерживают оба способа тестирования, в режиме разработки и в продуктивном режиме (production). <br />
<ul>
<li>Ручной режим позволяет копировать и вставлять URL в браузер, где тест будет выполняться. Это полезная опция для выполнения тестов во время разработки. <br />
</li>
<li>Стиль запуска Selenium проходит тесты подключаясь к серверу Selenium, который является идеальным выбором для систем непрерывной сборки. <br />
</li>
<li>Стиль запуска Remote Web проходит тесты на системе с работающим BrowserManagerServer предоставляемом GWT. Это альтернативная форма удаленного тестирования, если Selenium не отвечает вашим потребностям. </li>
</ul>
Смотрите Руководство разработчика раздел о тестировании с помощью JUnit для получения дополнительной информации. <br />
<br />
Примечание: В GWT 2.0, термин "веб режим" был переименован в "production режим". Таким образом, при запуске тестов в режиме промышленной эксплуатации, вам нужно передать -prod флаг в JUnitShell вместо флага -web, который в настоящее время устарел.Gochaorghttp://www.blogger.com/profile/02598711504166531665noreply@blogger.com0