Рубрика «development» - 13

Немного информации о том, какие данные в вашем приложении могут быть доступны для других программ и какие меры можно предпринять, чтобы это предотвратить.
Об открытости данных в Android приложениях

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

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

Работа рутинная, человеческий фактор провоцирует ошибки. Как автоматизировать процесс и избавить оператора от необходимости ручной обработки писем и их вложений? Мы нашли простое решение с использованием MS SharePoint. По своему обыкновению, мы постарались по максимуму задействовать имеющийся функционал систем, существующую библиотеку и немного своей программистской магии:)

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

Tizen DevLab и Хакатон в Новосибирске!

Наверняка кто-нибудь из участников, подписавшихся на хаб Tizen, уже заметил новое событие. В этом сообщении я расскажу немного подробнее о грядущем мероприятии в контексте уже прошедших тренингов и хакатонов по Tizen.
Читать полностью »

Многие знают о возможности публикации книг в Apple iBookstore.
Даже в рунете можно найти статьи, посвященные этому вопросу. Но при внимательном их изучении, они оказываются просто переводом общедоступных западных материалов и форумов.
При реальной же попытке создать и опубликовать книгу в iBookstore, на многих этапах приходится сталкиваться с нигде не описанными проблемами, осложненными тем, что мы являемся жителями СНГ.

Но наш пытливый славянский мозг не привык отступать.
И без лишней скромности могу сказать, что нам, одним из немногих, все таки удалось дойти до конца и получить в результате опубликованную книгу!

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

Есть у меня на некоторых 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? Сказано, сделано.
Читать полностью »

Новые Хакатоны и тренинги по Tizen! И немного о прошедших...

Ассоциация FRUCT продолжает серию Developer Lab (тренингов) и Хакатонов по разработке под Tizen при поддержке Intel, с участием специалистов Intel и Samsung.
Читать полностью »

Каждый раз когда стоит задача выбора фреймворка для написания нового проекта, мы (веб-разработчики) скорей всего выбираем то, что уже хорошо знаем и постоянно используем. Мир PHP фреймворков достаточно богат и самыми крупными игроками являются: CodeIgniter, Kohana, Symfony, Yii, Zend Framework. Но я хочу обратить ваше внимание на принципиально новый, а вернее принципиально новую ветку лучшего фреймворка, с которым мне доводилось иметь дело. Встречайте, Laravel 4!

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

Уже где то год пытаюсь писать свои приложения под андроид на Unity. Так что в этой статье хотелось бы описать подводные камни и используемый инструментарий. Надеюсь, новички геймдевелопмента найдут в статье неплохой гайд и пособие к действию, а знающие люди узнают о парочке интересных ассетов для юнити.
Итак, начнем.
image
Читать полностью »

Medication — Прием лекарств

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

В помощь себе и другим забывчивым товарищам я и написал Android — приложение «Medication — Прием лекарств».
Читать полностью »

в 20:51, , рубрики: development, emacs, IDE, python, метки: , , ,

Как известно, существует множество решений которые позволяют сделать из «консольного» редактора (vim/emacs) более-менее удобную IDE для языка Python. Представляю Вашему вниманию наиболее успешную, на мой взгляд, реализацию среды разработкы в редакторе emacs на основе пакета python-jedi.el. Отмечу, что бандл заменяющий rope(*-jedi) есть так же для vim, инстукцию по его настройке можно найти здесь .
Читать полностью »


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