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

Валидация — одна из автомагических возможностей AngularJS. Хотя магического здесь, конечно же, ничего нет. Просто такие стандартные теги html как form, input, select, textarea — это тоже директивы. И когда они объединяются с ngModel, required, ngPattern и т.п., начинает работать валидация.

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

В прошлой статье мы немного познакомились с общим представлением структуры хранения данных, платформой 1С 8.2, при использовании СУБД MS SQL Server. Теперь хотелось бы более подробно описать все то, что мы можем сделать используя эти знания.

Для решения каких задач нам могут понадобиться прямые запросы к базе данных

  • Думаю данная возможность понадобиться при активной разработки своих собственных решений, либо при реструктуризации готовых решений. В тех случаях, когда в отладочных целях, либо ещё по каким-то причинам, нам придётся переносить большие объемы данных с одной таблицы в другую, либо разбивать данные на несколько таблиц
  • Для интеграции 1С с другими, сторонними разработками. Например вывод данных из 1С, в какую-нибудь стороннюю программу анализа продаж или что-то похожее.
  • Оптимизация массивных обработок данных. Когда нам необходимо обработать большое количество данных, при этом внося какие-то изменения, корректировки и т.п. Например копирование записей регистра сведений с изменением какого-либо поля средствами 1С, займет куда больше времени, чем выполнение операции T-SQL Update

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

Однажды, холодным зимним вечером, я внезапно вспомнил, что не поделился простым секретом, как добиться простого питоновского счастья за пределами ASCII резервации в такой замечательно-бесплатной IDE как Eclipse с плагином PyDev. Причём счастья с отладкой и честным юникодом, что означает следующее: если вы назвали свою переменную кириллицей, вы сможете посмотреть у неё значение, поставив breakpoint, написать пару строк текста по-русски и у вас ничего не отвалится.
Да-да, уважаемый читатель, Eclipse PyDev не очень-то дружит с символами за пределами 0x7F и отладка очень любит отваливаться всякий раз при попытке прочитать значение кириллической переменной. Да какое там, простое наведение мышкой на юникодовый символ приводит к фатальным последствиям при отладке кода написанного на Python 3.x (UTF-8). Если же настройки вашей файловой системы отличаются от UTF-8, поздравляю, вы не сможете даже запустить ваш скрипт. Я имею в виду именно то, что например под Windows ваш замечательный скрипт с единственным словом по-русски просто выведет из строя PyDev.
Возможно я перестарался, сгущая краски, не пугайтесь, починить это в состоянии мы сами, просто прочитав эту небольшую инструкцию. В награду мы получим бесплатное средство разработки, довольно удобное, фантастически гибкое в настройках и усовершенствовании, вплоть до разработки на нескольких языках, со встроенным инструментом версионирования.
Под катом инструкция и неприличных размеров картинки.
Читать полностью »

Итак, плюсики за статью типа "Платите программистам много" собраны, теперь самое время поговорить о том, почему это не работает просто математически, и что скрывалось за самым мелким шрифтом.
Ещё о высоких зарплатах, или почему это не может работать
Понятно, почему это работает: распределение количества вакансий по зарплатам у нас очень похоже на нормальное, а значит у тех, кто находится справа от средней зарплаты, намного меньше возможностей найти зарплату выше, чем у тех, кто в левой части удава. Именно поэтому я написал, что ВЗ хоть и не мотивирует, но хорошо удерживает на текущем месте работы.
Но могут ли все работодатели воспользоваться этой «новой» и «работающей» методикой?
Читать полностью »

Задача

Задача звучит просто – напечатать таблицу. Напечатать так, чтобы она выглядела красиво и, по возможности, не расползалась.

После некоторых раздумий, решено было воспользоваться FOP для генерации PDF. Загвоздка в том, что Apache FOP не поддерживает table-layout:auto, то есть при построении таблицы необходимо вручную задать ширину столбцов (хорошо еще, что можно задать относительную ширину в процентах). Если же сделать все столбцы одинаковой ширины, таблица будет выглядеть несколько неэлегантно. Выходит, рассчитывать ширину придется вручную.

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

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

GCC x86, как уменьшить размер кода      Времена, когда программисты пытались выжать максимум из размера своего приложения, безвозвратно ушли. Основной причиной является существенное увеличение объемов оперативной памяти и дискового простраства на современных компьютерах. Немногие помнят, как при загрузке приложения с кассеты можно было пойти покушать. Или как можно было считать моргания дисковода, косвенно определяя размер приложения. Пожалуй, только разработчики програмного обеспечения под встраиваемые системы до сих пор заботятся о размере кода и потребляемой памяти. Могут ли таблетки и смартфоны вернуть разработчиков «назад в будущее»?
      Данная статья призвана помочь разработчикам програмного обеспечения, испульзующим GCC компилятор, уменьшить размер кода своих приложений. Все данные в статье получены при помощи x86 GCC компилятора версии 4.7.2 на операционной система Fedora 17 для архитектуры Intel® Atom™.
