Архив рубрики: Без рубрики

Мысли в слух: «эксперт не равно супермен»

Мысли в слух: «эксперт не равно супермен».

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

Соответственно, для таких людей, необходимо дать разъяснение, что программист — это человек и не важно, какие у него сертификаты. А как известно, человеку свойственны определенные проблемы, так как, он является сложной биоинформационной системой, находящейся в различных контекстах окружающей среды.

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

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

Основная ценность — это люди, именно они достигают целей компании. Не деньги делают деньги, а люди.

Обновлено: 19.06.2019
«Почему только прокачка кодинга не сделает из тебя лучшего разработчика» — Интересная статья от Skyeng, о различных мифах, касающихся разработчиков.

Высоконагруженные приложения

Рекомендую к прочтению книгу «Высоконагруженные приложения. Программирование, масштабирование, поддержка» автор Мартин Клеппман, в книге объединены и описаны основные проблемы, нюансы и особенности, с которыми сталкиваешься при работе с высоконагруженными информационными системами.

Обзор книги издательством: https://habr.com/ru/company/piter/blog/352742/

Высоконагруженные приложения. Программирование, масштабирование, поддержка

Высоконагруженные приложения

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

Несколько абзацев из книги:

Чтобы сделать БД отказоустойчивой, реализации B-деревьев обычно включают дополнительную структуру данных на диске: журнал упреждающей записи (write-ahead log, WAL), также именуемый журналом повтора (redo log). Он представляет собой файл, предназначенный только для добавления, в который все модификации B-деревьев должны записываться еще до того, как применяться к самим страницам дерева. Когда база возвращается в норму после сбоя, этот журнал используется для восстановления B-дерева в согласованное состояние.

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

Обеспечиваемые транзакциями гарантии функциональной безопасности часто описываются известной аббревиатурой ACID (atomicity, consistency, isolation, durability — атомарность, согласованность, изоляция и сохраняемость). Она был придумана в 1983 году Тео Хэрдером (Theo H.a.rder) и Андреасом Ройтером (Andreas Reuter) [7] в попытке создать четкую терминологию для механизмов обеспечения отказоустойчивости в базах данных.

Часто используемые программы

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

  • 1. Ditto: https://ditto-cp.sourceforge.io
    Удобный менеджер буфера обмена, особенно полезен, когда приходится редактировать большие участки кода и/или вставлять часто повторяющиеся блоки. Поддерживает, основные, часто используемые форматы буфера обмена.
  • 2. 7+ Taskbar Tweaker: https://rammichael.com/7-taskbar-tweaker
    Данное приложение, использую для возможности расставить в необходимом порядке, значки в панели задача, например, удобно, когда за значком конфигуратора, идет сразу значок режима предприятия. Windows не позволяет менять положение и иногда значки смещаются, особенно это неудобно когда открыто много окон.

  • 3. f.lux: https://justgetflux.com/
    Приложение, в зависимости от времени суток, меняет цвет дисплея, ближе к вечеру экран становится более «теплым».
    f.lux
  • 4. EyeLeo: http://eyeleo.com
    Приложение периодически, напоминает и предлагает делать упражнения для глаз, дополнительно, можно настроить время перерывов.
  • 5. EssentialPIM: https://www.essentialpim.com/ru/
    Ранее уже писал об этой программе http://blagin.ru/personal-information-manager/ рекомендую к использованию, помогает для фиксации информации и задач.
    Essentialpim-1 Personal Information Manager - Персональный информационный менеджер

    Essentialpim-1 Personal Information Manager — Персональный информационный менеджер

Пишите в комментариях, какими вспомогательными программами пользуетесь вы?

Использование шаблонов Word в 1С

Использование шаблонов Word в 1С

В работе программиста 1С, данный функционал требуется крайне редко, хотя благодаря нему можно решать довольно сложные задачи с динамическими и не постоянными печатными формами. При реализации данной задачи, работа по созданию шаблонов Word и расстановке закладок в шаблоне Word возлагается на пользователей 1C.

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

