Рубрика «Программирование» - 924

Обучение Software Engineering в России: возможно ли это? нужно ли это?Как уже сообщалось, Университет Иннополис открыл новую для России магистерскую программу по Software Engineering (совместно с партнером, Университетом Карнеги-Меллон), что порождает много вопросов: что это, зачем это надо, почему в партнеры выбран Карнеги-Меллон? В этом топике мы собрали самые горячие вопросы и попросили ответить на них очевидцев – тех, кто проходит обучение по программе в настоящий момент. Есть вопрос, на который мы не осветили? Задавайте в комментариях!

Читать полностью »

Привет друзья!
Всем, кто имеет отношение к нелегкой, но, без сомнения, прекрасной области человеческой деятельности — программированию — спешу напомнить, что сегодня (10 декабря) — дата альтернативного празднования «Дня программиста»!

Обычно этот праздник официально отмечается в 256-ой день года (12-13 сентября, в зависимости от високосности года).
10 декабря — другая известная дата празднования, связанная с тем, что в этот день родилась первая программистка — Ада Августа Байрон Кинг, графиня Лавлейс (10 декабря 1815 года).

10 декабря — альтернативный день программиста

Ада была дочерью великого английского поэта Байрона, создала первую в истории компьютерную программу для аналитической машины Бэббиджа, первой ввела термины «рабочая ячейка», «цикл». Ее фундаментальные труды содержали основные принципы программирования и предсказывали появление современных компьютеров. В её честь назван один из языков программирования — Ада. Кроме того, Ада, судя по всему, была еще и симпатичной девчонкой :)

Исходя из всего этого, предлагаю 10 декабря именовать именно «Днем программистки». Если у вас есть знакомые программистки — не поленитесь поздравить, ведь их и так не много в нашей «бородатой» индустрии!

В комментариях предлагаю вспомнить известных программисток — как реальных, так и персонажей различных фильмов и произведений.

Читать полностью »

Для бакалавров последних курсов, специализирующихся на IT, и молодых специалистов есть уникальная возможность получить грант от Университета Иннополис на образование по новой магистерской программе.
Грант на развитие карьеры Software Engineering
Грантом покрывается полная стоимость обучения, перелет, проживание, а так же стипендия на время обучения.
Большая часть образовательной программы будет проходит в г. Питтсбург, США в Carnegie Mellon University. Успешно завершившим программу, будет присуждена международная магистерская степень.
Читать полностью »

Есть у меня на некоторых maven-проектах профиль, с помощью которого производится копирование shared-библиотек с последующим перезапуском сервера Tomcat.

Maven profile

