<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>З.П.И. &#187; Java</title>
	<atom:link href="http://wiki.dodex.org/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://wiki.dodex.org</link>
	<description>Что-то новое пришедшее в голову или интересное, найденное в интернете</description>
	<lastBuildDate>Tue, 08 Nov 2011 10:16:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Задачи для начинающих Java программистов</title>
		<link>http://wiki.dodex.org/2008/12/03/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b8-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d1%85-java-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%be%d0%b2/</link>
		<comments>http://wiki.dodex.org/2008/12/03/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b8-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d1%85-java-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%be%d0%b2/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 09:15:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[задачки]]></category>
		<category><![CDATA[новичок]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=442</guid>
		<description><![CDATA[Тоже понравилось. Действительно, изучать новый язык лучше на конкретном проекте, практически. Ну а если нет проекта, помогут задачки, о чем и пойдет речь ниже. В продолжение моего поста &#8220;Начинающим Java программистам&#8221; публикую очередную свою шпаргалку, а именно список задач, которые я обычно даю новичкам. Опытным разработчикам они покажутся тривиальными, а только начинающим изучать Java, причём [...]]]></description>
			<content:encoded><![CDATA[<p>Тоже понравилось. Действительно, изучать новый язык лучше на конкретном проекте, практически. Ну а если нет проекта, помогут задачки, о чем и пойдет речь ниже.</p>
<p><span id="more-442"></span></p>
<p>В продолжение моего поста &#8220;<a href="http://habrahabr.ru/blogs/java/43293/">Начинающим Java программистам</a>&#8221; публикую очередную свою шпаргалку, а именно список задач, которые я обычно даю новичкам. Опытным разработчикам они покажутся тривиальными, а только начинающим изучать Java, причём самостоятельно, надеюсь будут в самый раз. Так же если Вы используете какие-то ещё задачи для обучения, то поделитесь ими, пожалуйста.:) Так как мне, иногда, как-то не по себе в &#8230;-цатый раз рассказывать стажёрам одну и ту же задачу — пусть даже они её слышат впервые:)<br />
<a name="habracut"></a><br />
Задачи выстроены в порядке увеличения сложности. Каждая задача так же имеет несколько степеней «развития», каждая из которых нацелена на привлечение новых пакетов и т.д.</p>
<h4>Задача: Аналог grep</h4>
<p>Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации подаваемой на вход и на выходе показывала лишь те строчки, которые содержат слово передаваемое программе на вход в качестве аргумента.</p>
<p>Варианты усложнения:</p>
<ol>
<li>Программа не должна учитывать регистр</li>
<li>В аргументах может быть передано не одно слово, а несколько</li>
<li>В качестве аргумента может быть задано не конкретное слово, а <a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5">регулярное выражение</a></li>
</ol>
<h4>Задача: Аналог Sort</h4>
<p>Написать консольную программу, которая бы сортировала текст поданный ей на стандартный вход по алфавиту.</p>
<p>Варианты усложнения:</p>
<ol>
<li>Программа должна игнорировать регистр при сортировке</li>
<li>Программа должна сортировать не по алфавиту, а по количеству символов в строке</li>
<li>Программа в качестве аргумента может получать порядковый номер слова в строке, по которому надо сортировать строки</li>
</ol>
<h4>Задача: чат</h4>
<p>Задача состоит из этапов, в конце которых должен получиться стандартный консольный чат.</p>
<ol>
<li>Реализовать консольную программу, которая бы открывала серверный сокет на порту 1234. При подключении клиента программа должна выводить все то, что передал клиент. Удостовериться в работоспособности можно попробовав подключиться с помощью системной программы telnet. В дальнейшем будем эту программу называть <em>серверной частью</em></li>
<li>Усложнить программу и сделать так, чтобы можно было подключиться одновременно нескольким клиентам посредством telnet</li>
<li>Реализовать другую консольную программу, которая по сути была бы аналогом telnet — т.е. подключалась к заданному IP на порт 1234 и отправляла бы на сервер строчку введённую пользователем по нажатию enter. В дальнейшем будем эту программу называть <em>клиентской частью</em> или просто <em>клиентом</em></li>
<li>Усложнить серверную часть программы таким образом, чтобы пришедшее сообщение от одного пользователя отправлялось сразу всем пользователям, которые подключены в данный момент к серверу</li>
<li>Усложнить серверную часть программы так, чтобы при подключении нового пользователя ему показывались последние 10 сообщений</li>
<li>При запуске клиентская часть должна спрашивать у пользователя его имя. В дальнейшем при отсылке сообщений на сервер должен использоваться следующий шаблон: «Имя пользователя: текст»</li>
<li>До этого момента сообщения между сервером и клиентом — обычный текст. Это с трудом позволяет передавать так же сопроводительную информацию например: имя пользователя, дату приёма сообщения сервером и т.д. В этом задании необходимо перевести обмен информации на использование <a href="http://java.sun.com/developer/technicalArticles/Programming/serialization/">Serialization</a>. Т.е. обмен информацией между клиентом и сервером должно производится посредством сериализованного класса Message, который в свою очередь содержит помимо текста дополнительную атрибутику: дата создания сообщения, имя пользователя, IP отправителя, режим в котором находится отправитель (как в аське: сплю, ем, работаю:) )</li>
<li>Дописать серверную часть таким образом, чтобы она следила за количеством подключённых пользователей и не позволяла подключаться большему количеству пользователей нежели 10</li>
<li>На данный момент многие параметры сервера прописаны в коде самой программы, например: порт на котором открывать сервер, количество сообщений выдаваемых при подключении, максимальное количество подключённых пользователей и т.д. Перенести все эти конфигурационные параметры в XML файл.</li>
<li>Сервер должен позволять подключаться только тем пользователям, которые знают соответствующий пароль для их имени пользователя. Для этого при запуске клиент должен спрашивать так же и пароль. А сервер при подключении нового пользователя должен сверять имя пользователя/пароль с имеющимися данными в конфигурационном файле. Если пароль не подходит, или такой пользователь не существует, то сервер должен отключить клиента с соответствующим сообщением.</li>
</ol>
<h4>Задача: Java Command Line (JCL)</h4>
<p>Данная задача обычно дается мной в качестве зачетной по всему курсу J2SDK.<br />
Реализовать консольную программу на Java, которая бы представляла некую реализацию командной строки, то есть могла бы выполнять команды вводимые построчно пользователем. Под командой понимается следующая строка:<br />
<code>"имя команды" "аргумент №1" "аргумент №2" ... "аргумент №N"</code><br />
Код, который выполняет необходимую команду пользователя, должен оформляться как отдельный Java класс. Соответствие между классом и именем команды должно задаваться в конфигурационном (XML) файле программы. Команда во время выполнения может так же взаимодействовать с пользователем используя стандартный ввод/вывод.<br />
Программа должна поддерживать следующие команды:</p>
<ul>
<li>dir — выводит список файлов в текущей директории</li>
<li>cd «путь» — перейти в директорию, путь к которой задан первым аргументом</li>
<li>pwd — вывести полный путь до текущей директории</li>
</ul>
<p>Варианты усложнения:</p>
<ol>
<li>Программа должна поддерживать команду &#8220;! имя_системной_программы аргумент№1… аргумент№N&#8221;, которая запускает системную программу с соответствующими аргументами — так же ввод JCL должен подаваться на вход системной программы и тоже самое с ее выводом</li>
<li>Программа должна поддерживать следующий синтаксис: «команда1 аргументы &amp;&amp; команда2 аргументы» и «команда1 аргументы || команда2 аргументы». В первом случае «команда2» запускается только если «команда1» выполнилась успешно. Во втором случае «команда2» запускается только тогда, когда выполнение «команда1» завершилось не успешно</li>
<li>Программа должна поддерживать возможность запускать команды в фоновом режиме. Для этого достаточно в конце командной строчки ввести знак &#8220;&amp;&#8221;. Так же программа должна поддерживать команду «jobs», которая выводит список задач, которые выполняются в фоне</li>
<li>Реализовать возможность запускать программу в сетевом варианте: т.е. программа открывает порт и работать с ней можно используя обычный telnet с отдалённой машины. Программа должна поддерживать подключение сразу нескольких пользователей, а так же команды who и write, которые показывают кто подключён и посылают сообщение всем соответственно.</li>
</ol>
<p>P.S. Если кто-то попробует себя в Java&#8217;e по этим задачам, то готов сам проверить решённые задачи и, по возможности, дать полезные замечания:)</p>
<p>P.P.S. Как думаете, стоит ли снабдить материал ссылками на пакеты и библиотеки, знание которых понадобиться для реализации того или иного пункта?</p>
<p>Автор: <strong>DbLogs</strong><a title="http://dblogs.habrahabr.ru/" href="http://dblogs.habrahabr.ru/" target="_blank"></p>
<p>http://dblogs.habrahabr.ru/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2008/12/03/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b8-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d1%85-java-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Начинающим Java программистам</title>
		<link>http://wiki.dodex.org/2008/12/03/%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d0%bc-java-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0%d0%bc/</link>
		<comments>http://wiki.dodex.org/2008/12/03/%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d0%bc-java-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0%d0%bc/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 09:01:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[новичок]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=437</guid>
		<description><![CDATA[Наткнулся на интересную статью для начинающих Java-разработчиков (меня например). И даже не одну :) Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то [...]]]></description>
			<content:encoded><![CDATA[<p>Наткнулся на интересную статью для начинающих Java-разработчиков (меня например). И даже не одну :)<br />
<span id="more-437"></span></p>
<p>Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:</p>
<h4>Основные ресурсы для начального обучения</h4>
<ul>
<li><a href="http://www.javable.com/">www.javable.com</a> — сайт со статьями и tutorial&#8217;ом по Java. Все в основном на русском.</li>
<li><a href="http://www.exampledepot.com/">www.exampledepot.com</a> — очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов</li>
<li><a href="http://java.sun.com/">java.sun.com</a> — без первоисточника не обойтись. Для любого Java программиста <a href="http://java.sun.com/j2se/1.5.0/docs/api/">JavaDoc</a> должен быть истиной в последней инстанции. Так же здесь можно найти <a href="http://java.sun.com/docs/books/tutorial/">серию tutorial&#8217;ов</a> на все возможные темы.<a name="habracut"></a></li>
</ul>
<h4>Основные Java пакеты</h4>
<p>Ниже приведён список Java пакетов, в которых программист должен свободно ориентироваться. Знакомиться с ними рекомендуется как по <a href="http://java.sun.com/j2se/1.5.0/docs/api/">JavaDoc&#8217;ам</a>, так и с помощью <a href="http://www.exampledepot.com/">www.exampledepot.com</a>. Все пакеты выстроены в рекомендуемом порядке для изучения. Итак:</p>
<ol>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/package-summary.html">java.lang</a> — основа основ. Каждый класс в этом пакете нуждается в отдельном внимании.</li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/package-summary.html">java.io</a> — ни одна программа не может обойтись без операций с вводом-выводом.</li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/package-summary.html">java.util</a> — пакет в основном содержит все необходимое для работы с коллекциями: Collection, Enumeration, Set, List, Map и т. д. и т. п.</li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/package-summary.html">java.net</a> — содержит основные классы для работы с сетью.</li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/package-summary.html">java.text</a> — все необходимое для форматирования текста</li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/package-summary.html">java.lang.reflect</a> — Java не была бы Java&#8217;ой если бы не Reflection. Reflection стирает грань между данными и кодом.</li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/package-summary.html">javax.sql</a> — все необходимое по работе с базами данных</li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/package-summary.html">javax.xml.*</a>, <a href="http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/package-summary.html">org.w3c.dom.*</a>, <a href="http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/package-summary.html">org.xml.sax.*</a> — без этих пакетов работа с XML просто немыслима</li>
</ol>
<h4>Ресурсы для расширения кругозора</h4>
<ul>
<li><a href="http://onjava.com/">onjava.com</a> — рано или поздно все новости мира Java попадают сюда</li>
<li><a href="http://www.javaspecialists.eu/archive/">www.javaspecialists.eu</a> — ресурс полезен как новичкам, так и продвинутым программистам, так как содержит много статей о тонкостях работы с Java.</li>
<li><a href="http://www.theserverside.com/">www.theserverside.com</a> — рекомендуется подписаться на RSS, так как часто проскакивают весьма интересные вещи по Java.</li>
</ul>
<h4>Java Библитеки, которые должны знать все</h4>
<p>Java не заканчивается знаниями лишь о возможностях JSDK. Чтобы чувствовать себя комфортно необходимо знать еще десятка два сторонних библиотек, используемых Java программистами повсеместно. Итак, начнем с основных:</p>
<ul>
<li><a href="http://commons.apache.org/lang/">Commons Lang</a> — то что «забыли» включить в JDK</li>
<li><a href="http://commons.apache.org/math/">Commons Math</a> — отличное дополнение для java.math</li>
<li><a href="http://commons.apache.org/logging/">Commons Logging</a> — логирование должно быть грамотным. За System.out.println для вывода логов начинающим программистам уже через неделю обучения следует отрубать руки.</li>
<li><a href="http://commons.apache.org/net/">Commons Net</a> — логическое продолжение для пакета java.net. Множество классов для работы с основными сетевыми протоколами.</li>
<li><a href="http://commons.apache.org/vfs/">Commons VFS</a> — отличная библиотека для абстрагирования от способа хранения файла. Позволяет достаточно обобщено иметь доступ до файлов по FTP, SFTP, WEBDAV, (G)ZIP и т. д.</li>
<li><a href="http://commons.apache.org/io/">Commons IO</a> — работа с вводом-выводом часто получается весьма муторной, но с этой библиотекой все становится несколько веселее.</li>
<li><a href="http://hc.apache.org/httpclient-3.x/">HttpClient</a> — библиотека по работе с http ресурсами.</li>
<li><a href="http://www.junit.org/">JUnit</a> — любой код, должен сопровождаться тестированием. Для автоматизации тестирования и предназначена эта библиотека.</li>
</ul>
<p>На этом пока все. Если подобные шпаргалки по Java вам интересны, то могу так же выложить свою коллекцию «простейших» задач по Java, которые ориентированы, на то, чтобы быстро освоить основные пакеты Java.</p>
<p>Автор: <strong>DbLogs</strong><a title="http://dblogs.habrahabr.ru/" href="http://dblogs.habrahabr.ru/" target="_blank"></p>
<p>http://dblogs.habrahabr.ru/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2008/12/03/%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d0%bc-java-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0%d0%bc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