Создадим шаблон на основе документа Word для 1С. Сначала необходимо включить показ закладок для более удобной работы с документом:

Использование шаблонов Word в 1С

Использование шаблонов Word в 1С


Использование шаблонов Word  в 1С

Использование шаблонов Word в 1С

Далее необходимо в файл шаблона для 1С, добавить текст и пару закладок. Закладка добавляется через меню «Вставка» — «Закладка». Нужно выделить текст закладки, скопировать его, открыть меню «Вставка — Закладка», вставить скопированный текст закладки и нажать «Добавить»:

Установка закладки, шаблон Word для 1С

Установка закладки, шаблон Word для 1С


Когда файл шаблона Word готов, создаем новую внешнею обработку в 1С, добавляем форму и в модуле формы вставляем следующий код:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ЗаполнитьШаблонВорд();
	
КонецПроцедуры

&НаКлиенте
Функция ЗаполнитьШаблонВорд()

	//Попытка создать COM объект
	Попытка
		ОбъектВорд = Новый COMОбъект("Word.Application"); 
	Исключение
		Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
		Возврат Неопределено;
	КонецПопытки;
	
	//Путь к шаблону
	ОбъектВорд.Documents.Add("C:\Users\Константин\Desktop\Шаблон.docx");
	ШаблонВорд = ОбъектВорд.ActiveDocument;
	
	//Получаем все закладки из шаблона
	Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл
		Сообщить(ЗакладкаВорд.Name);		
	КонецЦикла;
	
	//Заменяем закладку1 на текст
	ШаблонВорд.Bookmarks("Закладка1").Select();
	ШаблонВорд.Application.Selection.TypeText("Текст для закладки №1.");
	
	//Заменяем закладку2 на текст
	ШаблонВорд.Bookmarks("Закладка2").Select();
	ШаблонВорд.Application.Selection.TypeText("Текст для закладки №2.");
	
	//Заменяем закладку3 на текущую дату
	ШаблонВорд.Bookmarks("Закладка3").Select();
	ШаблонВорд.Application.Selection.TypeText(ТекущаяДата());
	
	ОбъектВорд.Application.Visible = Истина;
	ОбъектВорд.Activate();
	
	//Закрытие документа
	//ОбъектВорд.Application.Quit();
	
КонецФункции

В результат запуска внешней обработки 1С по формированию печатной формы на основе шаблона в виде файла Word, мы получим следующий результат:

Результат использования шаблонов Word в 1С

Результат использования шаблонов Word в 1С

Информацию по методам COM объекта Word, а так же дополнительные данные можно узнать из MSDN.

Скачать файл обработки 1С и шаблона Word.

Дополнение к заметке Использование шаблонов Word в 1С

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

1. А как поменять размер шрифта во вставляемом тексте?
Достаточно изменить размер шрифта закладки, в шаблоне. А вот, если необходимо динамически менять размерность, тогда:

//Заменяем закладку3 на текущую дату
ШаблонВорд.Bookmarks("Закладка3").Select();

ШаблонВорд.Application.Selection.Font.Bold = 1;
ШаблонВорд.Application.Selection.Font.Size = 20;
	
ШаблонВорд.Application.Selection.TypeText(ТекущаяДата());

2. Картинки есть возможность выгружать в шаблон?
Да, конечно. Примеры для C# и VB описаны по ссылке: https://msdn.microsoft.com/ru-ru/library/ms178792.aspx, а для 1С код будет следующий:

// Вставка изображения
ШаблонВорд.Bookmarks("Закладка3").Select();
ШаблонВорд.Application.Selection.InlineShapes.AddPicture("C:\Users\Константин\Desktop\logo_1c.png");

3. При выполнении кода: ОбъектВорд.Documents.Add(«C:/Шаблон.docx») (туда я поместил Ваш документ) получаю ошибку : «Ошибка при вызове метода контекста (Add)» в чем может быть причина?
Может попробовать изменить путь на: «C:\Шаблон.docx».

