понедельник, 27 августа 2012 г.

Cat Herders, EDS

В каменты о книге "Как пасти котов", товарищ прислал ссылку на рекламный ролик компании, занимающейся работой с IT-персоналом:



Спасибо, Валера.

суббота, 25 августа 2012 г.

На планировании

В переговорке, оккупированной под проведение планирования, стояла тяжелая атмосфера. Решение не давалось. Помимо ведущего архитектора Ивана Константиновича и его "правой руки", подающего большие надежды программиста  Василия, на мозговом штурме присутствовали:
Марк Захарович, директор департамента;
Петр Семенович, начальник отдела продаж;
Максим и Федор, продавцы-консультанты;
Зоре Ахметовна, главный бухгалтер;
Леночка, сотрудница отдела кадров;
Генадий Петрович, электрик;
Секретарша Юля (просто потому, что раз почти все тут);
и ответственный сотрудник Захарыч.
Решение не приходило. Идеи и предложения уже не сыпались как из мешка, а вяло падали на большой переговорный стол и там замирали под тяжелыми взглядами штурмующих.
С областью видимости переменной крСчетчикЗаказов все было так же не ясно, как и в начале встречи.
Шел второй час черепно-мозгового штурма.

В подражание Максу Дорофееву (cм. тэг softwarestories).

вторник, 21 августа 2012 г.

Шесть правил Глеба Жеглова

Хроник-тестировщик w-bf приводит в пример отрывок из фильма и пишет о программистах и тестировщиках.
А я бы тут говорил о заказчике и разработчике. Как вытянуть из заказчика что ему на самом деле необходимо? Как получить информацию о том что больше всего беспокоит заказчика и наладить эффективную коммуникацию? Надо усвоить работу со свидетелем...


понедельник, 20 августа 2012 г.

Как пасти котов

Тем временем продолжаю читать. Недавно прочел знаменитое "Как пасти котов" Дж. Ханк Рейнвотера.
Ощущения двойственные. С одной стороны по определенным причинам я был не в "лучшей форме для чтения" и книгу пережевывал с трудом. Возможно потому она не оправдала моих ожиданий. Еще темы, рассматриваемые в книге, очень разнообразны и по каждой можно написать целую книгу. После Адизеса, ДеМарко, Макконела, Брукса и прочих возникает ощущение, что где-то это все я уже читал, причем гораздо подробнее. Иногда ловил себя на мысли, что кое-в-чем книга уже успела устареть. Не много, но ощущение было.

С другой стороны, как глобальный обзор она хороша. Причем, обзор достаточно подробный. Некоторые главы, в основном посвященные коммуникациям, читал с интересом и на одном дыхании. И уже знакомые вещи прочитывал с удовольствием, кивая себе - "да, да, точно так".

Думаю, что если вы еще не успели "изгрызть" ворох книг по теме, если вы еще вчера были выдающимся инженером, а сегодня почему-то "перекладываете бумажки" или только начали вникать в тонкости мира IT, бросив свою подсахаренную воду, то эта книга должна вам понравиться.

И как напоследок не сослаться на Александра Орлова и его список? Ссылаюсь.

среда, 15 августа 2012 г.

1С:Центр управления производительностью

Если вы почему-то не в курсе, что есть такой продукт, обязательно посмотрите хотя бы описание на сайте 1С.

Основные задачи, которые могут быть решены при помощи ЦУП:
  • Анализ и интегральная оценка текущей производительности работающей многопользовательской информационной системы:
    • Как работает система?
    • Имеются ли проблемы производительности?
    • Можно ли повысить производительность? 
  • Сбор и хранение информации о динамике производительности системы:
    • Как менялась производительность системы с течением времени?
    • Как менялась производительность системы при внесении каких-либо изменений? 
  • Поиск и анализ «узких мест» в коде конфигурации. Получение детальной технической информации обо всех проблемах производительности, имеющихся в системе с целью дальнейшей оптимизации:
    • Какие проблемы производительности имеются в системе и насколько они серьезны?
    • Какие проблемы следует решать в первую очередь?
    • В чем конкретно заключается каждая проблема?
    • Какие объекты метаданных и строки кода конфигурации следует оптимизировать для того, чтобы решить данную проблему? 
  • Регламентный мониторинг производительности системы с автоматическим контролем значений показателей производительности и реакцией на их изменения. 

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

Одним из типичных применений "Центра управления производительностью" является анализ производительности и оптимизация работающей многопользовательской информационной системы.

UPD.: И, конечно, не могу не привести замечательную статью по настройке на infostart.

воскресенье, 12 августа 2012 г.

Жук и программист