<profile>
	<id>deploy-deps</id>
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<useSubDirectoryPerScope>true</useSubDirectoryPerScope>
							<excludeGroupIds>исключаем некоторые группы, попадающие в war-архив</excludeGroupIds>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>exec-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>05-stop-tomcat</id>
						<phase>package</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>-ssh</argument>
								<argument>-4</argument>
								<argument>-agent</argument>
								<argument>-i</argument>
								<argument>${putty.key}</argument>
								<argument>${ssh.user}@${ssh.host}</argument>
								<argument>${tomcat.dir.root}/bin/shutdown.sh</argument>
							</arguments>
							<executable>plink</executable>
						</configuration>
					</execution>
					<execution>
						<id>10-clean-shared-jars</id>
						<phase>package</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>-ssh</argument>
								<argument>-4</argument>
								<argument>-agent</argument>
								<argument>-i</argument>
								<argument>${putty.key}</argument>
								<argument>${ssh.user}@${ssh.host}</argument>
								<argument>rm</argument>
								<argument>-Rf</argument>
								<argument>${tomcat.dir.shared}/*.jar</argument>
							</arguments>
							<executable>plink</executable>
						</configuration>
					</execution>
					<execution>
						<id>15-upload-shared-jars</id>
						<phase>package</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>-scp</argument>
								<argument>-4</argument>
								<argument>-agent</argument>
								<argument>-i</argument>
								<argument>${putty.key}</argument>
								<argument>${project.build.directory}/dependency/compile/*.jar</argument>
								<argument>${ssh.user}@${ssh.host}:${tomcat.lib.shared}/</argument>
							</arguments>
							<executable>pscp</executable>
						</configuration>
					</execution>
					<execution>
						<id>20-start-tomcat</id>
						<phase>package</phase>
						<goals>
							<goal>exec</goal>
						</goals>
						<configuration>
							<arguments>
								<argument>-ssh</argument>
								<argument>-4</argument>
								<argument>-agent</argument>
								<argument>-i</argument>
								<argument>"${putty.key}"</argument>
								<argument>${ssh.user}@${ssh.host}</argument>
								<argument>bin/startup.sh</argument>
							</arguments>
							<executable>plink</executable>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</profile>

отходя в сторону, поведаю для чего сей профиль

В части проектов используется связка Nginx+Tomcat. Для данной связки реализовано следующее:

  1. Для всего статичного контента используется некий каталог за пределами webapps. В этот каталог «смотрит» Nginx и отдаёт по web-пути "/static/*"
  2. Все shared java-библиотеки (редко изменяемые) грузятся в каталог ${catalina.home}/shared, и в Tomcat в файле conf/catalina.properties настроена для этого переменная «shared.loader»
  3. Для каждого инстанса Tomcat создан свой системный пользователь
  4. Для доступа по SSH используются ключи и у каждого разработчика он свой

Соответственно, загрузка статичного контента и shared-библиотек это отдельные профили. Всё остальное собирается в war-архив и устанавливается через стандартный web-manager Tomcat-а.
А чтобы не плодить конфигураций, используется PAgent, в который уже и добавленые нужные нам private keys. Они же используются для подключения через Putty

Лежит себе профиль в pom.xml, не кусается вроде бы, даже пашет потихоньку на благо программера, но вот только есть в нём пара «минусов» — занимает много места при развёрнутом pom.xml да ещё и в новые проекты приходится вставлять.
И если от второго минуса можно избавиться написав шаблон в любимая_IDE или свой архетип наваять, то от первого минуса не так-то просто избавить.

Точно ли не так просто? может «обернём» этот профиль в виде плагина для Maven? Сказано, сделано.
Читать полностью »

Сегодня ребята из Codecademy сделали свой первый шаг в сфере создания приложений и выпустили вводный курс по программированию, который можно пройти менее чем за час.

Запуск приложения был приурочен к интересному мероприятию Computer Science Education Week, цель которого убедить 10 миллионов американских студентов один час позаниматься программированием (его поддерживает Apple, Facebook, правительство в лице Обамы, известные персоны). Более широкая цель приложения состоит в том, чтобы создать серию уроков, которые можно было бы понемногу проходить на ходу, что прекрасно подходит для занятых людей, желающих приобрести новые навыки.

Codecademy выпустила первое мобильное приложение для обучения программированию Codecademy выпустила первое мобильное приложение для обучения программированиюЧитать полностью »

(Примечание от переводчика: Уже были опубликованы переводы нескольких глав замечательной книги Чеда Фаулера «Страсть к программированию». Так как предыдущий перевод уже не обновлялся месяц, попробую продолжить, ибо книжка действительно заслуживает внимания.)
Предыдущая часть:
Как я отказался от $300.000, предложенных мне компанией Microsoft, взамен на полный рабочий день на GitHub’е.

По крайней мере пару десятилетий, менеджеры и владельцы бизнеса считали, что разработка программного обеспечения – по сути конвейерный процесс. Технические требования создаются, архитекторы претворяют эти спецификации в высокоуровневое техническое видение. Дизайнеры заполняют архитектуру детализированной дизайн-документацией, которая передается роботоподобным кодерам, которые держа научно-фантастические новеллы в одной руке, другой в слепую печатают реализацию дизайна. В итоге, Инспектор 12 (прим. пер. — судя по всему отсылка на старую рекламу) получает законченный код, на который она не поставит свой подтверждающий штамп, до тех пор, пока не увидит оригинальные спецификации.

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

В так называемой «фабрике софта», сотрудники – специалисты. Они сидят на своих местах на конвейере, скрепляя Java-компоненты вместе, или стачивая острые углы Visual Basic –приложения, на своих станках. Инспектор 12 – тестер по профессии. Компоненты программы двигаются по линии, и она тестирует и ставит на них печать одним и тем же образом каждый день. Разработчики J2EE разрабатывают J2EE приложения. Программисты С++, программируют в С++. Мир чист и разделен на ячейки.
Читать полностью »

Добрый вечер, читатели! Сегодня хотелось бы написать о кросс-платформенной разработке в целом. Ведь по сути люди сейчас делят десктоп, сервер и мобильных клиентов и стараются искать кросс-платформенные тулы внутри каждого сектора, не заглядывая за рамки каждого из секторов. Это бывает по различным причинам. Одна из причин — Вася знает как делать десктоп на Java, а Петя — как делать приложеньки под iPhone на Objective-C. И никто даже догадаться не может что есть технологии, объединяющие все платформы воедино.

За катом много текста и статистики :)

Мое выступление на Apps4All Forum. Выступление первое, все ошибки подачи материала уже намотал на ус :)

Читать полностью »

В работе использую EPIC и недавно начал пробовать Komodo IDE. Но в качестве лёгкого «повседневного» редактора в системе у меня установлен mooedit. Не всё в нём идеально, но некоторые вещи можно подкрутить, о чём и пойдёт речь.

Читать полностью »

Проверка на простоту

Чтобы определить, является ли данное число N простым, безусловно, достаточно написать простой цикл поиска делителей числа N:

bool prime(long long n){ 
	for(long long i=2;i<=sqrt(n);i++)
		if(n%i==0)
			return false;
	return true;
}

Данная функция проверки числа на простоту достаточно эффективна — асимптотика ее работы O (sqrt(N)). Однако, иногда в спортивном программировании нужно уметь проверять число на простоту быстрее.

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

В данной статье я рассмотрю другой способ выполнять единичные проверки на простоту — тест Ферма.
Читать полностью »

Борис Бабаян о прошлом, настоящем и будущем вычислительной техники

Борис Бабаян
Каким представляется развитие вычислительной техники человеку, который уже более полувека занимается разработкой компьютерных технологий?

Мне удалось побеседовать на эту тему с Борисом Арташесовичем Бабаяном, директором по архитектуре компании «Интел».

Борис Бабаян известен как главный архитектор компьютерных вычислительных систем «Эльбрус-1», «Эльбрус-2» и «Эльбрус-3». Некоторые из его идей использованы в архитектуре Transmeta. В настоящее время Борис возглавляет разработку новой микропроцессорной архитектуры в компании «Интел».

Чтобы совсем покончить с формальностями, перечислю звания, степени и должности Бориса: член-корреспондент РАН, доктор технических наук, профессор, заведующий кафедрой «Микропроцессорные технологии» МФТИ, Intel Fellow, лауреат Государственной и Ленинской премий.

Дальнейшее повествование построено от лица Бабаяна. Мои скупые комментарии оформлены в виде врезок либо ссылок на интернет-страницы.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js