4. Подскажите пожалуйста еще почему при сохранении макета типа active document в файл word кодом:

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Макет    = ОбработкаОбъект.ПолучитьМакет("ШаблонПисьмаПросрочка"); 
ИмяФайла = КаталогВременныхФайлов() + "\"файл.doc";
Макет.Записать(ИмяФайла);

Я получаю вместо нормального документа вот такой http://prntscr.com/eshgjk
Предполагаю, что метод Записать(< ИмяФайла>, < ТипФайлаТаблицы>) по умолчанию, записывает файл в формате MXL. Попробуйте вторым параметром установить значение: ТипФайлаТабличногоДокумента.DOCX, более подробно описано в «Синтакс-помощнике».

5. У меня в документе есть ссылки на файлы которые расположены на сетевом диске. Как в шаблоне сделать гиперссылку на эти файлы?
Интересный вопрос, если попробовать сделать запись макроса и посмотреть результат, то в Visual Basic добавление гиперссылки будет выглядеть следующим образом:

Sub Макрос1()
'
' Макрос1 Макрос
'
'
    Selection.MoveLeft Unit:=wdCharacter, Count:=15, Extend:=wdExtend
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
        "C:\Users\Константин\Desktop\Тест.txt", SubAddress:="", ScreenTip:="", _
        TextToDisplay:="ТестоваяСсылка"
End Sub

Описание метода добавления в MSDN: https://msdn.microsoft.com/en-us/vba/word-vba/articles/hyperlinks-add-method-word

Соответственно код для 1С следующий:

Функция ЗаполнитьШаблонВорд()

	//Попытка создать COM объект
	Попытка
		ОбъектВорд = Новый COMОбъект("Word.Application"); 
	Исключение
		Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
		Возврат Неопределено;
	КонецПопытки;
	
	//Путь к шаблону
	ОбъектВорд.Documents.Add("C:\Users\k.blagin\Desktop\Шаблон.docx");
	ШаблонВорд = ОбъектВорд.ActiveDocument;
	
	//Получаем все ссылки из шаблона
	Для каждого ЗакладкаВорд Из ШаблонВорд.Hyperlinks Цикл
		Сообщить(ЗакладкаВорд.Name);		
	КонецЦикла;
	
	//Меняем адрес уже существующей ссылки
	ШаблонВорд.Hyperlinks("Logs.zip").Address = "C:\Users\k.blagin\Desktop\Memory.zip";
	
	//Заменяем закладку на ссылку
	ОбъектЗакладка = ШаблонВорд.Bookmarks("Закладка3");
	ШаблонВорд.Hyperlinks.Add(ОбъектЗакладка.Range, "C:\Users\k.blagin\Desktop\Шаблон.docx", "", "Шаблон.docx", "C:\Users\k.blagin\Desktop\Шаблон.docx");
	
	ОбъектВорд.Application.Visible = Истина;
	ОбъектВорд.Activate();
	
	//Закрытие документа
	//ОбъектВорд.Application.Quit();
	
КонецФункции

1С ERP Генерация штрих кода типовыми средствами

1С ERP Генерация штрих кода типовыми средствами

В программе 1С ERP имеется типовая возможность создавать штрихкоды и выводить их на печать без использования дополнительных средств, пример кода:

//...
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина",          100);
ПараметрыШтрихкода.Вставить("Высота",          75);
ПараметрыШтрихкода.Вставить("Штрихкод",        СокрЛП(СтрокаТЗ.Штрихкод));
ПараметрыШтрихкода.Вставить("ТипКода",         1); // EAN13
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
ПараметрыШтрихкода.Вставить("РазмерШрифта",    12);
					
ОбластьШтрихкод = Макет.ПолучитьОбласть("Штрихкод");
ОбластьШтрихкод.Рисунки.ШК.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
ТабДок.Вывести(ОбластьШтрихкод);
//...

