Культурный офтопик
 help / color / mirror / Atom feed
From: Eugene Prokopiev <prokopiev@stc.donpac.ru>
To: "культурный офтопик" <smoke-room@lists.altlinux.org>
Subject: [room] Лекция по Java
Date: Wed, 25 Oct 2006 14:43:40 +0400
Message-ID: <453F3FDC.4030304@stc.donpac.ru> (raw)
In-Reply-To: <20061025083002.GA32347@localhost.localdomain>

> Что следует изучать первое, для возможности запуска приложений с
> минимальными требованиями к конфигурации сервера (то есть либо CGI, либо,
> если это требует какого-либо модуля апача -- то это то что есть в Сизифе)?

Первое: пусть польют меня грязью, но я в данном вопросе сторонник 
недистрибутивного подхода, из Сизифа меня интересует только JDK/JRE. 
Обоснование: продукт должен работать не только в ALT, и не только в 
Linux (даже в качестве IDE я использую Eclipse в Linux, но со мной 
работает один человек в Windows и один еще не определился :) ). Более 
того, мне хочется, чтобы он собирался везде, где нет ничего, кроме JDK. 
Поэтому мне пока проще таскать все необходимые библиотеки с собой, они у 
меня лежат прямо в CVS вместе с исходниками. Я задницей чувствую, что 
когда-нибудь это начнет меня напрягать, когда потребуется гарантировать 
одинаковые версии библиотек в разных проектах, и тогда я буду смотреть 
на maven, а пока мне достаточно ant. Грубые аналогии: ant - это make, 
maven - это hasher/spt :)

Далее: CGI в виде отдельных процессов на каждый запрос в Java никто в 
здравом уме делать не станет - это слишком дорого. Основа всех 
технологий - это сервлеты, которые выглядят так:

public class Hello extends HttpServlet {

     public void doGet(HttpServletRequest request,
                       HttpServletResponse response)
         throws IOException, ServletException {

	response.setContentType("text/html");
	PrintWriter writer = response.getWriter();

	writer.println("<html>");
	writer.println("<head>");
	writer.println("<title>Sample Application Servlet Page</title>");
	writer.println("</head>");
	writer.println("<body bgcolor=white>");
	writer.println("</body>");
	writer.println("</html>");

     }

}

Принцип ясен?

Есть надстройки над этим - template engines типа JSP и Velocity, которые 
позволяют писать в стиле PHP, т.е. html + вставки кода. Кстати, Velocity 
как template engine используется в проектах, которые к web никаким боком.

Есть надстройки над этими надстройками :) Есть другие надстройки над 
сервлетами. Начать читать можно отсюда - 
http://www.techinfo.net.ru/docs/web/javawebdev.html

Об инфраструктуре: минимальное web-приложение выглядит так:

$ ls -lR
.:
итого 24
-rwxr-xr-x  1 john john  296 Фев 19  2006 build.sh
-rw-r--r--  1 john john 2124 Окт 25 13:23 build.xml
drwxr-xr-x  2 john john 4096 Окт 25 13:24 docs
drwxr-xr-x  2 john john 4096 Окт 25 13:21 lib-build
drwxr-xr-x  3 john john 4096 Янв 25  2005 src
drwxr-xr-x  4 john john 4096 Янв 25  2005 web

./docs:
итого 4
-rw-r--r--  1 john john 62 Авг 28  2004 README.txt

./lib-build:
итого 1556
-rw-r--r--  1 john john 999966 Фев 19  2006 ant.jar
-rw-r--r--  1 john john 407573 Фев 19  2006 ant-nodeps.jar
-rw-rw-rw-  1 john john  31642 Авг 13  2005 commons-logging.jar
-rw-r--r--  1 john john 132263 Фев 19  2006 javax.servlet.jar

./src:
итого 4
drwxr-xr-x  2 john john 4096 Авг 28  2004 mypackage

./src/mypackage:
итого 4
-rw-r--r--  1 john john 3165 Авг 28  2004 Hello.java

./web:
итого 16
-rw-r--r--  1 john john 1019 Авг 28  2004 hello.jsp
drwxr-xr-x  2 john john 4096 Авг 28  2004 images
-rw-r--r--  1 john john  636 Авг 28  2004 index.html
drwxr-xr-x  3 john john 4096 Окт 25 13:24 WEB-INF

