Как стать автором
Обновить
1070.19

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Период
Уровень сложности

Gearman и PHP 5.4 (5.6): проблемы и решения

Время на прочтение2 мин
Количество просмотров9.5K
В своей предыдущей публикации автор попытался донести до аудитории интересные возможности, который открывает перед PHP-разработчиком сервер очередей Gearman.
В публикации был указан алгоритм установки Gearman и расширения для PHP. Речь шла о PHP 5.3. На Debian7 и PHP 5.4 этот алгоритм не работает, не выдавая при этом никаких ошибок ни при установке, ни при работе PHP-скриптов, однако веб-приложения, использующие Gearman, не работают.
Как выглядит проблема и ее решение

Применяем MVVM в Unity3D с помощью NData

Время на прочтение4 мин
Количество просмотров21K


Привет! В этом посте хотел бы рассказать тебе, мой любимый хабр, о плагине, который увеличил мою продуктивность в работе с UI в несколько раз. Связка с которой я работаю выглядит следующим образом: Unity3D + NGUI + NData. По желанию, можно использовать IoC+DI, но идеального варианта, чтобы работала под iOS, Android и WinPhone, пока не нашлось.

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

Информацию о плагине NData можно найти на сайте . И да, он стоит 45$)

(на картинке выше одна из последних игр, которую собрал с помощью Unity3d+NGUI+NData)
Читать дальше →

Обучение программированию на Java с помощью автоматических тестов

Время на прочтение2 мин
Количество просмотров59K
Началось все с простого — один мой друг захотел писать проги на яве. Естественно, что просто выучив синтаксис языка, никакого опыта в программировании не наберешся, и потому нужно просто писать уже хоть что-нибудь. Вот я и обдумывал вопрос, что же лучше всего подойдет для этого. Я пришел к выводу, что самое лучше в начале пути, на мой взгляд, это создать простенький класс который бы описывал абстрактную «сущность», но при этом был прост в понимании. В итоге было решено выдать тренировочное задание по написанию самопального класса комплексного числа.
Конечно можно было бы просто написать на листочке все требования к этому классу, описать интерфейс всех его методов и тому подобное, однако потом это пришлось бы проверять, и при этом очень даже вероятно что проверять по нескольку раз, так как товарищ только обучается.
Но тут меня потянуло в сторону экспериментов, а так как я нетак давно заинтересовался TDD, то и эксперименты пошли в ту же степь.
Читать дальше →

Поиск гамильтонова цикла в большом графе (задача коммивояжера). Часть 3

Время на прочтение2 мин
Количество просмотров9.5K

Всем доброго времени суток!


В этом небольшом посте я продолжу тему, которую поднимал в своих старых двух постах
Часть 1
Часть 2

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

Так что добро пожаловать под хабракат
Читать дальше →

Защита .NET-приложений при помощи Sentinel LDK Envelope

Время на прочтение9 мин
Количество просмотров23K
Утилита Sentinel LDK Envelope, о которой пойдет речь в этой статье, предназначена для установки навесной защиты на исполняемые модули (EXE и DLL) для платформ Win32, Windows x64, .NET, а так же, на Java-приложения (JAR и WAR). Защита осуществляется путем «привязывания» кода приложения к ключу защиты Sentinel (новое поколение ключей HASP), причем, ключ может быть как аппаратным (HL), так и программным (SL). Обработанный таким образом исполняемый модуль, будет работать только в присутствии требуемого ключа со всеми необходимыми лицензиями. Помимо проверки наличия ключа, внедренный в приложение код защиты, так же, обеспечит активное противодействие отладке и затруднит реверс-инжиниринг приложения, включая статический анализ кода.

Цель данной статьи – рассмотреть способы и особенности защиты .NET-приложений, причем, с упором на максимальную автоматизацию процесса установки защиты. Поэтому, далее мы будем рассматривать только тот функционал Envelope, который касается защиты именно .NET-приложений.

Читать дальше →

Цикличность и временное отключение приемников событий в SharePoint

Время на прочтение5 мин
Количество просмотров4.9K
Как Вы можете знать, в SharePoint существует множество приемников событий (EventReceiver), которые позволяют вызывать пользовательский код при выполнении стандартных операций с объектами SharePoint, например добавление/удаление/изменение элементов списков. Работа с приемниками событий заслуживает отдельной статьи, но их по данной тематике и так довольно много, например тут.

Сегодня мы рассмотрим 2 частных случая проблем, которые могут возникнуть у начинающего разработчика SharePoint при работе с ресиверами:
Читать дальше →

Автоматическое обновление программ на C#

Время на прочтение5 мин
Количество просмотров91K
Несколько лет назад, программируя еще на Delphi, лично для себя соорудил некий код автоматического обновления, который в последствии стал незаменимым при разработке любой программы, где есть обновление. В настоящий момент этот код полностью переписан на c# и я хочу с Вами им поделиться.

image

Вначале определим цели этой реализации:

  1. При обнаружении новой версии обновление должно происходить автоматически;
  2. После обновления программа должна автоматически перезапускаться;
  3. После обновления имя программы должно остаться прежним.

