Diploma

Diploma

Ну вот. Результаты есть, можно немного рассказать про один из дипломов который защищался в этом году.

Мой дипломник со своим дипломом занял первое место по УрФО в конкурсе дипломных проектов. Приятно. 🙂 Следует немного рассказать о том как это получилось.

Во первых дипломант. Алексей очень последовательный, неторопливый и упорный человек. Большой молодец, смог довести начатое до конца.

Тема диплома в последней интерпретации мне не нравится, но автор сам так сформулировал — а я свою задачу считаю помогать, направлять, но не писать за. 🙂

“Вебсайт персонального геомониторинга” — эпическое название, не так ли?

Суть проект довольно проста: мы сделали бэкэнд для системы геомониторинга на базе платформы 1С — при этом клиентская часть реализована на Flask (python). В результате получился простой, но функциональный бэкэнд которым мы сейчас собираем данные с датчиков, АРМ оператора, и простенький интерфейс для пользователя. Планируем допилить и попробовать коммерциализироваться.


Diploma was originally published in Pavel Zaikin’s personal page on Medium, where people are continuing the conversation by highlighting and responding to this story.

Pavel Zaikin’s personal page — Medium
via IFTTT

OneDrive, начало

Для создания своего клиента, о котором я писал ранее, нам понадобится:

  • модуль Python onedrivesdk (устанавливает очень просто, pip install onedrivsdk)
  • учетная запись Microsoft (собственно OneDrive без неё не работает, так что это не будет проблемой)
  • зарегистрировать наше приложение (которое мы ещё будем создавать…)

На последнем пункте остановимся подробнее.

Регистрация производится на сайте App.Dev.Microsoft.com — там, же кстати, регистрируются Боты для Skype и много чего ещё. Регистрация довольно простая — указываем имя приложения, получаем его ID (потребуется для авторизации), там же генерируем секретную часть (Секрет) приложения — уникальная строка для проверки корректности вызова.

Регистрация приложения в Microsoft

Обратите внимание ещё на параметр “ URL-адреса перенаправления” он обязательно должен содержать тот URL, который вы будете указывать при авторизации. По умолчанию http://localhost

Параметр URL-перенаправления

Теперь если скопировать ваши настройки в файл примера c GitHub

OneDrive/onedrive-sdk-python

И открыть сгенерированный УРЛ мы получим возможность дать нашему приложению доступ к аккаунту

Права доступа

Вот и всё — мы получили доступ к нашему аккаунту из своего приложения. В следующий раз мы:

  1. получим доступ к файлам и папкам, и составим их список (базу данных)
  2. скачаем файл
  3. загрузим файл
  4. удалим файл
  5. переместим файл
  6. добавим к файлу дополнительную информацию

Не обязательно в таком порядке, но близко к действительности. Следите за развитием событий 🙂

На GitHUB загружен исходник без client-id и client-secret.


OneDrive, начало was originally published in Pavel Zaikin’s personal page on Medium, where people are continuing the conversation by highlighting and responding to this story.

Pavel Zaikin’s personal page — Medium
via IFTTT

OneDrive клиент

У каждого облачного хранилища должны быть недостатки. В принципе на этом можно было бы и закончить. 🙂

В моём случае у стандартного клиента OneDrive нет возможности проводить однонаправленную синхронизацию (кинул в папку файл — он “улетел” в облако, удалил файл — файл в облаке остался).

Так же хочется удобный интерфейс каталогизации — что бы не в ручную переносить файлы, а по определённым правилам. Например отсортировать фоточки по папочка с привязкой к дате, + добавить информацию из гео-меток для упрощения поиска.

В то же время у OneDrive есть колоссальный + — как пользователь Office 365 я получаю терабайт данных в облаке. Для меня этого достаточно, что бы хранить весь фото-видео архив.

Поэтому принято решение начать потихоньку пилить свой клиент. Озвучим функциональные требования:

  1. Возможность одно-направленной синхронизации папки. (Как в сторону OD, так и обратно).
  2. Возможность управления файлами без загрузки (изменение папки хранения, создание папок, изменение имени файлов, изменение тэгов, добавление комментариев)
  3. Хранение базы файлов (без самих файлов) на текущем устройстве, синхронизация базы, поиск по базе (по файлам, типам, размеру, датам, гео-меткам, комментариям, тегам и т.п.)
  4. Реализация на Python — открытый исходный код. Код буду выкладывать на GitHub