./web/images:
итого 4
-rw-r--r--  1 john john 1441 Авг 28  2004 tomcat.gif

./web/WEB-INF:
итого 8
drwxr-xr-x  2 john john 4096 Янв 25  2005 lib
-rw-r--r--  1 john john  684 Фев  6  2005 web.xml

./web/WEB-INF/lib:
итого 0

web/WEB-INF/web.xml - это дескриптор вида:

<!DOCTYPE web-app
     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

     <display-name>Hello, World Application</display-name>
     <description>
         This is a simple web application with a source code organization
         based on the recommendations of the Application Developer's Guide.
     </description>

     <servlet>
         <servlet-name>HelloServlet</servlet-name>
         <servlet-class>mypackage.Hello</servlet-class>
     </servlet>

     <servlet-mapping>
         <servlet-name>HelloServlet</servlet-name>
         <url-pattern>/hello</url-pattern>
     </servlet-mapping>

</web-app>

Класс Hello мы уже рассматривали :)

build.xml (и вызывающий его build.sh) умеет строить из этого дерева 
файлов war-архив. Этот архив можно разными способами продеплоить в 
Tomcat: например, скопировать его в определенный каталог, который он 
мониторит на предмет появления новых приложений. Будет это приложение 
работать и в других контейнерах вроде Jetty и Resin, а также в тяжелых 
серверах приложений вроде JBoss и Geronimo, которые содержат встроенные 
сервлет-контейнеры (коими являются Tomcat и Jetty :) ).

Мне больше нравится Jetty, т.к. он легче, меньше, проще, понятнее ... 
Взять маленький Jetty можно тут - 
http://lib.juga.ru/article/articleview/222/1/0?PrintableVersion=enabled

Т.е. Apache web server здесь отдыхает. Его подставляют как frontend. 
Можно ли задействовать nginx - не в курсе.

Архив приложения ушел в личку ...

Но это все классика.

Если хочется странного (FastCGI), то пишется обычное java-приложение, 
которое обменивается с web-сервером через сокеты.

Такое приложение можно писать, забыв о наличии каких-либо frameworks. Но 
если я знаю, что будет много относительно независимых и взамозаменямых 
модулей (и я узнаю о том, какие конфигурации будут нужны, только на 
этапе внедрения), то я задействую Spring.

Стартовый класс:

public class Main {

	public static void main(String[] args) throws InterruptedException {
		
		if (args.length > 0) {
			final AbstractApplicationContext ctx =
				new FileSystemXmlApplicationContext(new String []{args[0]});
			ctx.registerShutdownHook();
			A a = (A)ctx.getBean("a");
			a.doSomething();
			Thread.sleep(Long.MAX_VALUE);
		} else {
			System.err.println("Usage : java mypackage.Main <context.xml>");
             System.exit(-1);
		}
	}

}

В нем я загружаю все мои модули из внешнего конфигурационного файла 
(контекста в терминах Spring), а затем получаю ссылку на модуль а и 
вызываю один из его методов. Вывод на консоль после запуска java 
mypackage.Main conf/beans.xml:

INFO  CollectionFactory                - JDK 1.4+ collections available
INFO  XmlBeanDefinitionReader          - Loading XML bean definitions 
from file [/home/john/workspace/SpringApp/conf/beans.xml]
INFO  FileSystemXmlApplicationContext  - Bean factory for application 
context 
[org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=11850709]: 
org.springframework.beans.factory.support.DefaultListableBeanFactory 
defining beans [a,b]; root of BeanFactory hierarchy
INFO  FileSystemXmlApplicationContext  - 2 beans defined in application 
context 
[org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=11850709]
INFO  FileSystemXmlApplicationContext  - Unable to locate MessageSource 
with name 'messageSource': using default 
[org.springframework.context.support.DelegatingMessageSource@173831b]
INFO  FileSystemXmlApplicationContext  - Unable to locate 
ApplicationEventMulticaster with name 'applicationEventMulticaster': 
using default 
[org.springframework.context.event.SimpleApplicationEventMulticaster@13caecd]
INFO  DefaultListableBeanFactory       - Pre-instantiating singletons in 
factory 
[org.springframework.beans.factory.support.DefaultListableBeanFactory 
defining beans [a,b]; root of BeanFactory hierarchy]
INFO  B                                - init
INFO  A                                - init
INFO  B                                - do something