Проблема состоит в том, что программа не может саму себя удалить, заменить и вновь запустить. И, казалось бы, как решить этот вопрос? Здесь нам поможет второй файл, отвечающий за переименование и перезапуск программы, так как мы не гонимся за целью хранить все коды в 1 файле.
Читать дальше →

Сервис управления заявками на отпуска для SharePoint 2013 в интеграции с БОСС-Кадровик

Время на прочтение8 мин
Количество просмотров12K
Полгода назад мы рассказывали о том, как реализовали сервис бронирования переговорных комнат у крупного заказчика с территориально разнесенными офисами и штатом несколько тысяч человек. Мы продолжаем работать с SharePoint-порталом этой компании, в рамках его развития специалисты EastBanc Technologies создали еще один модуль — сервис управления заявками на отпуска в интеграции с автоматизированной системой управления персоналом БОСС-Кадровик.

Назначение этого сервиса, как нам кажется, не нуждается в пространном разъяснении: попросту говоря, сервис автоматизирует учет отпусков в компании. Гораздо интересней, какие практические задачи стояли перед нами в данной конкретной компании, об этом — дальше.

Читать дальше →

Охрана IT-решений в России

Время на прочтение5 мин
Количество просмотров17K
Цель данного поста донести информацию о способах охраны ИТ-решений в России — патенты, авторское право, ноу-хау. Протестующих против интеллектуальной собственности – просьба не сюда. Не будем разводить дебатов, сотни их…
Читать дальше →

Правило программиста #1: оставьте эмоции дома!

Время на прочтение3 мин
Количество просмотров14K
Как программисты, мы гордимся нашей работой. Мы показываем эту гордость, выполняя наши задачи лучшим образом. Мы относимся к ним со всей дотошностью, вплоть да названий переменных и методов. Мы всегда выбираем нужные классы для конкретной задачи, не смотря на то, что пользователю все равно, использовали ли мы List<KeyValuePair<Guid, string>> или Dictionary<Guid, string>. Мы нервно стараемся довести все до идеального состояния. Многие даже могут подумать, что у нас ОКР.

Но что происходит, когда разработчик слишком гордится тем, что он или она написали?

Что, если из-за этого эмоции проникают в код? Что может случиться, если программист не может расстаться не только с его или ее кодом, но и с методами ведения работы, принятия решений и своим поведением, как разработчика?
Читать дальше →

23 мая в 10.00 прямая трансляция запуска RAD Studio XE4

Время на прочтение1 мин
Количество просмотров3.8K
Уважаемые разработчики!

Для тех, кто не сможет посетить запуск RAD Studio XE4 в Москве, Минске или Киеве, мы предлагаем присоединиться к прямой трансляции, которая начнется 23 мая в 10 утра.

Смотреть трансляцию можно прямо с сайта мероприятия softwarepeople.ru/delphixe4.

В этом году мы специально пригласили в качестве спикеров представителей центра разработки что позволит вам получить информацию о новых возможностях из первых рук, а также на запуске выступит Дмитрий Арефьев, создатель AnyDAC, ребрендированной в FireDAC, после приобретения Embarcadero в этом году.

Как вы, наверное, уже догадались, основной темой запуска XE4 станет кроссплатформенная разработка и, к уже привычной Windows, мы добавили MAC OS и iOS – самую монетизируемую платформу. Мы также будем обсуждать планы развития RAD Studio.

Кроме того, вы увидите много демонстраций по созданию приложений для iOS и MAC OS.

Не пропустите!

Отличный способ научиться оценивать работу на проекте

Время на прочтение3 мин
Количество просмотров16K
Ни для кого не секрет, что лучший способ научиться что-то хорошо делать — это постоянная практика. Так же обстоят дела и с оценками работы на проекте. Но мало просто оценивать. Надо потом отслеживать реальный результат, анализировать его и делать выводы, чтобы ваша методика оценивания постоянно совершенствовалась. Без этого важного компонента вы никогда не научитесь оценивать классно. Но что если найти некий способ тренироваться в оценках «на кошках»? Причем, как можно чаще и интенсивнее. О таком способе и пойдет речь в статье…
Читать дальше →

Работа с FTP и выгрузка данных в xlsx (Caché Object Script)

Время на прочтение5 мин
Количество просмотров8K
Предлагаю Вашему вниманию статью на следующие на темы:
  1. Работа с FTP сервером с помощью %Net.FtpSession
  2. Простой способ выгрузки данных в формат xls
  3. Несколько полезных советов

Читать дальше →

Ближайшие события

Смена парадигмы программирования на C#, переход на сигналы и очереди (слоты)

Время на прочтение7 мин
Количество просмотров17K
В этом посте я рассматриваю концепцию и ее реализацию (пока в начальной, но рабочей стадии), которая с недавних пор стала меня сильно привлекать. Опыта в программировании на сигналах у меня ранее не было, поэтому что-то мог упустить или неоптимально продумать, потому и пишу сюда. Надеюсь на квалифицированные отзывы и советы. Несмотря на то что библиотека только начала развиваться, я уже начал ее использование в реальных проектах, на реальной нагрузке, это помогает быстро понять что действительно нужно и куда двигаться дальше. Так что весь приведенный код находится в рабочем состоянии, компилируется и готов к использованию. Единственное все делается на Framework 4.5, но не думаю что это будет для кого-то препятствием, если же идея окажется стоящей, пересобрать под 3.5 проблем не будет.