Недавно вспоминал об этой истории, сохраню себе на память:
approved at 27.04.2007 в 16:16:00
(Зеленый_Филин) Взяли, блин, программиста. Вот вышел во двор... Солнышко светит, хорошо, тепло. Вишни цветут, весна в полный рост. А вокруг жизнь станции кипит. Люди бегают, около склада товар загружают, разгружают, строительная техника работает, кран гудит, телефоны не умолкают: "Покупай! Покупай! Продавай! Продавай!"
А я во дворе стою. Курю... Тут смотрю - по двору жук ползет. Уверенно так, целенаправленно. Я за ним. Присел на корточки и за жуком ползу. Ну, интересно же посмотреть куда это он так спешит. Так пол двора и проползли. Два создания природы. Черный жук и программист.
А потом жук остановился за какой-то своей жучиной надобностью, а я пошел про него пост писать. Вот так.

(NikolaSoft) Чё тя так прёт то? Загруз что ли на работе новой?

(ArizZ) А у нас тут офис-девочки одуванчики на телефоны фодгают. Представляю пространственно-объединяющий континиум: ползающие за жучками программеры, а заними деффочки-папарацци с телефонами))) Весна, да.

(NikolaSoft) мда.... весеннее обострение ;-)

(NikolaSoft) представляю себе картинку: Ползёт себе жук и думает - а шо то за мно по пятам ползает?!... наверное опять нового программера взяли :))))
Ссылка

вторник, 7 августа 2012 г.

Удобная работа с хранилищем конфигурации

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

воскресенье, 5 августа 2012 г.

1С 8.3: немного подробностей

Некоторые вещи, которые заинтересовали меня в новой платформе 1С 8.3, кроме тех, что я уже упоминал.

Во-первых, появился объект "ХешированиеДанных". Средствами платформы он позволяет получить хеш MD5 или CRC32. Принимает на вход строку или "ДвоичныеДанные". Наконец-то можно вычислять hash MD5 без внешних компонент. Ура! Делается это, например, так:
&НаКлиенте
Процедура ПосчитатьMD5(Команда)

    Хеш = ПолучитьMD5_Сервер(ТекстДляХеша);
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = Строка(Хеш);
    Сообщение.Поле = "ТекстДляХеша";
    Сообщение.УстановитьДанные(Объект);
    Сообщение.Сообщить();

КонецПроцедуры

&НаСервере
Функция ПолучитьMD5_Сервер(Текст)

    ОбъектХеш = Новый ХешированиеДанных(ХешФункция.MD5);
    ОбъектХеш.Добавить(Текст);
    Возврат ОбъектХеш.ХешСумма;

КонецФункции // ПолучитьMD5_Сервер
Подробности ищите под крышечками в синтакс-помощнике.

Во-вторых, теперь можно управлять представлением. Да-да! Теперь есть событие в модуле менеджера таких объектов, как Справочник, Документ и пр., в котором можно самому сформировать представление. Сделать это можно, например, так:
Команда "Показать ссылку" на форме списка справочника:
&НаКлиенте
Процедура ПоказатьСсылку(Команда)

    Представление = Строка(Элементы.Список.ТекущаяСтрока);
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = Представление;
    Сообщение.Сообщить();

КонецПроцедуры
(Просто выводит в область сообщений ссылку выбранного элемента)
Модуль менеджера справочника "Номенклатура":
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;

    Представление = "(" + Данные.Артикул + ") " + Данные.Наименование;
КонецПроцедуры

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;

    Поля.Добавить("Артикул");
    Поля.Добавить("Наименование");
КонецПроцедуры
Смотрите, что получаем в итоге:
Представление по формуле "(" + Артикул + ") " + Наименование было автоматически рассчитано при приведении к строке для сообщения и в поле ввода типа справочник.
Да-да, это работает и в запросах в функции "ПРЕДСТАВЛЕНИЕ", и в табло во время отладки. Смотрите сами:

Глобальная фишка!
Только не забывайте, что представление в конфигурации получается очень часто, а значит, вызовов этого события будет ОЧЕНЬ много. Не стоит писать туда тяжелые запросы к остаткам. =)

Еще улучшена работа с каталогами. Например, теперь можно запросто получить путь к каталогу документов пользователя функцией (какой? правильно!) КаталогДокументов().
Написано, что оно все работает и в веб-клиенте тоже. Так что теперь проблема "куда бы сохранить пользователю отчет, ни о чем его не спрашивая" перестала существовать.

Добавили тип "ФорматированнаяСтрока". Не мутабельный, сериализуемый, позволяет делать вот такие прекрасные предупреждения:
Причем зеленая надпись - ссылка. По ней можно кликнуть и попасть в элемент справочника. Правда, работает это все пока несколько странно, например, мне не удалось запихать в одну строку ссылки на несколько элементов справочника сразу.
А еще при попытке создать по-настоящему сложную форматированную строку оно ругается на тип первого параметра, хотя тип первого параметра правильный. А когда я однажды действительно напутал с типами, ошибочным у меня был вовсе не первый, а пятый параметр конструктора, но ругалось на первый.
В общем, кому интересно - флаг в руки и мое почтение. Разберетесь, может, и мне расскажете потом.

Наконец-то колонке таблицы на управляемой форме можно задать тип "Произвольный". Не помню, где мне это нужно было, но помню, что очень горевал, что нельзя. Теперь вот можно.