1С Как обновить форму документа в тонком клиенте

1С Как обновить форму документа в тонком клиенте

Небольшая подсказка для начинающих программистов 1С. Если вы создали внешнюю обработку для заполнения табличной части документа на основе управляемых форм и теперь хотите обновить отображение данных документа, можете воспользоваться следующим способом:

&НаКлиенте
Процедура Заполнить(Команда)
	
	//Код по изменению и сохранению данных документа в базе данных
	//...
	
	ФормаВладелец = ЭтаФорма.ВладелецФормы;
	ФормаВладелец.Прочитать();
	
КонецПроцедуры

Данный код выполняется в форме обработке по заполнению табличной части.

Старые концепты — Old concepts of weapons

Старые концепты, которые вряд ли, когда либо, будут воплощены в жизнь.

Spider — zbrush speed sculpting

Паучок сделанный за вечер, по старому рисунку, по-моему получилось довольно мило 🙂

Простая сцена в UDK / Simple UDK Scene

Пока есть время и возможность, изучаю игровой движок Unreal, разработка игр в котором ведется при помощи программного комплекса под названием UDK (Unreal Developer’s Kit), для более подробного изучения решил создать небольшую сцену с фонтаном. Фонтан будет представлять из себя ангела с кувшином, из которого будет литься вода. Примерный набросок фигуры можно видеть на рисунке, в данный момент объект готов частично:

Набросок и первичная модель ангела

Набросок и первичная модель ангела


В ходе моделирования были внесены изменения в положение фигуры, то как она держит кувшин и форму крыльев. Вокруг фигуры ангела буду скамейки, кусты, позади деревья и дабы не создавать лишние объекты, горизонт будет закрыть каменной оградой, предполагаемую схему можно увидеть ниже на рисунке:
План сцены

План сцены


Изначально, базовые низкополигональные модели были созданы в Blender и Makehuman, одежда была создана при помощи симуляции. Далее было решение делать скульптинг в Blender, но как выяснилось на опыте, он не может стабильно работать с большим количеством полигонов, при превышении порога в 1,5 миллиона, он просто завершался. На помощь пришел ZBrush, который с успехом справляется и с более большим количеством полигонов.

Обновление (30.05.2013): Модель ангела для фонтана, тестовый рендер в ZBrush.

Обновление (05.06.2013): Сделано основание фонтана, добавлены детали, такие как трещины, сколы, царапины. Так же добавлены текстуры и материалы. Дальнейший шаг, ретопология высоко-полигональной модели(около 3 миллионов полигонов), в программе TopoGun.

Обновление (20.06.2013): Наконец то сделана, низко полигональная модель, которая будет использоваться в игровом движке, в итоге получилось 11 тысяч полигонов. Как было сказано выше, ретопологию хотел сделать в программе TopoGun, но в ней есть одна особенность, которая мне очень мешала, объект ретопологии просвечивал и были видны полигоны на обратной стороне, что сильно сбивало с толку, может эту функцию можно было отключить, к сожалению, так и не нашел как это сделать. Зато в TopoGun, очень удобно генерировать карты нормалей и текстуры, что как раз будет сделано именно в ней. Ретопология же производилась в программе Blender , при помощи модификатора Shrinkwrap, дополнения Bsurfaces и включенной опции Snap.

Обновление (21.06.2013): Сегодня были созданы карты нормалей и текстуры объектов, с помощью программы TopoGun. Так же, создан тестовый рендер в программе Marmoset Toolbag.

Обновление (01.07.2013): Тестовый рендер модели в UDK, смотрится вроде бы не плохо.

Обновление (03.07.2013): Вот и готова простая сцена в UDK, к сожалению реализовать все задуманное не получилось, так как, мой компьютер просто не способен на большее, как играть в сапера, чуть не туда нажал и все, конец.
Видео (смотрите в HD):

Скриншоты:

Еще немного зарисовок