С удовольствием выслушаю замечания и предложения по этому вопросу.


OneDrive клиент was originally published in Pavel Zaikin’s personal page on Medium, where people are continuing the conversation by highlighting and responding to this story.

Pavel Zaikin’s personal page — Medium
via IFTTT

Небольшой тест

Я просто хочу проверить, как будет работать кросс.пост в WP — поэтому тест.


Небольшой тест was originally published in Pavel Zaikin’s personal page on Medium, where people are continuing the conversation by highlighting and responding to this story.

Pavel Zaikin’s personal page — Medium
via IFTTT

Любая разработка из каталога в вашу конфигурацию

Предлагаем Вам новую услугу, любая разработка из каталога будет внедрена в вашу конфигурацию качественно и в срок. 🙂

Требуются (вакансии)

Так случилось, что в данный момент у нас открыты вакансии:

  1. офис-менеджер
  2. Системный-администратор
  3. Программист 1С (тест-анкета под катом)

Работа разъездная, требуется ответственность, сообразительность, аналитический склад ума и желание развиваться.

Оплата сдельная, по результатам собеседования. Звоните мне: 65-43-66. Резюме на e-mail: pavel@654366.ru

Читать далее

Windows 7 — расширить раздел

В заметке я рассказывал как найти и удалить «ненужный» OEM раздел. Но вот вопрос, удалили вы этот раздел, а свободное место как использовать? Отформатировать под отдельный диск? (Но 6-14 Гб — а именно столько обычно резервируют под OEM раздел, не очень-то много).

Вот тут нам опять приходит на помощь diskpart. С её помощью (и конечно документации ) мы расширим наш диск C или D на освободившиеся пространство.

Читать далее

Пропал предварительный просмотр Windows 7

Проблема:

Explorer (Проводник по папкам и файлам в Windows 7) перестал показывать предварительный просмотр изображений. Изменение размера иконок ничего не дает. Даже когда нажимаешь соответствующую кнопку «Скрыть/показать область предварительного просмотра», вместо реального изображения стандартный рисунок (вода и горы). Читать далее

Новый опыт, новые возможности.

Реализовал мини-проект для собственных нужд. Работа с БД 1С через web сайт.

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

На страничке реализована система «подсказки при заполнении», т.е. при вводе наименования производится поиск по началу слова и выдается подсказка. (производится запрос к базе 1С, с выдачей результата в web странице — ajax+php+soap+1c)

По нажатию на кнопку Записать — 1С создает документ.

Технологии: PHP, jQuery (для ajax и красивостей), jQuery UI для autocomplete. SOAP для связи с 1С. На стороне 1С — Web-Сервис.

UPD:

В планах: форма для подачи заявок (как только внедрим в нашу систему учет входящих заявок), клиентская страничка — с информацией о выполненных работах, задолженности и предполагаемом счете за текущий месяц.

SpringPad to EverNote

Что бы полностью перейти со SpringPad на EverNote нужно выгрузить каким-то образом заметки из одной системы в другую. О том как это сделать хорошо написано здесь, но дело в том, что backup заметок из SpringPad — это один огромный HTML файл. И загружается он в EverNote как одна заметка. Неудобно. Но есть выход. Применим этот скриптик и разделим один файл на кучу файлов с заметками:
скачать последнюю версию можно тут

def writeNote(i,text):
	nf = open('note-'+str(i)+'.htm','w')
	nf.write(text)
	nf.close()

optionCleanHeader = True #Empty header

f = open('index.html','r')
if optionCleanHeader:
	header = "<html><body><div>"
else:
	header = ""
headerComplete = False
footer = "</div></body></html>"
noteStart = False
note = ""
i = 0
for line in f:
	if '<div class="instance' in line:
		if not headerComplete:
			headerComplete = True
			#Finish header
		if noteStart:
			#Finish note
			writeNote(i,header+"\n"+note+"\n"+footer)
		i += 1
		noteStart = True
		note = line
	else:
		if (not headerComplete) and (not optionCleanHeader):
			header += line
		elif noteStart:
			note += line
if noteStart:
	#Finish last note
	writeNote(i,header+"\n"+note+"\n"+footer)