Для интернетов появились функции КодироватьСтроку() и РаскодироватьСтроку(). Это тот самый URL encode/decode, о котором я недавно упоминал. Теперь банановый и в 1С! Примечательно то, что codepage тоже указывается. Это безусловно хорошо.

И вот по администрированию еще. Процитирую:
Реализована возможность создания самораспаковывающегося архива (SFX-архива) клиентского приложения для размещения на веб-сайте. В состав архива можно поместить конфигурационный файл 1CEStart.cfg, содержащий настройки, необходимые для установки, запуска и обновления клиентского приложения. Созданный исполняемый файл предназначен для использования только в ОС Windows.
Для создания архива используется утилита 1CEClientSetupMake.exe, которая публикуется на диске ИТС.
Вот это действительно праздник! Теперь админам будет намного проще разворачивать 1С у пользователя.

Там на самом деле еще очень много изменений. Смотрите официальный ман. Я вам привел то, за что у меня глаз зацепился, а вам, может, совсем другое интересно.
Там и про СКД, и про навигационные ссылки, и про внешние источники данных. Очень много всего интересного.

А я желаю вам хорошего дня и хорошего кода. Спасибо.

суббота, 4 августа 2012 г.

PHP и другое. Собеседование в вопросах и ответах.

PHP, JavaScript, JQuery, CSS, HTML, MySQL, ООП.
Краткий сборник возможных вопросов и ответов на собеседовании.

... В итоге получился сборник в стиле ”вопрос – ответ”, который удобно быстро пролистать, готовясь к собеседованию и который охватывает все основные концепции и ключевые области PHP и веб-разработки. Никакой лишней информации вроде ”во время интервью держите спину прямо!” тут нет, только вопросы, многие из которых вы обязательно услышите и ответ, который устроит того, кто вас собеседует.
http://phpbook.comli.com/

Почему не хватает 1С-ников?

Интересное мнение опубликовал недавно Piter Antares на Инфостарте. В статье затрагивается тема постоянно "нагревающегося" рынка труда 1С.

Действительно - почему?

пятница, 3 августа 2012 г.

Открыть форму внешней обработки. Памятка.

Небольшая памятка c ИТС и сайта 1c-galaxy.ru

Как программно открыть внешнюю обработку?

В версии 8.2 приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере.

Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий:

  • Передать файл внешней обработки на сервер
  • Подключить внешнюю обработку
  • Открыть форму внешней обработки

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

В четвертом параметре этого метода указывается признак интерактивного режима выбора файла внешней обработки. Если этот параметр Истина, то появляется диалог выбора файла, в котором можно выбрать файл для помещения в хранилище. В нашем примере этот параметр - Ложь, а путь к файлу, данные из которого будут помещены во временное хранилище, явно задан во втором параметре метода.

При вызове метода ПоместитьФайл() первым его параметром, АдресХранилища, мы указываем пустую строку. После выполнения метода в нее будет помещен путь к файлу внешней обработки во временном хранилище. Этот путь мы используем для того, чтобы подключить внешнюю обработку.

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

Для открытия формы внешней обработки используется метод глобального контекста ОткрытьФорму(), в который передается имя формы в виде следующей строки: "ВнешняяОбработка."+ ИмяОбработки +".Форма". В приведенном варианте открывается основная форма обработки. Можно открыть также и неосновную форму обработки - об этом рассказывается в вопросе "Как получить неосновную форму обработки?"
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

    //Помещаем обработку во временном хранилище
    АдресХранилища = "";
    Результат = ПоместитьФайл(АдресХранилища, "C:\ВнешняяОбработка.epf", , Ложь);
    ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);

    // Откроем форму подключенной внешней обработки
    ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");

КонецПроцедуры

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)

    Возврат ВнешниеОбработки.Подключить(АдресХранилища);

КонецФункции

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

  • Подробнее о режиме безопасного исполнения программного кода можно прочитать в документации: 1С:Предприятие 8.2. Руководство разработчика, Раздел 5.5.4.3: Объекты конфигурации - Ветвь конфигурации «Общие» - Роли и права доступа - Безопасный режим работы.
  • Подробнее об использовании метода ПоместитьФайл() можно прочитать в синтакс-помощнике: Глобальный контекст - Процедуры и функции работы с файлами.
  • Подробнее об использовании метода Подключить() можно прочитать в синтакс-помощнике: Прикладные объекты - Внешние обработки и отчеты - ВнешниеОбработкиМенеджер - Методы.
От себя так же хочу добавить, что у объекта ВнешняяОбработкаОбъект, есть свойство ИспользуемоеИмяФайла, доступное в контексте сервера. Тоже может пригодиться.

ЭВМ ли телефон? Нет?

У товарищей тут телефон НЕ ЭВМ. А, что! Это идея! Несколько андроидофонов в кластер на линупсе и 1С можно не покупать! Раз телефон не ЭВМ, то и 1С не ПО. Какая-такая лицензия?


Особо юморных товарищей от комментариев, вроде "1С и так не ПО" прошу воздержаться.