Затем жду, пока пользователь не нажмет Ctrl+C :) Вывод:

INFO  FileSystemXmlApplicationContext  - Closing application context 
[org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=11850709]
INFO  DefaultListableBeanFactory       - Destroying singletons in 
factory 
{org.springframework.beans.factory.support.DefaultListableBeanFactory 
defining beans [a,b]; root of BeanFactory hierarchy}
INFO  A                                - destroy
INFO  B                                - destroy

Конфигурационный файл со связями между модулями a и b выглядит так:

<beans>
	<bean id="a" class="mypackage.A" init-method="init" 
destroy-method="destroy">
		<property name="c" ref="b"/>
	</bean>
	<bean id="b" class="mypackage.B" init-method="init" 
destroy-method="destroy"/>
</beans>

Вот как выглядит класс B:

public class B implements C {	
	private Log log = LogFactory.getLog(getClass());
	public void init() {
		log.info("init");
	}
	public void destroy() {
		log.info("destroy");
	}
	public void doSomething() {
		log.info("do something");
	}
}

Он реализует интерфейс С:

public interface C {
	public void doSomething();
}

Который, в свою очередь, используется классом А:

public class A {	
	private Log log = LogFactory.getLog(getClass());
	private C c;
	public void setC(C c) {
		this.c = c;
	}
	public void init() {
		log.info("init");
	}
	public void destroy() {
		log.info("destroy");
	}
	public void doSomething() {
		c.doSomething();
	}
}

Удобство Spring в том, что он:

1) позволяет декларативно описать, кто кого и как должен вызвать, что с 
какими параметрами должно быть инициализировано - но тут реализация 
HiveMind может быть даже более изящна

2) подключить готовые модули, например, для доступа к БД и т.д - вот тут 
равных Spring'у нет

Рассмотрим последнее на примере задействования технологии JMX. Пусть в 
процессе работы приложения обслуживающий персонал должен вызывать 
зачем-то метод A.doSomething(). Мы описываем класс A как implements 
AMBean, последний выглядит так:

public interface AMBean {
	public void doSomething();
}

Теперь исправляем beans.xml:

<beans>
	
	<bean id="mbeanServer" 
class="org.springframework.jmx.support.MBeanServerFactoryBean"/>
     <bean id="exporter" 
class="org.springframework.jmx.export.MBeanExporter">
		<property name="beans">
         	<map>
             	<entry key="bean:name=A" value-ref="a"/>
             </map>
		</property>
		<property name="assembler">
			<bean 
class="org.springframework.jmx.export.assembler.SimpleReflectiveMBeanInfoAssembler"/>
		</property>
         <property name="server" ref="mbeanServer"/>
	</bean>
	<bean id="myBean" class="MyBean"/>
     <bean id="serverConnector" 
class="org.springframework.jmx.support.ConnectorServerFactoryBean">
		<property name="objectName" value="connector:name=rmiConnector"/>
        	<property name="serviceUrl" 
value="service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"/>
         <property name="threaded" value="true"/>
         <property name="daemon" value="true"/>
         <property name="server">
			<ref local="mbeanServer"/>
         </property>
	</bean>
	<bean id="registry" 
class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
		<property name="port" value="1099"/>
	</bean>
	
	<bean id="a" class="mypackage.A" init-method="init" 
destroy-method="destroy">
		<property name="c" ref="b"/>
	</bean>
	<bean id="b" class="mypackage.B" init-method="init" 
destroy-method="destroy"/>
	
</beans>

После запуска приложения запускаем jconsole, подключаемся к 
service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi без логина/пароля, 
находим в дереве наш класс и вызываем doSomething

Архив с проектом ушел в личку ...

Кто скажет, что это не изящно, пусть бросит в меня камень :)

Да, похоже я исполнил мечту г-на dlaygovta@ :)

Денис, если все это тебе еще интересно, то в качестве оплаты лекции 
прошу написанное причесать и куда нибудь на f.i. выложить :)

>>EP>> А если хочется "FastCGI, темплейтов и прочей радости, а также компилятор 
>>EP>> в неё с простого PHP-like язычка" - то бишь именно своего велосипеда - 
>>EP>> то вообще непонятно, что в PHP есть такого, что ты предпочел именно его 
>>EP>> ... К слову, компиляторов в байт-код JVM с различных функциональных и 
>>EP>> императивных языков довольно много
> 
> 
>>>Скорее уж проще самому налабать интерпретатор на той же жабе.
> 
> EP> Свой DSL? Возможно, есть смысл посмотреть в сторону antlr ...
> 
> Посмотрю.
> 
> Кстати о. Какие наиболее простые средства a-la flex/bison сейчас есть в
> Java?