Читать полностью »

Введение.

Python замечательный язык. Связка Python + NumPy + Matplotlib, на мой взгляд, сейчас одна из лучших для научных расчётов и быстрого прототипирования алгоритмов. Но у каждого инструмента есть свои светлые и тёмные стороны. Одной из самых дискутируемых особенностей Python является GIL – Global Interpreter Lock. Я бы отнёс эту особенность к тёмной стороне инструмента. Хотя многие со мной не согласятся.

Если кратко, то GIL не позволяет в одном интерпретаторе Python эффективно использовать больше одного потока. Защитники GIL утверждают, что однопоточные программы при наличии GIL работают намного эффективнее. Но наличие GIL означает, что параллельные вычисления с использованием множества потоков и общей памяти невозможны. А это достаточно сильное ограничения в современном многоядерном мире.

Один из способов преодоления GIL при помощи потоков на C++ был недавно рассмотрен в статье: Использование Python в многопоточном приложении на C++. Я же хочу рассмотреть другой способ преодоления ограничений GIL, основанный на multiprocessing и shared array. На мой взгляд, этот способ позволяет достаточно просто и эффективно использовать процессы и разделяемую память для прозрачного параллельного программирования в стиле множества потоков и общей памяти.
Читать полностью »

Первая бета Sublime Text 3 уже доступна для зарегистрированных пользователей. Далее несколько слов о новых возможностях, новых политиках цен и апгрейда, а также системной совместимости Sublime Text 3.

Идексироние символов. Sublime Text теперь сканирует файлы в вашем проекте, строит индекс того, какой файл какой символ содержит. Это способствует таким нововведениям, как Goto Definition и Goto Symbol in Project, оба доступные из Goto menu. Goto Definition переносит вас на объявление идентификатора, в то время как Goto Symbol in Project предлагает вам выбрать символ с помощью нечеткого сравнения и затем переносит вас на объявление идентификатора.

Управление клетками. Работа с несколькими клетками стала еще эффективнее с помощью команд создания и удаления клеток, а также быстрого перемещения файлов между клетками. Вы можете увидеть новые опции в View/Groups, View/Focus Group и View/Move file to Group.
Читать полностью »

Пакет Flash Builder 4.5 и, собственно, язык ActionScript 3.0 предоставляет программистам широкие возможности по использованию в своих flex-программах и обычных флешках звука в целом и микрофона в частности. Зачем же это нужно? В первую очередь, это может пригодиться в создании таких программ, как всевозможные голосовые чаты. Также свое применение эти элементы могут найти и в сфере защиты информации — например, в системах распознавания голоса. Но в данном примере и в данной конкретной статье будет говориться не столько об этом, сколько об общих правилах использования этих элементов. Также следует отметить, что работа будет вестись c flex-приложением.
Читать полностью »

Все более или менее знающие Python разработчики знают про такую жуткую вещь как GIL. Глобальный блокировщик всего процесса до тех пор пока Python выполняется в одном из потоков. Он даёт потоко-защищённость методами сравнимыми с садизмом, поскольку любая неявная блокировка в многопоточном приложении смерти подобна, всё что опиралось на параллельное выполнение, умирает в мучениях, раз за разом натыкаясь на блокировку GIL.
Известно что по сей день из-за этого скорбного факта программисты на C++ используют Python-обёртки по большей части лишь в однопоточных приложениях, а программисты на Python пытаются всех убедить, что им и так неплохо живётся.
Казалось бы, если поток порождён в C++, он не знает ни о каком GIL, используй Python без блокировок и радуйся. Радость разработчика однако закончится уже на втором потоке запросившем область глобальных переменных без блокировки.
Однако есть путь ведущий к светлому будущему!
Этот путь был изначально в таком языке как Perl, он же поддерживается в Си-API языка Python и я ума не приложу почему подобный механизм не включен в один из стандартных модулей Python! Способ по сути сводит использование различных под-интерпретаторов Python в разных потоках, причём используя свой GIL для каждого(!!!) без всякого шаманства и магии, просто последовательно вызвав несколько функций и стандартного набора Си-API языка Python!
Читать полностью »


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