Что же не так с текущей парадигмой


Устройство обычного приложения на .NET подразумевает что у нас есть набор классов, в классах есть данные, и методы которые эти данные обрабатывают. Также нашим классам надо знать друг о друге, о public методах, свойствах и событиях. То есть у нас сильносвязная архитектура. Конечно мы можем уменьшить связность, построить взаимодействие исключительно через интерфейсы и фабрики (что увеличит размер кода раза в два, и существенно усложнит читабельность), можем убрать открытые методы и стоить все на событиях, придумать можно много чего, но перейти к слабосвязанной архитектуре все равно не выйдет, получим в лучшем случае «среднюю» связанность.

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

В общем все это постепенно надоедает, становится лень писать одни и те же вещи в каждом новом проекте, когда правильнее было бы сосредоточиться на логике задачи.
Читать дальше →

Примеры генерации и отправки Email средствами СУБД Caché

Время на прочтение6 мин
Количество просмотров4.3K
Нередко возникает необходимость в автоматической генерации и отправке электронных писем на основе данных из БД. Это могут быть различные отчёты с таблицами, диаграммами или уведомления о наступлении каких-то событий.
Всё это можно реализовать непосредственно в самой СУБД Caché, выступающей здесь и как почтовый сервер приложений.

Далее рассмотрим следующие примеры:
  • создание текстового письма
  • создание письма в формате HTML
  • добавление вложений
  • добавление изображений в само тело письма
  • другие примеры
Читать дальше →

Используем method decorator в CoffeeScript(Javascript) для удобного и читаемого DRY-кода

Время на прочтение2 мин
Количество просмотров4.3K
Статья о простом, но не очевидном способе как сделать код чище и избавиться от копипасты.

Условно проблема выглядит вот так:
###
My awesome class
###
class Awesome
  doFoo : (arg, cb) ->
    unless arg is 42
      return cb Error """
                      only The Answer may be an argument, but got:
                      |arg| = |#{arg}|
                      """
    cb null, "#{arg} is The Answer"

  doBar : (arg, cb) ->
    # hm... arg must be The Answer too

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

Совсем немного текста о том, как method decorator делает мою жизнь лучше

Эмуляция троичной системы. Вариант концепции

Время на прочтение4 мин
Количество просмотров15K
1. Пролог

Недавно я прочитал замечательную статью [1]. В ней автор рассказывает о том, что не всегда вычислительные машины были двоичными. На заре компьютерной эры существовали машины, которые использовали десятичную и троичную систему счисления.
Десятичная система удобна человеку, но ее достаточно сложно реализовать на существующей элементной базе. Кроме того, десятичная система подвержена ошибкам в результате искажения сигнала при передаче. Троичную систему реализовать не на много сложнее двоичной ([2]), но она способна дать как минимум три преимущества.
Читать дальше →

О некоторых неочевидных хаках при работе с entity framework и unique constraints

Время на прочтение5 мин
Количество просмотров11K
image
Пару лет назад, когда деревья были большие и зеленые, ко мне пришли злые дотнетчики, и сказали — ага, попался! пришлось мне помочь коллегам в одном весьма странном проекте.

А именно — представьте себе пачку цифирей, которые аналитики составляют раз в месяц, в любимом ими пакете MS Office. И вот раз в месяц появилась необходимость эти цифры пережевывать и загружать в БД под управлением MS SQL.

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

Читать дальше →

Готовим продвинутые CGridView

Время на прочтение6 мин
Количество просмотров40K
Данный пост будет интересен тем кто начинает знакомится с Yii framework, то есть пользователям от начального до среднего уровня знаний данного фреймворка, а так же тем кто любит похоливарить на тему какой из фреймворков круче.
Читать дальше →

Применение метода SURF в системах контроля и управления доступом на основе биометрических технологий

Время на прочтение3 мин
Количество просмотров19K
Метод Speeded Up Robust Features (SURF) положительно зарекомендовал себя в задачах поиска объектов на изображениях, 3D реконструкции, при сравнении изображений. Рассмотрим применение этого метода в биометрических системах, осуществляющих аутентификацию по васкулярному рисунку руки.

Метод SURF решает две задачи – поиск особых точек изображения и создание их дескрипторов (описательного элемента, инвариантного к изменению масштаба и поворота). Кроме того, сам поиск ключевых точек тоже должен обладать инвариантностью, т.е. повернутый объект сцены должен обладать тем же набором ключевых точек, что и образец.

Метод ищет особые точки с помощью матрицы Гессе. Детерминант матрицы Гессе (т.н. гессиан) достигает экстремума в точках максимального изменения градиента яркости. Для двумерной функции ее детерминант определяется следующим образом:
Читать дальше →

Вклад авторов