кажется, именно antlr и есть

>>>PHP было выбрано как меньшее из зол. То бишь либо самому делать весь стек,
>>>либо не строить из себя идеалиста а просто сделать чтобы хорошо работало.
>>>Но я все равно ищу что-то куда свалить.
> 
> EP> :)
> EP> Прелесть Java не в языке. Язык средний, в частностях вроде интерфейсов и 
> EP> анонимных классов лучше предшественника (C++), а в некоторых более 
> EP> глобальных вопросах (класс String ;) ) просто потрясающий своей 
> EP> нелогичностью. Хотя привыкнуть можно :)
> 
> Меня String убивает именно тем, что код который на perl том же занимает
> несколько символов и понятен -- на Java получается простыня кода :)

В Java есть регулярные выражения - не помогут?

> EP> Прелесть именно в окружении. В наличии спецификаций, в конкурирующих и 
> EP> относительно совместимых реализаций этих спецификаций. В количестве 
> EP> библиотек (один jakarta.apache.org чего стоит). В средствах сборки типа 
> EP> ant/maven. В неплохих IDE вроде Eclipse и IDEA, хотя, конечно, для 
> EP> любителей vim/emacs это не аргумент :)
> 
> Другая проблема -- в отличии от perl, где фактически все в одной коробке,
> Java имеет больший порог вхождения чтобы знать какой из модулей наиболее
> применим для данной задачи. Именно из-за конкуренции.

Есть такая беда :)

Многие "левые" решения имеют тенденцию к помещению к коробку, правда, 
иногда в изуродованном виде, так что удобнее оказывается использовать 
то, что осталось вне коробки :) Яркий пример - механизмы 
протоколирования вроде встроенного, log4j и унифицированного commons logging

>>>Ну, в жабе в этом смысле все можно сделать красиво, если я правильно
>>>понял. Спрятать вообще доступ к SQL в объеты, реализовать для них
>>>интерфейсе serializable после чего сделать кэш. Вот во всяких PHP-подобных
>>>это уже оказывается куда тяжелее.
> 
> EP> А в Java даже есть готовое вроде JBoss Tree Cache :)
> 
> :)

У меня как-то был соблазн к нему подступиться, но потом понял, что узкое 
место было не здесь ...

-- 
С уважением, Прокопьев Евгений



  reply	other threads:[~2006-10-25 10:43 UTC|newest]

Thread overview: 205+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-12 22:25 ` [room] ну почему мы такие страшные Sergey Stepanov
2006-10-13  0:02   ` Денис Смирнов
2006-10-14 16:54     ` [room] новички Michael Shigorin
2006-10-14 19:51       ` Денис Смирнов
2006-10-15 18:27         ` [room] комоды Michael Shigorin
2006-10-15 22:46           ` Денис Смирнов
2006-10-16 11:35             ` [room] IA: комоды += mithraen@ Michael Shigorin
2006-10-16 18:22               ` Maxim Tyurin
2006-10-16 19:40                 ` [room] IA: комоды += mrkooll@ Michael Shigorin
2006-10-16 18:19         ` [room] новички Maxim Tyurin
2006-10-16 20:14           ` Денис Смирнов
2006-10-16 21:20             ` Michael Shigorin
2006-10-17  8:10               ` Денис Смирнов
2006-10-17  8:20                 ` Evgenii Terechkov
2006-10-17 19:21                   ` Michael Shigorin
2006-10-18  0:54                     ` Evgenii Terechkov
2006-10-18  7:02                       ` Michael Shigorin
2006-10-18  8:08                         ` Evgenii Terechkov
2006-10-17 20:34                   ` Maxim Tyurin
2006-10-18  0:51                     ` Evgenii Terechkov
2006-10-18  8:31                       ` Maxim Tyurin
2006-10-18  9:24                         ` Evgenii Terechkov
2006-10-18  9:33                           ` Maxim Tyurin
2006-10-18 10:10                             ` Evgenii Terechkov
2006-10-18 10:22                               ` Maxim Tyurin
2006-10-18 15:07                                 ` Evgenii Terechkov
2006-10-18 20:44                                   ` Michael Shigorin
2006-10-19  5:46                                     ` Dmytro O. Redchuk
2006-10-19  5:58                                       ` Evgenii Terechkov
2006-10-19 23:08                                         ` Michael Shigorin
2006-10-20  3:58                                           ` Evgenii Terechkov
2006-10-19 23:07                                       ` [room] whitespace (не язык) Michael Shigorin
2006-10-20  3:46                                         ` Evgenii Terechkov
2006-10-20  8:16                                           ` Michael Shigorin
2006-10-20  9:18                                             ` Maxim Tyurin
2006-10-20 11:46                                               ` Michael Shigorin
2006-10-20 12:09                                                 ` Maxim Tyurin
2006-10-20 12:23                                             ` Evgenii Terechkov
2006-10-19  5:55                                     ` [room] новички Evgenii Terechkov
2006-10-19 23:05                                       ` Michael Shigorin
2006-10-20  3:56                                         ` Evgenii Terechkov
2006-10-20  3:57                                         ` Evgenii Terechkov
2006-10-19 16:01                                     ` Maxim Tyurin
2006-10-19 15:57                                   ` Maxim Tyurin
2006-10-19 17:33                                     ` Evgenii Terechkov
2006-10-19 17:57                                       ` Maxim Tyurin
2006-10-19 19:52                                         ` Evgenii Terechkov
2006-10-20  9:15                                           ` Maxim Tyurin
2006-10-20 12:32                                             ` Evgenii Terechkov
2006-10-19 18:28                                       ` Денис Смирнов
2006-10-20 19:44                                         ` Aleksey Korotkov
2006-10-20 22:02                                           ` Денис Смирнов
2006-10-21 19:47                                             ` Aleksey Korotkov
2006-10-21 20:22                                               ` Денис Смирнов
2006-10-21 22:16                                                 ` Michael Shigorin
2006-10-21 22:45                                                   ` Денис Смирнов
2006-10-22 11:18                                                     ` Michael Shigorin
2006-10-22 21:01                                                       ` Денис Смирнов
2006-10-22 21:20                                                 ` Aleksey Korotkov
2006-10-22 21:28                                                   ` [room] язычки и библиотечки Michael Shigorin
2006-10-23  6:15                                                     ` Eugene Ostapets
2006-10-23  7:36                                                       ` Michael Shigorin
2006-10-23  7:53                                                         ` Eugene Ostapets
2006-10-23 12:21                                                           ` Maxim Tyurin
2006-10-23 12:38                                                             ` Dmitriy L. Kruglikov
2006-10-24  1:48                                                             ` Денис Смирнов
2006-10-24 10:44                                                               ` Maxim Tyurin
2006-10-23 18:21                                                           ` Michael Shigorin
2006-10-23 18:30                                                             ` Eugene Ostapets
2006-10-23 19:18                                                               ` Michael Shigorin
2006-10-23 19:26                                                                 ` Eugene Ostapets
2006-10-24 10:35                                                                   ` [room] язычки и библиотечки [fin?] Michael Shigorin
2006-10-23  8:10                                                         ` [room] язычки и библиотечки Денис Смирнов
2006-10-23 20:14                                                         ` Aleksey Korotkov
2006-10-24 10:33                                                           ` Michael Shigorin
2006-10-24 22:57                                                             ` Aleksey Korotkov
2006-10-25 10:18                                                               ` Michael Shigorin
2006-10-23  8:24                                                     ` Денис Смирнов
2006-10-23 18:19                                                       ` Michael Shigorin
2006-10-24  1:55                                                         ` Денис Смирнов
2006-10-24  7:03                                                           ` Michael Bochkaryov
2006-10-24  8:54                                                             ` Денис Смирнов
2006-10-24 10:30                                                               ` [room] wackowiki Michael Shigorin
2006-10-24 10:49                                                                 ` [room] lustre Eugene Prokopiev
2006-10-24 15:07                                                                   ` Michael Shigorin
2006-10-24 16:04                                                                 ` [room] wackowiki Денис Смирнов
2006-10-24 16:08                                                                   ` Igor Zubkov
2006-10-24 16:47                                                                     ` Денис Смирнов
2006-10-24 17:51                                                                       ` [room] wackowiki vs mediawiki Igor Zubkov
2006-10-24 19:20                                                                         ` Michael Shigorin
2006-10-25  3:47                                                                           ` Денис Смирнов
2006-10-24 19:37                                                                       ` [room] wackowiki Michael Shigorin
2006-10-25  3:40                                                                         ` Денис Смирнов
2006-10-25 10:10                                                                           ` Michael Shigorin
2006-10-25 17:13                                                                             ` Денис Смирнов
2006-10-25 18:38                                                                               ` Michael Shigorin
2006-10-25 21:17                                                                                 ` Aleksey Korotkov
2006-10-26 21:01                                                                                   ` Michael Shigorin
2006-10-26  4:36                                                                                 ` Денис Смирнов
2006-10-28 14:26                                                                                   ` Michael Shigorin
2006-10-28 16:02                                                                                     ` Денис Смирнов
2006-10-29 17:44                                                                                       ` Michael Shigorin
2006-10-29 20:49                                                                                         ` Денис Смирнов
2006-10-30  7:48                                                                                           ` Michael Shigorin
2006-10-30 13:32                                                                                             ` Денис Смирнов
2006-10-30 17:19                                                                                               ` Igor Zubkov
2006-11-01  9:22                                                                                                 ` Денис Смирнов
2006-11-01 17:11                                                                                                   ` Igor Zubkov
2006-11-01 21:08                                                                                                     ` Денис Смирнов
2006-10-31  9:47                                                                                               ` Michael Shigorin
2006-11-01  9:20                                                                                                 ` Денис Смирнов
2006-10-31  9:49                                                                                               ` Michael Shigorin
2006-11-01  9:21                                                                                                 ` Денис Смирнов
2006-10-30 16:59                                                                                   ` Igor Zubkov
2006-11-01  9:20                                                                                     ` Денис Смирнов
2006-10-30 16:58                                                                                 ` Igor Zubkov
2006-10-31  3:16                                                                                   ` Evgenii Terechkov
2006-10-25  6:47                                                               ` [room] язычки и библиотечки Michael Bochkaryov
2006-10-25  7:16                                                                 ` Eugene Prokopiev
2006-10-28  8:18                                                                   ` Michael Bochkaryov
2006-10-25  8:35                                                                 ` Денис Смирнов
2006-10-25 10:07                                                                   ` Michael Shigorin
2006-10-25 17:15                                                                     ` Денис Смирнов
2006-10-24 10:28                                                             ` Michael Shigorin
2006-10-24  8:58                                                           ` Eugene Prokopiev
2006-10-24 15:57                                                             ` Денис Смирнов
2006-10-24 19:35                                                               ` [room] java off the rails Michael Shigorin
2006-10-25  3:37                                                                 ` Денис Смирнов
2006-10-25  6:21                                                                   ` Eugene Prokopiev
2006-10-25  6:39                                                                     ` Eugene Prokopiev
2006-10-25 10:05                                                                   ` Michael Shigorin
2006-10-25 16:59                                                                     ` Денис Смирнов
2006-10-25  6:00                                                               ` [room] язычки и библиотечки Eugene Prokopiev
2006-10-25  8:30                                                                 ` Денис Смирнов
2006-10-25 10:43                                                                   ` Eugene Prokopiev [this message]
2006-10-25 10:53                                                                     ` [room] Лекция по Java Eugene Prokopiev
2006-10-25 16:50                                                                     ` Eugene Prokopiev
2006-10-25 18:10                                                                     ` Денис Смирнов
2006-10-25 18:34                                                                       ` Michael Shigorin
2006-10-26  4:39                                                                         ` Денис Смирнов
2006-10-26  8:05                                                                           ` Eugene Prokopiev
2007-02-25 21:48                                                                             ` Денис Смирнов
2007-02-25 22:10                                                                               ` Eugene Prokopiev
2007-02-25 22:20                                                                                 ` Денис Смирнов
2007-02-25 22:56                                                                                   ` Eugene Prokopiev
2007-02-26 14:01                                                                                     ` Денис Смирнов
2006-10-26  7:47                                                                       ` Eugene Prokopiev
2007-02-25 22:01                                                                         ` Денис Смирнов
2007-02-25 22:52                                                                           ` Eugene Prokopiev
2007-02-26 14:05                                                                             ` Денис Смирнов
2007-02-26 20:16                                                                               ` Eugene Prokopiev
2007-02-26 20:51                                                                                 ` Денис Смирнов
2007-02-26  5:50                                                                           ` Eugene Prokopiev
2007-02-26 14:09                                                                             ` Денис Смирнов
2007-02-26 20:07                                                                               ` Eugene Prokopiev
2006-10-25 10:45                                                                   ` [room] язычки и библиотечки Eugene Prokopiev
2006-10-25 10:03                                                                 ` Michael Shigorin
2006-10-25  6:57                                                               ` Michael Bochkaryov
2006-10-25  8:37                                                                 ` Денис Смирнов
2006-10-24 10:27                                                           ` Michael Shigorin
2006-10-24 16:01                                                             ` Денис Смирнов
2006-10-24 19:44                                                               ` Michael Shigorin
2006-10-25  3:36                                                                 ` Денис Смирнов
2006-10-24 19:44                                                               ` [room] mod_security article (was: язычки и библиотечки) Michael Shigorin
2006-10-23 20:09                                                     ` [room] язычки и библиотечки Aleksey Korotkov
2006-10-24 10:22                                                       ` Michael Shigorin
2006-10-24 23:12                                                         ` Aleksey Korotkov
2006-10-25 10:19                                                           ` Michael Shigorin
2006-10-25 15:46                                                             ` Aleksey Korotkov
2006-10-25 18:39                                                               ` Michael Shigorin
2006-10-25 21:19                                                                 ` Aleksey Korotkov
2006-10-23  8:08                                                   ` [room] новички Денис Смирнов
2006-10-23 20:08                                                     ` Aleksey Korotkov
2006-10-24  1:46                                                       ` Денис Смирнов
2006-10-24 10:22                                                         ` [room] г-флейм Michael Shigorin
2006-10-24 10:27                                                           ` Денис Смирнов
2006-10-24 22:44                                                         ` [room] новички Aleksey Korotkov
2006-10-25  3:29                                                           ` Денис Смирнов
2006-10-25 10:00                                                             ` Michael Shigorin
2006-10-25 16:38                                                               ` Денис Смирнов
2006-10-25 18:25                                                                 ` Michael Shigorin
2006-10-26  4:14                                                                   ` Денис Смирнов
2006-10-25 15:07                                                             ` Aleksey Korotkov
2006-10-25 16:57                                                               ` Денис Смирнов
2006-10-25 21:07                                                                 ` Aleksey Korotkov
2006-10-26  4:28                                                                   ` Денис Смирнов
2006-10-26 13:39                                                                     ` Aleksey Korotkov
2006-10-26 15:10                                                                       ` Денис Смирнов
2006-10-25  9:58                                                           ` Michael Shigorin
2006-10-25 15:30                                                             ` Aleksey Korotkov
2006-10-25 18:27                                                               ` [room] смайлЫ Michael Shigorin
2006-10-25 21:14                                                                 ` Aleksey Korotkov
2006-10-25 16:35                                                             ` [room] новички Денис Смирнов
2006-10-18 11:11                               ` [room] язЫки программирования Michael Shigorin
2006-10-18 11:22                                 ` Maxim Tyurin
2006-10-18 15:08                                 ` Evgenii Terechkov
2006-10-18 11:10                           ` [room] новички Michael Shigorin
2006-10-18 15:12                             ` Evgenii Terechkov
2006-10-19 16:04                               ` Maxim Tyurin
2006-10-19 17:19                                 ` Evgenii Terechkov
2006-10-19 18:00                                   ` Maxim Tyurin
2006-10-19 18:57                                     ` Evgenii Terechkov
2006-10-19 23:10                                       ` Michael Shigorin
2006-10-20  3:53                                         ` Evgenii Terechkov
2006-10-23  6:59                                   ` Dmytro O. Redchuk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=453F3FDC.4030304@stc.donpac.ru \
    --to=prokopiev@stc.donpac.ru \
    --cc=smoke-room@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Культурный офтопик

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/smoke-room/0 smoke-room/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 smoke-room smoke-room/ http://lore.altlinux.org/smoke-room \
		smoke-room@lists.altlinux.org smoke-room@lists.altlinux.ru smoke-room@lists.altlinux.com smoke-room@altlinux.ru smoke-room@altlinux.org smoke-room@altlinux.com
	public-inbox-index smoke-room

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.smoke-room


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git